{"version":3,"file":"static/js/main.8c319571.js","mappings":"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","sources":["base/constants/routes.ts","features/UserTableViewConfig/tableConfig/reducer.ts","base/reducer/reducer.ts","features/Tenant/reducer.ts","containers/Configuration/SiteConfiguration/CompanyInfoCont/CompanyInfo/reducer.ts","features/Currency/reducer.ts","features/Country/reducer.ts","features/DateTimePattern/reducer.ts","containers/Configuration/SiteConfiguration/Projects/CreateNewPartner/reducer.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Projects/reducer.ts","containers/Configuration/SiteConfiguration/Projects/ConfigureProjects/Tabs/ProjectType/reducer.ts","containers/Configuration/SiteConfiguration/Projects/ConfigureProjects/Tabs/ProjectCategory/reducer.ts","containers/Configuration/MyConfiguration/DefaultProject/reducer.ts","containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketType/reducer.ts","containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketEnvironment/reducer.ts","containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketAssignedGroup/reducer.ts","containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketCategory/reducer.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Tickets/reducer.ts","containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketPriority/Impact/reducer.ts","containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketPriority/Urgency/reducer.ts","containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketPriority/reducer.ts","containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketClosingId/reducer.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Reports/reducer.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Risks/reducer.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Invoices/reducer.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/ChangeRequest/reducer.ts","containers/Configuration/SiteConfiguration/Module/Scope/reducer.ts","containers/Scope/MaintainScope/Configuration/Department/reducer.ts","containers/Scope/MaintainScope/Configuration/StepType/reducer.ts","containers/Scope/MaintainScope/Configuration/UserRole/reducer.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/TestCases/reducer.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/TrainingStatus/reducer.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/TimeAndTravel/reducer.ts","containers/Configuration/SiteConfiguration/Module/TimeAndTravel/Tabs/NonProjectCategory/reducer.ts","containers/Configuration/SiteConfiguration/Module/TimeAndTravel/Tabs/TravelCostTypes/reducer.ts","containers/Configuration/SiteConfiguration/Module/TimeAndTravel/Tabs/ExpenseTypes/reducer.ts","containers/Configuration/SiteConfiguration/Module/TimeAndTravel/Tabs/ExpensesGeneral/reducer.ts","containers/Configuration/SiteConfiguration/Module/TimeAndTravel/Tabs/VacationGeneral/reducer.ts","containers/Configuration/SiteConfiguration/Module/TimeAndTravel/Tabs/TimesheetsGeneral/reducer.ts","containers/TimeTravel/MyTimeTravel/Tabs/MyTravelRequests/reducer.ts","containers/Projects/MyProjects/MaintainProject/Tabs/Timesheets/reducer.ts","containers/Configuration/SiteConfiguration/Module/Finance/Tabs/Categories/reducer.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Users/reducer.ts","containers/Configuration/SiteConfiguration/UserAdministration/Users/reducer.ts","containers/Projects/MyProjects/MaintainProject/Tabs/AssignTeamMembers/reducer.ts","containers/Projects/MyProjects/MaintainProject/Tabs/Teams/reducer.ts","containers/Projects/MyProjects/MaintainProject/Tabs/Roles/reducer.ts","containers/Configuration/SiteConfiguration/General/Company/OrganizationalUnits/reducer.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Communication/reducer.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Tasks/reducer.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/MeetingMinutes/reducer.ts","containers/Configuration/SiteConfiguration/Module/Communication/Tabs/MeetingType/reducer.ts","containers/Schedule/Schedule/Configuration/reducer.ts","containers/Configuration/SiteConfiguration/Module/Risk/Tabs/RiskType/reducer.ts","base/reducer/store.ts","webpack://mavles-frontend/./src/components/Button/button.module.scss?1f41","components/Button/Button.tsx","webpack://mavles-frontend/./src/components/Cover/cover.module.scss?f449","components/Cover/Cover.tsx","webpack://mavles-frontend/./src/components/Dialog/dialog.module.scss?4643","components/Dialog/Header.tsx","components/Dialog/Dialog.tsx","webpack://mavles-frontend/./src/components/Dialog/SimpleDialog/simpleDialog.module.scss?4ab4","components/Dialog/SimpleDialog/SimpleDialog.tsx","webpack://mavles-frontend/./src/components/DragNDrop/styles.module.scss?8b85","components/DragNDrop/FrozenElement.tsx","components/DragNDrop/Element.tsx","components/DragNDrop/Column.tsx","components/DragNDrop/models.ts","components/DragNDrop/MultiList.tsx","webpack://mavles-frontend/./src/components/DragNDrop/ReordableList/reordableList.module.scss?6920","components/DragNDrop/ReordableList/ReordableList.tsx","webpack://mavles-frontend/./src/components/DragNDrop/ReordableColumns/reordableColumns.module.scss?4722","components/DragNDrop/ReordableColumns/ReordableColumns.tsx","webpack://mavles-frontend/./src/components/Form/addons/FieldMessage/fieldMessage.module.scss?4b88","components/Form/addons/FieldMessage/FieldMessage.tsx","webpack://mavles-frontend/./src/components/Form/addons/MaxLength/maxLength.module.scss?c719","components/Form/addons/MaxLength/MaxLength.tsx","components/Form/controls/Attachment/AddAttachmentButton.tsx","components/Form/controls/Attachment/useItems.tsx","webpack://mavles-frontend/./src/components/Form/controls/Info/info.module.scss?50a2","components/Form/controls/Info/Info.tsx","components/Form/controls/MapPicker/MapPicker/helpers.ts","components/Form/controls/Attachment/Attachment.tsx","webpack://mavles-frontend/./src/components/Form/controls/AutoComplete/autoComplete.module.scss?63ed","webpack://mavles-frontend/./src/components/Form/controls/Input/input.module.scss?7e63","components/Form/controls/Input/Input.tsx","components/Form/controls/AutoComplete/Option.tsx","components/Form/controls/AutoComplete/AutoComplete.tsx","components/Form/controls/AutoComplete/AutoCompleteRemote.tsx","webpack://mavles-frontend/./src/components/Form/controls/Checkbox/checkbox.module.scss?fb64","components/Form/controls/Checkbox/Checkbox.tsx","webpack://mavles-frontend/./src/components/Form/controls/ColorPicker/Opener/opener.module.scss?da98","components/Form/controls/ColorPicker/Opener/ColorPickerOpener.jsx","webpack://mavles-frontend/./src/components/Form/controls/ColorPicker/colorPicker.module.scss?67c0","components/Form/controls/ColorPicker/Panel/Preview.jsx","components/Form/controls/ColorPicker/Panel/DefaultColor.jsx","components/Form/controls/ColorPicker/Panel/DefaultColors.jsx","components/Form/controls/ColorPicker/Panel/Arrow.jsx","components/Form/controls/ColorPicker/Panel/Hue.jsx","components/Form/controls/ColorPicker/Panel/ColorPickerPanel.jsx","components/Form/controls/ColorPicker/Panel/Cover.jsx","webpack://mavles-frontend/./src/components/Form/controls/ColorPicker/Simple/simple.module.scss?b898","components/Form/controls/ColorPicker/Simple/SimpleColorPicker.tsx","../node_modules/date-fns/esm/locale/sr-Latn/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/sr-Latn/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/sr-Latn/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/sr-Latn/_lib/localize/index.js","../node_modules/date-fns/esm/locale/sr-Latn/index.js","../node_modules/date-fns/esm/locale/sr-Latn/_lib/match/index.js","components/Form/controls/DatePicker/DatePicker.tsx","webpack://mavles-frontend/./src/components/Form/controls/FileInput/fileInput.module.scss?cb86","components/Form/controls/FileInput/FileInput.tsx","../node_modules/react-number-format/dist/react-number-format.es.js","webpack://mavles-frontend/./src/components/Form/controls/InputNumber/inputNumber.module.scss?8e1f","components/Form/controls/InputNumber/InputNumber.tsx","webpack://mavles-frontend/./src/components/Form/controls/MapPicker/MapPicker/mapPicker.module.scss?716c","components/Form/controls/MapPicker/MapPicker/Item.tsx","components/Form/controls/MapPicker/MapPicker/MapPicker.tsx","components/Form/controls/MapPicker/MapSinglePicker.tsx","components/Form/controls/MapPicker/MapMultiPicker.tsx","webpack://mavles-frontend/./src/components/Form/controls/MultiCheckbox/multiCheckbox.module.scss?4185","components/Form/controls/MultiCheckbox/MultiCheckbox.tsx","webpack://mavles-frontend/./src/components/Form/controls/MultiSelect/multiSelect.module.scss?e12f","components/Form/controls/MultiSelect/Option.tsx","components/Form/controls/MultiSelect/MultiSelect.tsx","webpack://mavles-frontend/./src/components/Form/controls/Radio/radio.module.scss?1a52","components/Form/controls/Radio/RadioItem.tsx","components/Form/controls/Radio/Radio.tsx","webpack://mavles-frontend/./src/components/Form/controls/Select/select.module.scss?dfa2","components/Form/controls/Select/Select.tsx","webpack://mavles-frontend/./src/components/Form/controls/Switch/switch.module.scss?b332","components/Form/controls/Switch/Switch.tsx","webpack://mavles-frontend/./src/components/Form/controls/Table/Table/table.module.scss?75be","components/Form/controls/Table/Table/FooterRow.tsx","webpack://mavles-frontend/./src/assets/styles/common.module.scss?06e7","components/Form/controls/Table/wrappers/ItemWrapper.tsx","components/Form/controls/Table/Table/TableRow.tsx","components/Form/controls/Table/Table/Table.tsx","webpack://mavles-frontend/./src/components/Form/controls/Table/CustomItems/customItems.module.scss?0f83","components/Form/controls/Table/CustomItems/CustomItem.tsx","components/Form/controls/Table/CustomItems/CustomItems.tsx","webpack://mavles-frontend/./src/components/Form/controls/Textarea/textarea.module.scss?8d6f","components/Form/controls/Textarea/Textarea.tsx","components/Form/controls/TimePicker/helper.ts","webpack://mavles-frontend/./src/components/Form/controls/TimePicker/timePicker.module.scss?9ee4","components/Form/controls/TimePicker/TimePicker.tsx","webpack://mavles-frontend/./src/components/Form/controls/TextEditor/textEditor.module.scss?60e6","components/Form/controls/TextEditor/TextEditor.tsx","webpack://mavles-frontend/./src/components/Form/controls/Semaphore/semaphore.module.scss?48fb","components/Form/controls/Semaphore/SemaphoreItem.tsx","components/Form/controls/Semaphore/Semaphore.tsx","components/Form/validators.tsx","components/Form/fields/Field.tsx","components/Form/fields/AttachmentField.tsx","components/Form/fields/AutoCompleteField.tsx","components/Form/fields/CheckboxField.tsx","components/Form/fields/ColorField.tsx","components/Form/fields/DateField.tsx","components/Form/fields/FileInputField.tsx","components/Form/fields/InputField.tsx","components/Form/fields/InputNumberField.tsx","components/Form/controls/Table/wrappers/useItemsRegisteredValidatorsReducer.tsx","components/Form/controls/Table/wrappers/validators.ts","components/Form/controls/Table/wrappers/useItemsField.ts","components/Form/fields/ItemsField.tsx","components/Form/fields/MapSingleField.tsx","components/Form/fields/MapMultiField.tsx","components/Form/fields/MultiCheckboxField.tsx","components/Form/fields/MultiSelectField.tsx","components/Form/fields/RadioField.tsx","components/Form/controls/DatePicker/RangeMonthPicker.tsx","components/Form/fields/RangeMonthField.tsx","components/Form/fields/SelectField.tsx","components/Form/fields/TableField.tsx","components/Form/fields/TextareaField.tsx","components/Form/fields/TimeField.tsx","components/Form/fields/TextEditorField.tsx","components/Form/fields/SemaphoreField.tsx","components/Form/UnsavedChangesGuard/UnsavedChangesGuard.tsx","components/Form/Form.tsx","components/Form/holders/FormGroup/FormGroup.tsx","components/Form/models.ts","components/Form/useRegisteredValidatorsReducer.tsx","webpack://mavles-frontend/./src/components/Layout/columnContainer.module.scss?3b00","components/Layout/ColumnContainer.tsx","webpack://mavles-frontend/./src/components/Layout/rowContainer.module.scss?644a","components/Layout/RowContainer.tsx","webpack://mavles-frontend/./src/components/Layout/Separator/separator.module.scss?0f16","components/Layout/Separator/VerticalSeparator.tsx","webpack://mavles-frontend/./src/components/Notification/notificationContent.module.scss?4d78","components/Notification/NotificationContent.tsx","components/Notification/notification.tsx","webpack://mavles-frontend/./src/components/Popup/popup.module.scss?46d2","components/Popup/constants.ts","components/Popup/Popup.tsx","components/Popup/useDataMemo.ts","components/Popup/Info/InfoPopup.tsx","webpack://mavles-frontend/./src/components/Shorten/shorten.module.scss?f3e8","components/Shorten/Shorten.tsx","webpack://mavles-frontend/./src/components/SmartContainer/requiredField.module.scss?a8a6","components/SmartContainer/RequiredField.tsx","webpack://mavles-frontend/./src/components/SmartContainer/smartContainer.module.scss?21f2","components/SmartContainer/SmartContainer.tsx","webpack://mavles-frontend/./src/components/Spinner/spinner.module.scss?28ee","components/Spinner/Spinner.tsx","webpack://mavles-frontend/./src/components/Spinner/ClipSpinner/clipSpinner.module.scss?1acb","components/Spinner/ClipSpinner/ClipSpinner.tsx","webpack://mavles-frontend/./src/components/Spinner/overlaySpinner.module.scss?e5d9","components/Spinner/OverlaySpinner.tsx","components/Table/BaseTable/Body/Cell.tsx","components/Table/BaseTable/Body/EditableCell/StringEditableCell.tsx","components/Table/BaseTable/Body/EditableCell/OptionEditableCell.tsx","components/Table/BaseTable/Body/EditableCell/DateEditableCell.tsx","components/Table/BaseTable/Body/EditableCell/NumberEditableCell.tsx","components/Table/BaseTable/Body/EditableCell/BooleanEditableCell.tsx","components/Table/BaseTable/Body/EditableCell/OptionsEditableCell.tsx","webpack://mavles-frontend/./src/components/Table/BaseTable/Body/EditableCell/linkCell.module.scss?1662","components/Table/BaseTable/Body/EditableCell/LinkEditableCell.tsx","components/Table/BaseTable/Body/EditableCell/TimeEditableCell.tsx","components/Table/BaseTable/Body/EditableCell/EditableCell.tsx","components/Table/BaseTable/Body/LinkCell/helper.ts","webpack://mavles-frontend/./src/components/Table/BaseTable/Body/LinkCell/linkCell.module.scss?a3de","components/Table/BaseTable/Body/LinkCell/LinkCell.tsx","components/Table/BaseTable/Body/cellFormatter.tsx","webpack://mavles-frontend/./src/components/Table/BaseTable/Tooltip/tooltip.module.scss?5fa8","components/Table/BaseTable/Tooltip/Tooltip.tsx","components/Table/BaseTable/models.ts","components/Table/RemoteTable/prepareFiltersModel.ts","components/Table/BaseTable/Body/Row.tsx","components/Table/BaseTable/Body/Body.tsx","webpack://mavles-frontend/./src/components/Table/BaseTable/Header/header.module.scss?416f","components/Table/BaseTable/Header/Cell.tsx","components/Table/BaseTable/Filter/filtersHelper.ts","components/Table/BaseTable/Header/Header.tsx","webpack://mavles-frontend/./src/components/Table/BaseTable/baseTable.module.scss?3c9d","webpack://mavles-frontend/./src/components/Table/BaseTable/Separators/frozen.module.scss?978d","components/Table/BaseTable/Separators/Frozen.tsx","webpack://mavles-frontend/./src/components/Table/BaseTable/Pagination/pagination.module.scss?f2cf","components/Table/BaseTable/Pagination/Pagination.tsx","webpack://mavles-frontend/./src/components/Table/BaseTable/Separators/resize.module.scss?3397","components/Table/BaseTable/consts.ts","components/Table/BaseTable/Separators/Resize.tsx","webpack://mavles-frontend/./src/components/Table/BaseTable/Filter/ActiveFilter/filterItem.module.scss?9bf6","components/Table/BaseTable/Filter/ActiveFilter/filterItemHelper.ts","components/Table/BaseTable/Filter/ActiveFilter/FilterItem.tsx","components/Table/BaseTable/Filter/ActiveFilter/FilterItems.tsx","components/Table/BaseTable/Filter/ActiveFilter/useGetOrFiltersCallback.tsx","webpack://mavles-frontend/./src/components/Table/BaseTable/Filter/ActiveFilter/activeFilter.module.scss?88c5","components/Table/BaseTable/Filter/ActiveFilter/ActiveFilter.tsx","components/Table/BaseTable/Filter/FilterTypes/BooleanFilter/BooleanFilter.tsx","components/Table/BaseTable/Filter/FilterTypes/DateFilter/DateFilterModel.tsx","components/Table/BaseTable/Filter/FilterTypes/DateFilter/DateFilter.tsx","components/Table/BaseTable/Filter/FilterTypes/NumberFilter/NumberFilterModel.tsx","components/Table/BaseTable/Filter/FilterTypes/NumberFilter/NumberFilter.tsx","components/Table/BaseTable/Filter/FilterTypes/OptionsFilter/OptionsFilter.tsx","components/Table/BaseTable/Filter/FilterTypes/StringFilter/StringFilterModel.ts","components/Table/BaseTable/Filter/FilterTypes/StringFilter/StringFilter.tsx","components/Table/BaseTable/Filter/FilterTypes/MapFilter/MapFilter.tsx","components/Table/BaseTable/Filter/FilterTypes/SemaphoreFilter/SemaphoreFilter.tsx","components/Table/BaseTable/Filter/FilterTypes/TimeFilter/TimeFilterModel.ts","components/Table/BaseTable/Filter/FilterTypes/TimeFilter/TimeFilter.tsx","components/Table/BaseTable/Filter/FilterTypes/FilterElement.tsx","components/Table/BaseTable/Filter/Filter.tsx","webpack://mavles-frontend/./src/components/Table/BaseTable/Footer/footer.module.scss?b902","components/Table/BaseTable/Footer/Cell.tsx","components/Table/BaseTable/Footer/Row.tsx","components/Table/BaseTable/Footer/Footer.tsx","components/Table/BaseTable/helpers.ts","components/Table/BaseTable/BaseTable.tsx","components/Table/BaseTable/useColumnWidths.ts","components/Table/BaseTable/customTextAreaFormatter.ts","components/Table/ConfigureView/multiListHelper.ts","webpack://mavles-frontend/./src/components/Table/ConfigureView/resetButtons.module.scss?9270","components/Table/ConfigureView/ResetButtons.tsx","components/Table/ConfigureView/ConfigureView.tsx","components/Table/LocalTable/footerCalculationHelpers.ts","components/Table/LocalTable/filterSortPageHelpers.ts","webpack://mavles-frontend/./src/components/Table/BaseTable/Skeleton/skeletonTable.module.scss?3d0a","components/Table/BaseTable/Skeleton/SkeletonTable.tsx","components/Table/Toolbar/Toolbar.tsx","components/Table/CrudTable/validators.ts","components/Table/CrudTable/CrudTable.tsx","utils/objectUtil.ts","components/Table/LocalTable/LocalTable.tsx","components/Table/NestedTable/helpers.ts","components/Table/NestedTable/NestedTable.tsx","components/Table/RemoteTable/RemoteTable.tsx","components/Translations/Translation.tsx","components/Translations/TranslationsProvider.tsx","components/Translations/translationUtils.ts","assets/icons/arrow_down.svg","assets/icons/arrow_right.svg","assets/icons/bell.svg","assets/icons/calendar.svg","assets/icons/check.svg","assets/icons/delete.svg","assets/icons/edit.svg","assets/icons/file.svg","assets/icons/filter.svg","assets/icons/folder.svg","assets/icons/info.svg","assets/icons/info_squared.svg","assets/icons/plus.svg","assets/icons/themeToggle.svg","assets/icons/tree_structure.svg","assets/icons/warning.svg","assets/icons/communication.svg","assets/icons/project.svg","assets/icons/schedule.svg","assets/icons/testing.svg","assets/icons/tickets.svg","assets/icons/time_travel.svg","assets/icons/risk.svg","assets/icons/account.svg","assets/icons/configuration.svg","assets/icons/company_info.svg","assets/icons/scope.svg","assets/icons/settings.svg","assets/icons/finance.svg","assets/icons/training.svg","assets/icons/menu_expander.svg","assets/icons/create_project.svg","assets/icons/create_user.svg","assets/icons/create_partner.svg","assets/icons/help.svg","assets/icons/user_list.svg","assets/icons/hamburger.svg","assets/icons/clock.svg","assets/icons/arrow_left_new.svg","assets/icons/arrow_right_new.svg","assets/icons/arrow_double_left_new.svg","assets/icons/arrow_double_right_new.svg","assets/icons/diagram.svg","assets/icons/lock.svg","assets/icons/attachment.svg","assets/icons/link.svg","assets/icons/reset_width.svg","assets/icons/reset_order.svg","assets/icons/reset_filter.svg","assets/icons/reset_sort.svg","containers/Configuration/MyConfiguration/DefaultProject/action.ts","containers/Configuration/SiteConfiguration/CompanyInfoCont/CompanyInfo/action.ts","containers/Configuration/SiteConfiguration/General/Company/OrganizationalUnits/action.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/ChangeRequest/action.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Communication/action.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Invoices/action.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/MeetingMinutes/action.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Projects/action.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Reports/action.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Risks/action.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Tasks/action.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/TestCases/action.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Tickets/action.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/TimeAndTravel/action.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/TrainingStatus/action.ts","containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Users/action.ts","containers/Configuration/SiteConfiguration/Module/Communication/Tabs/MeetingType/action.ts","containers/Configuration/SiteConfiguration/Module/Finance/Tabs/Categories/action.ts","containers/Configuration/SiteConfiguration/Module/Risk/Tabs/RiskType/action.ts","containers/Configuration/SiteConfiguration/Module/Scope/action.ts","containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketAssignedGroup/action.ts","containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketCategory/action.ts","containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketClosingId/action.ts","containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketEnvironment/action.ts","containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketPriority/Impact/action.ts","containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketPriority/Urgency/action.ts","containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketPriority/action.ts","containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketType/action.ts","containers/Configuration/SiteConfiguration/Module/TimeAndTravel/Tabs/ExpenseTypes/action.ts","containers/Configuration/SiteConfiguration/Module/TimeAndTravel/Tabs/ExpensesGeneral/action.ts","containers/Configuration/SiteConfiguration/Module/TimeAndTravel/Tabs/NonProjectCategory/action.ts","containers/Configuration/SiteConfiguration/Module/TimeAndTravel/Tabs/TimesheetsGeneral/action.ts","containers/Configuration/SiteConfiguration/Module/TimeAndTravel/Tabs/TravelCostTypes/action.ts","containers/Configuration/SiteConfiguration/Module/TimeAndTravel/Tabs/VacationGeneral/action.ts","containers/Configuration/SiteConfiguration/Projects/ConfigureProjects/Tabs/ProjectCategory/action.ts","containers/Configuration/SiteConfiguration/Projects/ConfigureProjects/Tabs/ProjectType/action.ts","containers/Configuration/SiteConfiguration/Projects/CreateNewPartner/action.ts","containers/Configuration/SiteConfiguration/UserAdministration/Users/action.ts","containers/Projects/MyProjects/MaintainProject/Tabs/AssignTeamMembers/action.ts","containers/Projects/MyProjects/MaintainProject/Tabs/Roles/action.ts","containers/Projects/MyProjects/MaintainProject/Tabs/Teams/action.ts","containers/Projects/MyProjects/MaintainProject/Tabs/Timesheets/action.ts","containers/Schedule/Schedule/Configuration/action.ts","containers/Scope/MaintainScope/Configuration/Department/action.ts","containers/Scope/MaintainScope/Configuration/StepType/action.ts","containers/Scope/MaintainScope/Configuration/UserRole/action.ts","containers/TimeTravel/MyTimeTravel/Tabs/MyTravelRequests/action.ts","features/Country/action.ts","features/Crud/CrudEnum.ts","features/Crud/useTableInteractionManager.ts","features/Currency/action.ts","features/DateTimePattern/action.ts","webpack://mavles-frontend/./src/features/ErrorBoundary/errorBoundaryFallback.module.scss?0eff","features/ErrorBoundary/ErrorBoundaryFallback.tsx","features/ErrorBoundary/index.tsx","features/Export/Export.tsx","features/Export/ExportForm.tsx","features/Export/ExportToFile.tsx","features/Persist/reducerTypes.ts","features/Project/action.ts","features/Project/ProjectActiveModules/projectActiveModulesHelper.ts","features/Project/ProjectActiveModules/ProjectActiveModuleCheckbox.tsx","features/Project/ProjectActiveModules/ProjectActiveModules.tsx","features/Project/ProjectActiveModules/ProjectActiveModulesField.tsx","features/Project/projectHooks.ts","features/Project/controls/ProjectOrCategoryMultiSelect.tsx","features/Project/controls/ProjectOrCategorySelect.tsx","features/Project/controls/ProjectSelect.tsx","features/Project/fields/ProjectMultiSelectField.tsx","features/Project/fields/ProjectSelectField.tsx","features/Project/pickers/WithProjectOrCategoryPicker.tsx","features/Project/pickers/WithProjectPicker.tsx","features/Project/pickers/WithProjectsOrCategoriesPicker.tsx","features/Project/ProjectsTable/projectsChanged.ts","features/Project/ProjectsTable/tableColumns.ts","features/Project/ProjectsTable/ProjectsTable.tsx","features/Project/reducer.ts","features/Routes/action.ts","features/Routes/reducer.ts","features/Semantics/semanticsHelper.ts","features/StatusResponse/statusResponse.ts","features/TableColumns/persistedHooks.ts","features/TableColumns/prepareExportColumns.ts","features/TableColumns/usePrepareTableColumns.ts","features/Tenant/action.ts","features/Tenant/tenantUtils.ts","features/Theme/action.ts","features/Theme/localStorage.tsx","features/Theme/reducer.ts","features/ThemeProvider/amchartCustomTheme.js","features/Token/token.ts","features/UserTableViewConfig/action.ts","features/UserTableViewConfig/tableConfig/action.ts","../node_modules/@sentry/src/integration.ts","../node_modules/@sentry/src/integrations/inboundfilters.ts","../node_modules/@sentry/src/integrations/functiontostring.ts","../node_modules/@sentry/src/sdk.ts","../node_modules/@sentry/src/dsn.ts","../node_modules/@sentry/src/api.ts","../node_modules/@sentry/src/supports.ts","../node_modules/@sentry/src/vendor/supportsHistory.ts","../node_modules/@sentry/src/instrument/history.ts","../node_modules/@sentry/src/envelope.ts","../node_modules/@sentry/src/error.ts","../node_modules/@sentry/src/metrics/envelope.ts","../node_modules/@sentry/src/metrics/utils.ts","../node_modules/@sentry/src/baseclient.ts","../node_modules/@sentry/src/utils/sdkMetadata.ts","../node_modules/src/debug-build.ts","../node_modules/src/eventbuilder.ts","../node_modules/src/helpers.ts","../node_modules/src/client.ts","../node_modules/src/userfeedback.ts","../node_modules/@sentry/src/clientreport.ts","../node_modules/@sentry/src/instrument/console.ts","../node_modules/@sentry/src/instrument/dom.ts","../node_modules/@sentry/src/instrument/xhr.ts","../node_modules/@sentry/src/instrument/fetch.ts","../node_modules/@sentry/src/severity.ts","../node_modules/@sentry/src/url.ts","../node_modules/src/integrations/breadcrumbs.ts","../node_modules/src/integrations/dedupe.ts","../node_modules/src/integrations/globalhandlers.ts","../node_modules/src/integrations/httpcontext.ts","../node_modules/@sentry/src/aggregate-errors.ts","../node_modules/src/integrations/linkederrors.ts","../node_modules/src/integrations/trycatch.ts","../node_modules/src/stack-parsers.ts","../node_modules/@sentry/src/promisebuffer.ts","../node_modules/@sentry/src/ratelimit.ts","../node_modules/@sentry/src/transports/base.ts","../node_modules/src/transports/utils.ts","../node_modules/src/transports/fetch.ts","../node_modules/src/transports/xhr.ts","../node_modules/src/sdk.ts","../node_modules/@sentry/src/debug-build.ts","../node_modules/@sentry/src/errorboundary.tsx","../node_modules/@sentry-internal/src/common/debug-build.ts","../node_modules/@sentry-internal/src/browser/types.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/bindReporter.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/getNavigationEntry.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/getActivationStart.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/initMetric.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/generateUniqueID.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/observe.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/onHidden.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/getVisibilityWatcher.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/polyfills/interactionCountPolyfill.ts","../node_modules/@sentry-internal/src/browser/web-vitals/getINP.ts","../node_modules/@sentry-internal/src/browser/web-vitals/getLCP.ts","../node_modules/@sentry-internal/src/browser/web-vitals/onTTFB.ts","../node_modules/@sentry-internal/src/browser/instrument.ts","../node_modules/@sentry-internal/src/browser/web-vitals/getCLS.ts","../node_modules/@sentry-internal/src/browser/web-vitals/getFID.ts","../node_modules/@sentry/src/span.ts","../node_modules/@sentry-internal/src/browser/metrics/utils.ts","../node_modules/@sentry-internal/src/browser/metrics/index.ts","../node_modules/@sentry/src/tracing/measurement.ts","../node_modules/@sentry-internal/src/common/fetch.ts","../node_modules/@sentry-internal/src/browser/request.ts","../node_modules/@sentry-internal/src/browser/browsertracing.ts","../node_modules/@sentry-internal/src/browser/router.ts","../node_modules/@sentry/src/buildPolyfills/_optionalChain.ts","../node_modules/@sentry-internal/src/node/integrations/utils/node-utils.ts","../node_modules/@sentry-internal/src/node/integrations/apollo.ts","../node_modules/@sentry/src/requestdata.ts","../node_modules/@sentry-internal/src/node/integrations/express.ts","../node_modules/@sentry-internal/src/node/integrations/graphql.ts","../node_modules/@sentry-internal/src/node/integrations/mongo.ts","../node_modules/@sentry-internal/src/node/integrations/mysql.ts","../node_modules/@sentry-internal/src/node/integrations/postgres.ts","../node_modules/@sentry-internal/src/node/integrations/prisma.ts","../node_modules/src/index.ts","../node_modules/@sentry-internal/src/browser/backgroundtab.ts","config/productionConfig.ts","config/config.ts","config/stagingConfig.ts","services/errorReportingService.ts","services/BaseClient.ts","services/tenantManagementService.ts","settings/envSettings.ts","utils/MeridiemTimeEnum.ts","utils/arrayUtil.ts","utils/colorHelper.ts","utils/commonHelper.ts","utils/cssVariablesUtils.ts","utils/currencyUtils.ts","utils/dateTimeUtils.ts","utils/exportUtils.ts","utils/fetchUtils.ts","utils/propertyOf.ts","utils/storageUtils.ts","utils/stringUtil.ts","utils/userRoleHelper.ts","../node_modules/src/.internal/core/Base.ts","../node_modules/src/.internal/core/Component.ts","../node_modules/src/.internal/core/Container.ts","../node_modules/src/.internal/core/DataItem.ts","../node_modules/src/.internal/core/Options.ts","../node_modules/src/.internal/core/Registry.ts","../node_modules/src/.internal/core/Sprite.ts","../node_modules/src/.internal/core/SpriteEvents.ts","../node_modules/src/.internal/core/SpriteState.ts","../node_modules/src/.internal/core/System.ts","../node_modules/src/.internal/core/data/CSVParser.ts","../node_modules/src/.internal/core/data/DataLoader.ts","../node_modules/src/.internal/core/data/DataParser.ts","../node_modules/src/.internal/core/data/DataSource.ts","../node_modules/src/.internal/core/data/JSONParser.ts","../node_modules/src/.internal/core/defs/SVGDefaults.ts","../node_modules/src/.internal/core/elements/3d/Cone.ts","../node_modules/src/.internal/core/elements/3d/Rectangle3D.ts","../node_modules/src/.internal/core/elements/3d/Slice3D.ts","../node_modules/src/.internal/core/elements/Button.ts","../node_modules/src/.internal/core/elements/Circle.ts","../node_modules/src/.internal/core/elements/Ellipse.ts","../node_modules/src/.internal/core/elements/Label.ts","../node_modules/src/.internal/core/elements/Line.ts","../node_modules/src/.internal/core/elements/Modal.ts","../node_modules/src/.internal/core/elements/PointedRectangle.ts","../node_modules/src/.internal/core/elements/PointedShape.ts","../node_modules/src/.internal/core/elements/Polyline.ts","../node_modules/src/.internal/core/elements/Polyspline.ts","../node_modules/src/.internal/core/elements/PopupCSS.ts","../node_modules/src/.internal/core/elements/Popup.ts","../node_modules/src/.internal/core/elements/Rectangle.ts","../node_modules/src/.internal/core/elements/ResizeButton.ts","../node_modules/src/.internal/core/elements/RoundedRectangle.ts","../node_modules/src/.internal/core/elements/Scrollbar.ts","../node_modules/src/.internal/core/elements/Slice.ts","../node_modules/src/.internal/core/elements/TextLink.ts","../node_modules/src/.internal/core/elements/Tooltip.ts","../node_modules/src/.internal/core/elements/Trapezoid.ts","../node_modules/src/.internal/core/elements/Triangle.ts","../node_modules/src/.internal/core/elements/WavedCircle.ts","../node_modules/src/.internal/core/elements/WavedLine.ts","../node_modules/src/.internal/core/elements/WavedRectangle.ts","../node_modules/src/.internal/core/elements/ZoomOutButton.ts","../node_modules/src/.internal/core/export/Export.ts","../node_modules/src/.internal/core/export/ExportCSS.ts","../node_modules/src/.internal/core/export/ExportMenu.ts","../node_modules/src/.internal/core/formatters/DateFormatter.ts","../node_modules/src/.internal/core/formatters/DurationFormatter.ts","../node_modules/src/.internal/core/formatters/NumberFormatter.ts","../node_modules/src/.internal/core/formatters/TextFormatter.ts","../node_modules/src/.internal/core/interaction/Inertia.ts","../node_modules/src/.internal/core/interaction/Interaction.ts","../node_modules/src/.internal/core/interaction/InteractionKeyboardObject.ts","../node_modules/src/.internal/core/interaction/InteractionObject.ts","../node_modules/src/.internal/core/interaction/InteractionObjectEvents.ts","../node_modules/src/.internal/core/interaction/Mouse.ts","../node_modules/src/.internal/core/rendering/AMElement.ts","../node_modules/src/.internal/core/rendering/Group.ts","../node_modules/src/.internal/core/rendering/Paper.ts","../node_modules/src/.internal/core/rendering/Path.ts","../node_modules/src/.internal/core/rendering/SVGContainer.ts","../node_modules/src/.internal/core/rendering/Smoothing.ts","../node_modules/src/.internal/core/rendering/fills/ColorModifier.ts","../node_modules/src/.internal/core/rendering/fills/GradientModifier.ts","../node_modules/src/.internal/core/rendering/fills/LinearGradient.ts","../node_modules/src/.internal/core/rendering/fills/LinearGradientModifier.ts","../node_modules/src/.internal/core/rendering/fills/Pattern.ts","../node_modules/src/.internal/core/rendering/fills/RadialGradient.ts","../node_modules/src/.internal/core/rendering/filters/DesaturateFilter.ts","../node_modules/src/.internal/core/rendering/filters/DropShadowFilter.ts","../node_modules/src/.internal/core/rendering/filters/Filter.ts","../node_modules/src/.internal/core/rendering/filters/LightenFilter.ts","../node_modules/src/.internal/core/utils/Adapter.ts","../node_modules/src/.internal/core/utils/Animation.ts","../node_modules/src/.internal/core/utils/Array.ts","../node_modules/src/.internal/core/utils/AsyncPending.ts","../node_modules/src/.internal/core/utils/Browser.ts","../node_modules/src/.internal/core/utils/Cache.ts","../node_modules/src/.internal/core/utils/Color.ts","../node_modules/src/.internal/core/utils/ColorSet.ts","../node_modules/src/.internal/core/utils/Colors.ts","../node_modules/src/.internal/core/utils/DOM.ts","../node_modules/src/.internal/core/utils/Dictionary.ts","../node_modules/src/.internal/core/utils/Disposer.ts","../node_modules/src/.internal/core/utils/Ease.ts","../node_modules/src/.internal/core/utils/EventDispatcher.ts","../node_modules/src/.internal/core/utils/InterfaceColorSet.ts","../node_modules/src/.internal/core/utils/Iterator.ts","../node_modules/src/.internal/core/utils/Keyboard.ts","../node_modules/src/lang/en.ts","../node_modules/src/.internal/core/utils/Language.ts","../node_modules/src/.internal/core/utils/List.ts","../node_modules/src/.internal/core/utils/Log.ts","../node_modules/src/.internal/core/utils/Math.ts","../node_modules/src/.internal/core/utils/Net.ts","../node_modules/src/.internal/core/utils/Number.ts","../node_modules/src/.internal/core/utils/Object.ts","../node_modules/src/.internal/core/utils/Order.ts","../node_modules/src/.internal/core/utils/Percent.ts","../node_modules/src/.internal/core/utils/Responsive.ts","../node_modules/src/.internal/core/utils/SortedList.ts","../node_modules/src/.internal/core/utils/String.ts","../node_modules/src/.internal/core/utils/Strings.ts","../node_modules/src/.internal/core/utils/Time.ts","../node_modules/src/.internal/core/utils/Type.ts","../node_modules/src/.internal/core/utils/Utils.ts","../node_modules/src/.internal/core/utils/Validatable.ts","../node_modules/src/.internal/core/elements/Image.ts","../node_modules/src/.internal/core/elements/Polyarc.ts","../node_modules/src/.internal/core/utils/Morpher.ts","../node_modules/src/.internal/core/elements/Polygon.ts","../node_modules/src/.internal/core/elements/Preloader.ts","../node_modules/src/.internal/core/elements/Slider.ts","../node_modules/src/.internal/core/elements/PlayButton.ts","../node_modules/src/.internal/core/rendering/fills/RadialGradientModifier.ts","../node_modules/src/.internal/core/rendering/fills/LinePattern.ts","../node_modules/src/.internal/core/rendering/fills/CirclePattern.ts","../node_modules/src/.internal/core/rendering/fills/RectPattern.ts","../node_modules/src/.internal/core/rendering/filters/ColorizeFilter.ts","../node_modules/src/.internal/core/rendering/filters/BlurFilter.ts","../node_modules/src/.internal/core/rendering/filters/FocusFilter.ts","../node_modules/src/.internal/core/utils/PatternSet.ts","../node_modules/src/.internal/core/utils/Plugin.ts","../node_modules/src/.internal/core/elements/AmChartsLogo.ts","../node_modules/src/.internal/core/utils/Instance.ts","../node_modules/@amcharts/amcharts4/node_modules/tslib/tslib.es6.js","../node_modules/@sentry-internal/src/extensions.ts","../node_modules/@sentry/src/constants.ts","../node_modules/@sentry/src/eventProcessors.ts","../node_modules/@sentry/src/exports.ts","../node_modules/@sentry/src/hub.ts","../node_modules/@sentry/src/metrics/metric-summary.ts","../node_modules/@sentry/src/scope.ts","../node_modules/@sentry/src/semanticAttributes.ts","../node_modules/@sentry/src/session.ts","../node_modules/@sentry/src/tracing/dynamicSamplingContext.ts","../node_modules/@sentry/src/tracing/errors.ts","../node_modules/@sentry/src/tracing/hubextensions.ts","../node_modules/@sentry/src/tracing/idletransaction.ts","../node_modules/@sentry/src/tracing/sampling.ts","../node_modules/@sentry/src/tracing/span.ts","../node_modules/@sentry/src/tracing/spanstatus.ts","../node_modules/@sentry/src/utils/handleCallbackErrors.ts","../node_modules/@sentry/src/tracing/trace.ts","../node_modules/@sentry/src/tracing/transaction.ts","../node_modules/@sentry/src/tracing/utils.ts","../node_modules/@sentry/src/utils/applyScopeDataToEvent.ts","../node_modules/@sentry/src/utils/getRootSpan.ts","../node_modules/@sentry/src/utils/hasTracingEnabled.ts","../node_modules/@sentry/src/utils/prepareEvent.ts","../node_modules/@sentry/src/utils/spanUtils.ts","../node_modules/@sentry/src/version.ts","../node_modules/@sentry/src/baggage.ts","../node_modules/@sentry/src/browser.ts","../node_modules/@sentry/src/env.ts","../node_modules/@sentry/src/instrument/_handlers.ts","../node_modules/@sentry/src/instrument/globalError.ts","../node_modules/@sentry/src/instrument/globalUnhandledRejection.ts","../node_modules/@sentry/src/is.ts","../node_modules/@sentry/src/logger.ts","../node_modules/@sentry/src/misc.ts","../node_modules/@sentry/src/node.ts","../node_modules/@sentry/src/normalize.ts","../node_modules/@sentry/src/memo.ts","../node_modules/@sentry/src/object.ts","../node_modules/@sentry/src/stacktrace.ts","../node_modules/@sentry/src/string.ts","../node_modules/@sentry/src/syncpromise.ts","../node_modules/@sentry/src/time.ts","../node_modules/@sentry/src/tracing.ts","../node_modules/@sentry/src/worldwide.ts","../node_modules/css-element-queries/src/ResizeSensor.js","../node_modules/date-fns/esm/_lib/defaultLocale/index.js","../node_modules/date-fns/esm/_lib/defaultOptions/index.js","../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../node_modules/date-fns/esm/_lib/toInteger/index.js","../node_modules/date-fns/esm/addDays/index.js","../node_modules/date-fns/esm/addHours/index.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/date-fns/esm/addMinutes/index.js","../node_modules/date-fns/esm/addMonths/index.js","../node_modules/date-fns/esm/addQuarters/index.js","../node_modules/date-fns/esm/addWeeks/index.js","../node_modules/date-fns/esm/addYears/index.js","../node_modules/date-fns/esm/constants/index.js","../node_modules/date-fns/esm/differenceInCalendarDays/index.js","../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","../node_modules/date-fns/esm/differenceInCalendarYears/index.js","../node_modules/date-fns/esm/endOfDay/index.js","../node_modules/date-fns/esm/endOfMonth/index.js","../node_modules/date-fns/esm/endOfWeek/index.js","../node_modules/date-fns/esm/endOfYear/index.js","../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../node_modules/date-fns/esm/_lib/format/formatters/index.js","../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/format/index.js","../node_modules/date-fns/esm/getDate/index.js","../node_modules/date-fns/esm/getDay/index.js","../node_modules/date-fns/esm/getHours/index.js","../node_modules/date-fns/esm/startOfISOWeek/index.js","../node_modules/date-fns/esm/startOfISOWeekYear/index.js","../node_modules/date-fns/esm/getISOWeekYear/index.js","../node_modules/date-fns/esm/getISOWeek/index.js","../node_modules/date-fns/esm/getMinutes/index.js","../node_modules/date-fns/esm/getMonth/index.js","../node_modules/date-fns/esm/getQuarter/index.js","../node_modules/date-fns/esm/getSeconds/index.js","../node_modules/date-fns/esm/getTime/index.js","../node_modules/date-fns/esm/getYear/index.js","../node_modules/date-fns/esm/isAfter/index.js","../node_modules/date-fns/esm/isBefore/index.js","../node_modules/date-fns/esm/isDate/index.js","../node_modules/date-fns/esm/isEqual/index.js","../node_modules/date-fns/esm/isSameDay/index.js","../node_modules/date-fns/esm/isSameMonth/index.js","../node_modules/date-fns/esm/isSameQuarter/index.js","../node_modules/date-fns/esm/isSameYear/index.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/isWithinInterval/index.js","../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../node_modules/date-fns/esm/max/index.js","../node_modules/date-fns/esm/min/index.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/date-fns/esm/_lib/assign/index.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/date-fns/esm/parse/_lib/Setter.js","../node_modules/date-fns/esm/parse/_lib/Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js","../node_modules/date-fns/esm/parse/_lib/constants.js","../node_modules/date-fns/esm/parse/_lib/utils.js","../node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js","../node_modules/date-fns/esm/_lib/setUTCWeek/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js","../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js","../node_modules/date-fns/esm/_lib/setUTCDay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js","../node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/index.js","../node_modules/date-fns/esm/parse/index.js","../node_modules/date-fns/esm/parseISO/index.js","../node_modules/date-fns/esm/set/index.js","../node_modules/date-fns/esm/setHours/index.js","../node_modules/date-fns/esm/setMinutes/index.js","../node_modules/date-fns/esm/setMonth/index.js","../node_modules/date-fns/esm/getDaysInMonth/index.js","../node_modules/date-fns/esm/setQuarter/index.js","../node_modules/date-fns/esm/setSeconds/index.js","../node_modules/date-fns/esm/setYear/index.js","../node_modules/date-fns/esm/startOfDay/index.js","../node_modules/date-fns/esm/startOfMonth/index.js","../node_modules/date-fns/esm/startOfQuarter/index.js","../node_modules/date-fns/esm/startOfWeek/index.js","../node_modules/date-fns/esm/startOfYear/index.js","../node_modules/date-fns/esm/subDays/index.js","../node_modules/date-fns/esm/subMilliseconds/index.js","../node_modules/date-fns/esm/subMonths/index.js","../node_modules/date-fns/esm/subQuarters/index.js","../node_modules/date-fns/esm/subWeeks/index.js","../node_modules/date-fns/esm/subYears/index.js","../node_modules/date-fns/esm/toDate/index.js","../node_modules/draft-js/lib/AtomicBlockUtils.js","../node_modules/draft-js/lib/BlockMapBuilder.js","../node_modules/draft-js/lib/BlockTree.js","../node_modules/draft-js/lib/CharacterMetadata.js","../node_modules/draft-js/lib/CompositeDraftDecorator.js","../node_modules/draft-js/lib/ContentBlock.js","../node_modules/draft-js/lib/ContentBlockNode.js","../node_modules/draft-js/lib/ContentState.js","../node_modules/draft-js/lib/ContentStateInlineStyle.js","../node_modules/draft-js/lib/DOMObserver.js","../node_modules/draft-js/lib/DefaultDraftBlockRenderMap.js","../node_modules/draft-js/lib/DefaultDraftInlineStyle.js","../node_modules/draft-js/lib/Draft.js","../node_modules/draft-js/lib/DraftEditor.react.js","../node_modules/draft-js/lib/DraftEditorBlock.react.js","../node_modules/draft-js/lib/DraftEditorBlockNode.react.js","../node_modules/draft-js/lib/DraftEditorCompositionHandler.js","../node_modules/draft-js/lib/DraftEditorContents-core.react.js","../node_modules/draft-js/lib/DraftEditorContents.react.js","../node_modules/draft-js/lib/DraftEditorContentsExperimental.react.js","../node_modules/draft-js/lib/DraftEditorDecoratedLeaves.react.js","../node_modules/draft-js/lib/DraftEditorDragHandler.js","../node_modules/draft-js/lib/DraftEditorEditHandler.js","../node_modules/draft-js/lib/DraftEditorFlushControlled.js","../node_modules/draft-js/lib/DraftEditorLeaf.react.js","../node_modules/draft-js/lib/DraftEditorNode.react.js","../node_modules/draft-js/lib/DraftEditorPlaceholder.react.js","../node_modules/draft-js/lib/DraftEditorTextNode.react.js","../node_modules/draft-js/lib/DraftEffects.js","../node_modules/draft-js/lib/DraftEntity.js","../node_modules/draft-js/lib/DraftEntityInstance.js","../node_modules/draft-js/lib/DraftEntitySegments.js","../node_modules/draft-js/lib/DraftJsDebugLogging.js","../node_modules/draft-js/lib/DraftModifier.js","../node_modules/draft-js/lib/DraftOffsetKey.js","../node_modules/draft-js/lib/DraftPasteProcessor.js","../node_modules/draft-js/lib/DraftRemovableWord.js","../node_modules/draft-js/lib/DraftStringKey.js","../node_modules/draft-js/lib/DraftTreeAdapter.js","../node_modules/draft-js/lib/DraftTreeInvariants.js","../node_modules/draft-js/lib/EditorBidiService.js","../node_modules/draft-js/lib/EditorState.js","../node_modules/draft-js/lib/KeyBindingUtil.js","../node_modules/draft-js/lib/RichTextEditorUtil.js","../node_modules/draft-js/lib/SecondaryClipboard.js","../node_modules/draft-js/lib/SelectionState.js","../node_modules/draft-js/lib/adjustBlockDepthForContentState.js","../node_modules/draft-js/lib/applyEntityToContentBlock.js","../node_modules/draft-js/lib/applyEntityToContentState.js","../node_modules/draft-js/lib/convertFromDraftStateToRaw.js","../node_modules/draft-js/lib/convertFromHTMLToContentBlocks.js","../node_modules/draft-js/lib/convertFromRawToDraftState.js","../node_modules/draft-js/lib/createCharacterList.js","../node_modules/draft-js/lib/decodeEntityRanges.js","../node_modules/draft-js/lib/decodeInlineStyleRanges.js","../node_modules/draft-js/lib/draftKeyUtils.js","../node_modules/draft-js/lib/editOnBeforeInput.js","../node_modules/draft-js/lib/editOnBlur.js","../node_modules/draft-js/lib/editOnCompositionStart.js","../node_modules/draft-js/lib/editOnCopy.js","../node_modules/draft-js/lib/editOnCut.js","../node_modules/draft-js/lib/editOnDragOver.js","../node_modules/draft-js/lib/editOnDragStart.js","../node_modules/draft-js/lib/editOnFocus.js","../node_modules/draft-js/lib/editOnInput.js","../node_modules/draft-js/lib/editOnKeyDown.js","../node_modules/draft-js/lib/editOnPaste.js","../node_modules/draft-js/lib/editOnSelect.js","../node_modules/draft-js/lib/encodeEntityRanges.js","../node_modules/draft-js/lib/encodeInlineStyleRanges.js","../node_modules/draft-js/lib/expandRangeToStartOfLine.js","../node_modules/draft-js/lib/findAncestorOffsetKey.js","../node_modules/draft-js/lib/findRangesImmutable.js","../node_modules/draft-js/lib/generateRandomKey.js","../node_modules/draft-js/lib/getCharacterRemovalRange.js","../node_modules/draft-js/lib/getContentEditableContainer.js","../node_modules/draft-js/lib/getContentStateFragment.js","../node_modules/draft-js/lib/getCorrectDocumentFromNode.js","../node_modules/draft-js/lib/getDefaultKeyBinding.js","../node_modules/draft-js/lib/getDraftEditorSelection.js","../node_modules/draft-js/lib/getDraftEditorSelectionWithNodes.js","../node_modules/draft-js/lib/getEntityKeyForSelection.js","../node_modules/draft-js/lib/getFragmentFromSelection.js","../node_modules/draft-js/lib/getNextDelimiterBlockKey.js","../node_modules/draft-js/lib/getOwnObjectValues.js","../node_modules/draft-js/lib/getRangeBoundingClientRect.js","../node_modules/draft-js/lib/getRangeClientRects.js","../node_modules/draft-js/lib/getRangesForDraftEntity.js","../node_modules/draft-js/lib/getSafeBodyFromHTML.js","../node_modules/draft-js/lib/getSelectionOffsetKeyForNode.js","../node_modules/draft-js/lib/getTextContentFromFiles.js","../node_modules/draft-js/lib/getUpdatedSelectionState.js","../node_modules/draft-js/lib/getVisibleSelectionRect.js","../node_modules/draft-js/lib/getWindowForNode.js","../node_modules/draft-js/lib/gkx.js","../node_modules/draft-js/lib/insertFragmentIntoContentState.js","../node_modules/draft-js/lib/insertIntoList.js","../node_modules/draft-js/lib/insertTextIntoContentState.js","../node_modules/draft-js/lib/isElement.js","../node_modules/draft-js/lib/isEventHandled.js","../node_modules/draft-js/lib/isHTMLAnchorElement.js","../node_modules/draft-js/lib/isHTMLBRElement.js","../node_modules/draft-js/lib/isHTMLElement.js","../node_modules/draft-js/lib/isHTMLImageElement.js","../node_modules/draft-js/lib/isInstanceOfNode.js","../node_modules/draft-js/lib/isSelectionAtLeafStart.js","../node_modules/draft-js/lib/isSoftNewlineEvent.js","../node_modules/draft-js/lib/keyCommandBackspaceToStartOfLine.js","../node_modules/draft-js/lib/keyCommandBackspaceWord.js","../node_modules/draft-js/lib/keyCommandDeleteWord.js","../node_modules/draft-js/lib/keyCommandInsertNewline.js","../node_modules/draft-js/lib/keyCommandMoveSelectionToEndOfBlock.js","../node_modules/draft-js/lib/keyCommandMoveSelectionToStartOfBlock.js","../node_modules/draft-js/lib/keyCommandPlainBackspace.js","../node_modules/draft-js/lib/keyCommandPlainDelete.js","../node_modules/draft-js/lib/keyCommandTransposeCharacters.js","../node_modules/draft-js/lib/keyCommandUndo.js","../node_modules/draft-js/lib/modifyBlockForContentState.js","../node_modules/draft-js/lib/moveBlockInContentState.js","../node_modules/draft-js/lib/moveSelectionBackward.js","../node_modules/draft-js/lib/moveSelectionForward.js","../node_modules/draft-js/lib/randomizeBlockMapKeys.js","../node_modules/draft-js/lib/removeEntitiesAtEdges.js","../node_modules/draft-js/lib/removeRangeFromContentState.js","../node_modules/draft-js/lib/removeTextWithStrategy.js","../node_modules/draft-js/lib/sanitizeDraftText.js","../node_modules/draft-js/lib/setDraftEditorSelection.js","../node_modules/draft-js/lib/splitBlockInContentState.js","../node_modules/draft-js/lib/splitTextIntoTextBlocks.js","../node_modules/draft-js/lib/uuid.js","../node_modules/draftjs-to-html/lib/draftjs-to-html.js","../node_modules/fbjs/lib/DataTransfer.js","../node_modules/fbjs/lib/Keys.js","../node_modules/fbjs/lib/PhotosMimeType.js","../node_modules/fbjs/lib/Scroll.js","../node_modules/fbjs/lib/Style.js","../node_modules/fbjs/lib/TokenizeUtil.js","../node_modules/fbjs/lib/URI.js","../node_modules/fbjs/lib/UnicodeBidi.js","../node_modules/fbjs/lib/UnicodeBidiDirection.js","../node_modules/fbjs/lib/UnicodeBidiService.js","../node_modules/fbjs/lib/UnicodeUtils.js","../node_modules/fbjs/lib/UserAgent.js","../node_modules/fbjs/lib/UserAgentData.js","../node_modules/fbjs/lib/VersionRange.js","../node_modules/fbjs/lib/camelize.js","../node_modules/fbjs/lib/containsNode.js","../node_modules/fbjs/lib/createArrayFromMixed.js","../node_modules/fbjs/lib/cx.js","../node_modules/fbjs/lib/emptyFunction.js","../node_modules/fbjs/lib/getActiveElement.js","../node_modules/fbjs/lib/getDocumentScrollElement.js","../node_modules/fbjs/lib/getElementPosition.js","../node_modules/fbjs/lib/getElementRect.js","../node_modules/fbjs/lib/getScrollPosition.js","../node_modules/fbjs/lib/getStyleProperty.js","../node_modules/fbjs/lib/getUnboundedScrollPosition.js","../node_modules/fbjs/lib/getViewportDimensions.js","../node_modules/fbjs/lib/hyphenate.js","../node_modules/fbjs/lib/invariant.js","../node_modules/fbjs/lib/isNode.js","../node_modules/fbjs/lib/isTextNode.js","../node_modules/fbjs/lib/joinClasses.js","../node_modules/fbjs/lib/mapObject.js","../node_modules/fbjs/lib/memoizeStringOnly.js","../node_modules/fbjs/lib/nullthrows.js","../node_modules/fbjs/lib/setImmediate.js","../node_modules/fbjs/lib/warning.js","../node_modules/file-saver/src/FileSaver.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/html-to-draftjs/dist/html-to-draftjs.js","../node_modules/immutable/dist/immutable.js","../node_modules/isarray/index.js","../node_modules/object-assign/index.js","../node_modules/path-browserify/index.js","../node_modules/path-to-regexp/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/components/Context.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/utils/batch.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/components/Provider.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/utils/bindActionCreators.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/connect/connect.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/hooks/useSelector.js","../node_modules/use-memo-one/dist/use-memo-one.esm.js","../node_modules/react-beautiful-dnd/node_modules/react-redux/es/index.js","../node_modules/css-box-model/dist/css-box-model.esm.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/raf-schd/dist/raf-schd.esm.js","../node_modules/react-beautiful-dnd/dist/react-beautiful-dnd.esm.js","../node_modules/react-beautiful-dnd/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-beautiful-dnd/node_modules/react-is/index.js","../node_modules/react-datepicker/dist/react-datepicker.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-dom/node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/react-dom/node_modules/scheduler/index.js","../node_modules/react-draft-wysiwyg/dist/react-draft-wysiwyg.js","../node_modules/react-fast-compare/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-onclickoutside/dist/react-onclickoutside.es.js","../node_modules/react-popper/lib/esm/Manager.js","../node_modules/react-popper/lib/esm/utils.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/react-popper/lib/esm/usePopper.js","../node_modules/react-popper/lib/esm/Popper.js","../node_modules/react-popper/lib/esm/Reference.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/utils/useSyncExternalStore.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/invalidArgFactory.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-redux/es/components/connect.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/utils/bindActionCreators.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/index.js","../node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-redux/node_modules/react-is/index.js","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","../node_modules/react-router/modules/miniCreateReactContext.js","../node_modules/react-router/modules/createContext.js","../node_modules/react-router/modules/createNamedContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/Prompt.js","../node_modules/react-router/modules/generatePath.js","../node_modules/react-router/modules/Redirect.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/withRouter.js","../node_modules/react-router/modules/hooks.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/react-toastify/src/utils/propValidator.ts","../node_modules/react-toastify/src/utils/constant.ts","../node_modules/react-toastify/src/utils/cssTransition.tsx","../node_modules/react-toastify/src/utils/collapseToast.ts","../node_modules/react-toastify/src/core/eventManager.ts","../node_modules/react-toastify/src/hooks/useKeeper.ts","../node_modules/react-toastify/src/hooks/toastContainerReducer.ts","../node_modules/react-toastify/src/hooks/useToastContainer.ts","../node_modules/react-toastify/src/hooks/useToast.ts","../node_modules/react-toastify/src/components/CloseButton.tsx","../node_modules/react-toastify/src/components/ProgressBar.tsx","../node_modules/react-toastify/src/components/Toast.tsx","../node_modules/react-toastify/src/components/Transitions.tsx","../node_modules/react-toastify/src/components/ToastPositioner.tsx","../node_modules/react-toastify/src/components/ToastContainer.tsx","../node_modules/react-toastify/src/core/toast.tsx","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/redux/es/redux.js","../node_modules/rxjs/src/internal/util/isFunction.ts","../node_modules/rxjs/src/internal/util/createErrorClass.ts","../node_modules/rxjs/src/internal/util/UnsubscriptionError.ts","../node_modules/rxjs/src/internal/util/arrRemove.ts","../node_modules/rxjs/src/internal/Subscription.ts","../node_modules/rxjs/src/internal/config.ts","../node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts","../node_modules/rxjs/src/internal/util/noop.ts","../node_modules/rxjs/src/internal/NotificationFactories.ts","../node_modules/rxjs/src/internal/util/errorContext.ts","../node_modules/rxjs/src/internal/Subscriber.ts","../node_modules/rxjs/src/internal/util/reportUnhandledError.ts","../node_modules/rxjs/src/internal/symbol/observable.ts","../node_modules/rxjs/src/internal/util/identity.ts","../node_modules/rxjs/src/internal/util/pipe.ts","../node_modules/rxjs/src/internal/Observable.ts","../node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts","../node_modules/rxjs/src/internal/Subject.ts","../node_modules/setimmediate/setImmediate.js","../node_modules/ua-parser-js/src/ua-parser.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/warning/warning.js","webpack://mavles-frontend/./src/components/Form/controls/DatePicker/datePicker.module.scss?2a1f","webpack://mavles-frontend/./src/components/Table/BaseTable/Body/body.module.scss?4328","../node_modules/classnames/index.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/tslib/tslib.es6.mjs","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/harmony module decorator","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","../node_modules/src/.internal/themes/dark.ts","../node_modules/src/.internal/themes/animated.ts","webpack://mavles-frontend/./src/assets/styles/themes/light.module.scss?461a","webpack://mavles-frontend/./src/assets/styles/themes/dark.module.scss?dfca","features/ThemeProvider/ThemeProvider.tsx","pages/PageRouter.tsx","containers/AppContainer.tsx","index.tsx"],"sourcesContent":["export const HOME_ROUTE = '/';\nexport const ONBOARDING_ROUTE = '/onboarding'\n","import { FetchingActionType } from 'features/Persist/actionTypes';\nimport { PersistValueReducer } from 'features/Persist/reducerTypes';\nimport { SET_COLUMNS_ORDER_TABLE_CONFIG, SET_COLUMNS_WIDTH_TABLE_CONFIG, SET_TABLE_CONFIG, TablesConfigActionType, TABLE_CONFIG_FETCHING, ColumnsOrderActionType, ColumnsWidthActionType, SET_FILTERS_TABLE_CONFIG, FiltersActionType, SortActionType, SET_SORT_TABLE_CONFIG } from './action';\nimport { FilterType, SortType } from 'components/Table';\n\nexport type ColumnsOrderType = string[]\nexport type ColumnsWidthType = { [columnId: string]: number }\n\nexport type TableConfig = {\n\tcolumnsOrder?: ColumnsOrderType\n\tcolumnsWidth?: ColumnsWidthType\n\tfilters?: FilterType[]\n\tsort?: SortType\n}\n\nexport type TablesConfig = {\n\t[tableId: string]: TableConfig | undefined\n}\n\nconst initialState = new PersistValueReducer();\n\nexport const tablesConfigReducer = (\n\tstate = initialState,\n\taction: TablesConfigActionType | ColumnsOrderActionType | ColumnsWidthActionType | FiltersActionType | SortActionType | FetchingActionType\n): PersistValueReducer => {\n\tswitch (action.type) {\n\t\tcase TABLE_CONFIG_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase SET_TABLE_CONFIG:\n\t\t\tconst { tablesConfig } = action as TablesConfigActionType;\n\n\t\t\treturn {\n\t\t\t\tvalue: tablesConfig,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tcase SET_COLUMNS_ORDER_TABLE_CONFIG: {\n\t\t\tconst { tableId, columnsOrder } = action as ColumnsOrderActionType;\n\n\t\t\treturn {\n\t\t\t\tvalue: {\n\t\t\t\t\t...state.value,\n\t\t\t\t\t[tableId]: {\n\t\t\t\t\t\t...state.value[tableId],\n\t\t\t\t\t\tcolumnsOrder\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\t}\n\t\tcase SET_COLUMNS_WIDTH_TABLE_CONFIG: {\n\t\t\tconst { tableId, columnsWidth } = action as ColumnsWidthActionType;\n\n\t\t\treturn {\n\t\t\t\tvalue: {\n\t\t\t\t\t...state.value,\n\t\t\t\t\t[tableId]: {\n\t\t\t\t\t\t...state.value[tableId],\n\t\t\t\t\t\tcolumnsWidth\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\t}\n\t\tcase SET_FILTERS_TABLE_CONFIG: {\n\t\t\tconst { tableId, filters } = action as FiltersActionType;\n\n\t\t\treturn {\n\t\t\t\tvalue: {\n\t\t\t\t\t...state.value,\n\t\t\t\t\t[tableId]: {\n\t\t\t\t\t\t...state.value[tableId],\n\t\t\t\t\t\tfilters\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\t}\n\t\tcase SET_SORT_TABLE_CONFIG: {\n\t\t\tconst { tableId, sort } = action as SortActionType;\n\n\t\t\treturn {\n\t\t\t\tvalue: {\n\t\t\t\t\t...state.value,\n\t\t\t\t\t[tableId]: {\n\t\t\t\t\t\t...state.value[tableId],\n\t\t\t\t\t\tsort\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { combineReducers } from 'redux';\nimport { routesReducer as routes } from 'features/Routes/reducer';\nimport { usersReducer as persistedUser } from 'containers/Configuration/SiteConfiguration/UserAdministration/Users/reducer';\nimport { projectTypesReducer as persistedProjectType } from 'containers/Configuration/SiteConfiguration/Projects/ConfigureProjects/Tabs/ProjectType/reducer';\nimport { projectCategoriesReducer as persistedProjectCategory } from 'containers/Configuration/SiteConfiguration/Projects/ConfigureProjects/Tabs/ProjectCategory/reducer';\nimport { projectStatusesReducer as persistedProjectStatus } from 'containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Projects/reducer';\nimport { businessPartnersReducer as persistedBusinessPartner } from 'containers/Configuration/SiteConfiguration/Projects/CreateNewPartner/reducer';\nimport { countryReducer as persistedCountry } from 'features/Country/reducer';\nimport { datePatternReducer as persistedDatePattern, timePatternReducer as persistedTimePattern } from 'features/DateTimePattern/reducer';\nimport { projectReducer as persistedProject, organizationalUnitManagerProjectReducer as persistedOrganizationalUnitManagerProject } from 'features/Project';\nimport { currencyReducer as persistedCurrency } from 'features/Currency/reducer';\nimport { tenantReducer as persistedTenant } from 'features/Tenant/reducer';\nimport { companyInfoReducer as persistedCompanyInfo } from 'containers/Configuration/SiteConfiguration/CompanyInfoCont/CompanyInfo/reducer';\nimport { defaultProjectReducer as persistedDefaultProject } from 'containers/Configuration/MyConfiguration/DefaultProject/reducer';\nimport { teamMembersReducer as persistedTeamMember } from 'containers/Projects/MyProjects/MaintainProject/Tabs/AssignTeamMembers/reducer';\nimport { projectTeamsReducer as persistedProjectTeam } from 'containers/Projects/MyProjects/MaintainProject/Tabs/Teams/reducer';\nimport { projectRolesReducer as persistedProjectRole } from 'containers/Projects/MyProjects/MaintainProject/Tabs/Roles/reducer';\nimport { ticketTypesReducer as persistedTicketType } from 'containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketType/reducer';\nimport { ticketEnvironmentsReducer as persistedTicketEnvironment } from 'containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketEnvironment/reducer';\nimport { riskTypesReducer as persistedRiskType } from 'containers/Configuration/SiteConfiguration/Module/Risk/Tabs/RiskType/reducer';\nimport { ticketAssignedGroupsReducer as persistedTicketAssignedGroup } from 'containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketAssignedGroup/reducer';\nimport { ticketCategoryReducer as persistedTicketCategory } from 'containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketCategory/reducer';\nimport { ticketStatusReducer as persistedTicketStatus } from 'containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Tickets/reducer';\nimport { ticketImpactReducer as persistedTicketImpact } from 'containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketPriority/Impact/reducer';\nimport { ticketUrgencyReducer as persistedTicketUrgency } from 'containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketPriority/Urgency/reducer';\nimport { ticketPriorityReducer as persistedTicketPriority } from 'containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketPriority/reducer';\nimport { reportStatusReducer as persistedReportStatus } from 'containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Reports/reducer';\nimport { riskStatusReducer as persistedRiskStatus } from 'containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Risks/reducer';\nimport { invoiceStatusReducer as persistedInvoiceStatus } from 'containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Invoices/reducer';\nimport { changeRequestStatusReducer as persistedChangeRequestStatus } from 'containers/Configuration/SiteConfiguration/General/Statuses/Tabs/ChangeRequest/reducer';\nimport { userStatusReducer as persistedUserStatus } from 'containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Users/reducer';\nimport { ticketClosingIdReducer as persistedTicketClosingId } from 'containers/Configuration/SiteConfiguration/Module/Tickets/Tabs/TicketClosingId/reducer';\nimport { changeRequestTypeReducer as persistedChangeRequestType } from 'containers/Configuration/SiteConfiguration/Module/Scope/reducer';\nimport { testCaseStatusReducer as persistedTestCaseStatus } from 'containers/Configuration/SiteConfiguration/General/Statuses/Tabs/TestCases/reducer';\nimport { trainingStatusReducer as persistedTrainingStatus } from 'containers/Configuration/SiteConfiguration/General/Statuses/Tabs/TrainingStatus/reducer';\nimport { timeAndTravelStatusReducer as persistedTimeAndTravelStatus } from 'containers/Configuration/SiteConfiguration/General/Statuses/Tabs/TimeAndTravel/reducer';\nimport { timeTravelNonProjectCategoriesReducer as persistedTimeTravelNonProjectCategories } from 'containers/Configuration/SiteConfiguration/Module/TimeAndTravel/Tabs/NonProjectCategory/reducer';\nimport { travelCostTypesReducer as persistedTravelCostTypes } from 'containers/Configuration/SiteConfiguration/Module/TimeAndTravel/Tabs/TravelCostTypes/reducer';\nimport { timeTravelExpenseTypesReducer as persistedTimeTravelExpenseTypes } from 'containers/Configuration/SiteConfiguration/Module/TimeAndTravel/Tabs/ExpenseTypes/reducer';\nimport { expenseGeneralConfigurationReducer as persistedExpenseGeneralConfiguration } from 'containers/Configuration/SiteConfiguration/Module/TimeAndTravel/Tabs/ExpensesGeneral/reducer';\nimport { vacationGeneralConfigurationReducer as persistedVacationGeneralConfiguration } from 'containers/Configuration/SiteConfiguration/Module/TimeAndTravel/Tabs/VacationGeneral/reducer';\nimport { timesheetsGeneralConfigurationReducer as persistedTimesheetsGeneralConfiguration } from 'containers/Configuration/SiteConfiguration/Module/TimeAndTravel/Tabs/TimesheetsGeneral/reducer';\nimport { travelRequestsReducer as persistedTravelRequests } from 'containers/TimeTravel/MyTimeTravel/Tabs/MyTravelRequests/reducer';\nimport { themeReducer as theme } from 'features/Theme'\nimport { organizationalUnitsReducer as persistedOrganizationalUnit } from 'containers/Configuration/SiteConfiguration/General/Company/OrganizationalUnits/reducer';\nimport { financeCategoryReducer as persistedFinanceCategory } from 'containers/Configuration/SiteConfiguration/Module/Finance/Tabs/Categories/reducer';\nimport { communicationStatusReportReducer as persistedCommunicationStatusReport } from 'containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Communication/reducer';\nimport { taskStatusReducer as persistedTaskStatus } from 'containers/Configuration/SiteConfiguration/General/Statuses/Tabs/Tasks/reducer';\nimport { meetingStatusReducer as persistedMeetingStatus } from 'containers/Configuration/SiteConfiguration/General/Statuses/Tabs/MeetingMinutes/reducer';\nimport { meetingTypeReducer as persistedMeetingType } from 'containers/Configuration/SiteConfiguration/Module/Communication/Tabs/MeetingType/reducer';\nimport { scheduleConfigurationReducer as persistedScheduleConfiguration } from 'containers/Schedule/Schedule/Configuration/reducer';\nimport { departmentsReducer as persistedScopeDepartments } from 'containers/Scope/MaintainScope/Configuration/Department/reducer';\nimport { stepTypesReducer as persistedScopeStepTypes } from 'containers/Scope/MaintainScope/Configuration/StepType/reducer';\nimport { userRolesReducer as persistedScopeUserRoles } from 'containers/Scope/MaintainScope/Configuration/UserRole/reducer';\nimport { timesheetRequiredFieldsReducer as persistedTimesheetRequiredFields } from 'containers/Projects/MyProjects/MaintainProject/Tabs/Timesheets/reducer';\nimport { tablesConfigReducer as persistedTablesConfig } from 'features/UserTableViewConfig/tableConfig/reducer';\n\nconst reducer = combineReducers({\n\troutes,\n\ttheme,\n\tpersistedTenant,\n\tpersistedCompanyInfo,\n\tpersistedCurrency,\n\tpersistedCountry,\n\tpersistedDatePattern,\n\tpersistedTimePattern,\n\tpersistedBusinessPartner,\n\tpersistedProjectStatus,\n\tpersistedProjectType,\n\tpersistedProjectCategory,\n\tpersistedDefaultProject,\n\n\tpersistedProject,\n\tpersistedOrganizationalUnitManagerProject,\n\n\t// ticket\n\tpersistedTicketType,\n\tpersistedTicketEnvironment,\n\tpersistedTicketAssignedGroup,\n\tpersistedTicketCategory,\n\tpersistedTicketStatus,\n\tpersistedTicketImpact,\n\tpersistedTicketUrgency,\n\tpersistedTicketPriority,\n\tpersistedTicketClosingId,\n\n\t// report\n\tpersistedReportStatus,\n\tpersistedRiskStatus,\n\tpersistedInvoiceStatus,\n\tpersistedChangeRequestStatus,\n\n\t// scope\n\tpersistedChangeRequestType,\n\tpersistedScopeDepartments,\n\tpersistedScopeStepTypes,\n\tpersistedScopeUserRoles,\n\n\t// testing\n\tpersistedTestCaseStatus,\n\n\t// training\n\tpersistedTrainingStatus,\n\n\t// time and travel\n\tpersistedTimeAndTravelStatus,\n\tpersistedTimeTravelNonProjectCategories,\n\tpersistedTravelCostTypes,\n\tpersistedTimeTravelExpenseTypes,\n\tpersistedExpenseGeneralConfiguration,\n\tpersistedVacationGeneralConfiguration,\n\tpersistedTimesheetsGeneralConfiguration,\n\tpersistedTravelRequests,\n\tpersistedTimesheetRequiredFields,\n\n\t// finance\n\tpersistedFinanceCategory,\n\n\tpersistedUserStatus,\n\tpersistedUser,\n\tpersistedTeamMember,\n\tpersistedProjectTeam,\n\tpersistedProjectRole,\n\tpersistedOrganizationalUnit,\n\n\t// communication\n\tpersistedCommunicationStatusReport,\n\tpersistedTaskStatus,\n\tpersistedMeetingStatus,\n\tpersistedMeetingType,\n\n\t// schedule\n\tpersistedScheduleConfiguration,\n\n\t// risk\n\tpersistedRiskType,\n\n\t// table config\n\tpersistedTablesConfig\n});\n\nexport type RootState = ReturnType;\n\nexport default reducer;\n","import { FetchingActionType, PersistValueActionType } from 'features/Persist/actionTypes';\nimport { PersistValueReducer } from 'features/Persist/reducerTypes';\nimport { TenantResponseModel } from 'services/tenantManagementService';\nimport { TENANT_FETCHING, TENANT_SET } from './action';\n\nexport const tenantReducer = (state = new PersistValueReducer(), action: PersistValueActionType | FetchingActionType): PersistValueReducer => {\n\tswitch (action.type) {\n\t\tcase TENANT_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TENANT_SET:\n\t\t\tconst { value } = action as PersistValueActionType;\n\n\t\t\treturn {\n\t\t\t\tvalue,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistValueActionType } from 'features/Persist/actionTypes';\nimport { PersistValueReducer } from 'features/Persist/reducerTypes';\nimport { CompanyResponseModel } from 'services/tenantManagementService';\nimport { COMPANY_INFO_FETCHING, COMPANY_INFO_SET } from './action';\n\nexport const companyInfoReducer = (state = new PersistValueReducer(), action: PersistValueActionType | FetchingActionType): PersistValueReducer => {\n\tswitch (action.type) {\n\t\tcase COMPANY_INFO_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase COMPANY_INFO_SET:\n\t\t\tconst { value } = action as PersistValueActionType;\n\n\t\t\treturn {\n\t\t\t\tvalue,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\nimport { IdNameSymbolResponse } from 'services/tenantManagementService';\nimport { CURRENCIES_FETCHING, CURRENCIES_SET } from './action';\n\nexport const currencyReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase CURRENCIES_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase CURRENCIES_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: IdNameSymbolResponse } = items.reduce(\n (map: { [id: number]: IdNameSymbolResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\nimport { IdNameSymbolResponse } from 'services/tenantManagementService';\nimport { COUNTRIES_SET, COUNTRIES_FETCHING } from './action';\n\nexport const countryReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase COUNTRIES_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase COUNTRIES_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: IdNameSymbolResponse } = items.reduce(\n (map: { [id: number]: IdNameSymbolResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\nimport { DateTimePatternResponse } from 'services/tenantManagementService';\nimport { DATE_PATTERN_FETCHING, DATE_PATTERN_SET, TIME_PATTERN_FETCHING, TIME_PATTERN_SET } from './action';\n\nexport const datePatternReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase DATE_PATTERN_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase DATE_PATTERN_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: DateTimePatternResponse } = items.reduce(\n\t\t\t\t(map: { [id: number]: DateTimePatternResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nexport const timePatternReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TIME_PATTERN_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TIME_PATTERN_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: DateTimePatternResponse } = items.reduce(\n\t\t\t\t(map: { [id: number]: DateTimePatternResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\nimport { BusinessPartnerResponseModel } from 'services/tenantManagementService';\nimport { propertyOf } from 'utils/propertyOf';\nimport { sortByString } from 'utils/stringUtil';\nimport { BUSINESS_PARTNERS_SET, BUSINESS_PARTNERS_FETCHING } from './action';\n\nexport const businessPartnersReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase BUSINESS_PARTNERS_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase BUSINESS_PARTNERS_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: BusinessPartnerResponseModel } = items.reduce(\n (map: { [id: number]: BusinessPartnerResponseModel }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems: sortByString(items, propertyOf('name')),\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { ProjectStatusResponse } from 'services/tenantManagementService';\nimport { PROJECT_STATUSES_FETCHING, PROJECT_STATUSES_SET } from './action';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\n\nexport const projectStatusesReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase PROJECT_STATUSES_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase PROJECT_STATUSES_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: ProjectStatusResponse } = items.reduce(\n (map: { [id: number]: ProjectStatusResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistActiveItemsReducer } from 'features/Persist/reducerTypes';\nimport { TenantIsActiveResponse } from 'services/tenantManagementService';\nimport { PROJECT_TYPES_SET, PROJECT_TYPES_FETCHING } from './action';\n\nexport const projectTypesReducer = (state = new PersistActiveItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistActiveItemsReducer => {\n\tswitch (action.type) {\n\t\tcase PROJECT_TYPES_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase PROJECT_TYPES_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: TenantIsActiveResponse } = items.reduce(\n (map: { [id: number]: TenantIsActiveResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\tconst activeItems = items.filter(x => x.isActive);\n\n\t\t\tconst activeItemsMap: { [id: number]: TenantIsActiveResponse } = items.reduce(\n (map: { [id: number]: TenantIsActiveResponse }, item) => {\n\t\t\t\t\tif (item.isActive) {\n\t\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tactiveItems,\n\t\t\t\tactiveItemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistActiveItemsReducer } from 'features/Persist/reducerTypes';\nimport { TenantIsActiveResponse } from 'services/tenantManagementService';\nimport { PROJECT_CATEGORIES_FETCHING, PROJECT_CATEGORIES_SET } from './action';\n\nexport const projectCategoriesReducer = (state = new PersistActiveItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistActiveItemsReducer => {\n\tswitch (action.type) {\n\t\tcase PROJECT_CATEGORIES_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase PROJECT_CATEGORIES_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: TenantIsActiveResponse } = items.reduce(\n\t\t\t\t(map: { [id: number]: TenantIsActiveResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\n\t\t\tconst activeItems = items.filter(x => x.isActive);\n\n\t\t\tconst activeItemsMap: { [id: number]: TenantIsActiveResponse } = items.reduce(\n (map: { [id: number]: TenantIsActiveResponse }, item) => {\n\t\t\t\t\tif (item.isActive) {\n\t\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tactiveItems,\n\t\t\t\tactiveItemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistValueActionType } from 'features/Persist/actionTypes';\nimport { PersistValueReducer } from 'features/Persist/reducerTypes';\nimport { DefaultProjectResponse } from 'services/tenantManagementService';\nimport { DEFAULT_PROJECT_FETCHING, DEFAULT_PROJECT_SET } from './action';\n\nexport const defaultProjectReducer = (state = new PersistValueReducer(), action: PersistValueActionType | FetchingActionType): PersistValueReducer => {\n\tswitch (action.type) {\n\t\tcase DEFAULT_PROJECT_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase DEFAULT_PROJECT_SET:\n\t\t\tconst { value } = action as PersistValueActionType;\n\n\t\t\treturn {\n\t\t\t\tvalue,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistActiveItemsReducer } from 'features/Persist/reducerTypes';\nimport { TenantIsActiveResponse } from 'services/tenantManagementService';\nimport { TICKET_TYPES_SET, TICKET_TYPES_FETCHING } from './action';\n\nexport const ticketTypesReducer = (state = new PersistActiveItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistActiveItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TICKET_TYPES_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TICKET_TYPES_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: TenantIsActiveResponse } = items.reduce(\n (map: { [id: number]: TenantIsActiveResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\tconst activeItems = items.filter(x => x.isActive);\n\n\t\t\tconst activeItemsMap: { [id: number]: TenantIsActiveResponse } = items.reduce(\n (map: { [id: number]: TenantIsActiveResponse }, item) => {\n\t\t\t\t\tif (item.isActive) {\n\t\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tactiveItems,\n\t\t\t\tactiveItemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistActiveItemsReducer } from 'features/Persist/reducerTypes';\nimport { TenantIsActiveResponse } from 'services/tenantManagementService';\nimport { TICKET_ENVIRONMENTS_SET, TICKET_ENVIRONMENTS_FETCHING } from './action';\n\nexport const ticketEnvironmentsReducer = (state = new PersistActiveItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistActiveItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TICKET_ENVIRONMENTS_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TICKET_ENVIRONMENTS_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: TenantIsActiveResponse } = items.reduce(\n (map: { [id: number]: TenantIsActiveResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\tconst activeItems = items.filter(x => x.isActive);\n\n\t\t\tconst activeItemsMap: { [id: number]: TenantIsActiveResponse } = items.reduce(\n (map: { [id: number]: TenantIsActiveResponse }, item) => {\n\t\t\t\t\tif (item.isActive) {\n\t\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tactiveItems,\n\t\t\t\tactiveItemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistActiveItemsReducer } from 'features/Persist/reducerTypes';\nimport { TicketAssignedGroupsResponse } from 'services/tenantManagementService';\nimport { TICKET_ASSIGNED_GROUP_SET, TICKET_ASSIGNED_GROUP_FETCHING } from './action';\n\nexport const ticketAssignedGroupsReducer = (state = new PersistActiveItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistActiveItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TICKET_ASSIGNED_GROUP_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TICKET_ASSIGNED_GROUP_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: TicketAssignedGroupsResponse } = items.reduce(\n (map: { [id: number]: TicketAssignedGroupsResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\tconst activeItems = items.filter(x => x.isActive);\n\n\t\t\tconst activeItemsMap: { [id: number]: TicketAssignedGroupsResponse } = items.reduce(\n (map: { [id: number]: TicketAssignedGroupsResponse }, item) => {\n\t\t\t\t\tif (item.isActive) {\n\t\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tactiveItems,\n\t\t\t\tactiveItemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistActiveItemsReducer } from 'features/Persist/reducerTypes';\nimport { TicketCategoryResponse } from 'services/tenantManagementService';\nimport { TICKET_CATEGORY_SET, TICKET_CATEGORY_FETCHING } from './action';\n\nexport const ticketCategoryReducer = (state = new PersistActiveItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistActiveItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TICKET_CATEGORY_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TICKET_CATEGORY_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: TicketCategoryResponse } = items.reduce(\n (map: { [id: number]: TicketCategoryResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\tconst activeItems = items.filter(x => x.isActive);\n\n\t\t\tconst activeItemsMap: { [id: number]: TicketCategoryResponse } = items.reduce(\n (map: { [id: number]: TicketCategoryResponse }, item) => {\n\t\t\t\t\tif (item.isActive) {\n\t\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tactiveItems,\n\t\t\t\tactiveItemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\nimport { TicketStatusResponse } from 'services/tenantManagementService';\nimport { TICKET_STATUS_SET, TICKET_STATUS_FETCHING } from './action';\n\nexport const ticketStatusReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TICKET_STATUS_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TICKET_STATUS_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: TicketStatusResponse } = items.reduce(\n (map: { [id: number]: TicketStatusResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\nimport { ImpactResponse } from 'services/tenantManagementService';\nimport { TICKET_IMPACT_SET, TICKET_IMPACT_FETCHING } from './action';\n\nexport const ticketImpactReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TICKET_IMPACT_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TICKET_IMPACT_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: ImpactResponse } = items.reduce(\n (map: { [id: number]: ImpactResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\nimport { UrgencyResponse } from 'services/tenantManagementService';\nimport { TICKET_URGENCY_SET, TICKET_URGENCY_FETCHING } from './action';\n\nexport const ticketUrgencyReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TICKET_URGENCY_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TICKET_URGENCY_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: UrgencyResponse } = items.reduce(\n (map: { [id: number]: UrgencyResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\nimport { PriorityResponse } from 'services/tenantManagementService';\nimport { TICKET_PRIORITY_SET, TICKET_PRIORITY_FETCHING } from './action';\n\nexport const ticketPriorityReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TICKET_PRIORITY_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TICKET_PRIORITY_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: PriorityResponse } = items.reduce(\n (map: { [id: number]: PriorityResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistActiveItemsReducer } from 'features/Persist/reducerTypes';\nimport { TenantIsActiveResponse } from 'services/tenantManagementService';\nimport { TICKET_CLOSING_ID_FETCHING, TICKET_CLOSING_ID_SET } from './action';\n\nexport const ticketClosingIdReducer = (state = new PersistActiveItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistActiveItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TICKET_CLOSING_ID_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TICKET_CLOSING_ID_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: TenantIsActiveResponse } = items.reduce(\n (map: { [id: number]: TenantIsActiveResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\tconst activeItems = items.filter(x => x.isActive);\n\n\t\t\tconst activeItemsMap: { [id: number]: TenantIsActiveResponse } = items.reduce(\n (map: { [id: number]: TenantIsActiveResponse }, item) => {\n\t\t\t\t\tif (item.isActive) {\n\t\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tactiveItems,\n\t\t\t\tactiveItemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\nimport { ReportStatusResponse } from 'services/tenantManagementService';\nimport { REPORT_STATUS_SET, REPORT_STATUS_FETCHING } from './action';\n\nexport const reportStatusReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase REPORT_STATUS_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase REPORT_STATUS_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: ReportStatusResponse } = items.reduce(\n (map: { [id: number]: ReportStatusResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { RiskStatusResponse } from 'services/tenantManagementService';\nimport { RISK_STATUSES_FETCHING, RISK_STATUSES_SET } from './action';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\n\nexport const riskStatusReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase RISK_STATUSES_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase RISK_STATUSES_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: RiskStatusResponse } = items.reduce(\n (map: { [id: number]: RiskStatusResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { InvoiceStatusResponse } from 'services/tenantManagementService';\nimport { INVOICE_STATUSES_FETCHING, INVOICE_STATUSES_SET } from './action';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\n\nexport const invoiceStatusReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase INVOICE_STATUSES_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase INVOICE_STATUSES_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: InvoiceStatusResponse } = items.reduce(\n (map: { [id: number]: InvoiceStatusResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\nimport { ChangeRequestStatusResponse } from 'services/tenantManagementService';\nimport { CHANGE_REQUEST_STATUS_SET, CHANGE_REQUEST_STATUS_FETCHING } from './action';\n\nexport const changeRequestStatusReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase CHANGE_REQUEST_STATUS_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase CHANGE_REQUEST_STATUS_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: ChangeRequestStatusResponse } = items.reduce(\n (map: { [id: number]: ChangeRequestStatusResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistActiveItemsReducer } from 'features/Persist/reducerTypes';\nimport { TenantIsActiveResponse } from 'services/tenantManagementService';\nimport { SCOPE_CHANGE_REQUEST_TYPE_SET, SCOPE_CHANGE_REQUEST_TYPE_FETCHING } from './action';\n\nexport const changeRequestTypeReducer = (state = new PersistActiveItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistActiveItemsReducer => {\n\tswitch (action.type) {\n\t\tcase SCOPE_CHANGE_REQUEST_TYPE_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase SCOPE_CHANGE_REQUEST_TYPE_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: TenantIsActiveResponse } = items.reduce(\n (map: { [id: number]: TenantIsActiveResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\tconst activeItems = items.filter(x => x.isActive);\n\n\t\t\tconst activeItemsMap: { [id: number]: TenantIsActiveResponse } = items.reduce(\n (map: { [id: number]: TenantIsActiveResponse }, item) => {\n\t\t\t\t\tif (item.isActive) {\n\t\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tactiveItems,\n\t\t\t\tactiveItemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingProjectItemsActionType, PersistItemsActionType, PersistProjectItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistProjectItemsReducer } from 'features/Persist/reducerTypes';\nimport { ProjectIsActiveResponse } from 'services/tenantManagementService';\nimport { DEPARTMENTS_FETCHING, DEPARTMENTS_SET } from './action';\n\nexport const departmentsReducer = (state = new PersistProjectItemsReducer(), action: PersistProjectItemsActionType | PersistItemsActionType | FetchingProjectItemsActionType): PersistProjectItemsReducer => {\n\tswitch (action.type) {\n\t\tcase DEPARTMENTS_FETCHING: {\n\t\t\tconst { fetching, projectId } = action as FetchingProjectItemsActionType;\n\n\t\t\treturn {\n\t\t\t\tprojectMap: {\n\t\t\t\t\t...state.projectMap,\n\t\t\t\t\t[projectId]: {\n\t\t\t\t\t\tisInitialized: state.projectMap[projectId]?.isInitialized || false,\n\t\t\t\t\t\tfetching,\n\t\t\t\t\t\titems: state.projectMap[projectId]?.items || [],\n\t\t\t\t\t\titemsMap: state.projectMap[projectId]?.itemsMap || {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcase DEPARTMENTS_SET:\n\t\t\tconst { items, projectId } = action as PersistProjectItemsActionType;\n\n\t\t\tconst itemsMap = items.reduce(\n\t\t\t\t(map: { [id: number]: ProjectIsActiveResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t)\n\n\t\t\tconst projectMap = {\n\t\t\t\t...state.projectMap,\n\t\t\t\t[projectId]: {\n\t\t\t\t\tisInitialized: true,\n\t\t\t\t\tfetching: false,\n\t\t\t\t\titems,\n\t\t\t\t\titemsMap\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tprojectMap\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingProjectItemsActionType, PersistItemsActionType, PersistProjectItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistProjectItemsReducer } from 'features/Persist/reducerTypes';\nimport { ProjectIsActiveResponse } from 'services/tenantManagementService';\nimport { STEP_TYPES_FETCHING, STEP_TYPES_SET } from './action';\n\nexport const stepTypesReducer = (state = new PersistProjectItemsReducer(), action: PersistProjectItemsActionType | PersistItemsActionType | FetchingProjectItemsActionType): PersistProjectItemsReducer => {\n\tswitch (action.type) {\n\t\tcase STEP_TYPES_FETCHING: {\n\t\t\tconst { fetching, projectId } = action as FetchingProjectItemsActionType;\n\n\t\t\treturn {\n\t\t\t\tprojectMap: {\n\t\t\t\t\t...state.projectMap,\n\t\t\t\t\t[projectId]: {\n\t\t\t\t\t\tisInitialized: state.projectMap[projectId]?.isInitialized || false,\n\t\t\t\t\t\tfetching,\n\t\t\t\t\t\titems: state.projectMap[projectId]?.items || [],\n\t\t\t\t\t\titemsMap: state.projectMap[projectId]?.itemsMap || {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcase STEP_TYPES_SET:\n\t\t\tconst { items, projectId } = action as PersistProjectItemsActionType;\n\n\t\t\tconst itemsMap = items.reduce(\n\t\t\t\t(map: { [id: number]: ProjectIsActiveResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t)\n\n\t\t\tconst projectMap = {\n\t\t\t\t...state.projectMap,\n\t\t\t\t[projectId]: {\n\t\t\t\t\tisInitialized: true,\n\t\t\t\t\tfetching: false,\n\t\t\t\t\titems,\n\t\t\t\t\titemsMap\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tprojectMap\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingProjectItemsActionType, PersistItemsActionType, PersistProjectItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistProjectItemsReducer } from 'features/Persist/reducerTypes';\nimport { ProjectIsActiveResponse } from 'services/tenantManagementService';\nimport { USER_ROLES_FETCHING, USER_ROLES_SET } from './action';\n\nexport const userRolesReducer = (state = new PersistProjectItemsReducer(), action: PersistProjectItemsActionType | PersistItemsActionType | FetchingProjectItemsActionType): PersistProjectItemsReducer => {\n\tswitch (action.type) {\n\t\tcase USER_ROLES_FETCHING: {\n\t\t\tconst { fetching, projectId } = action as FetchingProjectItemsActionType;\n\n\t\t\treturn {\n\t\t\t\tprojectMap: {\n\t\t\t\t\t...state.projectMap,\n\t\t\t\t\t[projectId]: {\n\t\t\t\t\t\tisInitialized: state.projectMap[projectId]?.isInitialized || false,\n\t\t\t\t\t\tfetching,\n\t\t\t\t\t\titems: state.projectMap[projectId]?.items || [],\n\t\t\t\t\t\titemsMap: state.projectMap[projectId]?.itemsMap || {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcase USER_ROLES_SET:\n\t\t\tconst { items, projectId } = action as PersistProjectItemsActionType;\n\n\t\t\tconst itemsMap = items.reduce(\n\t\t\t\t(map: { [id: number]: ProjectIsActiveResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t)\n\n\t\t\tconst projectMap = {\n\t\t\t\t...state.projectMap,\n\t\t\t\t[projectId]: {\n\t\t\t\t\tisInitialized: true,\n\t\t\t\t\tfetching: false,\n\t\t\t\t\titems,\n\t\t\t\t\titemsMap\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tprojectMap\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { TestStatusResponse } from 'services/tenantManagementService';\nimport { TEST_CASE_STATUSES_FETCHING, TEST_CASE_STATUSES_SET } from './action';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\n\nexport const testCaseStatusReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TEST_CASE_STATUSES_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TEST_CASE_STATUSES_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: TestStatusResponse } = items.reduce(\n (map: { [id: number]: TestStatusResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { TrainingStatusResponse } from 'services/tenantManagementService';\nimport { TRAINING_STATUSES_FETCHING, TRAINING_STATUSES_SET } from './action';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\n\nexport const trainingStatusReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TRAINING_STATUSES_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TRAINING_STATUSES_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: TrainingStatusResponse } = items.reduce(\n (map: { [id: number]: TrainingStatusResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { TimeTravelStatusResponse } from 'services/tenantManagementService';\nimport { TIME_AND_TRAVEL_STATUSES_FETCHING, TIME_AND_TRAVEL_STATUSES_SET } from './action';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\n\nexport const timeAndTravelStatusReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TIME_AND_TRAVEL_STATUSES_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TIME_AND_TRAVEL_STATUSES_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: TimeTravelStatusResponse } = items.reduce(\n (map: { [id: number]: TimeTravelStatusResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistActiveItemsReducer } from 'features/Persist/reducerTypes';\nimport { NonProjectCategoryResponse } from 'services/tenantManagementService';\nimport { TIME_TRAVEL_NON_PROJECT_CATEGORIES_FETCHING, TIME_TRAVEL_NON_PROJECT_CATEGORIES_SET } from './action';\n\nexport const timeTravelNonProjectCategoriesReducer = (state = new PersistActiveItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistActiveItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TIME_TRAVEL_NON_PROJECT_CATEGORIES_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TIME_TRAVEL_NON_PROJECT_CATEGORIES_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: NonProjectCategoryResponse } = items.reduce(\n (map: { [id: number]: NonProjectCategoryResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\tconst activeItems = items.filter(x => x.isActive);\n\n\t\t\tconst activeItemsMap: { [id: number]: NonProjectCategoryResponse } = items.reduce(\n (map: { [id: number]: NonProjectCategoryResponse }, item) => {\n\t\t\t\t\tif (item.isActive) {\n\t\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tactiveItems,\n\t\t\t\tactiveItemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistActiveItemsReducer } from 'features/Persist/reducerTypes';\nimport { CostExpenseTypeResponse } from 'services/tenantManagementService';\nimport { TRAVEL_COST_TYPES_FETCHING, TRAVEL_COST_TYPES_SET } from './action';\n\nexport const travelCostTypesReducer = (state = new PersistActiveItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistActiveItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TRAVEL_COST_TYPES_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TRAVEL_COST_TYPES_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: CostExpenseTypeResponse } = items.reduce(\n (map: { [id: number]: CostExpenseTypeResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\tconst activeItems = items.filter(x => x.isActive);\n\n\t\t\tconst activeItemsMap: { [id: number]: CostExpenseTypeResponse } = items.reduce(\n (map: { [id: number]: CostExpenseTypeResponse }, item) => {\n\t\t\t\t\tif (item.isActive) {\n\t\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tactiveItems,\n\t\t\t\tactiveItemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistActiveItemsReducer } from 'features/Persist/reducerTypes';\nimport { CostExpenseTypeResponse } from 'services/tenantManagementService';\nimport { TIME_TRAVEL_EXPENSE_TYPES_FETCHING, TIME_TRAVEL_EXPENSE_TYPES_SET } from './action';\n\nexport const timeTravelExpenseTypesReducer = (state = new PersistActiveItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistActiveItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TIME_TRAVEL_EXPENSE_TYPES_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TIME_TRAVEL_EXPENSE_TYPES_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: CostExpenseTypeResponse } = items.reduce(\n (map: { [id: number]: CostExpenseTypeResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\tconst activeItems = items.filter(x => x.isActive);\n\n\t\t\tconst activeItemsMap: { [id: number]: CostExpenseTypeResponse } = items.reduce(\n (map: { [id: number]: CostExpenseTypeResponse }, item) => {\n\t\t\t\t\tif (item.isActive) {\n\t\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tactiveItems,\n\t\t\t\tactiveItemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistValueActionType } from 'features/Persist/actionTypes';\nimport { PersistValueReducer } from 'features/Persist/reducerTypes';\nimport { TimeTravelConfigResponse } from 'services/tenantManagementService';\nimport { EXPENSE_GENERAL_CONFIGURATION_FETCHING, EXPENSE_GENERAL_CONFIGURATION_SET } from './action';\n\nexport const expenseGeneralConfigurationReducer = (state = new PersistValueReducer(), action: PersistValueActionType | FetchingActionType): PersistValueReducer => {\n\tswitch (action.type) {\n\t\tcase EXPENSE_GENERAL_CONFIGURATION_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase EXPENSE_GENERAL_CONFIGURATION_SET:\n\t\t\tconst { value } = action as PersistValueActionType;\n\n\t\t\treturn {\n\t\t\t\tvalue,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistValueActionType } from 'features/Persist/actionTypes';\nimport { PersistValueReducer } from 'features/Persist/reducerTypes';\nimport { TimeTravelConfigResponse } from 'services/tenantManagementService';\nimport { VACATION_GENERAL_CONFIGURATION_FETCHING, VACATION_GENERAL_CONFIGURATION_SET } from './action';\n\nexport const vacationGeneralConfigurationReducer = (state = new PersistValueReducer(), action: PersistValueActionType | FetchingActionType): PersistValueReducer => {\n\tswitch (action.type) {\n\t\tcase VACATION_GENERAL_CONFIGURATION_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase VACATION_GENERAL_CONFIGURATION_SET:\n\t\t\tconst { value } = action as PersistValueActionType;\n\n\t\t\treturn {\n\t\t\t\tvalue,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistValueActionType } from 'features/Persist/actionTypes';\nimport { PersistValueReducer } from 'features/Persist/reducerTypes';\nimport { TimesheetsConfigResponse } from 'services/tenantManagementService';\nimport { TIMESHEETS_GENERAL_CONFIGURATION_FETCHING, TIMESHEETS_GENERAL_CONFIGURATION_SET } from './action';\n\nexport const timesheetsGeneralConfigurationReducer = (state = new PersistValueReducer(), action: PersistValueActionType | FetchingActionType): PersistValueReducer => {\n\tswitch (action.type) {\n\t\tcase TIMESHEETS_GENERAL_CONFIGURATION_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TIMESHEETS_GENERAL_CONFIGURATION_SET:\n\t\t\tconst { value } = action as PersistValueActionType;\n\n\t\t\treturn {\n\t\t\t\tvalue,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { TravelRequestResponse } from 'services/tenantManagementService';\nimport { TRAVEL_REQUESTS_FETCHING, TRAVEL_REQUESTS_SET } from './action';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\n\nexport const travelRequestsReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TRAVEL_REQUESTS_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TRAVEL_REQUESTS_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: TravelRequestResponse } = items.reduce(\n (map: { [id: number]: TravelRequestResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingProjectValueActionType, PersistProjectValueActionType } from 'features/Persist/actionTypes';\nimport { PersistProjectValueReducer } from 'features/Persist/reducerTypes';\nimport { TimesheetRequiredFieldsResponse } from 'services/tenantManagementService';\nimport { TIMESHEET_REQUIRED_FIELDS_FETCHING, TIMESHEET_REQUIRED_FIELDS_SET } from './action';\n\nexport const timesheetRequiredFieldsReducer = (state = new PersistProjectValueReducer(), action: PersistProjectValueActionType | FetchingProjectValueActionType): PersistProjectValueReducer => {\n\tswitch (action.type) {\n\t\tcase TIMESHEET_REQUIRED_FIELDS_FETCHING: {\n\t\t\t// fetching is only for this projectId\n\t\t\tconst { fetching, projectId } = action as FetchingProjectValueActionType;\n\n\t\t\treturn {\n\t\t\t\tprojectMap: {\n\t\t\t\t\t...state.projectMap,\n\t\t\t\t\t[projectId]: {\n\t\t\t\t\t\tisInitialized: state.projectMap[projectId]?.isInitialized || false,\n\t\t\t\t\t\tfetching,\n\t\t\t\t\t\tvalue: state.projectMap[projectId]?.value || new TimesheetRequiredFieldsResponse()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcase TIMESHEET_REQUIRED_FIELDS_SET: {\n\t\t\tconst { value, projectId } = action as PersistProjectValueActionType;\n\n\t\t\tconst projectMap = {\n\t\t\t\t...state.projectMap,\n\t\t\t\t[projectId]: {\n\t\t\t\t\tisInitialized: true,\n\t\t\t\t\tfetching: false,\n\t\t\t\t\tvalue\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tprojectMap\n\t\t\t}\n\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistActiveItemsReducer } from 'features/Persist/reducerTypes';\nimport { TenantIsActiveResponse } from 'services/tenantManagementService';\nimport { FINANCE_CATEGORY_FETCHING, FINANCE_CATEGORY_SET } from './action';\n\nexport const financeCategoryReducer = (state = new PersistActiveItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistActiveItemsReducer => {\n\tswitch (action.type) {\n\t\tcase FINANCE_CATEGORY_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase FINANCE_CATEGORY_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: TenantIsActiveResponse } = items.reduce(\n (map: { [id: number]: TenantIsActiveResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\tconst activeItems = items.filter(x => x.isActive);\n\n\t\t\tconst activeItemsMap: { [id: number]: TenantIsActiveResponse } = items.reduce(\n (map: { [id: number]: TenantIsActiveResponse }, item) => {\n\t\t\t\t\tif (item.isActive) {\n\t\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tactiveItems,\n\t\t\t\tactiveItemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\nimport { UserStatusResponse } from 'services/tenantManagementService';\nimport { USER_STATUS_SET, USER_STATUS_FETCHING } from './action';\n\nexport const userStatusReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase USER_STATUS_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase USER_STATUS_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: UserStatusResponse } = items.reduce(\n (map: { [id: number]: UserStatusResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistActiveItemsReducer } from 'features/Persist/reducerTypes';\nimport { UserModel } from 'services/tenantManagementService';\nimport { propertyOf } from 'utils/propertyOf';\nimport { sortByString } from 'utils/stringUtil';\nimport { USERS_FETCHING, USERS_SET } from './action';\n\nexport const usersReducer = (state = new PersistActiveItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistActiveItemsReducer => {\n\tswitch (action.type) {\n\t\tcase USERS_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase USERS_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: UserModel } = items.reduce(\n\t\t\t\t(map: { [id: number]: UserModel }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\n\t\t\tconst activeItems = items.filter(x => x.isActive);\n\n\t\t\tconst activeItemsMap: { [id: number]: UserModel } = items.reduce(\n (map: { [id: number]: UserModel }, item) => {\n\t\t\t\t\tif (item.isActive) {\n\t\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems: sortByString(items, propertyOf('username')),\n\t\t\t\titemsMap,\n\t\t\t\tactiveItems: sortByString(activeItems, propertyOf('username')),\n\t\t\t\tactiveItemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingProjectItemsActionType, PersistProjectItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistProjectItemsReducer } from 'features/Persist/reducerTypes';\nimport { ProjectTeamMemberResponse } from 'services/tenantManagementService';\nimport { TEAM_MEMBERS_FETCHING, TEAM_MEMBERS_SET } from './action';\n\nexport const teamMembersReducer = (state = new PersistProjectItemsReducer(), action: PersistProjectItemsActionType | FetchingProjectItemsActionType): PersistProjectItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TEAM_MEMBERS_FETCHING: {\n\t\t\tconst { fetching, projectId } = action as FetchingProjectItemsActionType;\n\n\t\t\treturn {\n\t\t\t\tprojectMap: {\n\t\t\t\t\t...state.projectMap,\n\t\t\t\t\t[projectId]: {\n\t\t\t\t\t\tisInitialized: state.projectMap[projectId]?.isInitialized || false,\n\t\t\t\t\t\tfetching,\n\t\t\t\t\t\titems: state.projectMap[projectId]?.items || [],\n\t\t\t\t\t\titemsMap: state.projectMap[projectId]?.itemsMap || {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcase TEAM_MEMBERS_SET:\n\t\t\tconst { items, projectId } = action as PersistProjectItemsActionType;\n\n\t\t\tconst itemsMap = items.reduce(\n\t\t\t\t(map: { [id: number]: ProjectTeamMemberResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t)\n\n\t\t\tconst projectMap = {\n\t\t\t\t...state.projectMap,\n\t\t\t\t[projectId]: {\n\t\t\t\t\tisInitialized: true,\n\t\t\t\t\tfetching: false,\n\t\t\t\t\titems,\n\t\t\t\t\titemsMap\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tprojectMap\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingProjectItemsActionType, PersistItemsActionType, PersistProjectItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistProjectItemsReducer } from 'features/Persist/reducerTypes';\nimport { ProjectIsActiveResponse } from 'services/tenantManagementService';\nimport { PROJECT_TEAMS_FETCHING, PROJECT_TEAMS_SET } from './action';\n\nexport const projectTeamsReducer = (state = new PersistProjectItemsReducer(), action: PersistProjectItemsActionType | PersistItemsActionType | FetchingProjectItemsActionType): PersistProjectItemsReducer => {\n\tswitch (action.type) {\n\t\tcase PROJECT_TEAMS_FETCHING: {\n\t\t\tconst { fetching, projectId } = action as FetchingProjectItemsActionType;\n\n\t\t\treturn {\n\t\t\t\tprojectMap: {\n\t\t\t\t\t...state.projectMap,\n\t\t\t\t\t[projectId]: {\n\t\t\t\t\t\tisInitialized: state.projectMap[projectId]?.isInitialized || false,\n\t\t\t\t\t\tfetching,\n\t\t\t\t\t\titems: state.projectMap[projectId]?.items || [],\n\t\t\t\t\t\titemsMap: state.projectMap[projectId]?.itemsMap || {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcase PROJECT_TEAMS_SET:\n\t\t\tconst { items, projectId } = action as PersistProjectItemsActionType;\n\n\t\t\tconst itemsMap = items.reduce(\n\t\t\t\t(map: { [id: number]: ProjectIsActiveResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t)\n\n\t\t\tconst projectMap = {\n\t\t\t\t...state.projectMap,\n\t\t\t\t[projectId]: {\n\t\t\t\t\tisInitialized: true,\n\t\t\t\t\tfetching: false,\n\t\t\t\t\titems,\n\t\t\t\t\titemsMap\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tprojectMap\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingProjectItemsActionType, PersistItemsActionType, PersistProjectItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistProjectItemsReducer } from 'features/Persist/reducerTypes';\nimport { ProjectIsActiveResponse } from 'services/tenantManagementService';\nimport { PROJECT_ROLES_FETCHING, PROJECT_ROLES_SET } from './action';\n\n\nexport const projectRolesReducer = (state = new PersistProjectItemsReducer(), action: PersistProjectItemsActionType | PersistItemsActionType | FetchingProjectItemsActionType): PersistProjectItemsReducer => {\n\tswitch (action.type) {\n\t\tcase PROJECT_ROLES_FETCHING: {\n\t\t\tconst { fetching, projectId } = action as FetchingProjectItemsActionType;\n\n\t\t\treturn {\n\t\t\t\tprojectMap: {\n\t\t\t\t\t...state.projectMap,\n\t\t\t\t\t[projectId]: {\n\t\t\t\t\t\tisInitialized: state.projectMap[projectId]?.isInitialized || false,\n\t\t\t\t\t\tfetching,\n\t\t\t\t\t\titems: state.projectMap[projectId]?.items || [],\n\t\t\t\t\t\titemsMap: state.projectMap[projectId]?.itemsMap || {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcase PROJECT_ROLES_SET:\n\t\t\tconst { items, projectId } = action as PersistProjectItemsActionType;\n\n\t\t\tconst itemsMap = items.reduce(\n\t\t\t\t(map: { [id: number]: ProjectIsActiveResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t)\n\n\t\t\tconst projectMap = {\n\t\t\t\t...state.projectMap,\n\t\t\t\t[projectId]: {\n\t\t\t\t\tisInitialized: true,\n\t\t\t\t\tfetching: false,\n\t\t\t\t\titems,\n\t\t\t\t\titemsMap\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tprojectMap\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\nimport { OrganizationalUnitResponse } from 'services/tenantManagementService';\nimport { COMPANY_ORGANIZATIONAL_UNITS_FETCHING, COMPANY_ORGANIZATIONAL_UNITS_SET } from './action';\n\nexport const organizationalUnitsReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase COMPANY_ORGANIZATIONAL_UNITS_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase COMPANY_ORGANIZATIONAL_UNITS_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: OrganizationalUnitResponse } = items.reduce(\n (map: { [id: number]: OrganizationalUnitResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\nimport { StatusReportStatusResponse } from 'services/tenantManagementService';\nimport { STATUS_REPORT_FETCHING, STATUS_REPORT_SET } from './action';\n\nexport const communicationStatusReportReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase STATUS_REPORT_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase STATUS_REPORT_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: StatusReportStatusResponse } = items.reduce(\n (map: { [id: number]: StatusReportStatusResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\nimport { TaskStatusResponse } from 'services/tenantManagementService';\nimport { TASK_STATUS_FETCHING, TASK_STATUS_SET } from './action';\n\nexport const taskStatusReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase TASK_STATUS_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase TASK_STATUS_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: TaskStatusResponse } = items.reduce(\n (map: { [id: number]: TaskStatusResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\nimport { MeetingStatusResponse } from 'services/tenantManagementService';\nimport { MEETING_STATUS_FETCHING, MEETING_STATUS_SET } from './action';\n\nexport const meetingStatusReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase MEETING_STATUS_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase MEETING_STATUS_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: MeetingStatusResponse } = items.reduce(\n (map: { [id: number]: MeetingStatusResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistActiveItemsReducer } from 'features/Persist/reducerTypes';\nimport { TenantIsActiveResponse } from 'services/tenantManagementService';\nimport { MEETING_TYPE_FETCHING, MEETING_TYPE_SET } from './action';\n\nexport const meetingTypeReducer = (state = new PersistActiveItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistActiveItemsReducer => {\n\tswitch (action.type) {\n\t\tcase MEETING_TYPE_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase MEETING_TYPE_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: TenantIsActiveResponse } = items.reduce(\n (map: { [id: number]: TenantIsActiveResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\tconst activeItems = items.filter(x => x.isActive);\n\n\t\t\tconst activeItemsMap: { [id: number]: TenantIsActiveResponse } = items.reduce(\n (map: { [id: number]: TenantIsActiveResponse }, item) => {\n\t\t\t\t\tif (item.isActive) {\n\t\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tactiveItems,\n\t\t\t\tactiveItemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { FetchingProjectValueActionType, PersistProjectValueActionType } from 'features/Persist/actionTypes';\nimport { PersistProjectValueReducer } from 'features/Persist/reducerTypes';\nimport { ScheduleConfigurationResponse } from 'services/tenantManagementService';\nimport { SCHEDULE_CONFIGURATION_FETCHING, SCHEDULE_CONFIGURATION_SET } from './action';\n\nexport const scheduleConfigurationReducer = (state = new PersistProjectValueReducer(), action: PersistProjectValueActionType | FetchingProjectValueActionType): PersistProjectValueReducer => {\n\tswitch (action.type) {\n\t\tcase SCHEDULE_CONFIGURATION_FETCHING: {\n\t\t\tconst { fetching, projectId } = action as FetchingProjectValueActionType;\n\n\t\t\treturn {\n\t\t\t\tprojectMap: {\n\t\t\t\t\t...state.projectMap,\n\t\t\t\t\t[projectId]: {\n\t\t\t\t\t\tisInitialized: state.projectMap[projectId]?.isInitialized || false,\n\t\t\t\t\t\tfetching,\n\t\t\t\t\t\tvalue: state.projectMap[projectId]?.value || new ScheduleConfigurationResponse()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcase SCHEDULE_CONFIGURATION_SET: {\n\t\t\tconst { value, projectId } = action as PersistProjectValueActionType;\n\n\t\t\tconst projectMap = {\n\t\t\t\t...state.projectMap,\n\t\t\t\t[projectId]: {\n\t\t\t\t\tisInitialized: true,\n\t\t\t\t\tfetching: false,\n\t\t\t\t\tvalue\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tprojectMap\n\t\t\t}\n\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n}\n","import { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistActiveItemsReducer } from 'features/Persist/reducerTypes';\nimport { TenantIsActiveResponse } from 'services/tenantManagementService';\nimport { RISK_TYPES_SET, RISK_TYPES_FETCHING } from './action';\n\nexport const riskTypesReducer = (state = new PersistActiveItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistActiveItemsReducer => {\n\tswitch (action.type) {\n\t\tcase RISK_TYPES_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase RISK_TYPES_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: TenantIsActiveResponse } = items.reduce(\n (map: { [id: number]: TenantIsActiveResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\tconst activeItems = items.filter(x => x.isActive);\n\n\t\t\tconst activeItemsMap: { [id: number]: TenantIsActiveResponse } = items.reduce(\n (map: { [id: number]: TenantIsActiveResponse }, item) => {\n\t\t\t\t\tif (item.isActive) {\n\t\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems,\n\t\t\t\titemsMap,\n\t\t\t\tactiveItems,\n\t\t\t\tactiveItemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { createStore } from 'redux';\nimport reducer from './reducer';\n\ndeclare global {\n\tinterface Window {\n\t\t__REDUX_DEVTOOLS_EXTENSION__?: any;\n\t}\n}\n\nconst store = createStore(\n\treducer,\n\twindow.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__({ trace: true })\n);\n\nexport default store;\n","// extracted by mini-css-extract-plugin\nexport default {\"btn\":\"button_btn__YVOtd\",\"btn-primary\":\"button_btn-primary__mi5KF\",\"btn-secondary\":\"button_btn-secondary__pSX4o\",\"btn-neutral\":\"button_btn-neutral__7B8P8\",\"btn-destructive\":\"button_btn-destructive__wvM7b\",\"disabled\":\"button_disabled__RVTMj\"};","import Spinner, { ClipSpinner } from 'components/Spinner';\nimport React from 'react';\nimport styles from './button.module.scss';\nimport { Translation } from 'components/Translations/Translation';\n\ninterface Props {\n\tchildren?: React.ReactElement\n\ttext?: string\n\tisLoading?: boolean\n\tdisabled?: boolean\n\tcolor?: 'primary' | 'secondary' | 'destructive' | 'neutral'\n\tonClick(): void\n}\n\nconst Button = ({ children, text, isLoading, disabled, color = 'primary', onClick }: Props) => {\n\tconst btnClassName = `${styles.btn} ${styles[`btn-${color}`]} ${disabled ? styles.disabled : ''}`;\n\n\treturn (\n\t\t\n\t\t\t{children || }\n\t\t\t{isLoading &&\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t \t\t\t\t\n\t \t\t\t
\n\t \t\t}\n\t\t\n\t)\n}\n\nexport default Button;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"cover_container__aehCU\",\"transparent\":\"cover_transparent__gh4Pk\"};","import { useCallback } from 'react';\nimport styles from './cover.module.scss';\n\ntype Props = {\n\tonClick(): void\n\ttransparent?: boolean\n}\n\nexport const Cover = ({ onClick, transparent }: Props) => {\n\tconst onClickCallback = useCallback(\n\t\t(e) => {\n\t\t\te.stopPropagation();\n\t\t\tonClick();\n\n\t\t\t// // enable that click event also goes thru cover\n\t\t\t// const elements = document.elementsFromPoint(e.pageX, e.pageY);\n\t\t\t// // svg elements don't have click method, so we can't just use elements[1].click,\n\t\t\t// // but we need to find first parent that has click method\n\t\t\t// for (let i = 1; i < elements.length; i++) {\n\t\t\t// \tconst element = elements[i];\n\t\t\t// \tif ((element as any).click) {\n\t\t\t// \t\t(element as any).click();\n\t\t\t// \t\tbreak;\n\t\t\t// \t}\n\t\t\t// }\n\t\t},\n\t\t[onClick]\n\t)\n\n\treturn (\n\t\t\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"dialog_container__Q6PDU\",\"show\":\"dialog_show__ISNr6\",\"static\":\"dialog_static__5tDzS\",\"beat\":\"dialog_beat__KR2Sc\",\"dialog\":\"dialog_dialog__JsrTn\",\"fadeIn\":\"dialog_fadeIn__k4Bwz\",\"slideIn\":\"dialog_slideIn__UhoLW\",\"header\":\"dialog_header__Oou5G\",\"title\":\"dialog_title__oh+eb\",\"close\":\"dialog_close__MXtEF\",\"content\":\"dialog_content__Yrk6q\",\"dialog-xsmall\":\"dialog_dialog-xsmall__m3kO9\",\"dialog-small\":\"dialog_dialog-small__nqJC4\",\"dialog-medium\":\"dialog_dialog-medium__LdQgp\",\"dialog-large\":\"dialog_dialog-large__AkA0T\",\"dialog-xlarge\":\"dialog_dialog-xlarge__II2LC\",\"dialog-xxlarge\":\"dialog_dialog-xxlarge__xkDhC\",\"dialog-xxxlarge\":\"dialog_dialog-xxxlarge__d6QNa\"};","import { DeleteIcon } from 'components/icons/icons';\nimport styles from './dialog.module.scss';\nimport { isValidElement } from 'react';\nimport { Translation } from 'components/Translations/Translation';\n\ntype Props = {\n\ttitle: string | React.ReactElement\n\tonClose?(): void\n\ti18nArgs?: string[]\n}\n\nexport const Header = ({ title, onClose, i18nArgs = [] }: Props) => {\n\tconst isJSXElement = isValidElement(title);\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t

{isJSXElement ? title : ()}

\n\t\t\t
\n\t\t\t\n\t\t
\n\t);\n}\n","import React, { useCallback, useEffect, useRef } from 'react';\nimport { Header } from './Header';\nimport ErrorBoundary from 'features/ErrorBoundary';\nimport styles from './dialog.module.scss';\nimport { Cover } from 'components/Cover';\n\ntype Props = {\n\ttitle: string | React.ReactElement,\n\tonClose(): void,\n\topen: boolean,\n\tchildren: any,\n\tsize?: 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge' | 'xxxlarge'\n\ti18nArgs?: string[]\n}\n\nconst KEY_NAME_ESC = 'Escape';\nconst KEY_EVENT_TYPE = 'keyup';\n\nexport const Dialog = ({ title, onClose, open, children, size = 'medium', i18nArgs = [] }: Props) => {\n\tconst dialogRef = useRef(null);\n\n\tconst startAnimationCallback = useCallback(\n\t\t() => {\n\t\t\tdialogRef.current?.classList.add(styles.static);\n\t\t},\n\t\t[]\n\t);\n\n\tconst endAnimationCallback = useCallback(\n\t\t() => {\n\t\t\tdialogRef.current?.classList.remove(styles.static);\n\t\t},\n\t\t[]\n\t)\n\n\tuseEffect(\n\t\t() => {\n\t\t\tconst ref = dialogRef.current;\n\t\t\tref?.addEventListener('animationend', endAnimationCallback, false);\n\n\t\t\treturn () => {\n\t\t\t\tref?.removeEventListener('animationend', endAnimationCallback, false);\n\t\t\t}\n\t\t},\n\t\t[endAnimationCallback]\n\t)\n\n\tconst handleEscKey = useCallback(\n\t\t(event) => {\n\t\t\tif (event.key === KEY_NAME_ESC) {\n\t\t\t\tonClose();\n\t\t\t}\n\t\t},\n\t\t[onClose]\n\t);\n\n\tuseEffect(\n\t\t() => {\n\t\t\tdocument.addEventListener(KEY_EVENT_TYPE, handleEscKey, false);\n\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener(KEY_EVENT_TYPE, handleEscKey, false);\n\t\t\t};\n\t\t},\n\t\t[handleEscKey]\n\t);\n\n\tif (!open) {\n\t\treturn <>\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t{children}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\n\t\t\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"content\":\"simpleDialog_content__EyhPs\",\"footer\":\"simpleDialog_footer__47XaN\"};","import { useMemo } from 'react';\nimport Button from 'components/Button';\nimport { RowContainer } from 'components/Layout';\nimport styles from './simpleDialog.module.scss';\nimport { Dialog } from '../Dialog';\nimport { Translation } from 'components/Translations/Translation';\n\ntype Props = {\n\ttitle: string\n\topen: boolean\n\tmessage: string\n\tonConfirm(): void\n\tonCancel(): void\n}\n\nexport const SimpleDialog = ({ title, open, message, onConfirm, onCancel }: Props) => {\n\tconst content = useMemo(\n\t\t() => {\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t)\n\t\t},\n\t\t[message, onCancel, onConfirm]\n\t)\n\n\treturn (\n\t\t\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"column\":\"styles_column__PsbhD\",\"dragging_over\":\"styles_dragging_over__taCH8\",\"draggable_element\":\"styles_draggable_element__g9aCL\",\"dragging\":\"styles_dragging__bIFYD\",\"frozen_element\":\"styles_frozen_element__LrZ+z\",\"icon\":\"styles_icon__UzYQF\"};","import { LockIcon } from 'components/icons/icons';\nimport styles from './styles.module.scss'\nimport { Translation } from 'components/Translations/Translation';\n\ntype Props = {\n\tcontent: string\n}\n\nexport const FrozenElement = ({ content }: Props) => {\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\n\t\t
\n\t);\n};\n","import { Draggable } from 'react-beautiful-dnd';\nimport styles from './styles.module.scss'\nimport { Translation } from 'components/Translations/Translation';\n\ntype Props = {\n\tid: string\n\tcontent: string\n\tindex: number\n}\n\nexport const Element = ({ id, content, index }: Props) => (\n\t\n\t\t{(provided, snapshot) => (\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t)}\n\t
\n)\n","import { Droppable } from 'react-beautiful-dnd';\nimport { ElementType } from './models';\nimport { FrozenElement } from './FrozenElement';\nimport styles from './styles.module.scss'\nimport { Element } from './Element';\nimport { Translation } from 'components/Translations/Translation';\n\ntype Props = {\n\tid: string\n\ttitle: string\n\telements: ElementType[]\n}\n\nexport const Column = ({ id, title, elements }: Props) => {\n\tconst frozenStartElements: ElementType[] = [];\n\tconst frozenEndElements: ElementType[] = [];\n\tconst draggableElements: ElementType[] = [];\n\n\tfor (const element of elements) {\n\t\tif (element.frozen === 'start') {\n\t\t\tfrozenStartElements.push(element);\n\t\t} else if (element.frozen === 'end') {\n\t\t\tfrozenEndElements.push(element);\n\t\t} else {\n\t\t\tdraggableElements.push(element);\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t{frozenStartElements.map((element) => (\n\t\t\t\t\n\t\t\t))}\n\t\t\t\n\t\t\t\t{(provided, snapshot) => (\n\t\t\t\t\t\n\t\t\t\t\t\t{draggableElements.map((element, index) => (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t))}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\t{frozenEndElements.map((element) => (\n\t\t\t\t\n\t\t\t))}\n\t\t\n\t)\n}\n","export type ElementType = {\n\tid: string\n\tcontent: string\n\tfrozen?: 'start' | 'end'\n}\n\nexport class ColumnType {\n\tid: string = '';\n\ttitle: string = '';\n\telementIds: string[] = [];\n\n\tconstructor(column?: ColumnType) {\n\t\tif (column) {\n\t\t\tthis.id = column.id;\n\t\t\tthis.title = column.title;\n\t\t\t// very important to clone, watch out when changing this\n\t\t\tthis.elementIds = [...column.elementIds];\n\t\t}\n\t}\n}\n\nexport type ElementMapType = {\n\t[key: string]: ElementType\n}\n\nexport type ColumnMapType = {\n\t[key: string]: ColumnType\n}\n\nexport type MultiListType = {\n\telementMap: ElementMapType\n\tcolumnMap: ColumnMapType\n\tcolumnOrder: string[]\n}\n","import { RowContainer } from 'components/Layout';\nimport { useCallback, useState } from 'react';\nimport { DragDropContext, DropResult } from 'react-beautiful-dnd';\nimport { Column } from './Column';\nimport { MultiListType, ColumnType } from './models'\n\ntype Props = {\n\tonDragEnd: (multiList: MultiListType) => void\n\tinitialMultiList: MultiListType\n}\n\nexport const MultiList = ({ onDragEnd, initialMultiList }: Props) => {\n\tconst [currentData, setCurrentData] = useState(initialMultiList);\n\n\tconst handleDragEnd = useCallback(\n\t\t(result: DropResult) => {\n\t\t\tconst { destination, source, draggableId } = result;\n\n\t\t\tif (!destination) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tdestination.droppableId === source.droppableId &&\n\t\t\t\tdestination.index === source.index\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst startColumn = currentData.columnMap[source.droppableId];\n\t\t\tconst finishColumn = currentData.columnMap[destination.droppableId];\n\n\t\t\tif (startColumn === finishColumn) {\n\t\t\t\tconst newColumn = new ColumnType(startColumn);\n\t\t\t\tnewColumn.elementIds.splice(source.index, 1);\n\t\t\t\tnewColumn.elementIds.splice(destination.index, 0, draggableId);\n\n\t\t\t\tconst newCurrentData = {\n\t\t\t\t\t...currentData,\n\t\t\t\t\tcolumnMap: { ...currentData.columnMap, [newColumn.id]: newColumn }\n\t\t\t\t}\n\n\t\t\t\tsetCurrentData(newCurrentData);\n\t\t\t\tonDragEnd(newCurrentData);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst newStartColumn = new ColumnType(startColumn);\n\t\t\tnewStartColumn.elementIds.splice(source.index, 1);\n\n\t\t\tconst newFinishColumn = new ColumnType(finishColumn);\n\t\t\tnewFinishColumn.elementIds.splice(destination.index, 0, draggableId);\n\n\t\t\tconst newCurrentData = {\n\t\t\t\t...currentData,\n\t\t\t\tcolumnMap: {\n\t\t\t\t\t...currentData.columnMap,\n\t\t\t\t\t[newStartColumn.id]: newStartColumn,\n\t\t\t\t\t[newFinishColumn.id]: newFinishColumn,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tsetCurrentData(newCurrentData);\n\t\t\tonDragEnd(newCurrentData);\n\t\t},\n\t\t[currentData, onDragEnd]\n\t)\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{currentData.columnOrder.map((columnId) => {\n\t\t\t\t\tconst column = currentData.columnMap[columnId];\n\t\t\t\t\tconst elements = column.elementIds.map(\n\t\t\t\t\t\t(elementId) => currentData.elementMap[elementId]\n\t\t\t\t\t)\n\n\t\t\t\t\treturn \n\t\t\t\t})}\n\t\t\t\n\t\t\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"element\":\"reordableList_element__iT6D+\"};","import { useCallback, useEffect, useState } from 'react';\nimport { DragDropContext, DropResult, Droppable, Draggable } from 'react-beautiful-dnd';\nimport styles from './reordableList.module.scss'\n\ntype Props = {\n\tinitialElementIds: number[]\n\tonReorder: (elementIds: number[]) => void\n\trenderItem(id: number): any\n\tdisabled?: boolean\n}\n\nexport const ReordableList = ({ onReorder, initialElementIds, renderItem, disabled }: Props) => {\n\tconst [elementIds, setElementIds] = useState(initialElementIds);\n\n\tuseEffect(\n\t\t() => {\n\t\t\tsetElementIds([...initialElementIds])\n\t\t},\n\t\t[initialElementIds]\n\t)\n\t// INFO: This function must result in the synchronous reordering of a list of Draggables\n\tconst handleDragEnd = useCallback(\n\t\t(result: DropResult) => {\n\t\t\tconst { destination, source, draggableId } = result;\n\n\t\t\tif (!destination) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (destination.index === source.index) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst newElementIds = [...elementIds]\n\t\t\tnewElementIds.splice(source.index, 1);\n\t\t\tnewElementIds.splice(destination.index, 0, parseInt(draggableId));\n\n\t\t\tsetElementIds(newElementIds)\n\t\t\tonReorder(newElementIds);\n\t\t},\n\t\t[elementIds, onReorder]\n\t);\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{(provided) => (\n\t\t\t\t\t\n\t\t\t\t\t\t{elementIds.map((id, index) => (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{(provided) => (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{renderItem(id)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t{provided.placeholder}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"reordableColumns_container__ShCaU\",\"dragging_over\":\"reordableColumns_dragging_over__oG1M5\",\"dragging\":\"reordableColumns_dragging__mHvYM\"};","import { useCallback } from 'react'\nimport { DragDropContext, DropResult, Droppable, Draggable } from 'react-beautiful-dnd'\nimport styles from './reordableColumns.module.scss'\n\ntype Props = {\n\tfrozenStartElementIds: string[]\n\tdraggableElementIds: string[]\n\tfrozenEndElementIds: string[]\n\tonReorder: (elementIds: string[]) => void\n\trenderItem(id: string): any\n\tdisabled?: boolean\n}\n\nexport const ReordableColumns = ({ frozenStartElementIds, draggableElementIds, frozenEndElementIds, onReorder, renderItem, disabled }: Props) => {\n\tconst onDragEnd = useCallback(\n\t\t(result: DropResult) => {\n\t\t\tconst { destination, source, draggableId } = result;\n\n\t\t\tif (!destination || destination.index === source.index) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst newDraggableElementIds = [...draggableElementIds];\n\t\t\tnewDraggableElementIds.splice(source.index, 1);\n\t\t\tnewDraggableElementIds.splice(destination.index, 0, draggableId);\n\n\t\t\tconst newColumnOrderIds = [\n\t\t\t\t...frozenStartElementIds,\n\t\t\t\t...newDraggableElementIds,\n\t\t\t\t...frozenEndElementIds,\n\t\t\t];\n\n\t\t\tonReorder(newColumnOrderIds);\n\t\t},\n\t\t[draggableElementIds, onReorder, frozenStartElementIds, frozenEndElementIds]\n\t);\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{(provided, snapshot) => (\n\t\t\t\t\t\n\t\t\t\t\t\t{draggableElementIds.map((id, index) => (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{(provided, snapshot) => (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{renderItem(id)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t{provided.placeholder}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"fieldMessage_container__DLypL\",\"error\":\"fieldMessage_error__IKnEA\",\"warning\":\"fieldMessage_warning__Ca9qU\"};","import { Translation } from 'components/Translations/Translation';\nimport styles from './fieldMessage.module.scss';\nimport { ErrorType } from '../../models';\n\ntype Props = {\n\terror?: ErrorType\n\ttype?: 'error' | 'info' | 'warning'\n}\n\nexport const FieldMessage = ({ error, type = 'error' }: Props) => {\n\treturn (\n\t\t<>\n\t\t\t{error && (\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t)}\n\t\t\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"maxLength_container__tjoUY\"};","import styles from './maxLength.module.scss';\n\ntype Props = {\n\tlength: number\n\tmaxLength: number\n}\n\nexport const MaxLength = ({ length, maxLength }: Props) => {\n\treturn (\n\t\t{length} / {maxLength}\n\t)\n}\n","import { useCallback, useRef } from 'react';\nimport { ControlsCommonProps } from '../../fields';\nimport { InsertAttachmentRequest } from 'services/tenantManagementService';\nimport Button from 'components/Button';\n\ntype Props = ControlsCommonProps & {\n\tmultiple?: boolean\n\taccept?: string\n}\n\nexport const AddAttachmentButton = ({\n\tvalue, // those are new attachments\n\tonChange,\n\tdisabled,\n\tonBlur,\n\tmultiple,\n\taccept,\n}: Props) => {\n\tconst inputRef = useRef(null);\n\n\tconst onChangeCallback = useCallback(\n\t\t(e) => {\n\t\t\tlet files = e.target.files;\n\t\t\tlet filesLength = files.length;\n\n\t\t\tif (filesLength === 0) {\n\t\t\t\tonChange && onChange([]);\n\t\t\t}\n\n\t\t\tconst allFiles: InsertAttachmentRequest[] = [];\n\t\t\tfor (let i = 0; i < files.length; i++) {\n\t\t\t\tlet file = files[i];\n\n\t\t\t\t// Make new FileReader\n\t\t\t\tlet reader = new FileReader();\n\t\t\t\t// Convert the file to base64 text\n\t\t\t\treader.readAsDataURL(file);\n\t\t\t\t// on reader load something...\n\t\t\t\treader.onload = () => {\n\t\t\t\t\t// Make a fileInfo Object\n\t\t\t\t\tlet fileInfo: InsertAttachmentRequest = new InsertAttachmentRequest({\n\t\t\t\t\t\tname: file.name,\n\t\t\t\t\t\tbase64EncodedFile: reader.result as string,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Push it to the state\n\t\t\t\t\tallFiles.push(fileInfo);\n\n\t\t\t\t\t// If all files have been proceed\n\t\t\t\t\tif (allFiles.length === filesLength) {\n\t\t\t\t\t\t// Apply Callback function\n\t\t\t\t\t\tonChange && onChange([...(value || []), ...allFiles]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[value, onChange]\n\t)\n\n\treturn (\n\t\t<>\n\t\t\t { inputRef.current && inputRef.current.click() }}\n\t\t\t/>\n\t\t\t\n\t\t\n\t)\n}\n","import { useCallback, useMemo, useState } from 'react';\nimport FileSaver from 'file-saver';\nimport { AttachmentResponse, FileResponse, InsertAttachmentRequest } from 'services/tenantManagementService';\nimport { Info } from '../Info/Info';\n\nexport const useItems = (\n\tnewAttachments: InsertAttachmentRequest[] = [],\n\toldAttachments: AttachmentResponse[] = [],\n\tdisabled: boolean = false,\n\tremoveNewAttachment: (attachment: InsertAttachmentRequest) => void,\n\tremoveOldAttachment: ((attachmentId: number) => Promise) | undefined,\n\tdownloadOldAttachment: (attachmentId: number) => Promise\n) => {\n\tconst [deletingId, setDeletingId] = useState();\n\tconst [downloadingId, setDownloadingId] = useState();\n\n\tconst downloadOldAttachmentCallback = useCallback(\n\t\tasync (id: number) => {\n\t\t\tsetDownloadingId(id);\n\t\t\tconst response = await downloadOldAttachment(id);\n\n\t\t\tif (response.status === 200) {\n\t\t\t\tFileSaver.saveAs(response.data, response.fileName);\n\t\t\t}\n\t\t\tsetDownloadingId(undefined);\n\t\t},\n\t\t[downloadOldAttachment]\n\t)\n\n\tconst removeOldAttachmentCallback = useCallback(\n\t\tasync (id: number) => {\n\t\t\tsetDeletingId(id)\n\t\t\tremoveOldAttachment && await removeOldAttachment(id);\n\t\t\tsetDeletingId(undefined)\n\t\t},\n\t\t[removeOldAttachment]\n\t)\n\n\tconst oldAttachmentsContent = useMemo(\n\t\t() => oldAttachments.map(attachment => (\n\t\t\t {\n\t\t\t\t\tdownloadOldAttachmentCallback(attachment.id);\n\t\t\t\t}}\n\t\t\t\tonDelete={() => removeOldAttachmentCallback(attachment.id)}\n\t\t\t\tisDeletable={!!removeOldAttachment}\n\t\t\t\tisLoading={deletingId === attachment.id || downloadingId === attachment.id}\n\t\t\t/>\n\t\t)),\n\t\t[oldAttachments, downloadOldAttachmentCallback, removeOldAttachment, removeOldAttachmentCallback, deletingId, disabled, downloadingId]\n\t)\n\n\tconst newAttachmentsContent = useMemo(\n\t\t() => newAttachments?.map((attachment, index) => (\n\t\t\t removeNewAttachment(attachment)}\n\t\t\t/>\n\t\t)),\n\t\t[newAttachments, disabled, removeNewAttachment]\n\t)\n\n\treturn useMemo(\n\t\t() => {\n\t\t\treturn [\n\t\t\t\t...oldAttachmentsContent,\n\t\t\t\t...newAttachmentsContent\n\t\t\t]\n\t\t},\n\t\t[oldAttachmentsContent, newAttachmentsContent]\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"info_container__OWPV4\",\"item\":\"info_item__VI9Xh\",\"disabled\":\"info_disabled__QKVtY\",\"small\":\"info_small__HqJzy\",\"icon\":\"info_icon__zuU0u\",\"link\":\"info_link__uwgn+\"};","import { DeleteIcon } from 'components/icons/icons'\nimport { useCallback } from 'react'\nimport styles from './info.module.scss'\nimport { OverlaySpinner } from 'components/Spinner'\n\ntype Props = {\n\ttext?: string // either text or children should be provided\n\tchildren?: React.ReactElement\n\tisDeletable?: boolean\n\tonDelete?(): void\n\tdisabled?: boolean\n\tonClick?(): void\n\tisLoading?: boolean\n}\n\nexport const Info = ({ text, children, isDeletable, onDelete, disabled, onClick, isLoading }: Props) => {\n\tconst onDeleteCallback = useCallback(\n\t\t(e) => {\n\t\t\te.stopPropagation();\n\t\t\tonDelete && onDelete()\n\t\t},\n\t\t[onDelete]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t
{text || children}
\n\t\t\t{(isDeletable && !disabled) &&\n\t\t\t\t\n\t\t\t}\n\t\t\t{isLoading && }\n\t\t
\n\t)\n}\n","import { Subtract } from \"utility-types\";\n\nexport class MapItem {\n\tid!: number\n\tname!: string\n\tparentId?: number\n\tchildrens: MapItem[] = []\n\n\tconstructor(model: MapItem) {\n\t\tif (model) {\n\t\t\tthis.id = model.id;\n\t\t\tthis.name = model.name;\n\t\t\tthis.parentId = model.parentId;\n\t\t\tthis.childrens = model.childrens || [];\n\t\t}\n\t}\n}\n\nexport const convertToMapItems =

>(originalItems: P[], childrens: MapItem[], parentId: number | undefined): MapItem[] => {\n\tfor (const item of originalItems) {\n\t\tif (item.parentId === parentId) {\n\t\t\tchildrens.push(new MapItem({\n\t\t\t\t...item,\n\t\t\t\tchildrens: []\n\t\t\t}));\n\t\t}\n\t}\n\n\tfor (const item of childrens) {\n\t\titem.childrens = convertToMapItems(originalItems, item.childrens, item.id);\n\t}\n\n\treturn childrens;\n}\n\nexport const getSelectedItem = (id: number | undefined, childrens: MapItem[]): MapItem | undefined => {\n\tif (!id) {\n\t\treturn;\n\t}\n\n\tfor (const item of childrens) {\n\t\tif (item.id === id) {\n\t\t\treturn item;\n\t\t}\n\n\t\tconst selected = getSelectedItem(id, item.childrens);\n\t\tif (selected) {\n\t\t\treturn selected;\n\t\t}\n\t}\n\n\treturn;\n}\n\nexport const convertToAbsoluteName = (mapItem: MapItem, items: MapItem[]) => {\n\tfor (const item of items) {\n\t\tif (item.id === mapItem.id) {\n\t\t\treturn item.name;\n\t\t}\n\n\t\tconst absoluteName = convertToAbsoluteName(mapItem, item.childrens);\n\t\tif (absoluteName) {\n\t\t\treturn `${item.name} - ${absoluteName}`\n\t\t}\n\t}\n\n\treturn;\n}\n\nconst getChildren = (organizationalUnit: MapItem, organizationalUnitsMap: MapItem[]) => {\n\tif (!organizationalUnit) {\n\t\treturn [];\n\t}\n\n\tlet result: number[] = [];\n\n\tfor (let i = 0; i < organizationalUnit.childrens.length; i++) {\n\t\tconst child = organizationalUnit.childrens[i];\n\t\tresult.push(child.id);\n\n\t\tresult = [...result, ...getChildren(child, organizationalUnitsMap)];\n\t}\n\n\treturn result;\n}\n\nexport const getAllOrganizationalUnitIds = (organizationalUnitsMap: MapItem[], organizationalUnitIds: number[]) => {\n\tlet result: number[] = [];\n\n\tfor (let i = 0; i < organizationalUnitIds.length; i++) {\n\t\tconst organizationalUnit = getSelectedItem(organizationalUnitIds[i], organizationalUnitsMap);\n\t\tif (!organizationalUnit) {\n\t\t\tcontinue;\n\t\t}\n\t\t//push selected\n\t\tresult.push(organizationalUnit.id);\n\n\t\tresult = [...result, ...getChildren(organizationalUnit, organizationalUnitsMap)];\n\t}\n\n\treturn [...Array.from(new Set(result))];\n}\n","import { useCallback } from 'react';\nimport { ControlsCommonProps } from '../../fields';\nimport { AttachmentResponse, FileResponse, InsertAttachmentRequest } from 'services/tenantManagementService';\nimport { useItems } from './useItems';\nimport { RowContainer } from 'components/Layout';\nimport { AddAttachmentButton } from './AddAttachmentButton';\n\nexport type AttachmentProps = ControlsCommonProps & {\n\tmultiple?: boolean\n\taccept?: string\n\n\toldAttachments?: AttachmentResponse[]\n\tremoveOldAttachment?(attachmentId: number): Promise\n\tdownloadOldAttachment(attachmentId: number): Promise\n}\n\nexport const Attachment = ({\n\tvalue, // those are new attachments\n\tonChange,\n\tdisabled,\n\tonBlur,\n\tmultiple,\n\taccept,\n\n\toldAttachments, // those are already on backend\n\tremoveOldAttachment,\n\tdownloadOldAttachment\n}: AttachmentProps) => {\n\tconst removeNewAttachmentCallback = useCallback(\n\t\t(item: InsertAttachmentRequest) => {\n\t\t\tif (!value) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst attachments = value.filter((attachment) => attachment !== item);\n\t\t\tonChange && onChange(attachments);\n\t\t},\n\t\t[value, onChange]\n\t)\n\n\tconst itemsContent = useItems(value, oldAttachments, disabled, removeNewAttachmentCallback, removeOldAttachment, downloadOldAttachment);\n\n\treturn (\n\t\t\n\t\t\t{!disabled &&\n\t\t\t\t\n\t\t\t}\n\t\t\t{itemsContent}\n\t\t\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"autoComplete_container__ZVGIh\",\"select_container\":\"autoComplete_select_container__sKL3-\",\"description_container\":\"autoComplete_description_container__TAljW\",\"small\":\"autoComplete_small__y582d\",\"arrow\":\"autoComplete_arrow__9FnnW\",\"dropdown\":\"autoComplete_dropdown__jJGGE\",\"open\":\"autoComplete_open__rQF-P\",\"not_portal\":\"autoComplete_not_portal__s11pI\",\"no_options\":\"autoComplete_no_options__4DwEZ\",\"option\":\"autoComplete_option__1gD3Q\",\"selected\":\"autoComplete_selected__m6EpE\",\"option_spinner\":\"autoComplete_option_spinner__zOXkP\"};","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"input_wrapper__tIY+m\",\"small\":\"input_small__I9Dew\",\"container\":\"input_container__Y6y8m\",\"input\":\"input_input__G3oCo\",\"max_length\":\"input_max_length__CzjhW\",\"transparent_cursor\":\"input_transparent_cursor__XlOpb\",\"explanation\":\"input_explanation__VM0nU\"};","import { useCallback, useEffect, useRef } from 'react';\nimport { MaxLength } from '../../addons';\nimport styles from './input.module.scss';\nimport { ControlsCommonProps } from '../../fields';\nimport { InfoPopup, POSITION } from 'components/Popup';\nimport { OverlaySpinner } from 'components/Spinner';\nimport { useGetTranslation } from 'components/Translations/translationUtils';\n\nexport type SelectionType = {\n\tstart: number\n\tend: number\n}\n\nexport type InputProps = ControlsCommonProps & {\n\ttype?: string\n\tplaceholder?: string\n\tmaxLength?: number\n\thideMaxLength?: boolean\n\tfocus?: boolean\n\tonFocus?(): void\n\tselectAllTextOnFocus?: boolean\n\texplanation?: string\n\tonKeyDown?(eventKey: string, event: React.KeyboardEvent): void\n\tonKeyUp?(eventKey: string, event: React.KeyboardEvent): void\n\tonClick?(event: React.MouseEvent): void\n\tsize?: 'medium' | 'small'\n\tloading?: boolean\n\tselection?: SelectionType\n\tstyle?: React.CSSProperties\n}\n\nexport const Input = ({\n\tvalue,\n\tonChange,\n\tdisabled,\n\tonBlur,\n\ttype = 'text',\n\texplanation,\n\tplaceholder,\n\tmaxLength = 40,\n\thideMaxLength,\n\tfocus,\n\tonFocus,\n\tselectAllTextOnFocus,\n\tonKeyDown,\n\tonKeyUp,\n\tonClick,\n\tsize = 'medium',\n\tloading,\n\tselection,\n\tstyle\n}: InputProps) => {\n\tconst inputRef = useRef(null);\n\n\tconst getTranslation = useGetTranslation();\n\n\tconst onChangeCallback = useCallback(\n (e) => onChange && onChange(e.target.value),\n [onChange]\n\t)\n\n\tconst onFocusCallback = useCallback(\n\t\t() => {\n\t\t\tif (selectAllTextOnFocus) {\n\t\t\t\tinputRef.current?.select();\n\t\t\t}\n\t\t\tonFocus && onFocus();\n\t\t},\n\t\t[selectAllTextOnFocus, onFocus]\n\t)\n\n\t// hack: ako je setovan fokus, fokusiraj element\n\tuseEffect(\n\t\t() => {\n\t\t\tfocus && setTimeout(() => inputRef.current?.focus(), 1)\n\t\t},\n\t\t[focus]\n\t)\n\n\tuseEffect(\n\t\t() => {\n\t\t\tif (selection && inputRef.current) {\n\t\t\t\tinputRef.current.setSelectionRange(selection.start, selection.end);\n\t\t\t}\n\t\t},\n\t\t[value, selection] // if value is changed, we need to set selection again\n\t)\n\n\tconst onKeyDownCallback = useCallback(\n\t\t(e: React.KeyboardEvent) => onKeyDown?.(e.key, e),\n\t\t[onKeyDown]\n\t)\n\n\tconst onKeyUpCallback = useCallback(\n\t\t(e: React.KeyboardEvent) => onKeyUp?.(e.key, e),\n\t\t[onKeyUp]\n\t)\n\n\tconst onClickCallback = useCallback(\n\t\t(e: React.MouseEvent) => onClick?.(e),\n\t\t[onClick]\n\t)\n\n\treturn (\n\t\t

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t{/* max length */}\n\t\t\t\t{!hideMaxLength && maxLength &&\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t
\n\t\t\t{/* explanation */}\n\t\t\t{explanation &&\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t}\n\t\t\t{/* loading */}\n\t\t\t{loading && }\n\t\t
\n\t)\n}\n","import { forwardRef, useCallback, useMemo } from 'react'\nimport styles from './autoComplete.module.scss'\nimport { useGetTranslation } from 'components/Translations/translationUtils'\n\ntype Props = {\n\titem: any\n\tgetItemText(item: any): string | undefined\n\tonClick(item: any): void\n\tisSelected?: boolean\n\tgetItemStyle?: (item: any) => React.CSSProperties\n}\n\nexport const Option = forwardRef(({ item, getItemText, onClick, isSelected, getItemStyle, }: Props, ref: React.ForwardedRef | undefined) => {\n\n\tconst getTranslation = useGetTranslation();\n\n\tconst onClickCallback = useCallback(\n\t\t() => {\n\t\t\tonClick(item);\n\t\t},\n\t\t[item, onClick]\n\t)\n\n\tconst itemStyleMemo = useMemo(\n\t\t() => getItemStyle && getItemStyle(item),\n\t\t[item, getItemStyle]\n\t)\n\n\tconst className = `${styles.option} ${isSelected ? styles.selected : ''}`\n\n\treturn (\n\t\t
\n\t\t\t{getTranslation(getItemText(item))}\n\t\t
\n\t)\n})\n","import { ControlsCommonProps } from \"components/Form/fields\"\nimport { ClipSpinner } from \"components/Spinner\"\nimport { ArrowDownIcon } from \"components/icons/icons\"\nimport styles from './autoComplete.module.scss'\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from \"react\"\nimport { Input } from \"../Input/Input\"\nimport { Option } from \"./Option\"\nimport { emptyArray } from \"utils/commonHelper\"\nimport Spinner from \"components/Spinner/Spinner\"\nimport { InfoPopup, POSITION } from \"components/Popup\"\nimport { createPortal } from \"react-dom\"\nimport { useGetTranslation } from \"components/Translations/translationUtils\"\nimport { Translation } from 'components/Translations/Translation'\n\nexport const autoCompleteId = 'autoCompleteId';\n\n// AutoComplete (like Textarea) accepts Enter\n// so this method is used in Form to prevent auto save of the form via Enter key\nexport const isAutoCompleteHit = (target: HTMLElement) => {\n\treturn !!target.closest(`#${autoCompleteId}`);\n}\n\nexport type AutoCompleteProps = ControlsCommonProps & {\n\titems: Array\n\tgetItemId(item: any): string | number\n\tgetItemText(item: any): string | undefined\n\tgetItemDescription?(item: any): string | undefined\n\tgetItemStyle?: (item: any) => React.CSSProperties\n\t/** If there is a need for different display in Input and Option */\n\tgetText?(item: any): string | undefined\n\n\tplaceholder?: string\n\tloading?: boolean\n\tsort?: boolean\n\tfocus?: boolean\n\tsize?: 'medium' | 'small'\n\tusePortal?: boolean\n}\n\nexport const AutoComplete = (props: AutoCompleteProps) => {\n\tconst {\n\t\tvalue, onChange, onBlur, disabled, items,\n\t\tgetItemId, getItemText, getItemDescription, getItemStyle, getText,\n\t\tplaceholder, loading, sort, size = 'medium',\n\t\tfocus = false, usePortal = true,\n\t} = props;\n\n\tconst containerRef = useRef(null);\n\n\tconst [expanded, setExpanded] = useState(false);\n\tconst [searchValue, setSearchValue] = useState();\n\tconst [filteredItems, setFilteredItems] = useState(items || emptyArray);\n\tconst [keyboardItem, setKeyboardItem] = useState();\n\tconst [dropdownStyle, setDropdownStyle] = useState({});\n\n\tconst getTranslation = useGetTranslation();\n\n\tuseEffect(\n\t\t() => {\n\t\t\tif (focus) {\n\t\t\t\tsetExpanded(true);\n\t\t\t}\n\t\t},\n\t\t[focus]\n\t)\n\n\tuseEffect(\n\t\t() => {\n\t\t\t// filter by searchValue\n\t\t\tlet newFilteredItems = items.filter((item) => {\n\t\t\t\tconst text = getTranslation(getItemText(item));\n\t\t\t\treturn text?.toLowerCase().includes(searchValue?.toLowerCase() || '');\n\t\t\t})\n\t\t\t// sort by alphabet\n\t\t\tif (sort) {\n\t\t\t\tnewFilteredItems = newFilteredItems.sort((a, b) => {\n\t\t\t\t\tconst textA = getTranslation(getItemText(a))?.toUpperCase() || '';\n\t\t\t\t\tconst textB = getTranslation(getItemText(b))?.toUpperCase() || ''\n\t\t\t\t\tif (textA < textB) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (textA > textB) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t})\n\t\t\t}\n\t\t\tsetFilteredItems(newFilteredItems);\n\t\t},\n\t\t[searchValue, items, getItemText, sort, getTranslation]\n\t)\n\n\tconst onChangeCallback = useCallback(\n\t\t(item: any | undefined) => {\n\t\t\tlet id: string | number | undefined;\n\t\t\tif (item) {\n\t\t\t\tid = getItemId(item);\n\t\t\t}\n\n\t\t\tif (id !== value) {\n\t\t\t\tonChange && onChange(id);\n\t\t\t}\n\t\t\tsetSearchValue(undefined);\n\t\t\tsetFilteredItems(items || emptyArray);\n\t\t\tsetExpanded(false);\n\t\t\tsetKeyboardItem(undefined);\n\t\t},\n\t\t[getItemId, onChange, items, value]\n\t)\n\n\tconst onBlurCallback = useCallback(\n\t\t() => {\n\t\t\tif (searchValue === '') {\n\t\t\t\tonChangeCallback(undefined);\n\t\t\t\tonBlur && onBlur();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonBlur && onBlur();\n\t\t\tsetSearchValue(undefined);\n\t\t\tsetFilteredItems(items || emptyArray);\n\t\t\tsetExpanded(false);\n\t\t\tsetKeyboardItem(undefined);\n\t\t},\n\t\t[onBlur, items, onChangeCallback, searchValue]\n\t)\n\n\tconst expandCallback = useCallback(\n\t\t() => !disabled && !loading && setExpanded(true),\n\t\t[disabled, loading]\n\t)\n\n\tconst onKeyDownCallback = useCallback(\n\t\t(eventKey: string) => {\n\t\t\tif (!expanded) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (eventKey) {\n\t\t\t\tcase 'Enter':\n\t\t\t\t\tif (keyboardItem) {\n\t\t\t\t\t\tonChangeCallback(keyboardItem);\n\t\t\t\t\t} else if (searchValue === '') {\n\t\t\t\t\t\tonChangeCallback(undefined);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tsetKeyboardItem((state) => {\n\t\t\t\t\t\tconst index = filteredItems.indexOf(state);\n\n\t\t\t\t\t\tif (index === -1) {\n\t\t\t\t\t\t\treturn filteredItems.at(-1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn filteredItems.at(index - 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tsetKeyboardItem((state) => {\n\t\t\t\t\t\tconst index = filteredItems.indexOf(state);\n\n\t\t\t\t\t\tif (index === filteredItems.length - 1) {\n\t\t\t\t\t\t\treturn filteredItems.at(0);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn filteredItems.at(index + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\t[searchValue, filteredItems, keyboardItem, onChangeCallback, expanded]\n\t)\n\n\tconst optionsContent = useMemo(\n\t\t() => {\n\t\t\treturn filteredItems.map((item) => {\n\t\t\t\tconst id = getItemId(item);\n\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t})\n\t\t},\n\t\t[filteredItems, getItemId, getItemText, onChangeCallback, getItemStyle, value, keyboardItem]\n\t)\n\n\tconst selectedItem: any | undefined = useMemo(\n\t\t() => {\n\t\t\tif (value) {\n\t\t\t\treturn items.find((item) => getItemId(item) === value);\n\t\t\t}\n\t\t},\n\t\t[value, items, getItemId]\n\t)\n\n\tconst selectedItemStyle = useMemo(\n\t\t() => {\n\t\t\tif (selectedItem) {\n\t\t\t\treturn getItemStyle?.(selectedItem);\n\t\t\t}\n\t\t},\n\t\t[getItemStyle, selectedItem]\n\t)\n\n\tconst selectedItemText = selectedItem ? (getText?.(selectedItem) || getTranslation(getItemText(selectedItem))) : undefined;\n\n\tconst description = useMemo(\n\t\t() => {\n\t\t\tif (getItemDescription && selectedItem) {\n\t\t\t\treturn getItemDescription(selectedItem);\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\t[selectedItem, getItemDescription]\n\t)\n\n\tconst dropdownContentMemo = useMemo(\n\t\t() => {\n\t\t\tconst dropdownContent = (\n\t\t\t\t
\n\t\t\t\t\t{optionsContent}\n\t\t\t\t\t{optionsContent.length === 0 && (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t);\n\n\t\t\tif (usePortal) {\n\t\t\t\treturn createPortal(dropdownContent, document.body);\n\t\t\t}\n\n\t\t\treturn dropdownContent;\n\t\t},\n\t\t[expanded, optionsContent, usePortal, dropdownStyle]\n\n\t)\n\n\tconst calculateDropdownPortalStyle = useCallback(\n\t\t() => {\n\t\t\tconst container = containerRef.current;\n\n\t\t\tif (container) {\n\t\t\t\tconst { bottom, top, width, left } = container.getBoundingClientRect();\n\n\t\t\t\tconst viewportHeight = window.innerHeight;\n\t\t\t\tconst spaceBelow = viewportHeight - bottom;\n\t\t\t\tconst spaceAbove = top\n\t\t\t\tconst dropdownHeight = optionsContent.length >= 5 ? 160 : optionsContent.length > 0 ? optionsContent.length * 32 : 32; // maxHeight(5 options * 32px)\n\t\t\t\tconst openAbove = spaceBelow < dropdownHeight && spaceAbove > spaceBelow;\n\t\t\t\tconst dropdownMaxWidth = 500;\n\n\t\t\t\tconst dropdownStyle: React.CSSProperties = {\n\t\t\t\t\tminWidth: `${width}px`,\n\t\t\t\t\tmaxWidth: `${dropdownMaxWidth}px`,\n\t\t\t\t\tleft: `${left + window.scrollX}px`,\n\t\t\t\t\t...(openAbove ?\n\t\t\t\t\t\t{ bottom: `${viewportHeight - spaceAbove - window.scrollY}px` } :\n\t\t\t\t\t\t{ top: `${bottom + window.scrollY}px` }\n\t\t\t\t\t),\n\t\t\t\t};\n\n\t\t\t\tsetDropdownStyle(dropdownStyle);\n\t\t\t}\n\t\t},\n\t\t[optionsContent]\n\t)\n\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (usePortal && expanded) {\n\t\t\t\tcalculateDropdownPortalStyle();\n\n\t\t\t\twindow.addEventListener('scroll', calculateDropdownPortalStyle, true);\n\n\t\t\t\treturn () => {\n\t\t\t\t\twindow.removeEventListener('scroll', calculateDropdownPortalStyle, true);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[usePortal, expanded, calculateDropdownPortalStyle]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t{/* dropdown */}\n\t\t\t\t{expanded && dropdownContentMemo}\n\t\t\t\t{/* arrow */}\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t{/* loading */}\n\t\t\t\t{loading &&\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t
\n\t\t\t{/* description */}\n\t\t\t{description &&\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t}\n\t\t
\n\t)\n}\n","import { ControlsCommonProps } from \"components/Form/fields\"\nimport { ClipSpinner } from \"components/Spinner\"\nimport { ArrowDownIcon } from \"components/icons/icons\"\nimport styles from './autoComplete.module.scss'\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from \"react\"\nimport { Input } from \"../Input/Input\"\nimport { Option } from \"./Option\"\nimport { emptyArray, EntityPrefixEnum, getFormatedId } from \"utils/commonHelper\"\nimport Spinner from \"components/Spinner/Spinner\"\nimport { createPortal } from \"react-dom\"\nimport { GenericFilterModel, GenericFilterModelCollection, IdNameResponse, IdNameResponseItemsResponseModel, IdNameResponseSimpleResponseModel } from 'services/tenantManagementService'\nimport { tryCatchJsonByAction } from 'utils/fetchUtils'\nimport { Translation } from 'components/Translations/Translation'\n\nexport const autoCompleteRemoteId = 'autoCompleteRemoteId';\n\nconst LIMIT = 6;\nconst SEARCH_DEBOUNCE = 1000;\n\ntype ItemsModel = {\n\titems: IdNameResponse[],\n\tcount?: number\n}\n\nconst emptyItemsModel: ItemsModel = {\n\titems: emptyArray,\n\tcount: undefined\n}\n\n// AutoComplete (like Textarea) accepts Enter\n// so this method is used in Form to prevent auto save of the form via Enter key\nexport const isAutoCompleteRemoteHit = (target: HTMLElement) => {\n\treturn !!target.closest(`#${autoCompleteRemoteId}`);\n}\n\nexport type AutoCompleteRemoteProps = ControlsCommonProps & {\n\tentityPrefix: EntityPrefixEnum | undefined\n\tfilters?: GenericFilterModel[] | undefined;\n\tfetchItemsFunction(genericFilter: GenericFilterModelCollection, searchValue: string | undefined): Promise\n\tfetchSingleItemFunction(id: number): Promise\n\tgetItemText?(item: IdNameResponse): string | undefined\n\tgetItemStyle?: (item: IdNameResponse) => React.CSSProperties\n\t/** If there is a need for different display in Input and Option */\n\tgetText?(item: IdNameResponse): string | undefined\n\tplaceholder?: string\n\tfocus?: boolean\n\tsize?: 'medium' | 'small'\n\tusePortal?: boolean\n}\n\nexport const AutoCompleteRemote = (props: AutoCompleteRemoteProps) => {\n\tconst {\n\t\tvalue, onChange, onBlur, disabled,\n\t\tentityPrefix,\n\t\tfilters, fetchItemsFunction, fetchSingleItemFunction,\n\t\tgetItemText, getItemStyle, getText,\n\t\tplaceholder, size = 'medium',\n\t\tfocus = false, usePortal = true,\n\t} = props;\n\n\tconst containerRef = useRef(null);\n\n\tconst [expanded, setExpanded] = useState(false);\n\tconst [searchValue, setSearchValue] = useState();\n\tconst [isFetchingSearchItems, setIsFetchingSearchItems] = useState(false);\n\tconst [filteredItems, setFilteredItems] = useState(emptyItemsModel);\n\n\tconst [offset, setOffset] = useState(0)\n\tconst [keyboardItem, setKeyboardItem] = useState();\n\tconst [dropdownStyle, setDropdownStyle] = useState({});\n\n\tconst [selectedItem, setSelectedItem] = useState(undefined)\n\tconst [isFetchingValue, setIsFetchingValue] = useState(false);\n\n\tconst lastItemRef = useRef(null);\n\n\tuseEffect(() => {\n\t\t// if we fetched all items, or fetching is in progress, skip\n\t\tif (filteredItems.items.length === filteredItems.count || isFetchingSearchItems) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst callback = (entries) => {\n\t\t\t// if scrolled to the last item, update offset and trigger new fetch\n\t\t\tif (entries[0].isIntersecting && filteredItems.count && offset + LIMIT < filteredItems.count) {\n\t\t\t\tsetOffset((prev) => prev + LIMIT);\n\t\t\t}\n\t\t};\n\n\t\tconst observerInstance = new IntersectionObserver(callback, {\n\t\t\troot: null,\n\t\t\tthreshold: 1.0,\n\t\t});\n\n\t\tif (lastItemRef.current) {\n\t\t\tobserverInstance.observe(lastItemRef.current);\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (lastItemRef.current) {\n\t\t\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t\t\tobserverInstance.unobserve(lastItemRef.current);\n\t\t\t}\n\t\t};\n\t }, [filteredItems, isFetchingSearchItems, offset]);\n\n\tuseEffect(\n\t\t() => {\n\t\t\tif (focus) {\n\t\t\t\tsetExpanded(true);\n\t\t\t}\n\t\t},\n\t\t[focus]\n\t)\n\n\tconst fetchFilteredItemsCallback = useCallback(\n\t\tasync () => {\n\t\t\tconst bindedAction = fetchItemsFunction.bind(null, new GenericFilterModelCollection({filters, offset: offset, limit: LIMIT}), searchValue);\n\t\t\tconst response = await tryCatchJsonByAction(bindedAction);\n\t\t\tif (response.success) {\n\t\t\t\tlet items = response.items || emptyArray;\n\n\t\t\t\tsetFilteredItems((state => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\titems: offset > 0 ? [...state.items, ...items] : items,\n\t\t\t\t\t\tcount: response.count\n\t\t\t\t\t}\n\t\t\t\t}))\n\t\t\t}\n\t\t\tsetIsFetchingSearchItems(false)\n\t\t},\n\t\t[searchValue, filters, fetchItemsFunction, offset]\n\t)\n\n\tuseEffect(\n\t\t() => {\n\t\t\t// set fetching, while user is typing\n\t\t\tsetIsFetchingSearchItems(true)\n\n\t\t\t// if autocomplete is just focused or user is scrolling, fetch immediately\n\t\t\tif (!searchValue || offset > 0) {\n\t\t\t\texpanded && fetchFilteredItemsCallback()\n\t\t\t} else {\n\t\t\t\tconst handler = setTimeout(() => {\n\t\t\t\t\texpanded && fetchFilteredItemsCallback()\n\t\t\t\t }, SEARCH_DEBOUNCE);\n\n\t\t\t\t return () => {\n\t\t\t\t\tclearTimeout(handler);\n\t\t\t\t };\n\t\t\t}\n\t\t},\n\t\t[fetchFilteredItemsCallback, expanded, searchValue, offset]\n\t)\n\n\tconst fetchSelectedItemDataCallback = useCallback(\n\t\tasync (id: number) => {\n\t\t\tsetIsFetchingValue(true)\n\n\t\t\tconst bindedAction = fetchSingleItemFunction.bind(null, id);\n\t\t\tconst response = await tryCatchJsonByAction(bindedAction);\n\t\t\tif (response.success) {\n\t\t\t\tsetSelectedItem(response.value)\n\t\t\t}\n\t\t\tsetIsFetchingValue(false)\n\t\t},\n\t\t[fetchSingleItemFunction]\n\t)\n\n\tuseEffect(\n\t\t() => {\n\t\t\tif (value) {\n\t\t\t\tvalue !== selectedItem?.id && fetchSelectedItemDataCallback(Number(value))\n\t\t\t} else {\n\t\t\t\tsetSelectedItem(undefined)\n\t\t\t}\n\t\t},\n\t\t[fetchSelectedItemDataCallback, value, selectedItem]\n\t)\n\n\tconst onChangeCallback = useCallback(\n\t\t(item: IdNameResponse | undefined) => {\n\t\t\tlet id: number | undefined = item?.id;\n\n\t\t\tif (id !== value) {\n\t\t\t\tonChange && onChange(id);\n\t\t\t}\n\t\t\tsetSelectedItem(item)\n\t\t\tsetSearchValue(undefined);\n\t\t\tsetFilteredItems(emptyItemsModel)\n\t\t\tsetOffset(0);\n\t\t\tsetExpanded(false);\n\t\t\tsetKeyboardItem(undefined);\n\t\t},\n\t\t[onChange, value]\n\t)\n\n\tconst onBlurCallback = useCallback(\n\t\t() => {\n\t\t\tif (searchValue === '') {\n\t\t\t\tonChangeCallback(undefined)\n\t\t\t}\n\t\t\tonBlur && onBlur();\n\t\t\tsetSearchValue(undefined);\n\t\t\tsetFilteredItems(emptyItemsModel)\n\t\t\tsetOffset(0);\n\t\t\tsetExpanded(false);\n\t\t\tsetKeyboardItem(undefined);\n\t\t},\n\t\t[onBlur, onChangeCallback, searchValue]\n\t)\n\n\tconst expandCallback = useCallback(\n\t\t() => !disabled && setExpanded(true),\n\t\t[disabled]\n\t)\n\n\tconst onKeyDownCallback = useCallback(\n\t\t(eventKey: string) => {\n\t\t\tif (!expanded) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (eventKey) {\n\t\t\t\tcase 'Enter':\n\t\t\t\t\tif (keyboardItem) {\n\t\t\t\t\t\tonChangeCallback(keyboardItem);\n\t\t\t\t\t} else if (searchValue === '') {\n\t\t\t\t\t\tonChangeCallback(undefined);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tsetKeyboardItem((state) => {\n\t\t\t\t\t\tconst index = filteredItems.items.indexOf(state);\n\n\t\t\t\t\t\tif (index === -1) {\n\t\t\t\t\t\t\treturn filteredItems.items.at(-1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn filteredItems.items.at(index - 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tsetKeyboardItem((state) => {\n\t\t\t\t\t\tconst index = filteredItems.items.indexOf(state);\n\n\t\t\t\t\t\tif (index === filteredItems.items.length - 1) {\n\t\t\t\t\t\t\treturn filteredItems.items.at(0);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn filteredItems.items.at(index + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\t[searchValue, filteredItems, keyboardItem, onChangeCallback, expanded]\n\t)\n\n\tconst getItemTextMemo = useMemo(\n\t\t() => {\n\t\t\t// if getItemText is provided use it\n\t\t\tif (getItemText) {\n\t\t\t\treturn getItemText;\n\t\t\t}\n\n\t\t\t// if entity prefix is provided, create default getItemText\n\t\t\tif (entityPrefix) {\n\t\t\t\treturn (item: IdNameResponse) => {\n\t\t\t\t\treturn `${getFormatedId(entityPrefix, item.id)} - ${item.name}`\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, return just name\n\t\t\treturn (item: IdNameResponse) => {\n\t\t\t\treturn item.name\n\t\t\t}\n\t\t},\n\t\t[entityPrefix, getItemText]\n\t)\n\n\tconst optionsContent = useMemo(\n\t\t() => {\n\t\t\treturn filteredItems.items.map((item, index) => {\n\t\t\t\tconst id = item.id;\n\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t})\n\t\t},\n\t\t[filteredItems, onChangeCallback, getItemStyle, value, keyboardItem, getItemTextMemo]\n\t)\n\n\tconst selectedItemStyle = useMemo(\n\t\t() => {\n\t\t\tif (selectedItem) {\n\t\t\t\treturn getItemStyle?.(selectedItem);\n\t\t\t}\n\t\t},\n\t\t[getItemStyle, selectedItem]\n\t)\n\n\tconst selectedItemText = selectedItem ? (getText?.(selectedItem) || getItemTextMemo(selectedItem)) : undefined;\n\n\tconst dropdownContentMemo = useMemo(\n\t\t() => {\n\t\t\tconst dropdownContent = (\n\t\t\t\t
\n\t\t\t\t\t{optionsContent}\n\t\t\t\t\t{/* loading */}\n\t\t\t\t\t{isFetchingSearchItems &&\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t\t{optionsContent.length === 0 && !isFetchingSearchItems && (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t);\n\n\t\t\tif (usePortal) {\n\t\t\t\treturn createPortal(dropdownContent, document.body);\n\t\t\t}\n\n\t\t\treturn dropdownContent;\n\t\t},\n\t\t[expanded, optionsContent, usePortal, dropdownStyle, isFetchingSearchItems]\n\n\t)\n\n\tconst calculateDropdownPortalStyle = useCallback(\n\t\t() => {\n\t\t\tconst container = containerRef.current;\n\n\t\t\tif (container) {\n\t\t\t\tconst { bottom, top, width, left } = container.getBoundingClientRect();\n\n\t\t\t\tconst viewportHeight = window.innerHeight;\n\t\t\t\tconst spaceBelow = viewportHeight - bottom;\n\t\t\t\tconst spaceAbove = top\n\t\t\t\tconst dropdownHeight = optionsContent.length >= 5 ? 160 : optionsContent.length > 0 ? optionsContent.length * 32 : 32; // maxHeight(5 options * 32px)\n\t\t\t\tconst openAbove = spaceBelow < dropdownHeight && spaceAbove > spaceBelow;\n\t\t\t\tconst dropdownMaxWidth = 500;\n\n\t\t\t\tconst dropdownStyle: React.CSSProperties = {\n\t\t\t\t\tminWidth: `${width}px`,\n\t\t\t\t\tmaxWidth: `${dropdownMaxWidth}px`,\n\t\t\t\t\tleft: `${left + window.scrollX}px`,\n\t\t\t\t\t...(openAbove ?\n\t\t\t\t\t\t{ bottom: `${viewportHeight - spaceAbove - window.scrollY}px` } :\n\t\t\t\t\t\t{ top: `${bottom + window.scrollY}px` }\n\t\t\t\t\t),\n\t\t\t\t};\n\n\t\t\t\tsetDropdownStyle(dropdownStyle);\n\t\t\t}\n\t\t},\n\t\t[optionsContent]\n\t)\n\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (usePortal && expanded) {\n\t\t\t\tcalculateDropdownPortalStyle();\n\n\t\t\t\twindow.addEventListener('scroll', calculateDropdownPortalStyle, true);\n\n\t\t\t\treturn () => {\n\t\t\t\t\twindow.removeEventListener('scroll', calculateDropdownPortalStyle, true);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[usePortal, expanded, calculateDropdownPortalStyle]\n\t)\n\n\tconst searchValueChangeCallback = useCallback(\n\t\t(value: string | undefined) => {\n\t\t\tsetSearchValue(value);\n\t\t\tsetFilteredItems(emptyItemsModel);\n\t\t\tsetOffset(0);\n\t\t},\n\t\t[]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t{/* dropdown */}\n\t\t\t\t{expanded && dropdownContentMemo}\n\t\t\t\t{/* arrow */}\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t{/* loading */}\n\t\t\t\t{isFetchingValue &&\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t
\n\t\t
\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"checkbox_container__qKl9e\",\"small\":\"checkbox_small__M1wMU\",\"label\":\"checkbox_label__jA4ae\",\"checked\":\"checkbox_checked__C0zrV\",\"disabled\":\"checkbox_disabled__0EGDg\",\"icon\":\"checkbox_icon__e3qS7\",\"text\":\"checkbox_text__9AKQ-\",\"additionalText\":\"checkbox_additionalText__-lmuu\"};","import { CheckIcon } from 'components/icons/icons';\nimport { useCallback } from 'react';\nimport { ControlsCommonProps } from '../../fields';\nimport styles from './checkbox.module.scss';\nimport { OverlaySpinner } from 'components/Spinner';\nimport { Translation } from 'components/Translations/Translation';\n\nexport type CheckboxProps = ControlsCommonProps & {\n\tlabelBefore?: string\n\tlabelBeforeAdditional?: string\n\tsize?: 'medium' | 'small'\n\tloading?: boolean\n}\n\nexport const Checkbox = ({ value, disabled, onChange, labelBefore, labelBeforeAdditional, size = 'medium', loading }: CheckboxProps) => {\n\tconst onChangeCallback = useCallback(\n\t\t() => {\n\t\t\tif (!disabled) {\n\t\t\t\tonChange && onChange(!value);\n\t\t\t}\n\t\t},\n\t\t[value, disabled, onChange]\n\t)\n\n\tconst labelClassName = `${styles.label} ${disabled || loading ? styles.disabled : ''} ${value ? styles.checked : ''}`;\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t{/* loading */}\n\t\t\t{loading && }\n\t\t
\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"opener_container__uINLW\",\"small\":\"opener_small__Bu6QQ\"};","import React from 'react';\nimport styles from './opener.module.scss';\n\nconst ColorPickerOpener = ({ color, onClick }) => {\n\treturn (\n\t\t
\n\t);\n}\n\nexport default ColorPickerOpener;\n","// extracted by mini-css-extract-plugin\nexport default {\"color_picker_wrapper\":\"colorPicker_color_picker_wrapper__hIYt6\",\"color_picker_disabled\":\"colorPicker_color_picker_disabled__Cv106\",\"color_picker_cover\":\"colorPicker_color_picker_cover__6wbDI\",\"color_picker_panel\":\"colorPicker_color_picker_panel__9I-bL\",\"color_picker_panel_right\":\"colorPicker_color_picker_panel_right__D50OC\",\"color_picker_arrow\":\"colorPicker_color_picker_arrow__wgmwY\",\"color_picker_arrow_right\":\"colorPicker_color_picker_arrow_right__wK6k7\",\"color_picker_preview\":\"colorPicker_color_picker_preview__Yo3XX\",\"color_picker_default_colors_wrapper\":\"colorPicker_color_picker_default_colors_wrapper__kwqmo\",\"color_picker_default_colors_inner\":\"colorPicker_color_picker_default_colors_inner__p8ZM6\",\"color_picker_default_colors_color\":\"colorPicker_color_picker_default_colors_color__YIOy0\",\"color_picker_hue\":\"colorPicker_color_picker_hue__xCWjQ\",\"color_picker_hue_track\":\"colorPicker_color_picker_hue_track__1hDCZ\",\"color_picker_hue_thumb\":\"colorPicker_color_picker_hue_thumb__AMcs6\"};","import React from 'react';\nimport styles from '../colorPicker.module.scss';\n\nconst Preview = ({ color }) => {\n\treturn (\n\t\t\n\t)\n}\n\nexport default Preview;\n","import React from 'react';\nimport styles from '../colorPicker.module.scss';\n\nconst DefaultColor = ({ color, onClick }) => {\n\tconst onClickCallback = () => onClick(color);\n\n\treturn (\n\t\t\n\t)\n}\n\nexport default DefaultColor;\n","import React, { memo } from 'react';\nimport styles from '../colorPicker.module.scss';\nimport { PropTypes } from 'prop-types';\nimport DefaultColor from './DefaultColor';\n\nconst DefaultColors = ({ colors, onChange }) => {\n\treturn (\n\t\t
\n\t\t\t{colors.map(\n\t\t\t\t(color, index) => \n\t\t\t)}\n\t\t
\n\t)\n}\n\nDefaultColors.propTypes = {\n\tcolors: PropTypes.array,\n\tonChange: PropTypes.func\n}\n\nDefaultColors.defaultProps = {\n\tcolors: ['#000000', '#fbb900', '#7bdcb4', '#00d184', '#8dd2fc', '#ea144c', '#f78da8', '#9a28ee', '#0993e3', '#aab7c2']\n}\n\nexport default memo(DefaultColors);\n","import React from 'react';\nimport styles from '../colorPicker.module.scss';\n\nconst Arrow = ({ color, placement }) => {\n\tlet className = styles.color_picker_arrow;\n\n\t// if (placement === PLACEMENT.RIGHT) {\n\t// \tclassName = styles.color_picker_arrow_right;\n\t// }\n\n\treturn (\n\t\t\n\t)\n}\n\nexport default Arrow;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport styles from '../colorPicker.module.scss';\nimport { hexToHsl, hslToHex } from 'utils/colorHelper';\n\nexport default class Hue extends Component {\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.container = React.createRef();\n\n\t\tthis.onMouseUp = this.onMouseUp.bind(this);\n\t\tthis.onMouseDown = this.onMouseDown.bind(this);\n\t\tthis.onTouchStart = this.onTouchStart.bind(this);\n\t\tthis.onChange = this.onChange.bind(this);\n\t\tthis.onChangeComplete = this.onChangeComplete.bind(this);\n\t}\n\n\tcalculateChange(e, container) {\n\t\tconst containerWidth = container.clientWidth;\n\t\tconst x = e.pageX || (e.touches[0] && e.touches[0].pageX) || (e.changedTouches[0] && e.changedTouches[0].pageX);\n\t\tconst left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n\n\t\tlet h;\n\t\tif (left <= 0) {\n\t\t\th = 0\n\t\t} else if (left >= containerWidth) {\n\t\t\th = 359\n\t\t} else {\n\t\t\tconst percent = (left * 100) / containerWidth\n\t\t\th = ((360 * percent) / 100)\n\t\t}\n\n\t\treturn {\n\t\t\th,\n\t\t\ts: 100,\n\t\t\tl: 50,\n\t\t}\n\t}\n\n\tonChange(e) {\n\t\tconst hsl = this.calculateChange(e, this.container.current);\n\t\tconst hex = hslToHex(hsl);\n\t\tthis.props.onChange(hex);\n\t}\n\n\tonChangeComplete(e) {\n\t\tconst hsl = this.calculateChange(e, this.container.current);\n\t\tconst hex = hslToHex(hsl);\n\t\tthis.props.onChangeComplete(hex);\n\t}\n\n\tonMouseDown() {\n\t\twindow.addEventListener('mousemove', this.onChange);\n\t\twindow.addEventListener('mouseup', this.onMouseUp);\n\t}\n\n\tonMouseUp(e) {\n\t\tthis.unbindEventListeners();\n\t\tthis.onChangeComplete(e);\n\t}\n\n\tonTouchStart(e) {\n\t\te.preventDefault();\n\t\tthis.onChange(e);\n\t}\n\n\tunbindEventListeners() {\n\t\twindow.removeEventListener('mousemove', this.onChange);\n\t\twindow.removeEventListener('mouseup', this.onMouseUp);\n\t}\n\n\trender() {\n\t\tconst hslColor = hexToHsl(this.props.color);\n\t\tconst left = hslColor === undefined ? 0 : hslColor.h * 100 / 360 + '%';\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n\n}\n\nHue.propTypes = {\n\twidth: PropTypes.string,\n\theight: PropTypes.number,\n\tcolor: PropTypes.string,\n\tonChange: PropTypes.func,\n\tonChangeComplete: PropTypes.func\n}\n\nHue.defaultProps = {\n\twidth: '100%',\n\theight: 22\n}\n","import React from 'react';\nimport styles from '../colorPicker.module.scss';\nimport Preview from './Preview';\nimport DefaultColors from './DefaultColors';\nimport Arrow from './Arrow';\nimport Hue from './Hue';\n\nconst ColorPickerPanel = ({ color, defaultColors, onChange, onChangeComplete, placement, showHue }) => {\n\tconst onHueChange = color => onChange(color);\n\tconst onHueChangeComplete = color => onChangeComplete(color);\n\n\tlet className = styles.color_picker_panel;\n\n\t// if (placement === PLACEMENT.RIGHT) {\n\t// \tclassName = styles.color_picker_panel_right;\n\t// }\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t{showHue &&\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t
\n\t\t
\n\t);\n}\n\nColorPickerPanel.defaultProps = {\n\tcolor: '#000'\n}\n\nexport default ColorPickerPanel;\n","import React from 'react';\nimport styles from '../colorPicker.module.scss';\n\nconst Cover = props => {\n\tconst onClick = e => {\n\t\tprops.onClick();\n\n\t\t// enable that click event also goes thru cover\n\t\tconst elements = document.elementsFromPoint(e.pageX, e.pageY);\n\t\t// svg elements don't have click method, so we can't just use elements[1].click,\n\t\t// but we need to find first parent that has click method\n\t\tfor (let i = 1; i < elements.length; i++) {\n\t\t\tconst element = elements[i];\n\t\t\tif (element.click) {\n\t\t\t\telement.click();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn
;\n}\n\nexport default Cover;\n","// extracted by mini-css-extract-plugin\nexport default {\"panel\":\"simple_panel__rQUXE\"};","import { useState, useCallback, useMemo } from 'react';\nimport ColorPickerOpener from '../Opener/ColorPickerOpener';\nimport colorPickerStyles from '../colorPicker.module.scss';\nimport styles from './simple.module.scss';\nimport Cover from '../Panel/Cover';\nimport { ControlsCommonProps } from '../../../fields';\nimport DefaultColors from '../Panel/DefaultColors';\n\nexport type SimpleColorPickerProps = ControlsCommonProps & {\n\tcolors?: string[]\n}\n\nexport const SimpleColorPicker = (props: SimpleColorPickerProps) => {\n\tconst {\n\t\tvalue, onChange,/* onBlur,*/ disabled,\n\t\tcolors\n\t} = props;\n\n\tconst [isOpened, setIsOpened] = useState(false);\n\n\tconst onCoverClick = useCallback(\n\t\t() => setIsOpened(false),\n\t\t[]\n\t)\n\n\tconst onOpenerClick = useCallback(\n\t\t() => {\n\t\t\tconst newIsOpened = disabled ? false : !isOpened;\n\t\t\tsetIsOpened(newIsOpened);\n\t\t},\n\t\t[isOpened, disabled]\n\t)\n\n\tconst onChangeCompleteCallback = useCallback(\n\t\t(newColor) => {\n\t\t\tonChange && onChange(newColor);\n\t\t\tsetIsOpened(false);\n\t\t},\n\t\t[onChange]\n\t);\n\n\tconst wrapperClassName = useMemo(\n\t\t() => disabled ? colorPickerStyles.color_picker_wrapper + ' ' + colorPickerStyles.color_picker_disabled : colorPickerStyles.color_picker_wrapper,\n\t\t[disabled]\n\t);\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t{isOpened &&\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t}\n\t\t
\n\t)\n}\n","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: {\n standalone: 'manje od 1 sekunde',\n withPrepositionAgo: 'manje od 1 sekunde',\n withPrepositionIn: 'manje od 1 sekundu'\n },\n dual: 'manje od {{count}} sekunde',\n other: 'manje od {{count}} sekundi'\n },\n xSeconds: {\n one: {\n standalone: '1 sekunda',\n withPrepositionAgo: '1 sekunde',\n withPrepositionIn: '1 sekundu'\n },\n dual: '{{count}} sekunde',\n other: '{{count}} sekundi'\n },\n halfAMinute: 'pola minute',\n lessThanXMinutes: {\n one: {\n standalone: 'manje od 1 minute',\n withPrepositionAgo: 'manje od 1 minute',\n withPrepositionIn: 'manje od 1 minutu'\n },\n dual: 'manje od {{count}} minute',\n other: 'manje od {{count}} minuta'\n },\n xMinutes: {\n one: {\n standalone: '1 minuta',\n withPrepositionAgo: '1 minute',\n withPrepositionIn: '1 minutu'\n },\n dual: '{{count}} minute',\n other: '{{count}} minuta'\n },\n aboutXHours: {\n one: {\n standalone: 'oko 1 sat',\n withPrepositionAgo: 'oko 1 sat',\n withPrepositionIn: 'oko 1 sat'\n },\n dual: 'oko {{count}} sata',\n other: 'oko {{count}} sati'\n },\n xHours: {\n one: {\n standalone: '1 sat',\n withPrepositionAgo: '1 sat',\n withPrepositionIn: '1 sat'\n },\n dual: '{{count}} sata',\n other: '{{count}} sati'\n },\n xDays: {\n one: {\n standalone: '1 dan',\n withPrepositionAgo: '1 dan',\n withPrepositionIn: '1 dan'\n },\n dual: '{{count}} dana',\n other: '{{count}} dana'\n },\n aboutXWeeks: {\n one: {\n standalone: 'oko 1 nedelju',\n withPrepositionAgo: 'oko 1 nedelju',\n withPrepositionIn: 'oko 1 nedelju'\n },\n dual: 'oko {{count}} nedelje',\n other: 'oko {{count}} nedelje'\n },\n xWeeks: {\n one: {\n standalone: '1 nedelju',\n withPrepositionAgo: '1 nedelju',\n withPrepositionIn: '1 nedelju'\n },\n dual: '{{count}} nedelje',\n other: '{{count}} nedelje'\n },\n aboutXMonths: {\n one: {\n standalone: 'oko 1 mesec',\n withPrepositionAgo: 'oko 1 mesec',\n withPrepositionIn: 'oko 1 mesec'\n },\n dual: 'oko {{count}} meseca',\n other: 'oko {{count}} meseci'\n },\n xMonths: {\n one: {\n standalone: '1 mesec',\n withPrepositionAgo: '1 mesec',\n withPrepositionIn: '1 mesec'\n },\n dual: '{{count}} meseca',\n other: '{{count}} meseci'\n },\n aboutXYears: {\n one: {\n standalone: 'oko 1 godinu',\n withPrepositionAgo: 'oko 1 godinu',\n withPrepositionIn: 'oko 1 godinu'\n },\n dual: 'oko {{count}} godine',\n other: 'oko {{count}} godina'\n },\n xYears: {\n one: {\n standalone: '1 godina',\n withPrepositionAgo: '1 godine',\n withPrepositionIn: '1 godinu'\n },\n dual: '{{count}} godine',\n other: '{{count}} godina'\n },\n overXYears: {\n one: {\n standalone: 'preko 1 godinu',\n withPrepositionAgo: 'preko 1 godinu',\n withPrepositionIn: 'preko 1 godinu'\n },\n dual: 'preko {{count}} godine',\n other: 'preko {{count}} godina'\n },\n almostXYears: {\n one: {\n standalone: 'gotovo 1 godinu',\n withPrepositionAgo: 'gotovo 1 godinu',\n withPrepositionIn: 'gotovo 1 godinu'\n },\n dual: 'gotovo {{count}} godine',\n other: 'gotovo {{count}} godina'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n result = tokenValue.one.withPrepositionIn;\n } else {\n result = tokenValue.one.withPrepositionAgo;\n }\n } else {\n result = tokenValue.one.standalone;\n }\n } else if (count % 10 > 1 && count % 10 < 5 &&\n // if last digit is between 2 and 4\n String(count).substr(-2, 1) !== '1' // unless the 2nd to last digit is \"1\"\n ) {\n result = tokenValue.dual.replace('{{count}}', String(count));\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'za ' + result;\n } else {\n return 'pre ' + result;\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, d. MMMM yyyy.',\n long: 'd. MMMM yyyy.',\n medium: 'd. MMM yy.',\n short: 'dd. MM. yy.'\n};\nvar timeFormats = {\n full: 'HH:mm:ss (zzzz)',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'u' {{time}}\",\n long: \"{{date}} 'u' {{time}}\",\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: function lastWeek(date) {\n switch (date.getUTCDay()) {\n case 0:\n return \"'prošle nedelje u' p\";\n case 3:\n return \"'prošle srede u' p\";\n case 6:\n return \"'prošle subote u' p\";\n default:\n return \"'prošli' EEEE 'u' p\";\n }\n },\n yesterday: \"'juče u' p\",\n today: \"'danas u' p\",\n tomorrow: \"'sutra u' p\",\n nextWeek: function nextWeek(date) {\n switch (date.getUTCDay()) {\n case 0:\n return \"'sledeće nedelje u' p\";\n case 3:\n return \"'sledeću sredu u' p\";\n case 6:\n return \"'sledeću subotu u' p\";\n default:\n return \"'sledeći' EEEE 'u' p\";\n }\n },\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, date, _baseDate, _options) {\n var format = formatRelativeLocale[token];\n if (typeof format === 'function') {\n return format(date);\n }\n return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['pr.n.e.', 'AD'],\n abbreviated: ['pr. Hr.', 'po. Hr.'],\n wide: ['Pre Hrista', 'Posle Hrista']\n};\nvar quarterValues = {\n narrow: ['1.', '2.', '3.', '4.'],\n abbreviated: ['1. kv.', '2. kv.', '3. kv.', '4. kv.'],\n wide: ['1. kvartal', '2. kvartal', '3. kvartal', '4. kvartal']\n};\nvar monthValues = {\n narrow: ['1.', '2.', '3.', '4.', '5.', '6.', '7.', '8.', '9.', '10.', '11.', '12.'],\n abbreviated: ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'avg', 'sep', 'okt', 'nov', 'dec'],\n wide: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar']\n};\nvar formattingMonthValues = {\n narrow: ['1.', '2.', '3.', '4.', '5.', '6.', '7.', '8.', '9.', '10.', '11.', '12.'],\n abbreviated: ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'avg', 'sep', 'okt', 'nov', 'dec'],\n wide: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar']\n};\nvar dayValues = {\n narrow: ['N', 'P', 'U', 'S', 'Č', 'P', 'S'],\n short: ['ned', 'pon', 'uto', 'sre', 'čet', 'pet', 'sub'],\n abbreviated: ['ned', 'pon', 'uto', 'sre', 'čet', 'pet', 'sub'],\n wide: ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota']\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'ponoć',\n noon: 'podne',\n morning: 'ujutru',\n afternoon: 'popodne',\n evening: 'uveče',\n night: 'noću'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'ponoć',\n noon: 'podne',\n morning: 'ujutru',\n afternoon: 'popodne',\n evening: 'uveče',\n night: 'noću'\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'ponoć',\n noon: 'podne',\n morning: 'ujutru',\n afternoon: 'posle podne',\n evening: 'uveče',\n night: 'noću'\n }\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'AM',\n pm: 'PM',\n midnight: 'ponoć',\n noon: 'podne',\n morning: 'ujutru',\n afternoon: 'popodne',\n evening: 'uveče',\n night: 'noću'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'ponoć',\n noon: 'podne',\n morning: 'ujutru',\n afternoon: 'popodne',\n evening: 'uveče',\n night: 'noću'\n },\n wide: {\n am: 'AM',\n pm: 'PM',\n midnight: 'ponoć',\n noon: 'podne',\n morning: 'ujutru',\n afternoon: 'posle podne',\n evening: 'uveče',\n night: 'noću'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide',\n formattingValues: formattingMonthValues,\n defaultFormattingWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Serbian latin locale.\n * @language Serbian\n * @iso-639-2 srp\n * @author Igor Radivojević [@rogyvoje]{@link https://github.com/rogyvoje}\n */\nvar locale = {\n code: 'sr-Latn',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1 /* Monday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)\\./i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(pr\\.n\\.e\\.|AD)/i,\n abbreviated: /^(pr\\.\\s?Hr\\.|po\\.\\s?Hr\\.)/i,\n wide: /^(Pre Hrista|pre nove ere|Posle Hrista|nova era)/i\n};\nvar parseEraPatterns = {\n any: [/^pr/i, /^(po|nova)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^[1234]\\.\\s?kv\\.?/i,\n wide: /^[1234]\\. kvartal/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^(10|11|12|[123456789])\\./i,\n abbreviated: /^(jan|feb|mar|apr|maj|jun|jul|avg|sep|okt|nov|dec)/i,\n wide: /^((januar|januara)|(februar|februara)|(mart|marta)|(april|aprila)|(maj|maja)|(jun|juna)|(jul|jula)|(avgust|avgusta)|(septembar|septembra)|(oktobar|oktobra)|(novembar|novembra)|(decembar|decembra))/i\n};\nvar parseMonthPatterns = {\n narrow: [/^1/i, /^2/i, /^3/i, /^4/i, /^5/i, /^6/i, /^7/i, /^8/i, /^9/i, /^10/i, /^11/i, /^12/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^maj/i, /^jun/i, /^jul/i, /^avg/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[npusčc]/i,\n short: /^(ned|pon|uto|sre|(čet|cet)|pet|sub)/i,\n abbreviated: /^(ned|pon|uto|sre|(čet|cet)|pet|sub)/i,\n wide: /^(nedelja|ponedeljak|utorak|sreda|(četvrtak|cetvrtak)|petak|subota)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n any: /^(am|pm|ponoc|ponoć|(po)?podne|uvece|uveče|noću|posle podne|ujutru)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^pono/i,\n noon: /^pod/i,\n morning: /jutro/i,\n afternoon: /(posle\\s|po)+podne/i,\n evening: /(uvece|uveče)/i,\n night: /(nocu|noću)/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import { useCallback, useMemo } from 'react';\nimport DatePickerLib, { registerLocale } from 'react-datepicker';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport { CalendarIcon } from 'components/icons/icons';\nimport { ControlsCommonProps } from '../../fields';\nimport styles from './datePicker.module.scss';\nimport { OverlaySpinner } from 'components/Spinner';\nimport { useGetDatePatternString, useGetTimePatternString } from 'utils/dateTimeUtils';\nimport { enUS, srLatn } from 'date-fns/locale'\nimport { getLangCode, useGetTranslation } from 'components/Translations/translationUtils';\nimport { languages } from 'components/Translations/TranslationsProvider';\nimport { LanguagesEnum } from 'services/tenantManagementService';\n\nregisterLocale(languages[LanguagesEnum.English].locale, enUS);\nregisterLocale(languages[LanguagesEnum.Serbian].locale, srLatn);\n\nexport type DatePickerProps = ControlsCommonProps & {\n\tminDate?: Date\n\tmaxDate?: Date\n\tshowTime?: boolean\n\tdateFormat?: string\n\tfocus?: boolean\n\tsize?: 'medium' | 'small'\n\tloading?: boolean\n};\n\nexport const DatePicker = ({\n\tvalue,\n\tonChange,\n\tonBlur,\n\tdisabled,\n\tminDate,\n\tmaxDate,\n\tshowTime,\n\tfocus = false,\n\tsize = 'medium',\n\tloading\n}: DatePickerProps) => {\n\tconst getTranslation = useGetTranslation();\n\tconst datePattern = useGetDatePatternString();\n\t// library works with \"aa\" instead of \"tt\"\n\tconst timePattern = useGetTimePatternString().replace('tt', 'aa');\n\n\tconst dateTimePattern = useMemo(\n\t\t() => showTime ? `${datePattern} ${timePattern}`: datePattern,\n\t\t[datePattern, timePattern, showTime]\n\t)\n\n\tconst onChangeCallback = useCallback(\n\t\t(date) => onChange && onChange(date),\n\t\t[onChange]\n\t)\n\n\tconst handleCalendarClose = useCallback(\n\t\t() => onBlur && onBlur(),\n\t\t[onBlur]\n\t)\n\n\tconst timeLabel = useMemo(\n\t\t() => getTranslation('i18n.label.time'),\n\t\t[getTranslation]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t{/* loading */}\n\t\t\t{loading && }\n\t\t
\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"input\":\"fileInput_input__L0EdS\",\"small\":\"fileInput_small__ZVjcF\"};","import { useCallback, useEffect, useRef, useMemo } from 'react';\nimport styles from './fileInput.module.scss';\nimport { ControlsCommonProps } from '../../fields';\nimport { InsertAttachmentRequest } from 'services/tenantManagementService';\nimport { RowContainer } from 'components/Layout';\nimport { EditIcon, DeleteIcon } from 'components/icons/icons';\n\nexport type FileInputProps = ControlsCommonProps & {\n\tplaceholder?: string\n\tfocus?: boolean\n\tmultiple?: boolean\n\taccept?: string\n\tdisplay?: any\n}\n\nexport const FileInput = ({\n\tvalue,\n\tonChange,\n\tdisabled,\n\tonBlur,\n\tplaceholder,\n\tmultiple,\n\taccept,\n\tdisplay\n}: FileInputProps) => {\n\tconst inputRef = useRef(null);\n\n\tuseEffect(\n\t\t() => {\n\t\t\tif (value === undefined && inputRef.current) {\n\t\t\t\tinputRef.current.value = ''\n\t\t\t}\n\t\t},\n\t\t[value]\n\t)\n\n\tconst onChangeCallback = useCallback(\n\t\t(e) => {\n\t\t\tlet files = e.target.files;\n\t\t\tlet filesLength = files.length;\n\n\t\t\tif (filesLength === 0) {\n\t\t\t\tonChange && onChange([]);\n\t\t\t}\n\n\t\t\tconst allFiles: InsertAttachmentRequest[] = [];\n\t\t\tfor (let i = 0; i < files.length; i++) {\n\t\t\t\tlet file = files[i];\n\n\t\t\t\t// Make new FileReader\n\t\t\t\tlet reader = new FileReader();\n\t\t\t\t// Convert the file to base64 text\n\t\t\t\treader.readAsDataURL(file);\n\t\t\t\t// on reader load something...\n\t\t\t\treader.onload = () => {\n\t\t\t\t\t// Make a fileInfo Object\n\t\t\t\t\tlet fileInfo: InsertAttachmentRequest = new InsertAttachmentRequest({\n\t\t\t\t\t\tname: file.name,\n\t\t\t\t\t\tbase64EncodedFile: reader.result as string,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Push it to the state\n\t\t\t\t\tallFiles.push(fileInfo);\n\n\t\t\t\t\t// If all files have been proceed\n\t\t\t\t\tif (allFiles.length === filesLength) {\n\t\t\t\t\t\t// Apply Callback function\n\t\t\t\t\t\tonChange && onChange(allFiles);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[onChange]\n\t)\n\n\tconst removeCallback = useCallback(\n\t\t(e) => {\n\t\t\tif (disabled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\te.stopPropagation();\n\t\t\tonChange && onChange([]);\n\t\t},\n\t\t[disabled, onChange]\n\t)\n\n\tconst displayContent = useMemo(\n\t\t() => {\n\t\t\tif (display) {\n\t\t\t\treturn display;\n\t\t\t}\n\n\t\t\tif (!value || value.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (value.length === 1) {\n\t\t\t\treturn <>{value[0].name}\n\t\t\t} else {\n\t\t\t\treturn <>{value.length} files\n\t\t\t}\n\t\t},\n\t\t[display, value]\n\t)\n\n\treturn (\n\t\t { inputRef.current && inputRef.current.click() }}\n\t\t>\n\t\t\t\n\t\t\t\t<>{displayContent}\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t)\n}\n","/**\n * react-number-format - 4.9.4\n * Author : Sudhanshu Yadav\n * Copyright (c) 2016, 2022 to Sudhanshu Yadav, released under the MIT license.\n * https://github.com/s-yadav/react-number-format\n */\n\nimport React from 'react';\n\n// \n\n \n\n// basic noop function\nfunction noop() {}\nfunction returnTrue() {\n return true;\n}\n\nfunction charIsNumber(char ) {\n return !!(char || '').match(/\\d/);\n}\n\nfunction isNil(val ) {\n return val === null || val === undefined;\n}\n\nfunction escapeRegExp(str ) {\n return str.replace(/[-[\\]/{}()*+?.\\\\^$|]/g, '\\\\$&');\n}\n\nfunction getThousandsGroupRegex(thousandsGroupStyle ) {\n switch (thousandsGroupStyle) {\n case 'lakh':\n return /(\\d+?)(?=(\\d\\d)+(\\d)(?!\\d))(\\.\\d+)?/g;\n case 'wan':\n return /(\\d)(?=(\\d{4})+(?!\\d))/g;\n case 'thousand':\n default:\n return /(\\d)(?=(\\d{3})+(?!\\d))/g;\n }\n}\n\nfunction applyThousandSeparator(\n str ,\n thousandSeparator ,\n thousandsGroupStyle \n) {\n var thousandsGroupRegex = getThousandsGroupRegex(thousandsGroupStyle);\n var index = str.search(/[1-9]/);\n index = index === -1 ? str.length : index;\n return (\n str.substring(0, index) +\n str.substring(index, str.length).replace(thousandsGroupRegex, '$1' + thousandSeparator)\n );\n}\n\n//spilt a float number into different parts beforeDecimal, afterDecimal, and negation\nfunction splitDecimal(numStr , allowNegative) {\n if ( allowNegative === void 0 ) allowNegative = true;\n\n var hasNagation = numStr[0] === '-';\n var addNegation = hasNagation && allowNegative;\n numStr = numStr.replace('-', '');\n\n var parts = numStr.split('.');\n var beforeDecimal = parts[0];\n var afterDecimal = parts[1] || '';\n\n return {\n beforeDecimal: beforeDecimal,\n afterDecimal: afterDecimal,\n hasNagation: hasNagation,\n addNegation: addNegation,\n };\n}\n\nfunction fixLeadingZero(numStr ) {\n if (!numStr) { return numStr; }\n var isNegative = numStr[0] === '-';\n if (isNegative) { numStr = numStr.substring(1, numStr.length); }\n var parts = numStr.split('.');\n var beforeDecimal = parts[0].replace(/^0+/, '') || '0';\n var afterDecimal = parts[1] || '';\n\n return (\"\" + (isNegative ? '-' : '') + beforeDecimal + (afterDecimal ? (\".\" + afterDecimal) : ''));\n}\n\n/**\n * limit decimal numbers to given scale\n * Not used .fixedTo because that will break with big numbers\n */\nfunction limitToScale(numStr , scale , fixedDecimalScale ) {\n var str = '';\n var filler = fixedDecimalScale ? '0' : '';\n for (var i = 0; i <= scale - 1; i++) {\n str += numStr[i] || filler;\n }\n return str;\n}\n\nfunction repeat(str, count) {\n return Array(count + 1).join(str);\n}\n\nfunction toNumericString(num) {\n num += ''; // typecast number to string\n\n // store the sign and remove it from the number.\n var sign = num[0] === '-' ? '-' : '';\n if (sign) { num = num.substring(1); }\n\n // split the number into cofficient and exponent\n var ref = num.split(/[eE]/g);\n var coefficient = ref[0];\n var exponent = ref[1];\n\n // covert exponent to number;\n exponent = Number(exponent);\n\n // if there is no exponent part or its 0, return the coffiecient with sign\n if (!exponent) { return sign + coefficient; }\n\n coefficient = coefficient.replace('.', '');\n\n /**\n * for scientific notation the current decimal index will be after first number (index 0)\n * So effective decimal index will always be 1 + exponent value\n */\n var decimalIndex = 1 + exponent;\n\n var coffiecientLn = coefficient.length;\n\n if (decimalIndex < 0) {\n // if decimal index is less then 0 add preceding 0s\n // add 1 as join will have\n coefficient = '0.' + repeat('0', Math.abs(decimalIndex)) + coefficient;\n } else if (decimalIndex >= coffiecientLn) {\n // if decimal index is less then 0 add leading 0s\n coefficient = coefficient + repeat('0', decimalIndex - coffiecientLn);\n } else {\n // else add decimal point at proper index\n coefficient =\n (coefficient.substring(0, decimalIndex) || '0') + '.' + coefficient.substring(decimalIndex);\n }\n\n return sign + coefficient;\n}\n\n/**\n * This method is required to round prop value to given scale.\n * Not used .round or .fixedTo because that will break with big numbers\n */\nfunction roundToPrecision(numStr , scale , fixedDecimalScale ) {\n //if number is empty don't do anything return empty string\n if (['', '-'].indexOf(numStr) !== -1) { return numStr; }\n\n var shoudHaveDecimalSeparator = numStr.indexOf('.') !== -1 && scale;\n var ref = splitDecimal(numStr);\n var beforeDecimal = ref.beforeDecimal;\n var afterDecimal = ref.afterDecimal;\n var hasNagation = ref.hasNagation;\n var floatValue = parseFloat((\"0.\" + (afterDecimal || '0')));\n var floatValueStr =\n afterDecimal.length <= scale ? (\"0.\" + afterDecimal) : floatValue.toFixed(scale);\n var roundedDecimalParts = floatValueStr.split('.');\n var intPart = beforeDecimal\n .split('')\n .reverse()\n .reduce(function (roundedStr, current, idx) {\n if (roundedStr.length > idx) {\n return (\n (Number(roundedStr[0]) + Number(current)).toString() +\n roundedStr.substring(1, roundedStr.length)\n );\n }\n return current + roundedStr;\n }, roundedDecimalParts[0]);\n\n var decimalPart = limitToScale(\n roundedDecimalParts[1] || '',\n Math.min(scale, afterDecimal.length),\n fixedDecimalScale\n );\n var negation = hasNagation ? '-' : '';\n var decimalSeparator = shoudHaveDecimalSeparator ? '.' : '';\n return (\"\" + negation + intPart + decimalSeparator + decimalPart);\n}\n\n/** set the caret positon in an input field **/\nfunction setCaretPosition(el , caretPos ) {\n el.value = el.value;\n // ^ this is used to not only get 'focus', but\n // to make sure we don't have it everything -selected-\n // (it causes an issue in chrome, and having it doesn't hurt any other browser)\n if (el !== null) {\n if (el.createTextRange) {\n var range = el.createTextRange();\n range.move('character', caretPos);\n range.select();\n return true;\n }\n // (el.selectionStart === 0 added for Firefox bug)\n if (el.selectionStart || el.selectionStart === 0) {\n el.focus();\n el.setSelectionRange(caretPos, caretPos);\n return true;\n }\n\n // fail city, fortunately this never happens (as far as I've tested) :)\n el.focus();\n return false;\n }\n}\n\n/**\n Given previous value and newValue it returns the index\n start - end to which values have changed.\n This function makes assumption about only consecutive\n characters are changed which is correct assumption for caret input.\n*/\nfunction findChangedIndex(prevValue , newValue ) {\n var i = 0,\n j = 0;\n var prevLength = prevValue.length;\n var newLength = newValue.length;\n while (prevValue[i] === newValue[i] && i < prevLength) { i++; }\n\n //check what has been changed from last\n while (\n prevValue[prevLength - 1 - j] === newValue[newLength - 1 - j] &&\n newLength - j > i &&\n prevLength - j > i\n ) {\n j++;\n }\n\n return { start: i, end: prevLength - j };\n}\n\n/*\n Returns a number whose value is limited to the given range\n*/\nfunction clamp(num , min , max ) {\n return Math.min(Math.max(num, min), max);\n}\n\nfunction getCurrentCaretPosition(el ) {\n /*Max of selectionStart and selectionEnd is taken for the patch of pixel and other mobile device caret bug*/\n return Math.max(el.selectionStart, el.selectionEnd);\n}\n\nfunction addInputMode(format ) {\n return (\n format ||\n (typeof navigator !== 'undefined' &&\n !(navigator.platform && /iPhone|iPod/.test(navigator.platform)))\n );\n}\n\n// \nfunction objectWithoutProperties (obj, exclude) { var target = {}; for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k]; return target; }\n\nvar defaultProps = {\n displayType: 'input',\n decimalSeparator: '.',\n thousandsGroupStyle: 'thousand',\n fixedDecimalScale: false,\n prefix: '',\n suffix: '',\n allowNegative: true,\n allowEmptyFormatting: false,\n allowLeadingZeros: false,\n isNumericString: false,\n type: 'text',\n onValueChange: noop,\n onChange: noop,\n onKeyDown: noop,\n onMouseUp: noop,\n onFocus: noop,\n onBlur: noop,\n isAllowed: returnTrue,\n};\nvar NumberFormat = /*@__PURE__*/(function (superclass) {\n function NumberFormat(props ) {\n superclass.call(this, props);\n var defaultValue = props.defaultValue;\n\n //validate props\n this.validateProps();\n\n var formattedValue = this.formatValueProp(defaultValue);\n\n this.state = {\n value: formattedValue,\n numAsString: this.removeFormatting(formattedValue),\n mounted: false,\n };\n\n this.selectionBeforeInput = {\n selectionStart: 0,\n selectionEnd: 0,\n };\n\n this.onChange = this.onChange.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n this.onMouseUp = this.onMouseUp.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onBlur = this.onBlur.bind(this);\n }\n\n if ( superclass ) NumberFormat.__proto__ = superclass;\n NumberFormat.prototype = Object.create( superclass && superclass.prototype );\n NumberFormat.prototype.constructor = NumberFormat;\n\n NumberFormat.prototype.componentDidMount = function componentDidMount () {\n // set mounted state\n // eslint-disable-next-line react/no-did-mount-set-state\n this.setState({\n mounted: true,\n });\n };\n\n NumberFormat.prototype.componentDidUpdate = function componentDidUpdate (prevProps ) {\n this.updateValueIfRequired(prevProps);\n };\n\n NumberFormat.prototype.componentWillUnmount = function componentWillUnmount () {\n clearTimeout(this.focusTimeout);\n clearTimeout(this.caretPositionTimeout);\n };\n\n NumberFormat.prototype.updateValueIfRequired = function updateValueIfRequired (prevProps ) {\n var ref = this;\n var props = ref.props;\n var state = ref.state;\n var focusedElm = ref.focusedElm;\n var stateValue = state.value;\n var lastNumStr = state.numAsString; if ( lastNumStr === void 0 ) lastNumStr = '';\n\n // If only state changed no need to do any thing\n if (prevProps !== props) {\n //validate props\n this.validateProps();\n\n var lastValueWithNewFormat = this.formatNumString(lastNumStr);\n\n var formattedValue = isNil(props.value) ? lastValueWithNewFormat : this.formatValueProp();\n var numAsString = this.removeFormatting(formattedValue);\n\n var floatValue = parseFloat(numAsString);\n var lastFloatValue = parseFloat(lastNumStr);\n\n if (\n //while typing set state only when float value changes\n ((!isNaN(floatValue) || !isNaN(lastFloatValue)) && floatValue !== lastFloatValue) ||\n //can also set state when float value is same and the format props changes\n lastValueWithNewFormat !== stateValue ||\n //set state always when not in focus and formatted value is changed\n (focusedElm === null && formattedValue !== stateValue)\n ) {\n this.updateValue({\n formattedValue: formattedValue,\n numAsString: numAsString,\n input: focusedElm,\n source: 'prop',\n event: null,\n });\n }\n }\n };\n\n /** Misc methods **/\n NumberFormat.prototype.getFloatString = function getFloatString (num) {\n if ( num === void 0 ) num = '';\n\n var ref = this.props;\n var decimalScale = ref.decimalScale;\n var ref$1 = this.getSeparators();\n var decimalSeparator = ref$1.decimalSeparator;\n var numRegex = this.getNumberRegex(true);\n\n //remove negation for regex check\n var hasNegation = num[0] === '-';\n if (hasNegation) { num = num.replace('-', ''); }\n\n //if decimal scale is zero remove decimal and number after decimalSeparator\n if (decimalSeparator && decimalScale === 0) {\n num = num.split(decimalSeparator)[0];\n }\n\n num = (num.match(numRegex) || []).join('').replace(decimalSeparator, '.');\n\n //remove extra decimals\n var firstDecimalIndex = num.indexOf('.');\n\n if (firstDecimalIndex !== -1) {\n num = (num.substring(0, firstDecimalIndex)) + \".\" + (num\n .substring(firstDecimalIndex + 1, num.length)\n .replace(new RegExp(escapeRegExp(decimalSeparator), 'g'), ''));\n }\n\n //add negation back\n if (hasNegation) { num = '-' + num; }\n\n return num;\n };\n\n //returned regex assumes decimalSeparator is as per prop\n NumberFormat.prototype.getNumberRegex = function getNumberRegex (g , ignoreDecimalSeparator ) {\n var ref = this.props;\n var format = ref.format;\n var decimalScale = ref.decimalScale;\n var customNumerals = ref.customNumerals;\n var ref$1 = this.getSeparators();\n var decimalSeparator = ref$1.decimalSeparator;\n return new RegExp(\n '[0-9' +\n (customNumerals ? customNumerals.join('') : '') +\n ']' +\n (decimalSeparator && decimalScale !== 0 && !ignoreDecimalSeparator && !format\n ? '|' + escapeRegExp(decimalSeparator)\n : ''),\n g ? 'g' : undefined\n );\n };\n\n NumberFormat.prototype.getSeparators = function getSeparators () {\n var ref = this.props;\n var decimalSeparator = ref.decimalSeparator;\n var ref$1 = this.props;\n var thousandSeparator = ref$1.thousandSeparator;\n var allowedDecimalSeparators = ref$1.allowedDecimalSeparators;\n\n if (thousandSeparator === true) {\n thousandSeparator = ',';\n }\n if (!allowedDecimalSeparators) {\n allowedDecimalSeparators = [decimalSeparator, '.'];\n }\n\n return {\n decimalSeparator: decimalSeparator,\n thousandSeparator: thousandSeparator,\n allowedDecimalSeparators: allowedDecimalSeparators,\n };\n };\n\n NumberFormat.prototype.getMaskAtIndex = function getMaskAtIndex (index ) {\n var ref = this.props;\n var mask = ref.mask; if ( mask === void 0 ) mask = ' ';\n if (typeof mask === 'string') {\n return mask;\n }\n\n return mask[index] || ' ';\n };\n\n NumberFormat.prototype.getValueObject = function getValueObject (formattedValue , numAsString ) {\n var floatValue = parseFloat(numAsString);\n\n return {\n formattedValue: formattedValue,\n value: numAsString,\n floatValue: isNaN(floatValue) ? undefined : floatValue,\n };\n };\n\n NumberFormat.prototype.validateProps = function validateProps () {\n var ref = this.props;\n var mask = ref.mask;\n\n //validate decimalSeparator and thousandSeparator\n var ref$1 = this.getSeparators();\n var decimalSeparator = ref$1.decimalSeparator;\n var thousandSeparator = ref$1.thousandSeparator;\n\n if (decimalSeparator === thousandSeparator) {\n throw new Error((\"\\n Decimal separator can't be same as thousand separator.\\n thousandSeparator: \" + thousandSeparator + \" (thousandSeparator = {true} is same as thousandSeparator = \\\",\\\")\\n decimalSeparator: \" + decimalSeparator + \" (default value for decimalSeparator is .)\\n \"));\n }\n\n //validate mask\n if (mask) {\n var maskAsStr = mask === 'string' ? mask : mask.toString();\n if (maskAsStr.match(/\\d/g)) {\n throw new Error((\"\\n Mask \" + mask + \" should not contain numeric character;\\n \"));\n }\n }\n };\n /** Misc methods end **/\n\n /** caret specific methods **/\n NumberFormat.prototype.setPatchedCaretPosition = function setPatchedCaretPosition (el , caretPos , currentValue ) {\n /* setting caret position within timeout of 0ms is required for mobile chrome,\n otherwise browser resets the caret position after we set it\n We are also setting it without timeout so that in normal browser we don't see the flickering */\n setCaretPosition(el, caretPos);\n this.caretPositionTimeout = setTimeout(function () {\n if (el.value === currentValue) { setCaretPosition(el, caretPos); }\n }, 0);\n };\n\n /* This keeps the caret within typing area so people can't type in between prefix or suffix */\n NumberFormat.prototype.correctCaretPosition = function correctCaretPosition (value , caretPos , direction ) {\n var ref = this.props;\n var prefix = ref.prefix;\n var suffix = ref.suffix;\n var format = ref.format;\n\n //if value is empty return 0\n if (value === '') { return 0; }\n\n //caret position should be between 0 and value length\n caretPos = clamp(caretPos, 0, value.length);\n\n //in case of format as number limit between prefix and suffix\n if (!format) {\n var hasNegation = value[0] === '-';\n return clamp(caretPos, prefix.length + (hasNegation ? 1 : 0), value.length - suffix.length);\n }\n\n //in case if custom format method don't do anything\n if (typeof format === 'function') { return caretPos; }\n\n /* in case format is string find the closest # position from the caret position */\n\n //in case the caretPos have input value on it don't do anything\n if (format[caretPos] === '#' && charIsNumber(value[caretPos])) {\n return caretPos;\n }\n\n //if caretPos is just after input value don't do anything\n if (format[caretPos - 1] === '#' && charIsNumber(value[caretPos - 1])) {\n return caretPos;\n }\n\n //find the nearest caret position\n var firstHashPosition = format.indexOf('#');\n var lastHashPosition = format.lastIndexOf('#');\n\n //limit the cursor between the first # position and the last # position\n caretPos = clamp(caretPos, firstHashPosition, lastHashPosition + 1);\n\n var nextPos = format.substring(caretPos, format.length).indexOf('#');\n var caretLeftBound = caretPos;\n var caretRightBound = caretPos + (nextPos === -1 ? 0 : nextPos);\n\n //get the position where the last number is present\n while (\n caretLeftBound > firstHashPosition &&\n (format[caretLeftBound] !== '#' || !charIsNumber(value[caretLeftBound]))\n ) {\n caretLeftBound -= 1;\n }\n\n var goToLeft =\n !charIsNumber(value[caretRightBound]) ||\n (direction === 'left' && caretPos !== firstHashPosition) ||\n caretPos - caretLeftBound < caretRightBound - caretPos;\n\n if (goToLeft) {\n //check if number should be taken after the bound or after it\n //if number preceding a valid number keep it after\n return charIsNumber(value[caretLeftBound]) ? caretLeftBound + 1 : caretLeftBound;\n }\n\n return caretRightBound;\n };\n\n NumberFormat.prototype.getCaretPosition = function getCaretPosition (inputValue , formattedValue , caretPos ) {\n var ref = this.props;\n var format = ref.format;\n var stateValue = this.state.value;\n var numRegex = this.getNumberRegex(true);\n var inputNumber = (inputValue.match(numRegex) || []).join('');\n var formattedNumber = (formattedValue.match(numRegex) || []).join('');\n var j, i;\n\n j = 0;\n\n for (i = 0; i < caretPos; i++) {\n var currentInputChar = inputValue[i] || '';\n var currentFormatChar = formattedValue[j] || '';\n //no need to increase new cursor position if formatted value does not have those characters\n //case inputValue = 1a23 and formattedValue = 123\n if (!currentInputChar.match(numRegex) && currentInputChar !== currentFormatChar) {\n continue;\n }\n\n //When we are striping out leading zeros maintain the new cursor position\n //Case inputValue = 00023 and formattedValue = 23;\n if (\n currentInputChar === '0' &&\n currentFormatChar.match(numRegex) &&\n currentFormatChar !== '0' &&\n inputNumber.length !== formattedNumber.length\n ) {\n continue;\n }\n\n //we are not using currentFormatChar because j can change here\n while (currentInputChar !== formattedValue[j] && j < formattedValue.length) {\n j++;\n }\n j++;\n }\n\n if (typeof format === 'string' && !stateValue) {\n //set it to the maximum value so it goes after the last number\n j = formattedValue.length;\n }\n\n //correct caret position if its outside of editable area\n j = this.correctCaretPosition(formattedValue, j);\n\n return j;\n };\n /** caret specific methods ends **/\n\n /** methods to remove formattting **/\n NumberFormat.prototype.removePrefixAndSuffix = function removePrefixAndSuffix (val ) {\n var ref = this.props;\n var format = ref.format;\n var prefix = ref.prefix;\n var suffix = ref.suffix;\n\n //remove prefix and suffix\n if (!format && val) {\n var isNegative = val[0] === '-';\n\n //remove negation sign\n if (isNegative) { val = val.substring(1, val.length); }\n\n //remove prefix\n val = prefix && val.indexOf(prefix) === 0 ? val.substring(prefix.length, val.length) : val;\n\n //remove suffix\n var suffixLastIndex = val.lastIndexOf(suffix);\n val =\n suffix && suffixLastIndex !== -1 && suffixLastIndex === val.length - suffix.length\n ? val.substring(0, suffixLastIndex)\n : val;\n\n //add negation sign back\n if (isNegative) { val = '-' + val; }\n }\n\n return val;\n };\n\n NumberFormat.prototype.removePatternFormatting = function removePatternFormatting (val ) {\n var ref = this.props;\n var format = ref.format;\n var formatArray = format.split('#').filter(function (str) { return str !== ''; });\n var start = 0;\n var numStr = '';\n\n for (var i = 0, ln = formatArray.length; i <= ln; i++) {\n var part = formatArray[i] || '';\n\n //if i is the last fragment take the index of end of the value\n //For case like +1 (911) 911 91 91 having pattern +1 (###) ### ## ##\n var index = i === ln ? val.length : val.indexOf(part, start);\n\n /* in any case if we don't find the pattern part in the value assume the val as numeric string\n This will be also in case if user has started typing, in any other case it will not be -1\n unless wrong prop value is provided */\n if (index === -1) {\n numStr = val;\n break;\n } else {\n numStr += val.substring(start, index);\n start = index + part.length;\n }\n }\n\n return (numStr.match(this.getNumberRegex(true)) || []).join('');\n };\n\n NumberFormat.prototype.removeFormatting = function removeFormatting (val ) {\n var ref = this.props;\n var format = ref.format;\n var removeFormatting = ref.removeFormatting;\n if (!val) { return val; }\n\n if (!format) {\n val = this.removePrefixAndSuffix(val);\n val = this.getFloatString(val);\n } else if (typeof format === 'string') {\n val = this.removePatternFormatting(val);\n } else if (typeof removeFormatting === 'function') {\n //condition need to be handled if format method is provide,\n val = removeFormatting(val);\n } else {\n val = (val.match(this.getNumberRegex(true)) || []).join('');\n }\n return val;\n };\n /** methods to remove formattting end **/\n\n /*** format specific methods start ***/\n /**\n * Format when # based string is provided\n * @param {string} numStr Numeric String\n * @return {string} formatted Value\n */\n NumberFormat.prototype.formatWithPattern = function formatWithPattern (numStr ) {\n var ref = this.props;\n var format = ref.format;\n var hashCount = 0;\n var formattedNumberAry = format.split('');\n for (var i = 0, ln = format.length; i < ln; i++) {\n if (format[i] === '#') {\n formattedNumberAry[i] = numStr[hashCount] || this.getMaskAtIndex(hashCount);\n hashCount += 1;\n }\n }\n return formattedNumberAry.join('');\n };\n /**\n * @param {string} numStr Numeric string/floatString] It always have decimalSeparator as .\n * @return {string} formatted Value\n */\n NumberFormat.prototype.formatAsNumber = function formatAsNumber (numStr ) {\n var ref = this.props;\n var decimalScale = ref.decimalScale;\n var fixedDecimalScale = ref.fixedDecimalScale;\n var prefix = ref.prefix;\n var suffix = ref.suffix;\n var allowNegative = ref.allowNegative;\n var thousandsGroupStyle = ref.thousandsGroupStyle;\n var ref$1 = this.getSeparators();\n var thousandSeparator = ref$1.thousandSeparator;\n var decimalSeparator = ref$1.decimalSeparator;\n\n var hasDecimalSeparator = numStr.indexOf('.') !== -1 || (decimalScale && fixedDecimalScale);\n var ref$2 = splitDecimal(numStr, allowNegative);\n var beforeDecimal = ref$2.beforeDecimal;\n var afterDecimal = ref$2.afterDecimal;\n var addNegation = ref$2.addNegation; // eslint-disable-line prefer-const\n\n //apply decimal precision if its defined\n if (decimalScale !== undefined) {\n afterDecimal = limitToScale(afterDecimal, decimalScale, fixedDecimalScale);\n }\n\n if (thousandSeparator) {\n beforeDecimal = applyThousandSeparator(beforeDecimal, thousandSeparator, thousandsGroupStyle);\n }\n\n //add prefix and suffix\n if (prefix) { beforeDecimal = prefix + beforeDecimal; }\n if (suffix) { afterDecimal = afterDecimal + suffix; }\n\n //restore negation sign\n if (addNegation) { beforeDecimal = '-' + beforeDecimal; }\n\n numStr = beforeDecimal + ((hasDecimalSeparator && decimalSeparator) || '') + afterDecimal;\n\n return numStr;\n };\n\n NumberFormat.prototype.formatNumString = function formatNumString (numStr) {\n if ( numStr === void 0 ) numStr = '';\n\n var ref = this.props;\n var format = ref.format;\n var allowEmptyFormatting = ref.allowEmptyFormatting;\n var customNumerals = ref.customNumerals;\n var formattedValue = numStr;\n\n if (customNumerals && customNumerals.length === 10) {\n var customNumeralRegex = new RegExp('[' + customNumerals.join('') + ']', 'g');\n formattedValue = numStr.replace(customNumeralRegex, function (digit) { return customNumerals.indexOf(digit).toString(); }\n );\n }\n\n if (numStr === '' && !allowEmptyFormatting) {\n formattedValue = '';\n } else if (numStr === '-' && !format) {\n formattedValue = '-';\n } else if (typeof format === 'string') {\n formattedValue = this.formatWithPattern(formattedValue);\n } else if (typeof format === 'function') {\n formattedValue = format(formattedValue);\n } else {\n formattedValue = this.formatAsNumber(formattedValue);\n }\n\n return formattedValue;\n };\n\n NumberFormat.prototype.formatValueProp = function formatValueProp (defaultValue ) {\n var ref = this.props;\n var format = ref.format;\n var decimalScale = ref.decimalScale;\n var fixedDecimalScale = ref.fixedDecimalScale;\n var allowEmptyFormatting = ref.allowEmptyFormatting;\n var ref$1 = this.props;\n var value = ref$1.value;\n var isNumericString = ref$1.isNumericString;\n\n // if value is undefined or null, use defaultValue instead\n value = isNil(value) ? defaultValue : value;\n\n var isNonNumericFalsy = !value && value !== 0;\n\n if (isNonNumericFalsy && allowEmptyFormatting) {\n value = '';\n }\n\n // if value is not defined return empty string\n if (isNonNumericFalsy && !allowEmptyFormatting) { return ''; }\n\n if (typeof value === 'number') {\n value = toNumericString(value);\n isNumericString = true;\n }\n\n //change infinity value to empty string\n if (value === 'Infinity' && isNumericString) {\n value = '';\n }\n\n //round the number based on decimalScale\n //format only if non formatted value is provided\n if (isNumericString && !format && typeof decimalScale === 'number') {\n value = roundToPrecision(value, decimalScale, fixedDecimalScale);\n }\n\n var formattedValue = isNumericString ? this.formatNumString(value) : this.formatInput(value);\n\n return formattedValue;\n };\n\n NumberFormat.prototype.formatNegation = function formatNegation (value) {\n if ( value === void 0 ) value = '';\n\n var ref = this.props;\n var allowNegative = ref.allowNegative;\n var negationRegex = new RegExp('(-)');\n var doubleNegationRegex = new RegExp('(-)(.)*(-)');\n\n // Check number has '-' value\n var hasNegation = negationRegex.test(value);\n\n // Check number has 2 or more '-' values\n var removeNegation = doubleNegationRegex.test(value);\n\n //remove negation\n value = value.replace(/-/g, '');\n\n if (hasNegation && !removeNegation && allowNegative) {\n value = '-' + value;\n }\n\n return value;\n };\n\n NumberFormat.prototype.formatInput = function formatInput (value) {\n if ( value === void 0 ) value = '';\n\n var ref = this.props;\n var format = ref.format;\n\n //format negation only if we are formatting as number\n if (!format) {\n value = this.removePrefixAndSuffix(value);\n value = this.formatNegation(value);\n }\n\n //remove formatting from number\n value = this.removeFormatting(value);\n\n return this.formatNumString(value);\n };\n\n /*** format specific methods end ***/\n NumberFormat.prototype.isCharacterAFormat = function isCharacterAFormat (caretPos , value ) {\n var ref = this.props;\n var format = ref.format;\n var prefix = ref.prefix;\n var suffix = ref.suffix;\n var decimalScale = ref.decimalScale;\n var fixedDecimalScale = ref.fixedDecimalScale;\n var ref$1 = this.getSeparators();\n var decimalSeparator = ref$1.decimalSeparator;\n\n //check within format pattern\n if (typeof format === 'string' && format[caretPos] !== '#') { return true; }\n\n //check in number format\n if (\n !format &&\n (caretPos < prefix.length ||\n caretPos >= value.length - suffix.length ||\n (decimalScale && fixedDecimalScale && value[caretPos] === decimalSeparator))\n ) {\n return true;\n }\n\n return false;\n };\n\n /**\n * This will check if any formatting got removed by the delete or backspace and reset the value\n * It will also work as fallback if android chome keyDown handler does not work\n **/\n NumberFormat.prototype.correctInputValue = function correctInputValue (caretPos , lastValue , value ) {\n var this$1 = this;\n\n var ref = this.props;\n var format = ref.format;\n var allowNegative = ref.allowNegative;\n var prefix = ref.prefix;\n var suffix = ref.suffix;\n var decimalScale = ref.decimalScale;\n var ref$1 = this.getSeparators();\n var allowedDecimalSeparators = ref$1.allowedDecimalSeparators;\n var decimalSeparator = ref$1.decimalSeparator;\n var lastNumStr = this.state.numAsString || '';\n var ref$2 = this.selectionBeforeInput;\n var selectionStart = ref$2.selectionStart;\n var selectionEnd = ref$2.selectionEnd;\n var ref$3 = findChangedIndex(lastValue, value);\n var start = ref$3.start;\n var end = ref$3.end;\n\n /** Check for any allowed decimal separator is added in the numeric format and replace it with decimal separator */\n if (\n !format &&\n start === end &&\n allowedDecimalSeparators.indexOf(value[selectionStart]) !== -1\n ) {\n var separator = decimalScale === 0 ? '' : decimalSeparator;\n return (\n value.substr(0, selectionStart) + separator + value.substr(selectionStart + 1, value.length)\n );\n }\n\n var leftBound = !!format ? 0 : prefix.length;\n var rightBound = lastValue.length - (!!format ? 0 : suffix.length);\n\n if (\n // don't do anything if something got added\n value.length > lastValue.length ||\n // or if the new value is an empty string\n !value.length ||\n // or if nothing has changed, in which case start will be same as end\n start === end ||\n // or in case if whole input is selected and new value is typed\n (selectionStart === 0 && selectionEnd === lastValue.length) ||\n // or in case if the whole content is replaced by browser, example (autocomplete)\n (start === 0 && end === lastValue.length) ||\n // or if charcters between prefix and suffix is selected.\n // For numeric inputs we apply the format so, prefix and suffix can be ignored\n (selectionStart === leftBound && selectionEnd === rightBound)\n ) {\n return value;\n }\n\n // check whether the deleted portion has a character that is part of a format\n var deletedValues = lastValue.substr(start, end - start);\n var formatGotDeleted = !![].concat( deletedValues ).find(function (deletedVal, idx) { return this$1.isCharacterAFormat(idx + start, lastValue); }\n );\n\n // if it has, only remove characters that are not part of the format\n if (formatGotDeleted) {\n var deletedValuePortion = lastValue.substr(start);\n var recordIndexOfFormatCharacters = {};\n var resolvedPortion = [];\n [].concat( deletedValuePortion ).forEach(function (currentPortion, idx) {\n if (this$1.isCharacterAFormat(idx + start, lastValue)) {\n recordIndexOfFormatCharacters[idx] = currentPortion;\n } else if (idx > deletedValues.length - 1) {\n resolvedPortion.push(currentPortion);\n }\n });\n\n Object.keys(recordIndexOfFormatCharacters).forEach(function (idx) {\n if (resolvedPortion.length > idx) {\n resolvedPortion.splice(idx, 0, recordIndexOfFormatCharacters[idx]);\n } else {\n resolvedPortion.push(recordIndexOfFormatCharacters[idx]);\n }\n });\n\n value = lastValue.substr(0, start) + resolvedPortion.join('');\n }\n\n //for numbers check if beforeDecimal got deleted and there is nothing after decimal,\n //clear all numbers in such case while keeping the - sign\n if (!format) {\n var numericString = this.removeFormatting(value);\n var ref$4 = splitDecimal(\n numericString,\n allowNegative\n );\n var beforeDecimal = ref$4.beforeDecimal;\n var afterDecimal = ref$4.afterDecimal;\n var addNegation = ref$4.addNegation; // eslint-disable-line prefer-const\n\n //clear only if something got deleted\n var isBeforeDecimalPoint = caretPos < value.indexOf(decimalSeparator) + 1;\n if (\n numericString.length < lastNumStr.length &&\n isBeforeDecimalPoint &&\n beforeDecimal === '' &&\n !parseFloat(afterDecimal)\n ) {\n return addNegation ? '-' : '';\n }\n }\n\n return value;\n };\n\n /** Update value and caret position */\n NumberFormat.prototype.updateValue = function updateValue (params \n \n \n \n \n \n \n \n \n ) {\n var formattedValue = params.formattedValue;\n var input = params.input;\n var setCaretPosition = params.setCaretPosition; if ( setCaretPosition === void 0 ) setCaretPosition = true;\n var source = params.source;\n var event = params.event;\n var numAsString = params.numAsString;\n var caretPos = params.caretPos;\n var ref = this.props;\n var onValueChange = ref.onValueChange;\n var ref$1 = this.state;\n var lastValue = ref$1.value;\n\n if (input) {\n //calculate caret position if not defined\n if (caretPos === undefined && setCaretPosition) {\n var inputValue = params.inputValue || input.value;\n\n var currentCaretPosition = getCurrentCaretPosition(input);\n\n /**\n * set the value imperatively, this is required for IE fix\n * This is also required as if new caret position is beyond the previous value.\n * Caret position will not be set correctly\n */\n input.value = formattedValue;\n\n //get the caret position\n caretPos = this.getCaretPosition(inputValue, formattedValue, currentCaretPosition);\n }\n\n /**\n * set the value imperatively, as we set the caret position as well imperatively.\n * This is to keep value and caret position in sync\n */\n input.value = formattedValue;\n\n //set caret position, and value imperatively when element is provided\n if (setCaretPosition) {\n //set caret position\n this.setPatchedCaretPosition(input, caretPos, formattedValue);\n }\n }\n\n //calculate numeric string if not passed\n if (numAsString === undefined) {\n numAsString = this.removeFormatting(formattedValue);\n }\n\n //update state if value is changed\n if (formattedValue !== lastValue) {\n this.setState({ value: formattedValue, numAsString: numAsString });\n\n // trigger onValueChange synchronously, so parent is updated along with the number format. Fix for #277, #287\n onValueChange(this.getValueObject(formattedValue, numAsString), { event: event, source: source });\n }\n };\n\n NumberFormat.prototype.onChange = function onChange (e ) {\n var el = e.target;\n var inputValue = el.value;\n var ref = this;\n var state = ref.state;\n var props = ref.props;\n var isAllowed = props.isAllowed;\n var lastValue = state.value || '';\n\n var currentCaretPosition = getCurrentCaretPosition(el);\n\n inputValue = this.correctInputValue(currentCaretPosition, lastValue, inputValue);\n\n var formattedValue = this.formatInput(inputValue) || '';\n var numAsString = this.removeFormatting(formattedValue);\n\n var valueObj = this.getValueObject(formattedValue, numAsString);\n var isChangeAllowed = isAllowed(valueObj);\n\n if (!isChangeAllowed) {\n formattedValue = lastValue;\n }\n\n this.updateValue({\n formattedValue: formattedValue,\n numAsString: numAsString,\n inputValue: inputValue,\n input: el,\n event: e,\n source: 'event',\n });\n\n if (isChangeAllowed) {\n props.onChange(e);\n }\n };\n\n NumberFormat.prototype.onBlur = function onBlur (e ) {\n var ref = this;\n var props = ref.props;\n var state = ref.state;\n var format = props.format;\n var onBlur = props.onBlur;\n var allowLeadingZeros = props.allowLeadingZeros;\n var numAsString = state.numAsString;\n var lastValue = state.value;\n this.focusedElm = null;\n\n clearTimeout(this.focusTimeout);\n clearTimeout(this.caretPositionTimeout);\n\n if (!format) {\n // if the numAsString is not a valid number reset it to empty\n if (isNaN(parseFloat(numAsString))) {\n numAsString = '';\n }\n\n if (!allowLeadingZeros) {\n numAsString = fixLeadingZero(numAsString);\n }\n\n var formattedValue = this.formatNumString(numAsString);\n\n //change the state\n if (formattedValue !== lastValue) {\n // the event needs to be persisted because its properties can be accessed in an asynchronous way\n this.updateValue({\n formattedValue: formattedValue,\n numAsString: numAsString,\n input: e.target,\n setCaretPosition: false,\n event: e,\n source: 'event',\n });\n onBlur(e);\n return;\n }\n }\n onBlur(e);\n };\n\n NumberFormat.prototype.onKeyDown = function onKeyDown (e ) {\n var el = e.target;\n var key = e.key;\n var selectionStart = el.selectionStart;\n var selectionEnd = el.selectionEnd;\n var value = el.value; if ( value === void 0 ) value = '';\n var expectedCaretPosition;\n var ref = this.props;\n var decimalScale = ref.decimalScale;\n var fixedDecimalScale = ref.fixedDecimalScale;\n var prefix = ref.prefix;\n var suffix = ref.suffix;\n var format = ref.format;\n var onKeyDown = ref.onKeyDown;\n var ignoreDecimalSeparator = decimalScale !== undefined && fixedDecimalScale;\n var numRegex = this.getNumberRegex(false, ignoreDecimalSeparator);\n var negativeRegex = new RegExp('-');\n var isPatternFormat = typeof format === 'string';\n\n this.selectionBeforeInput = {\n selectionStart: selectionStart,\n selectionEnd: selectionEnd,\n };\n\n //Handle backspace and delete against non numerical/decimal characters or arrow keys\n if (key === 'ArrowLeft' || key === 'Backspace') {\n expectedCaretPosition = selectionStart - 1;\n } else if (key === 'ArrowRight') {\n expectedCaretPosition = selectionStart + 1;\n } else if (key === 'Delete') {\n expectedCaretPosition = selectionStart;\n }\n\n //if expectedCaretPosition is not set it means we don't want to Handle keyDown\n //also if multiple characters are selected don't handle\n if (expectedCaretPosition === undefined || selectionStart !== selectionEnd) {\n onKeyDown(e);\n return;\n }\n\n var newCaretPosition = expectedCaretPosition;\n var leftBound = isPatternFormat ? format.indexOf('#') : prefix.length;\n var rightBound = isPatternFormat ? format.lastIndexOf('#') + 1 : value.length - suffix.length;\n\n if (key === 'ArrowLeft' || key === 'ArrowRight') {\n var direction = key === 'ArrowLeft' ? 'left' : 'right';\n newCaretPosition = this.correctCaretPosition(value, expectedCaretPosition, direction);\n } else if (\n key === 'Delete' &&\n !numRegex.test(value[expectedCaretPosition]) &&\n !negativeRegex.test(value[expectedCaretPosition])\n ) {\n while (!numRegex.test(value[newCaretPosition]) && newCaretPosition < rightBound) {\n newCaretPosition++;\n }\n } else if (key === 'Backspace' && !numRegex.test(value[expectedCaretPosition])) {\n /* NOTE: This is special case when backspace is pressed on a\n negative value while the cursor position is after prefix. We can't handle it on onChange because\n we will not have any information of keyPress\n */\n if (selectionStart <= leftBound + 1 && value[0] === '-' && typeof format === 'undefined') {\n var newValue = value.substring(1);\n this.updateValue({\n formattedValue: newValue,\n caretPos: newCaretPosition,\n input: el,\n event: e,\n source: 'event',\n });\n } else if (!negativeRegex.test(value[expectedCaretPosition])) {\n while (!numRegex.test(value[newCaretPosition - 1]) && newCaretPosition > leftBound) {\n newCaretPosition--;\n }\n newCaretPosition = this.correctCaretPosition(value, newCaretPosition, 'left');\n }\n }\n\n if (\n newCaretPosition !== expectedCaretPosition ||\n expectedCaretPosition < leftBound ||\n expectedCaretPosition > rightBound\n ) {\n e.preventDefault();\n this.setPatchedCaretPosition(el, newCaretPosition, value);\n }\n\n /* NOTE: this is just required for unit test as we need to get the newCaretPosition,\n Remove this when you find different solution */\n if (e.isUnitTestRun) {\n this.setPatchedCaretPosition(el, newCaretPosition, value);\n }\n\n onKeyDown(e);\n };\n\n /** required to handle the caret position when click anywhere within the input **/\n NumberFormat.prototype.onMouseUp = function onMouseUp (e ) {\n var el = e.target;\n\n /**\n * NOTE: we have to give default value for value as in case when custom input is provided\n * value can come as undefined when nothing is provided on value prop.\n */\n var selectionStart = el.selectionStart;\n var selectionEnd = el.selectionEnd;\n var value = el.value; if ( value === void 0 ) value = '';\n\n if (selectionStart === selectionEnd) {\n var caretPosition = this.correctCaretPosition(value, selectionStart);\n if (caretPosition !== selectionStart) {\n this.setPatchedCaretPosition(el, caretPosition, value);\n }\n }\n\n this.props.onMouseUp(e);\n };\n\n NumberFormat.prototype.onFocus = function onFocus (e ) {\n var this$1 = this;\n\n // Workaround Chrome and Safari bug https://bugs.chromium.org/p/chromium/issues/detail?id=779328\n // (onFocus event target selectionStart is always 0 before setTimeout)\n e.persist();\n\n this.focusedElm = e.target;\n this.focusTimeout = setTimeout(function () {\n var el = e.target;\n var selectionStart = el.selectionStart;\n var selectionEnd = el.selectionEnd;\n var value = el.value; if ( value === void 0 ) value = '';\n\n var caretPosition = this$1.correctCaretPosition(value, selectionStart);\n\n //setPatchedCaretPosition only when everything is not selected on focus (while tabbing into the field)\n if (\n caretPosition !== selectionStart &&\n !(selectionStart === 0 && selectionEnd === value.length)\n ) {\n this$1.setPatchedCaretPosition(el, caretPosition, value);\n }\n\n this$1.props.onFocus(e);\n }, 0);\n };\n\n NumberFormat.prototype.render = function render () {\n var ref = this.props;\n var type = ref.type;\n var displayType = ref.displayType;\n var customInput = ref.customInput;\n var renderText = ref.renderText;\n var getInputRef = ref.getInputRef;\n var format = ref.format;\n var thousandSeparator = ref.thousandSeparator;\n var decimalSeparator = ref.decimalSeparator;\n var allowedDecimalSeparators = ref.allowedDecimalSeparators;\n var thousandsGroupStyle = ref.thousandsGroupStyle;\n var decimalScale = ref.decimalScale;\n var fixedDecimalScale = ref.fixedDecimalScale;\n var prefix = ref.prefix;\n var suffix = ref.suffix;\n var removeFormatting = ref.removeFormatting;\n var mask = ref.mask;\n var defaultValue = ref.defaultValue;\n var isNumericString = ref.isNumericString;\n var allowNegative = ref.allowNegative;\n var allowEmptyFormatting = ref.allowEmptyFormatting;\n var allowLeadingZeros = ref.allowLeadingZeros;\n var onValueChange = ref.onValueChange;\n var isAllowed = ref.isAllowed;\n var customNumerals = ref.customNumerals;\n var onChange = ref.onChange;\n var onKeyDown = ref.onKeyDown;\n var onMouseUp = ref.onMouseUp;\n var onFocus = ref.onFocus;\n var onBlur = ref.onBlur;\n var propValue = ref.value;\n var rest = objectWithoutProperties( ref, [\"type\", \"displayType\", \"customInput\", \"renderText\", \"getInputRef\", \"format\", \"thousandSeparator\", \"decimalSeparator\", \"allowedDecimalSeparators\", \"thousandsGroupStyle\", \"decimalScale\", \"fixedDecimalScale\", \"prefix\", \"suffix\", \"removeFormatting\", \"mask\", \"defaultValue\", \"isNumericString\", \"allowNegative\", \"allowEmptyFormatting\", \"allowLeadingZeros\", \"onValueChange\", \"isAllowed\", \"customNumerals\", \"onChange\", \"onKeyDown\", \"onMouseUp\", \"onFocus\", \"onBlur\", \"value\"] );\n var otherProps = rest;\n var ref$1 = this.state;\n var value = ref$1.value;\n var mounted = ref$1.mounted;\n\n // add input mode on element based on format prop and device once the component is mounted\n var inputMode = mounted && addInputMode(format) ? 'numeric' : undefined;\n\n var inputProps = Object.assign({ inputMode: inputMode }, otherProps, {\n type: type,\n value: value,\n onChange: this.onChange,\n onKeyDown: this.onKeyDown,\n onMouseUp: this.onMouseUp,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n });\n\n if (displayType === 'text') {\n return renderText ? (\n renderText(value, otherProps) || null\n ) : (\n React.createElement( 'span', Object.assign({}, otherProps, { ref: getInputRef }),\n value\n )\n );\n } else if (customInput) {\n var CustomInput = customInput;\n return React.createElement( CustomInput, Object.assign({}, inputProps, { ref: getInputRef }));\n }\n\n return React.createElement( 'input', Object.assign({}, inputProps, { ref: getInputRef }));\n };\n\n return NumberFormat;\n}(React.Component));\n\nNumberFormat.defaultProps = defaultProps;\n\nexport default NumberFormat;\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"inputNumber_wrapper__g6qfX\",\"small\":\"inputNumber_small__pK0M9\",\"container\":\"inputNumber_container__rUVp0\",\"inputNumber\":\"inputNumber_inputNumber__bjDEr\",\"max_length\":\"inputNumber_max_length__vCE8M\",\"explanation\":\"inputNumber_explanation__FYMwQ\",\"align_right\":\"inputNumber_align_right__P+gSj\",\"align_center\":\"inputNumber_align_center__VwbEs\"};","import { useCallback, useMemo } from 'react';\nimport NumberFormat, { NumberFormatProps, NumberFormatValues } from 'react-number-format';\nimport { ControlsCommonProps } from '../../fields';\nimport styles from './inputNumber.module.scss';\nimport Spinner, { ClipSpinner } from 'components/Spinner';\nimport { MaxLength } from '../../addons';\nimport { InfoPopup, POSITION } from 'components/Popup';\nimport { Subtract } from 'utility-types';\nimport { useGetTranslation } from 'components/Translations/translationUtils';\n\nexport const currencyDefaultProps = {\n thousandSeparator: true,\n\tdecimalScale: 2,\n\tfixedDecimalScale: true,\n\talign: 'left' as any\n}\n\nexport const percentDefaultProps = {\n\tdecimalScale: 2,\n\tfixedDecimalScale: true,\n\talign: 'left' as any,\n\tsuffix: '%'\n}\n\nexport type InputNumberProps = ControlsCommonProps & Subtract & {\n\tmin?: number\n\tmax?: number\n\tsuffix?: string\n\texplanation?: string\n\tmaxLength?: number\n\tisAllowed?: (values: NumberFormatValues) => boolean\n\talign?: 'left' | 'center' | 'right'\n\tloading?: boolean\n\tsize?: 'medium' | 'small'\n\tfocus?: boolean\n}\n\nexport const InputNumber = ({ value, onChange, onBlur, disabled, min, max, explanation, maxLength, isAllowed, align, loading, size = 'medium', focus = false, ...props }: InputNumberProps) => {\n\tconst onChangeCallback = useCallback(\n\t\t(values: NumberFormatValues) => {\n\t\t\tlet value = values.floatValue;\n\t\t\t// when prefix='-' and allowNegative=false, library returns negative value (bug in library), so here we fix that\n\t\t\tif (value && props.prefix === '-') {\n\t\t\t\tvalue = Math.abs(value);\n\t\t\t}\n\t\t\tonChange && onChange(value);\n\t\t},\n\t\t[onChange, props.prefix]\n\t)\n\n\tconst isAllowedCallback = useCallback(\n\t\t(values: NumberFormatValues) => {\n\t\t\tconst floatValue = values.floatValue;\n\n\t\t\tif (floatValue === undefined) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (min !== undefined && min > floatValue) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (max !== undefined && max < floatValue) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (isAllowed) {\n\t\t\t\treturn isAllowed(values);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\t\t[min, max, isAllowed]\n\t)\n\n\tconst getTranslation = useGetTranslation()\n\tconst suffixMemo = useMemo(() => props.suffix && ` ${getTranslation(props.suffix)}`, [getTranslation, props.suffix])\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t{/* max length */}\n\t\t\t\t{maxLength &&\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t
\n\t\t\t{/* explanation */}\n\t\t\t{explanation &&\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t}\n\t\t\t{/* loading */}\n\t\t\t{loading &&\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t}\n\t\t
\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"mapPicker_container__ybpCh\",\"picker_container\":\"mapPicker_picker_container__Nz+En\",\"description_container\":\"mapPicker_description_container__G2us7\",\"picker\":\"mapPicker_picker__ULKex\",\"small\":\"mapPicker_small__RIK-X\",\"arrow\":\"mapPicker_arrow__KdEQE\",\"item\":\"mapPicker_item__P74-8\",\"expander\":\"mapPicker_expander__XlUFj\",\"item_content\":\"mapPicker_item_content__G4xJh\",\"selected\":\"mapPicker_selected__ztVya\",\"nested\":\"mapPicker_nested__g-tsN\",\"disabled\":\"mapPicker_disabled__JCB7a\"};","import { useCallback, useMemo, useState } from \"react\"\nimport styles from './mapPicker.module.scss'\nimport { Shorten } from \"components/Shorten\";\nimport { MapItem } from \"./helpers\";\nimport { ArrowDownIcon, ArrowRightIcon, FileIcon, FolderIcon } from \"components/icons/icons\";\n\ntype Props = {\n\titem: MapItem\n\tonClick?(item: MapItem): void\n\tselected: number[]\n\texpandedByDefault?: boolean\n}\n\nexport const Item = ({ item, onClick, selected, expandedByDefault }: Props) => {\n\tconst hasChildrens = item.childrens.length > 0;\n\tconst [expanded, setExpanded] = useState(!!expandedByDefault);\n\n\tconst toggleExpandCallback = useCallback(\n\t\t() => {\n\t\t\tsetExpanded((state) => !state);\n\t\t},\n\t\t[]\n\t)\n\n\tconst onClickCallback = useCallback(\n\t\t() => {\n\t\t\tonClick && onClick(item);\n\t\t},\n\t\t[item, onClick]\n\t)\n\n\tconst childrensContent = useMemo(\n\t\t() => {\n\t\t\tif (!hasChildrens || !expanded) {\n\t\t\t\treturn <>\n\t\t\t}\n\n\t\t\treturn item.childrens.map((item) => (\n\t\t\t\t\n\t\t\t));\n\t\t},\n\t\t[selected, item.childrens, hasChildrens, expanded, onClick]\n\t)\n\n\tconst expanderContent = useMemo(\n\t\t() => {\n\t\t\tif (!hasChildrens) {\n\t\t\t\treturn
\n\t\t\t}\n\n\t\t\tconst props = {\n\t\t\t\twidth: 8,\n\t\t\t\theight: 8,\n\t\t\t\tfill: 'currentColor'\n\t\t\t}\n\n\t\t\tlet expander;\n\t\t\tif (expanded) {\n\t\t\t\texpander = \n\t\t\t} else {\n\t\t\t\texpander = \n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t
\n\t\t\t\t\t{expander}\n\t\t\t\t
\n\t\t\t)\n\t\t},\n\t\t[expanded, hasChildrens, toggleExpandCallback]\n\t)\n\n\tconst isSelected = selected.includes(item.id);\n\n\tconst icon = useMemo(\n\t\t() => {\n\t\t\tconst props = {\n\t\t\t\twidth: 16,\n\t\t\t\theight: 16,\n\t\t\t\tfill: 'currentColor'\n\t\t\t}\n\n\t\t\treturn hasChildrens ? : ;\n\t\t},\n\t\t[hasChildrens]\n\t)\n\n\tconst itemContent = useMemo(\n\t\t() => (\n\t\t\t
\n\t\t\t\t{icon}\n\t\t\t\t
\n\t\t\t\t{item.name}\n\t\t\t
\n\t\t),\n\t\t[isSelected, onClickCallback, item.name, icon]\n\t)\n\n\treturn (\n\t\t<>\n\t\t\t
\n\t\t\t\t{expanderContent}\n\t\t\t\t
\n\t\t\t\t{itemContent}\n\t\t\t
\n\t\t\t{/* childrens */}\n\t\t\t
\n\t\t\t\t{childrensContent}\n\t\t\t
\n\t\t\n\t)\n}\n","import { Dialog } from \"components/Dialog\"\nimport { useCallback, useMemo, useState } from \"react\"\nimport { MapItem, convertToAbsoluteName, getSelectedItem } from \"./helpers\"\nimport { Item } from \"./Item\"\nimport { RowContainer } from \"components/Layout\"\nimport Button from \"components/Button/Button\"\nimport styles from './mapPicker.module.scss'\nimport { TreeStructureIcon } from \"components/icons/icons\"\nimport { OverlaySpinner } from \"components/Spinner\"\nimport { InfoPopup, POSITION } from \"components/Popup\"\nimport { Shorten } from \"components/Shorten\"\n\ntype Props = {\n disabled?: boolean | undefined\n items: MapItem[]\n description?: string | undefined\n loading?: boolean | undefined\n\tinitialSelected: number[]\n\tonChange(selected: number[]): void\n\tsingle?: boolean // single or multi select\n}\n\nexport const MapPicker = (props: Props) => {\n\tconst {\n\t\tdisabled, items, description, loading,\n\t\tinitialSelected, onChange, single\n\t} = props;\n\n\tconst [selected, setSelected] = useState(initialSelected);\n\tconst [open, setOpen] = useState(false);\n\n\tconst openCallback = useCallback(\n\t\t() => !disabled && setOpen(true),\n\t\t[disabled]\n\t)\n\n\tconst closeCallback = useCallback(\n\t\t() => setOpen(false),\n\t\t[]\n\t)\n\n\tconst selectCallback = useCallback(\n\t\t(selectedItem: MapItem) => {\n\t\t\tsetSelected((state) => {\n\t\t\t\tif (single) {\n\t\t\t\t\treturn [selectedItem.id];\n\t\t\t\t}\n\n\t\t\t\t// multi\n\t\t\t\tif (state.includes(selectedItem.id)) {\n\t\t\t\t\treturn state.filter((item) => item !== selectedItem.id);\n\t\t\t\t} else {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tselectedItem.id\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t\t[single]\n\t)\n\n\tconst changeCallback = useCallback(\n\t\t() => {\n\t\t\tonChange && onChange(selected);\n\t\t\tcloseCallback();\n\t\t},\n\t\t[onChange, selected, closeCallback]\n\t)\n\n\tconst clearCallback = useCallback(\n () => {\n setSelected([]);\n onChange && onChange([]);\n closeCallback();\n },\n [onChange, closeCallback]\n )\n\n\tconst displayValue = useMemo(\n\t\t() => {\n\t\t\tif (selected.length === 0) {\n\t\t\t\treturn '';\n\t\t\t} else if (selected.length === 1) {\n\t\t\t\tconst selectedItem = getSelectedItem(selected[0], items);\n\t\t\t\treturn selectedItem ? convertToAbsoluteName(selectedItem, items) : '';\n\t\t\t} else {\n\t\t\t\treturn `Selected ${selected.length} items.`\n\t\t\t}\n\t\t},\n\t\t[selected, items]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{displayValue}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t{/* arrow */}\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t{/* loading */}\n\t\t\t\t{loading && }\n\t\t\t
\n\n\t\t\t{/* description */}\n\t\t\t{description &&\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t}\n\n\t\t\t{/* dialog */}\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t{items.map((item) => (\n\t\t\t\t\t\t\n\t\t\t\t\t))}\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\n\t\t
\n\t)\n}\n","import { ControlsCommonProps } from \"components/Form/fields\"\nimport { useCallback, useMemo } from \"react\"\nimport { MapItem } from \"./MapPicker/helpers\"\nimport { MapPicker } from \"./MapPicker/MapPicker\"\n\nexport type MapSinglePickerProps = ControlsCommonProps & {\n\titems: MapItem[]\n\tdescription?: string\n\tloading?: boolean\n}\n\nexport const MapSinglePicker = (props: MapSinglePickerProps) => {\n\tconst {\tvalue, onChange, ...rest } = props;\n\n\tconst initialSelected = useMemo(\n\t\t() => value ? [value] : [],\n\t\t[value]\n\t)\n\n\tconst changeCallback = useCallback(\n\t\t(selected: number[]) => {\n\t\t\tif (selected.length === 1) {\n\t\t\t\tonChange && onChange(selected[0]);\n\t\t\t} else {\n\t\t\t\tonChange && onChange(undefined);\n\t\t\t}\n\t\t},\n\t\t[onChange]\n\t)\n\n\treturn (\n\t\t\n\t)\n}\n","import { ControlsCommonProps } from \"components/Form/fields\"\nimport { useCallback, useMemo } from \"react\"\nimport { MapItem } from \"./MapPicker/helpers\"\nimport { MapPicker } from \"./MapPicker/MapPicker\"\n\nexport type MapMultiPickerProps = ControlsCommonProps & {\n\titems: MapItem[]\n\tdescription?: string\n\tloading?: boolean\n}\n\nexport const MapMultiPicker = (props: MapMultiPickerProps) => {\n\tconst {\tvalue, onChange, ...rest } = props;\n\n\tconst initialSelected = useMemo(\n\t\t() => value ? [...value] : [],\n\t\t[value]\n\t)\n\n\tconst changeCallback = useCallback(\n\t\t(selected: number[]) => {\n\t\t\tonChange && onChange(selected);\n\t\t},\n\t\t[onChange]\n\t)\n\n\treturn (\n\t\t\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"multiCheckbox_container__SbRHI\",\"multi_checkbox_item\":\"multiCheckbox_multi_checkbox_item__J4JHh\",\"container_column\":\"multiCheckbox_container_column__9fmE9\",\"multi_checkbox_item_column\":\"multiCheckbox_multi_checkbox_item_column__2K8J9\"};","import { useMemo, useCallback } from 'react';\nimport { Checkbox } from '..';\nimport { ControlsCommonProps } from '../../fields';\nimport styles from './multiCheckbox.module.scss';\n\nexport type MultiCheckboxItemType = {\n\tid: string | number\n\ttext: string\n\tdisabled?: boolean\n}\n\nexport type MultiCheckboxProps = ControlsCommonProps> & {\n\titems: MultiCheckboxItemType[]\n\tcolumn?: boolean\n}\n\nexport const MultiCheckbox = ({ value, onChange, disabled, items = [], column }: MultiCheckboxProps) => {\n\tconst onChangeCallback = useCallback(\n\t\t(id: string | number, val?: boolean) => {\n\t\t\tconst newValue = value ? [...value] : [];\n\t\t\tif (val) {\n\t\t\t\tnewValue.push(id)\n\t\t\t} else if (newValue) {\n\t\t\t\tconst index = newValue.indexOf(id);\n\t\t\t\tnewValue.splice(index, 1);\n\t\t\t}\n\t\t\tonChange && onChange(newValue);\n\t\t},\n\t\t[onChange, value]\n\t)\n\n\tconst itemsContent = useMemo(\n\t\t() => {\n\t\t\treturn items.map((item) => {\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t\t\t onChangeCallback(item.id, val)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t
\n\t\t\t\t)\n\t\t\t});\n\t\t},\n\t\t[value, items, disabled, onChangeCallback, column]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t{itemsContent}\n\t
\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"multiSelect_container__+Uhx8\",\"small\":\"multiSelect_small__XxlSr\",\"select_container\":\"multiSelect_select_container__V3kW5\",\"description_container\":\"multiSelect_description_container__BQrAJ\",\"select\":\"multiSelect_select__2qhm4\",\"focus\":\"multiSelect_focus__Q8qLd\",\"disabled\":\"multiSelect_disabled__UkY8p\",\"arrow\":\"multiSelect_arrow__Q7N3l\",\"dropdown\":\"multiSelect_dropdown__P0l9L\",\"open\":\"multiSelect_open__PVaZ5\",\"not_portal\":\"multiSelect_not_portal__41mkK\",\"no_options\":\"multiSelect_no_options__LgH3s\",\"option\":\"multiSelect_option__usKyg\",\"option_text\":\"multiSelect_option_text__NUZ+H\",\"inline_block\":\"multiSelect_inline_block__w9-RK\",\"link\":\"multiSelect_link__2Oxqr\"};","import { useCallback } from 'react'\nimport styles from './multiSelect.module.scss'\nimport { Checkbox } from '../Checkbox/Checkbox'\nimport { useGetTranslation } from 'components/Translations/translationUtils'\n\ntype Props = {\n\titem: any\n\tgetItemText(item: any): string | undefined\n\tonClick(item: any): void\n\tisSelected?: boolean\n\tisKeyboardItem?: boolean\n}\n\nexport const Option = ({ item, getItemText, onClick, isSelected, isKeyboardItem }: Props) => {\n\tconst onClickCallback = useCallback(\n\t\t() => {\n\t\t\tonClick(item);\n\t\t},\n\t\t[item, onClick]\n\t)\n\n\tconst getTranslation = useGetTranslation();\n\n\tconst className = `${styles.option} ${isKeyboardItem ? styles.focus : ''}`\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t{getTranslation(getItemText(item))}\n\t\t
\n\t)\n}\n","import { ArrowDownIcon } from 'components/icons/icons';\nimport { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { ControlsCommonProps } from '../../fields';\nimport styles from './multiSelect.module.scss';\nimport Spinner, { ClipSpinner } from 'components/Spinner';\nimport { Option } from './Option'\nimport { Input } from \"../Input/Input\"\nimport { Cover } from 'components/Cover';\nimport { Link } from 'react-router-dom';\nimport { createPortal } from 'react-dom';\nimport { useGetTranslation } from 'components/Translations/translationUtils';\nimport { Translation } from 'components/Translations/Translation';\n\nconst selectAllKey = 'select_all'\n\nconst multiselectId = 'multiselectId'\n\n// Multiselect (like Textarea) accepts Enter\n// so this method is used in Form to prevent auto save of the form via Enter key\nexport const isMultiSelectHit = (target: HTMLElement) => {\n\treturn !!target.closest(`#${multiselectId}`);\n}\n\nexport type MultiSelectProps = ControlsCommonProps> & {\n\titems?: any[]\n\tgetItemId(item: any): string | number\n\tgetItemText(item: any): string\n\tloading?: boolean\n\tsort?: boolean\n\thasSelectAll?: boolean\n\tnumOfItemNames?: number\n\tisLink?: boolean\n\tgetItemLinkRoute?(item: any): string\n\tsize?: 'medium' | 'small'\n\tfocus?: boolean\n\tusePortal?: boolean\n};\n\nexport const MultiSelect = (props: MultiSelectProps) => {\n\tconst {\n\t\tvalue, onChange, onBlur, disabled,\n\t\titems = [], getItemId, getItemText, getItemLinkRoute,\n\t\tloading, sort, isLink, hasSelectAll = true, numOfItemNames = 1,\n\t\tsize = 'medium', focus = false, usePortal = true\n\t} = props;\n\n\tconst containerRef = useRef(null);\n\n\tconst [expanded, setExpanded] = useState(focus);\n\tconst [searchValue, setSearchValue] = useState();\n\tconst [keyboardItem, setKeyboardItem] = useState();\n\tconst [dropdownStyle, setDropdownStyle] = useState({});\n\n\tconst getTranslation = useGetTranslation();\n\n\tconst filteredItemsMemo = useMemo(\n\t\t() => {\n\t\t\t// filter by searchValue\n\t\t\tlet newFilteredItems = items.filter((item) => {\n\t\t\t\tconst text = getTranslation(getItemText(item));\n\t\t\t\treturn text?.toLowerCase().includes(searchValue?.toLowerCase() || '');\n\t\t\t})\n\t\t\t// sort by alphabet\n\t\t\tif (sort) {\n\t\t\t\tnewFilteredItems = newFilteredItems.sort((a, b) => {\n\t\t\t\t\tconst textA = getTranslation(getItemText(a))?.toUpperCase() || '';\n\t\t\t\t\tconst textB = getTranslation(getItemText(b))?.toUpperCase() || ''\n\t\t\t\t\tif (textA < textB) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (textA > textB) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn newFilteredItems;\n\t\t},\n\t\t[items, sort, getItemText, searchValue, getTranslation]\n\t)\n\n\tconst onChangeCallback = useCallback(\n\t\t(item: any | undefined) => {\n\t\t\tlet id = getItemId(item)\n\t\t\tconst values = value || []\n\t\t\tlet newValues;\n\n\t\t\tif (values.includes(id)) {\n\t\t\t\tnewValues = values.filter(x => x !== id);\n\t\t\t} else {\n\t\t\t\tnewValues = [...values, id]\n\t\t\t}\n\n\t\t\tonChange && onChange(newValues);\n\t\t},\n\t\t[getItemId, onChange, value]\n\t)\n\n\tconst isAllSelectedMemo = useMemo(\n\t\t() => filteredItemsMemo.every(x => value?.includes(getItemId(x))),\n\t\t[filteredItemsMemo, value, getItemId]\n\t)\n\n\tconst selectAllCallback = useCallback(\n\t\t() => {\n\t\t\tconst values = value || [];\n\t\t\tconst filteredItemIds = filteredItemsMemo.map(x => getItemId(x));\n\n\t\t\t// remove filtered items\n\t\t\tlet newValues = values.filter(x => !filteredItemIds.includes(x));\n\n\t\t\t// if filtered items are NOT already included, add all of them\n\t\t\t// otherwise, they are already removed\n\t\t\tif (!isAllSelectedMemo) {\n\t\t\t\tnewValues = [...newValues, ...filteredItemIds]\n\t\t\t}\n\t\t\tonChange && onChange(newValues);\n\t\t},\n\t\t[getItemId, onChange, value, isAllSelectedMemo, filteredItemsMemo]\n\t)\n\n\tconst onBlurCallback = useCallback(\n\t\t() => {\n\t\t\tonBlur && onBlur();\n\t\t\tsetSearchValue(undefined);\n\t\t\tsetExpanded(false);\n\t\t\tsetKeyboardItem(undefined);\n\t\t},\n\t\t[onBlur]\n\t)\n\n\tconst onKeyDownCallback = useCallback(\n\t\t(eventKey: string) => {\n\t\t\tif (!expanded) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tswitch (eventKey) {\n\t\t\t\tcase 'Enter':\n\t\t\t\t\tif (keyboardItem) {\n\t\t\t\t\t\tonChangeCallback(keyboardItem);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tsetKeyboardItem((state) => {\n\t\t\t\t\t\tconst index = filteredItemsMemo.indexOf(state);\n\n\t\t\t\t\t\tif (index === -1) {\n\t\t\t\t\t\t\treturn filteredItemsMemo.at(-1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn filteredItemsMemo.at(index - 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tsetKeyboardItem((state) => {\n\t\t\t\t\t\tconst index = filteredItemsMemo.indexOf(state);\n\n\t\t\t\t\t\tif (index === filteredItemsMemo.length - 1) {\n\t\t\t\t\t\t\treturn filteredItemsMemo.at(0);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn filteredItemsMemo.at(index + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\t[filteredItemsMemo, keyboardItem, onChangeCallback, expanded]\n\t)\n\n\tconst optionsContent = useMemo(\n\t\t() => {\n\t\t\treturn filteredItemsMemo.map((item) => {\n\t\t\t\tconst id = getItemId(item);\n\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t})\n\t\t},\n\t\t[filteredItemsMemo, getItemId, getItemText, onChangeCallback, value, keyboardItem]\n\t)\n\n\tconst dropdownContentMemo = useMemo(\n\t\t() => {\n\t\t\tconst dropdownContent = (\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t{hasSelectAll && filteredItemsMemo.length > 0 && (\n\t\t\t\t\t\t searchValue ? 'i18n.label.selectAllFiltered' : 'i18n.label.selectAll'}\n\t\t\t\t\t\t\tonClick={selectAllCallback}\n\t\t\t\t\t\t\tisSelected={isAllSelectedMemo}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{optionsContent}\n\t\t\t\t\t{optionsContent.length === 0 && (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t);\n\n\t\t\tif (usePortal) {\n\t\t\t\treturn createPortal(dropdownContent, document.body);\n\t\t\t}\n\n\t\t\treturn dropdownContent;\n\t\t},\n\t\t[disabled, dropdownStyle, filteredItemsMemo.length, hasSelectAll, isAllSelectedMemo, loading, onKeyDownCallback, optionsContent, searchValue, selectAllCallback, usePortal]\n\t)\n\n\tconst selectedContent = useMemo(\n\t\t() => {\n\t\t\tif (!value || value.length === 0) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tif (value.length === items.length) {\n\t\t\t\treturn \n\t\t\t}\n\n\t\t\tif (value.length > numOfItemNames) {\n\t\t\t\treturn \n\t\t\t}\n\n\t\t\tif (items.length === 0) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tconst selectedItems = value.map(x => items.find(item => getItemId(item) === x))\n\n\t\t\treturn selectedItems.map((x, i) => (\n\t\t\t\t\n\t\t\t\t\t{i > 0 && \", \"}\n\t\t\t\t\t
\n\t\t\t\t\t\t{isLink && getItemLinkRoute ? (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{getTranslation(getItemText(x))}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t) : getTranslation(getItemText(x))}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t))\n\t\t},\n\t\t[value, items, numOfItemNames, getItemId, isLink, getItemLinkRoute, getTranslation, getItemText]\n\t)\n\n\tconst calculateDropdownPortalStyle = useCallback(\n\t\t() => {\n\t\t\tconst container = containerRef.current;\n\n\t\t\tif (container) {\n\t\t\t\tconst { bottom, top, width, left } = container.getBoundingClientRect();\n\n\t\t\t\tconst viewportHeight = window.innerHeight;\n\t\t\t\tconst spaceBelow = viewportHeight - bottom;\n\t\t\t\tconst spaceAbove = top\n\t\t\t\tconst dropdownHeight = optionsContent.length >= 8 ? 256 : optionsContent.length > 0 ? optionsContent.length * 32 : 32; // maxHeight(8 options * 32px)\n\t\t\t\tconst openAbove = spaceBelow < dropdownHeight && spaceAbove > spaceBelow;\n\t\t\t\tconst dropdownMaxWidth = 500;\n\n\t\t\t\tconst dropdownStyle: React.CSSProperties = {\n\t\t\t\t\tminWidth: `${width}px`,\n\t\t\t\t\tmaxWidth: `${dropdownMaxWidth}px`,\n\t\t\t\t\tleft: `${left + window.scrollX}px`,\n\t\t\t\t\t...(openAbove ?\n\t\t\t\t\t\t{ bottom: `${viewportHeight - spaceAbove - window.scrollY}px` } :\n\t\t\t\t\t\t{ top: `${bottom + window.scrollY}px` }\n\t\t\t\t\t),\n\t\t\t\t};\n\n\t\t\t\tsetDropdownStyle(dropdownStyle);\n\t\t\t}\n\t\t},\n\t\t[optionsContent]\n\t)\n\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (usePortal && expanded) {\n\t\t\t\tcalculateDropdownPortalStyle();\n\n\t\t\t\twindow.addEventListener('scroll', calculateDropdownPortalStyle, true);\n\n\t\t\t\treturn () => {\n\t\t\t\t\twindow.removeEventListener('scroll', calculateDropdownPortalStyle, true);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[usePortal, expanded, calculateDropdownPortalStyle]\n\t)\n\n\tconst expandCallback = useCallback(\n\t\t() => {\n\t\t\tif (!disabled && !loading) {\n\t\t\t\t// Check calculation before set expanded, so that dropdown knows whether to open above or below\n\t\t\t\tcalculateDropdownPortalStyle();\n\t\t\t\tsetExpanded(true)\n\t\t\t}\n\t\t},\n\t\t[disabled, loading, calculateDropdownPortalStyle]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t{expanded && }\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{selectedContent}\n\t\t\t\t
\n\t\t\t\t{/* arrow */}\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t{/* dropdown */}\n\t\t\t\t{expanded && dropdownContentMemo}\n\t\t\t\t{/* loading */}\n\t\t\t\t{loading &&\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t
\n\t\t
\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"radio_container__3B9QR\",\"item\":\"radio_item__LYIuv\",\"container_column\":\"radio_container_column__RDEej\",\"circle\":\"radio_circle__lnsxR\",\"checked\":\"radio_checked__2nYJM\",\"disabled\":\"radio_disabled__mFbIj\",\"text\":\"radio_text__2yIxd\"};","import { useCallback } from 'react';\nimport styles from './radio.module.scss';\nimport { Translation } from 'components/Translations/Translation';\n\nexport type RadioItemType = {\n\tid: string | number | boolean\n\ttext: string\n\tdisabled?: boolean\n}\n\ntype Props = RadioItemType & {\n isChecked?: boolean\n onClick?(id: string | number | boolean): void\n\tcolumn?: boolean\n}\n\nexport const RadioItem = ({ id, text, isChecked, onClick, disabled, column }: Props) => {\n const handleOptionChange = useCallback(\n () => {\n\t\t\t!disabled && !isChecked && onClick && onClick(id);\n },\n [id, isChecked, onClick, disabled]\n\t)\n\n\tconst className = `${styles.item} ${disabled ? styles.disabled : ''} ${isChecked ? styles.checked : ''}`;\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t \t
\n\t)\n}\n","import { useMemo } from 'react';\nimport { ControlsCommonProps } from '../../fields';\nimport styles from './radio.module.scss';\nimport { RadioItem, RadioItemType } from './RadioItem';\n\nexport type {\n\tRadioItemType\n}\n\nexport type RadioProps = ControlsCommonProps & {\n\titems: RadioItemType[]\n\tcolumn?: boolean\n}\n\nexport const Radio = ({ value, onChange, disabled, onBlur, items = [], column }: RadioProps) => {\n\tconst itemsContent = useMemo(\n\t\t() => {\n\t\t\treturn items.map((item) => {\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t});\n\t\t},\n\t\t[value, items, onChange, disabled, column]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t{itemsContent}\n\t
\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"select_container__4KkHs\",\"select_container\":\"select_select_container__5z2LN\",\"description_container\":\"select_description_container__UYWyU\",\"small\":\"select_small__iEU9x\",\"select\":\"select_select__vdoJe\",\"arrow\":\"select_arrow__hzKfr\",\"placeholder\":\"select_placeholder__3kMTA\"};","import React, { useCallback, useMemo } from 'react';\nimport { ArrowDownIcon } from 'components/icons/icons';\nimport Spinner, { ClipSpinner } from 'components/Spinner';\nimport styles from './select.module.scss';\nimport { ControlsCommonProps } from '../../fields';\nimport { InfoPopup, POSITION } from 'components/Popup'\nimport { Translation } from 'components/Translations/Translation';\n\n// use this type when you don't care about item type\nexport type OptionType = {\n\tid: string | number\n\ttext: string\n}\n\nexport type SelectProps = ControlsCommonProps & {\n\titems: Array\n\tgetItemId(item: any): string | number\n\tgetItemText(item: any): string | undefined\n\tgetItemDescription?(item: any): string | undefined\n\n\tplaceholder?: string\n\tloading?: boolean\n\tcontainsEmpty?: boolean\n\tsize?: 'medium' | 'small'\n}\n\nexport function Select(props: SelectProps) {\n\tconst {\n\t\tvalue, onChange, onBlur, disabled,\n\t\titems, getItemId, getItemText, getItemDescription,\n\t\tplaceholder, loading, containsEmpty = true, size = 'medium'\n\t} = props;\n\n\tconst handleSelectChange = useCallback(\n\t\t(e: React.FormEvent) => {\n\t\t\tconst newValue = e.currentTarget.value;\n\n\t\t\tif (!newValue || !items || items.length === 0) {\n\t\t\t\tonChange && onChange(undefined);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// if ids are numbers, return number instead of string\n\t\t\tif (typeof getItemId(items[0]) === 'number') {\n\t\t\t\tonChange && onChange(parseFloat(newValue));\n\t\t\t} else {\n\t\t\t\tonChange && onChange(newValue);\n\t\t\t}\n\n\t\t},\n\t\t[items, getItemId, onChange]\n\t)\n\n\tconst optionsContent = useMemo(\n\t\t() => {\n\t\t\treturn items.map(currentItem => {\n\t\t\t\tconst id = getItemId(currentItem);\n\t\t\t\tconst text = getItemText(currentItem) || '';\n\t\t\t\treturn \n\t\t\t})\n\t\t},\n\t\t[items, getItemId, getItemText]\n\t)\n\n\tconst selectClassName = useMemo(\n\t\t() => `${styles.select} ${size === 'small' ? styles.small : ''} ${value === undefined ? styles.placeholder : ''}`,\n\t\t[value, size]\n\t)\n\n\tconst description = useMemo(\n\t\t() => {\n\t\t\tif (value && getItemDescription) {\n\t\t\t\tfor (const item of items) {\n\t\t\t\t\tif (getItemId(item) === value) {\n\t\t\t\t\t\treturn getItemDescription(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\t[value, items, getItemId, getItemDescription]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{/* placeholder */}\n\t\t\t\t\t{value === undefined &&\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t{/* empty */}\n\t\t\t\t\t{containsEmpty &&\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t{/* items options */}\n\t\t\t\t\t{optionsContent}\n\t\t\t\t\n\t\t\t\t{/* arrow */}\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t{/* loading */}\n\t\t\t\t{loading &&\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t
\n\t\t\t{/* description */}\n\t\t\t{getItemDescription &&\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t}\n\t\t
\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"switch_container__heRyn\",\"track\":\"switch_track__AVjID\",\"thumb\":\"switch_thumb__Cb10j\",\"active\":\"switch_active__On3Qp\"};","import { ControlsCommonProps } from 'components/Form/fields'\nimport styles from './switch.module.scss'\nimport { useCallback } from 'react'\n\nexport type SwitchProps = ControlsCommonProps & {\n\n}\n\nexport const Switch = ({ value, disabled, onChange }: SwitchProps) => {\n\tconst onChangeCallback = useCallback(\n\t\t() => {\n\t\t\tif (!disabled) {\n\t\t\t\tonChange && onChange(!value);\n\t\t\t}\n\t\t},\n\t\t[value, disabled, onChange]\n\t)\n\n\tconst className = `${styles.container} ${disabled ? styles.disabled : ''} ${value ? styles.active : ''}`;\n\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t
\n\t\t
\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"table_container__m0CfQ\",\"row\":\"table_row__ByeaD\",\"cell\":\"table_cell__Fh-6k\",\"container_draggable\":\"table_container_draggable__kIh5Y\",\"element_list\":\"table_element_list__ZVqjf\",\"dragging_over\":\"table_dragging_over__a8KoB\",\"element_wrapper\":\"table_element_wrapper__1Suvv\",\"dragging\":\"table_dragging__uQ4Hd\"};","import React, { memo, useMemo } from 'react';\nimport { noop } from 'utils/commonHelper';\nimport { IFormContext, FormContext } from '../../../models';\nimport { HeaderType } from './Table';\nimport styles from './table.module.scss';\n\ntype Props = {\n\theaders: HeaderType[]\n\tfields: React.ReactElement[]\n\tvalues: any\n}\n\nexport const FooterRow = ({ headers, values, fields }: Props) => {\n\tconst context: IFormContext = useMemo(\n\t\t() => {\n\t\t\treturn {\n\t\t\t\tvalues,\n\t\t\t\terrorsMap: {},\n\t\t\t\tdisabled: true,\n\t\t\t\tonFieldChange: noop,\n\t\t\t\tvalidateField: noop,\n\t\t\t\tregisterValidators: noop\n\t\t\t}\n\t\t},\n\t\t[values]\n\t)\n\n\tconst content = useMemo(\n\t\t() => {\n\t\t\treturn headers.map((header, index) => (\n\t\t\t\t
\n\t\t\t\t\t{values[header.id!] === undefined ? <> : fields[index]}\n\t\t\t\t
\n\t\t\t));\n\t\t},\n\t\t[fields, headers, values]\n\t)\n\n\treturn (\n\t\t\n\t\t\t{content}\n\t\t\n\t);\n};\n\nexport default memo(FooterRow);\n","// extracted by mini-css-extract-plugin\nexport default {\"hidden_no_height\":\"common_hidden_no_height__oXjIV\"};","import { useCallback, useMemo } from 'react';\nimport { ErrorsType, FormContext, IFormContext, ValidatorFunctionType, ValuesType } from 'components/Form/models';\n\nexport type ItemWrapperProps = {\n\tchildren: any\n\tindex: number\n\tvalues: ValuesType\n\terrorsMap: ErrorsType\n\tdisabled?: boolean\n\tonFieldChange(index: number, id: string, va: any): void\n\tregisterValidators(index: number, id: string, validatorFunctions: Array): void\n\tvalidateField(index: number, id: string, value?: any): void\n}\n\nexport const ItemWrapper = (props: ItemWrapperProps) => {\n\tconst { children, index, disabled, values, registerValidators, errorsMap = {}, onFieldChange, validateField } = props;\n\n\tconst registerValidatorsCallback = useCallback(\n\t\t(id: string, validatorFunctions: Array) => registerValidators(index, id, validatorFunctions),\n\t\t[index, registerValidators]\n\t)\n\n\tconst onFieldChangeCallback = useCallback(\n\t\t(id: string, value: any) => {\n\t\t\tonFieldChange(index, id, value);\n\t\t},\n\t\t[index, onFieldChange]\n\t)\n\n\tconst validateFieldCallback = useCallback(\n\t\t(id: string, value?: any) => {\n\t\t\tvalidateField(index, id, value);\n\t\t},\n\t\t[index, validateField]\n\t)\n\n\tconst context: IFormContext = useMemo(\n\t\t() => {\n\t\t\treturn {\n\t\t\t\tvalues,\n\t\t\t\terrorsMap,\n\t\t\t\tdisabled,\n\t\t\t\tonFieldChange: onFieldChangeCallback,\n\t\t\t\tvalidateField: validateFieldCallback,\n\t\t\t\tregisterValidators: registerValidatorsCallback\n\t\t\t}\n\t\t},\n\t\t[values, errorsMap, disabled, validateFieldCallback, onFieldChangeCallback, registerValidatorsCallback]\n\t)\n\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t)\n}\n","import React, { memo, useMemo } from 'react';\nimport { HeaderType } from './Table';\nimport styles from './table.module.scss';\nimport Button from 'components/Button/Button';\nimport commonStyles from 'assets/styles/common.module.scss'\nimport { ErrorsType, globalErrorKey } from 'components/Form/models';\nimport { RowContainer } from 'components/Layout';\nimport { FieldMessage } from 'components/Form/addons';\n\ntype Props = {\n\theaders: HeaderType[]\n\tfields: React.ReactElement[]\n\terrorsMap: ErrorsType\n\tDraggableHandle?: JSX.Element\n\tisAnyRowDeletable: boolean\n\trowIsDeletable: boolean\n\tindex: number\n\tonDelete: (index: number) => void\n}\n\nexport const TableRow = ({ headers, fields, errorsMap, DraggableHandle, isAnyRowDeletable, rowIsDeletable, index, onDelete }: Props) => {\n\tconst content = useMemo(\n\t\t() => {\n\t\t\treturn headers.map((header, index) => (\n\t\t\t\t
\n\t\t\t\t\t{fields[index]}\n\t\t\t\t
\n\t\t\t))\n\t\t},\n\t\t[fields, headers]\n\t)\n\n\treturn (\n\t\t<>\n\t\t\t
\n\t\t\t\t{DraggableHandle}\n\t\t\t\t{content}\n\t\t\t\t{isAnyRowDeletable &&\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t
\n\t\t\t{errorsMap && errorsMap[globalErrorKey] &&\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t}\n\t\t\n\t)\n}\n\nexport default memo(TableRow)\n","import React, { useCallback, useMemo } from 'react';\nimport { Droppable, Draggable } from 'react-beautiful-dnd';\nimport styles from './table.module.scss';\nimport RequiredField from 'components/SmartContainer/RequiredField';\nimport { HamburgerIcon } from 'components/icons/icons';\nimport FooterRow from './FooterRow';\nimport Button from 'components/Button';\nimport { noop } from 'utils/commonHelper';\nimport commonStyles from 'assets/styles/common.module.scss'\nimport { ItemWrapper } from '../wrappers/ItemWrapper';\nimport TableRow from './TableRow';\nimport { ItemsControlCommonProps } from '../wrappers/useItemsField';\nimport { Translation } from 'components/Translations/Translation';\n\nexport type HeaderType = {\n\tlabel: string\n\tsize?: number\n\tisRequired?: boolean\n\tid?: string\n\ttotalCalc?(value: any[], id: string): any\n}\n\nexport type TableProps = ItemsControlCommonProps & {\n\theaders: HeaderType[]\n\tgetRowData(row: any, index: number): { // index: -1 means that is footer total row, container should take care of that itself if it uses index\n\t\tisDeletable: boolean\n\t\tfields: React.ReactElement[]\n\t}\n\tdraggable?: boolean\n\tonReorder?: (newItems: any[]) => void\n\thasTotal?: boolean\n}\n\nexport function Table(props: TableProps) {\n\tconst {\n\t\tvalue = [], onChange,\n\t\terrors = [], registerValidators, validateField, onDelete,\n\t\theaders = [], getRowData,\n\t\tdisabled,\n\t\tdraggable,\n\t\thasTotal,\n\t\tfieldId,\n\t} = props;\n\n const changeCallback = useCallback(\n (index: number, id: string, newValue: any) => {\n\t\t\tonChange && onChange(index, id, newValue);\n\t\t},\n [onChange]\n\t)\n\n\tconst isAnyRowDeletable = useMemo(\n\t\t() => {\n\t\t\tfor (const rowValues of value) {\n\t\t\t\tconst rowData = getRowData(rowValues, 0); // sending 0 as index is not of interest here\n\t\t\t\tif (rowData.isDeletable) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t[value, getRowData]\n\t)\n\n\tconst headerContent = useMemo(\n\t\t() => {\n\t\t\treturn (\n\t\t\t\t
\n\t\t\t\t\t{headers.map((header, index) => (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{header.isRequired &&\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t
\n\t\t\t\t\t))}\n\t\t\t\t\t{isAnyRowDeletable &&\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t)\n\t\t},\n\t\t[headers, isAnyRowDeletable]\n\t)\n\n\tconst rowsContent = useMemo(\n\t\t() => {\n\t\t\treturn value.map((rowValues, index) => {\n\t\t\t\tconst rowData = getRowData(rowValues, index);\n\n\t\t\t\treturn (\n\t\t\t\t\t
\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdraggable ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{(provided, snapshot) => {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\theaders={headers}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfields={rowData.fields}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\terrorsMap={errors[index]}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisAnyRowDeletable={isAnyRowDeletable}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trowIsDeletable={rowData.isDeletable}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonDelete={onDelete}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t})\n\t\t},\n\t\t[value, errors, disabled, draggable, changeCallback, registerValidators, validateField, onDelete, getRowData, headers, isAnyRowDeletable]\n\t)\n\n\tconst footerContent = useMemo(\n\t\t() => {\n\t\t\tif (!hasTotal) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst totalRowValues: any = {}\n\t\t\tfor (let i = 0; i < headers.length; i++) {\n\t\t\t\tconst header = headers[i];\n\t\t\t\tif (header.totalCalc) {\n\t\t\t\t\ttotalRowValues[header.id!] = header.totalCalc(value, header.id!);\n\t\t\t\t} else {\n\t\t\t\t\ttotalRowValues[i] = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst rowData = getRowData(totalRowValues, -1);\n\t\t\tconst fields = rowData.fields;\n\n\t\t\treturn (\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t{isAnyRowDeletable &&\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t)\n\t\t},\n\t\t[hasTotal, value, headers, isAnyRowDeletable, getRowData]\n\t)\n\n\treturn draggable ? (\n\t\t\n\t\t\t{(provided, snapshot) => {\n\t\t\t\treturn (\n\t\t\t\t\t
\n\t\t\t\t\t\t{headerContent}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{rowsContent}\n\t\t\t\t\t\t\t{provided.placeholder}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t{footerContent}\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t}}\n\t\t
\n\t)\n\t: (\n\t\t
\n\t\t\t{headerContent}\n\t\t\t
\n\t\t\t{rowsContent}\n\t\t\t
\n\t\t\t{footerContent}\n\t\t
\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"customItems_container__605ei\",\"item\":\"customItems_item__vcMtV\",\"delete\":\"customItems_delete__A8jEY\"};","import { ErrorsType, globalErrorKey } from \"components/Form/models\";\nimport { FieldMessage } from \"components/Form/addons\";\nimport { RowContainer } from \"components/Layout\";\n\ntype Props = {\n\tvalues: any\n\trenderItem(item: any): any\n\terrorsMap: ErrorsType\n}\n\nexport const CustomItem = ({ values, renderItem, errorsMap }: Props) => {\n\tconst content = renderItem(values);\n\n\treturn (\n\t\t<>\n\t\t\t{content}\n\t\t\t{errorsMap && errorsMap[globalErrorKey] &&\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t}\n\t\t\n\t)\n}\n","import { useCallback, useMemo } from 'react';\nimport styles from './customItems.module.scss';\nimport { ItemWrapper } from '../wrappers/ItemWrapper';\nimport { CustomItem } from './CustomItem';\nimport { ItemsControlCommonProps } from '../wrappers/useItemsField';\nimport Button from 'components/Button/Button';\n\nexport type CustomItemsProps = ItemsControlCommonProps & {\n\trenderItem(item: any): any\n\tuniqueValueKey?: string\n}\n\nexport const CustomItems = (props: CustomItemsProps) => {\n\tconst {\n\t\tvalue = [], onChange,\n\t\terrors = [], registerValidators, validateField, onDelete,\n\t\trenderItem,\n\t\tdisabled,\n\t\tuniqueValueKey\n\t} = props;\n\n const changeCallback = useCallback(\n (index: number, id: string, newValue: any) => {\n\t\t\tonChange && onChange(index, id, newValue);\n\t\t},\n [onChange]\n\t)\n\n\tconst itemsContent = useMemo(\n\t\t() => {\n\t\t\treturn value.map((itemValues, index) => {\n\t\t\t\treturn (\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t)\n\t\t\t})\n\t\t},\n\t\t[value, renderItem, errors, disabled, uniqueValueKey, changeCallback, registerValidators, validateField, onDelete]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t{itemsContent}\n\t\t
\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"textarea_wrapper__O37mG\",\"container\":\"textarea_container__xTZDg\",\"textarea\":\"textarea_textarea__PgGyW\",\"small\":\"textarea_small__9G56G\",\"max_length\":\"textarea_max_length__Ke4z8\",\"explanation\":\"textarea_explanation__r++Vb\"};","import { MaxLength } from '../../addons';\nimport { useCallback } from 'react';\nimport { ControlsCommonProps } from '../../fields';\nimport styles from './textarea.module.scss';\nimport { InfoPopup, POSITION } from 'components/Popup';\n\nexport type TextareaProps = ControlsCommonProps & {\n\tplaceholder?: string\n\texplanation?: string\n\trows?: number\n\tmaxLength?: number\n\thideMaxLength?: boolean\n\tfocus?: boolean\n}\n\nexport const Textarea = ({ value, onChange, onBlur, disabled, placeholder, explanation, rows = 5, maxLength = 240, hideMaxLength, focus }: TextareaProps) => {\n\tconst onChangeCallback = useCallback(\n\t\t(e) => onChange && onChange(e.target.value),\n\t\t[onChange]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t{/* max length */}\n\t\t\t\t{!hideMaxLength && maxLength &&\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t
\n\t\t\t{/* explanation */}\n\t\t\t{explanation &&\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t}\n\t\t
\n\t)\n}\n","import { convertTicksToTime, convertTimeToTicks } from \"utils/dateTimeUtils\";\nimport { SelectionType } from \"../Input/Input\";\nimport { MeridiemTimeEnum } from \"utils/MeridiemTimeEnum\";\n\nexport enum SelectionEnum {\n\tHours = 'hours',\n\tMinutes = 'minutes',\n\tAmPm = 'amPm'\n}\n\nexport const selectionOrder12h = [SelectionEnum.Hours, SelectionEnum.Minutes, SelectionEnum.AmPm];\nexport const selectionOrder24h = [SelectionEnum.Hours, SelectionEnum.Minutes];\n\nexport type TimeValues = {\n\thours?: number\n\tminutes?: number\n\tamPm?: MeridiemTimeEnum | undefined\n}\n\nexport type TimeValuesString = {\n\thours: string\n\tminutes: string\n\tamPm: string\n}\n\nexport const toggleAmPm = (values: TimeValues) => {\n\tlet amPm = values.amPm;\n\tif (amPm === undefined || amPm === MeridiemTimeEnum.PM) {\n\t\tamPm = MeridiemTimeEnum.AM;\n\t} else {\n\t\tamPm = MeridiemTimeEnum.PM;\n\t}\n\treturn {\n\t\t...values,\n\t\tamPm\n\t}\n}\n\n/** Increase value in selection (for example: increase hours if selection is hours) */\nexport const increaseSelection = (values: TimeValues, selection: SelectionEnum | undefined, isDuration: boolean, is24h: boolean): TimeValues => {\n\tswitch (selection) {\n\t\tcase SelectionEnum.Hours: {\n\t\t\tlet hours = values.hours;\n\t\t\tif (isDuration) {\n\t\t\t\tif (hours === undefined || hours === 99) {\n\t\t\t\t\thours = 0;\n\t\t\t\t} else {\n\t\t\t\t\thours++;\n\t\t\t\t}\n\t\t\t} else if (is24h) {\n\t\t\t\tif (hours === undefined || hours === 23) {\n\t\t\t\t\thours = 0;\n\t\t\t\t} else {\n\t\t\t\t\thours++;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (hours === undefined || hours === 11) {\n\t\t\t\t\thours = 0;\n\t\t\t\t} else if (hours === 23) {\n\t\t\t\t\thours = 12;\n\t\t\t\t} else {\n\t\t\t\t\thours++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...values,\n\t\t\t\thours\n\t\t\t}\n\t\t}\n\t\tcase SelectionEnum.Minutes:\n\t\t\tlet minutes = values.minutes;\n\t\t\tif (minutes === undefined || minutes === 59) {\n\t\t\t\tminutes = 0;\n\t\t\t} else {\n\t\t\t\tminutes++;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...values,\n\t\t\t\tminutes\n\t\t\t}\n\t\tcase SelectionEnum.AmPm:\n\t\t\treturn toggleAmPm(values);\n\t\tdefault:\n\t\t\treturn values;\n\t}\n}\n\n/** Decrease value in selection (for example: decrease hours if selection is hours) */\nexport const decreaseSelection = (values: TimeValues, selection: SelectionEnum | undefined, isDuration: boolean, is24h: boolean): TimeValues => {\n\tswitch (selection) {\n\t\tcase SelectionEnum.Hours: {\n\t\t\tlet hours = values.hours;\n\t\t\tif (isDuration) {\n\t\t\t\tif (hours === undefined || hours === 0) {\n\t\t\t\t\thours = 99;\n\t\t\t\t} else {\n\t\t\t\t\thours--;\n\t\t\t\t}\n\t\t\t} else if (is24h) {\n\t\t\t\tif (hours === undefined || hours === 0) {\n\t\t\t\t\thours = 23;\n\t\t\t\t} else {\n\t\t\t\t\thours--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (hours === undefined || hours === 0) {\n\t\t\t\t\thours = 11;\n\t\t\t\t} else if (hours === 12) {\n\t\t\t\t\thours = 23;\n\t\t\t\t} else {\n\t\t\t\t\thours--;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...values,\n\t\t\t\thours\n\t\t\t}\n\t\t}\n\t\tcase SelectionEnum.Minutes:\n\t\t\tlet minutes = values.minutes;\n\t\t\tif (minutes === undefined || minutes === 0) {\n\t\t\t\tminutes = 59;\n\t\t\t} else {\n\t\t\t\tminutes--;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...values,\n\t\t\t\tminutes\n\t\t\t}\n\t\tcase SelectionEnum.AmPm:\n\t\t\treturn toggleAmPm(values);\n\t\tdefault:\n\t\t\treturn values;\n\t}\n}\n\nexport const convertToTicks = (values: TimeValues) => {\n\tif (values.hours === undefined || values.minutes === undefined) {\n\t\treturn undefined;\n\t}\n\n\tconst hours = values.amPm === MeridiemTimeEnum.PM ? values.hours + 12 : values.hours;\n\n\treturn convertTimeToTicks(hours, values.minutes);\n}\n\nexport const convertToTime = (ticks: number | undefined, is24h: boolean): TimeValues => {\n\tif (ticks === undefined) {\n\t\treturn {\n\t\t\thours: undefined,\n\t\t\tminutes: undefined,\n\t\t\tamPm: undefined\n\t\t}\n\t}\n\n\tlet { hours, minutes } = convertTicksToTime(ticks);\n\n\tif (is24h) {\n\t\treturn { hours, minutes };\n\t} else {\n\t\tconst amPm = Math.floor(hours / 12) === 0 ? MeridiemTimeEnum.AM : MeridiemTimeEnum.PM;\n\t\thours = hours % 12;\n\t\treturn { hours, minutes, amPm };\n\t}\n}\n\nexport const changeSelection = (selection: SelectionEnum | undefined, selectionOrder: SelectionEnum[], toTheRight: boolean) => {\n\tif (selection === undefined) {\n\t\treturn SelectionEnum.Hours;\n\t}\n\n\tlet index = selectionOrder.indexOf(selection);\n\tindex = toTheRight ? index + 1 : index - 1;\n\n\tif (index < 0) {\n\t\tindex = selectionOrder.length - 1;\n\t}\n\n\tif (index >= selectionOrder.length) {\n\t\tindex = 0;\n\t}\n\n\treturn selectionOrder[index];\n}\n\nexport const getInputSelection = (selectionEnum: SelectionEnum | undefined): SelectionType => {\n\tswitch (selectionEnum) {\n\t\tcase SelectionEnum.Minutes:\n\t\t\treturn { start: 3, end: 5 }\n\t\tcase SelectionEnum.AmPm:\n\t\t\treturn { start: 6, end: 8 }\n\t\tcase SelectionEnum.Hours:\n\t\t\treturn { start: 0, end: 2 }\n\t\tdefault:\n\t\t\treturn { start: 0, end: 0 };\n\t}\n}\n\nexport const getSelectionEnum = (inputSelectionStart: number | null) => {\n\tswitch (inputSelectionStart) {\n\t\tcase 3:\n\t\tcase 4:\n\t\tcase 5:\n\t\t\treturn SelectionEnum.Minutes;\n\t\tcase 6:\n\t\tcase 7:\n\t\t\treturn SelectionEnum.AmPm;\n\t\tdefault:\n\t\t\treturn SelectionEnum.Hours;\n\t}\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"timePicker_container__T2zU6\",\"icon\":\"timePicker_icon__HJtCM\"};","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { ClockIcon } from 'components/icons/icons';\nimport { OverlaySpinner } from 'components/Spinner';\nimport { Input, SelectionType } from '..';\nimport { ControlsCommonProps } from '../../fields';\nimport { changeSelection, convertToTicks, convertToTime, decreaseSelection, getInputSelection, getSelectionEnum, increaseSelection, SelectionEnum, selectionOrder12h, selectionOrder24h, TimeValues, TimeValuesString } from './helper';\nimport styles from './timePicker.module.scss';\nimport { MeridiemTimeEnum } from 'utils/MeridiemTimeEnum';\n\nexport type TimePickerProps = ControlsCommonProps & {\n\tsize?: 'medium' | 'small'\n\tfocus?: boolean\n\tloading?: boolean\n\tisDuration?: boolean\n}\n\nconst defaultTimeValuesString = { hours: '--', minutes: '--', amPm: '--' };\n\nexport const TimePicker = ({ value, onChange, disabled, onBlur, size = 'medium', focus = false, loading, isDuration = false }: TimePickerProps) => {\n\tconst [timeValues, setTimeValues] = useState({});\n\tconst [timeValuesString, setTimeValuesString] = useState(defaultTimeValuesString);\n\tconst [selectionEnum, setSelectionEnum] = useState();\n\n\tconst is24h = isDuration; // || hour24 // TODO: proveriti i lokalizaciju\n\tconst selectionOrder = is24h ? selectionOrder24h : selectionOrder12h;\n\n\tconst inputSelection: SelectionType = useMemo(\n\t\t() => getInputSelection(selectionEnum),\n\t\t[selectionEnum]\n\t)\n\n\tconst onBlurCallback = useCallback(\n\t\t() => {\n\t\t\tsetSelectionEnum(undefined);\n\t\t\t// if some selection is \"change in progress\", for example we have 10:1- AM. we want to reset that\n\t\t\tsetTimeValuesString(defaultTimeValuesString);\n\t\t\t// if some selection is deleted, for example we have 10:-- AM we want to reset that to value\n\t\t\tconst values = convertToTime(value, is24h);\n\t\t\tsetTimeValues(values);\n\t\t\tonBlur?.();\n\t\t},\n\t\t[is24h, onBlur, value]\n\t)\n\n\tconst inputValue = useMemo(\n\t\t() => {\n\t\t\tlet minutes = timeValuesString.minutes;\n\t\t\tif (timeValues.minutes !== undefined) {\n\t\t\t\tminutes = String(timeValues.minutes).padStart(2, '0');\n\t\t\t}\n\n\t\t\tlet hours = timeValuesString.hours;\n\t\t\tif (timeValues.hours !== undefined) {\n\t\t\t\thours = String(timeValues.hours).padStart(2, '0');\n\t\t\t}\n\n\t\t\tlet amPm = is24h ? '' : ` ${timeValuesString.amPm}`;\n\t\t\tif (timeValues.amPm !== undefined) {\n\t\t\t\tamPm = timeValues.amPm === MeridiemTimeEnum.AM ? ' AM' : ' PM';\n\t\t\t}\n\n\t\t\treturn `${hours}:${minutes}${amPm}`\n\t\t},\n\t\t[is24h, timeValues.amPm, timeValues.hours, timeValues.minutes, timeValuesString.amPm, timeValuesString.hours, timeValuesString.minutes]\n\t)\n\n\tuseEffect(\n\t\t() => {\n\t\t\tconst values = convertToTime(value, is24h);\n\t\t\tsetTimeValues(values);\n\t\t\tsetTimeValuesString(defaultTimeValuesString);\n\t\t},\n\t\t[is24h, value]\n\t)\n\n\tconst onChangeCallback = useCallback(\n\t\t(newValue: string | undefined) => {\n\t\t\tif (newValue === undefined || newValue === '') {\n\t\t\t\tonChange?.(undefined);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst newTimeValues: TimeValues = { ...timeValues };\n\t\t\tconst newTimeValuesString: TimeValuesString = { ...timeValuesString };\n\n\t\t\tswitch (selectionEnum) {\n\t\t\t\tcase SelectionEnum.Hours: {\n\t\t\t\t\tconst enteredChar = newValue[0];\n\t\t\t\t\tconst firstChar = timeValuesString.hours[0];\n\n\t\t\t\t\tif (firstChar === '-') {\n\t\t\t\t\t\tnewTimeValues.hours = undefined;\n\t\t\t\t\t\tnewTimeValuesString.hours = `${enteredChar}-`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst hours = parseInt(`${firstChar}${enteredChar}`);\n\t\t\t\t\t\tif (isDuration) {\n\t\t\t\t\t\t\tnewTimeValues.hours = Math.min(hours, 99);\n\t\t\t\t\t\t} else if (is24h) {\n\t\t\t\t\t\t\tnewTimeValues.hours = Math.min(hours, 23);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnewTimeValues.hours = Math.min(hours, 11);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewTimeValuesString.hours = '--';\n\t\t\t\t\t\tconst newSelection = changeSelection(selectionEnum, selectionOrder, true);\n\t\t\t\t\t\tsetSelectionEnum(newSelection);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase SelectionEnum.Minutes: {\n\t\t\t\t\tconst enteredChar = newValue[3];\n\t\t\t\t\tconst firstChar = timeValuesString.minutes[0];\n\n\t\t\t\t\tif (firstChar === '-') {\n\t\t\t\t\t\tnewTimeValues.minutes = undefined;\n\t\t\t\t\t\tnewTimeValuesString.minutes = `${enteredChar}-`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst minutes = parseInt(`${firstChar}${enteredChar}`);\n\t\t\t\t\t\tnewTimeValues.minutes = Math.min(minutes, 59);\n\t\t\t\t\t\tnewTimeValuesString.minutes = '--';\n\t\t\t\t\t\tconst newSelection = changeSelection(selectionEnum, selectionOrder, true);\n\t\t\t\t\t\tsetSelectionEnum(newSelection);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase SelectionEnum.AmPm: {\n\t\t\t\t\tconst enteredChar = newValue[6];\n\t\t\t\t\tconst isPm = enteredChar === 'p' || enteredChar === 'P';\n\t\t\t\t\tnewTimeValues.amPm = isPm ? MeridiemTimeEnum.PM : MeridiemTimeEnum.AM;\n\n\t\t\t\t\tconst newSelection = changeSelection(selectionEnum, selectionOrder, true);\n\t\t\t\t\tsetSelectionEnum(newSelection);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst ticks = convertToTicks(newTimeValues);\n\t\t\tif (ticks !== undefined && ticks !== value) {\n\t\t\t\tonChange?.(ticks);\n\t\t\t} else {\n\t\t\t\tsetTimeValues(newTimeValues);\n\t\t\t\tsetTimeValuesString(newTimeValuesString);\n\t\t\t}\n\t\t},\n\t\t[is24h, isDuration, onChange, selectionEnum, selectionOrder, timeValues, timeValuesString, value]\n\t)\n\n\tconst handleClickCallback = useCallback(\n\t\t(e: React.MouseEvent) => {\n\t\t\tconst newSelectionEnum = getSelectionEnum(e.currentTarget.selectionStart);\n\t\t\tsetSelectionEnum((state) => state === undefined ? SelectionEnum.Hours : newSelectionEnum);\n\t\t\tsetTimeValuesString(defaultTimeValuesString);\n\t\t},\n\t\t[]\n\t)\n\n\t// handle keyboard arrows\n\tconst handleKeyDownCallback = useCallback(\n\t\t(eventKey: string, e: React.KeyboardEvent) => {\n\t\t\tswitch (eventKey) {\n\t\t\t\tcase 'ArrowUp': {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tconst newValues = increaseSelection(timeValues, selectionEnum, isDuration, is24h);\n\t\t\t\t\tconst ticks = convertToTicks(newValues);\n\t\t\t\t\tif (ticks === undefined) {\n\t\t\t\t\t\tsetTimeValues(newValues);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tonChange?.(ticks);\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase 'ArrowDown': {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tconst newValues = decreaseSelection(timeValues, selectionEnum, isDuration, is24h);\n\t\t\t\t\tconst ticks = convertToTicks(newValues);\n\t\t\t\t\tif (ticks === undefined) {\n\t\t\t\t\t\tsetTimeValues(newValues);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tonChange?.(ticks);\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tcase 'ArrowRight': {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tconst newSelection = changeSelection(selectionEnum, selectionOrder, true);\n\t\t\t\t\tsetSelectionEnum(newSelection);\n\t\t\t\t\tsetTimeValuesString(defaultTimeValuesString);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase 'ArrowLeft': {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tconst newSelection = changeSelection(selectionEnum, selectionOrder, false);\n\t\t\t\t\tsetSelectionEnum(newSelection);\n\t\t\t\t\tsetTimeValuesString(defaultTimeValuesString);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tcase 'Delete':\n\t\t\t\tcase 'Backspace': {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tconst { selectionStart, selectionEnd } = e.currentTarget;\n\t\t\t\t\t// here we suppose that everything is selected, so we delete value\n\t\t\t\t\tif (selectionStart === 0 && selectionEnd && selectionEnd > 2) {\n\t\t\t\t\t\tonChange?.(undefined);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tswitch (selectionEnum) {\n\t\t\t\t\t\tcase SelectionEnum.Hours:\n\t\t\t\t\t\t\tsetTimeValues((state) => ({\n\t\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t\thours: undefined\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\tsetTimeValuesString((state) => ({\n\t\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t\thours: '--'\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase SelectionEnum.Minutes:\n\t\t\t\t\t\t\tsetTimeValues((state) => ({\n\t\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t\tminutes: undefined\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\tsetTimeValuesString((state) => ({\n\t\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t\tminutes: '--'\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase SelectionEnum.AmPm:\n\t\t\t\t\t\t\tsetTimeValues((state) => ({\n\t\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t\tamPm: undefined\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\tsetTimeValuesString((state) => ({\n\t\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t\tamPm: '--'\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tcase '0':\n\t\t\t\tcase '1':\n\t\t\t\tcase '2':\n\t\t\t\tcase '3':\n\t\t\t\tcase '4':\n\t\t\t\tcase '5':\n\t\t\t\tcase '6':\n\t\t\t\tcase '7':\n\t\t\t\tcase '8':\n\t\t\t\tcase '9':\n\t\t\t\t\tif (selectionEnum === SelectionEnum.AmPm) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\tcase 'a':\n\t\t\t\tcase 'A':\n\t\t\t\t\tif (selectionEnum === SelectionEnum.AmPm || e.ctrlKey) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} else {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\tcase 'p':\n\t\t\t\tcase 'P':\n\t\t\t\t\tif (selectionEnum !== SelectionEnum.AmPm) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\tcase 'Tab':\n\t\t\t\t\t// we want to keep tab to switch focus\n\t\t\t\t\treturn;\n\t\t\t\tdefault:\n\t\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t},\n\t\t[selectionEnum, timeValues, isDuration, is24h, onChange, selectionOrder]\n\t)\n\n\tconst handleKeyUpCallback = useCallback(\n\t\t(eventKey: string) => {\n\t\t\tswitch (eventKey) {\n\t\t\t\tcase 'Tab': {\n\t\t\t\t\tsetSelectionEnum(SelectionEnum.Hours);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t{/* loading */}\n\t\t\t{loading && }\n\t\t
\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper_editor\":\"textEditor_wrapper_editor__SxIHw\",\"small\":\"textEditor_small__7uSxf\",\"disabled\":\"textEditor_disabled__ggg7O\",\"toolbar\":\"textEditor_toolbar__27lOY\",\"editor\":\"textEditor_editor__laBK8\"};","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { Editor } from \"react-draft-wysiwyg\";\nimport draftToHtml from 'draftjs-to-html';\nimport { EditorState, convertToRaw, ContentState } from 'draft-js';\nimport htmlToDraft from 'html-to-draftjs';\nimport \"react-draft-wysiwyg/dist/react-draft-wysiwyg.css\";\nimport { ControlsCommonProps } from \"components/Form/fields\";\nimport './assets/icomoon/style.css';\nimport styles from './textEditor.module.scss'\n\nexport const textEditorId = 'textEditorId';\n\n// TextEditor (like Textarea) accepts Enter as a character,\n// so this method is used in Form to prevent auto save of the form via Enter key\nexport const isTextEditorHit = (target: HTMLElement) => {\n\treturn !!target.closest(`#${textEditorId}`);\n}\n\nconst initialEditorState = (value: string | undefined) => {\n\tif (value) {\n\t\tconst contentBlock = htmlToDraft(value);\n\n\t\tif (contentBlock) {\n\t\t\tconst contentState = ContentState.createFromBlockArray(contentBlock.contentBlocks);\n\t\t\tconst editorState = EditorState.createWithContent(contentState);\n\t\t\treturn editorState;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport type TextEditorProps = ControlsCommonProps\n\nexport const TextEditor = ({ value, onChange, onBlur, disabled }: TextEditorProps) => {\n\tconst [editorState, setEditorState] = useState(() => initialEditorState(value));\n\n\tconst onEditorStateChange = useCallback(\n\t\t(newEditorState) => {\n\t\t\tconst html = draftToHtml(convertToRaw(newEditorState.getCurrentContent()));\n\t\t\tonChange && onChange(html)\n\t\t\tsetEditorState(newEditorState)\n\t\t},\n\t\t[onChange]\n\t);\n\n\tuseEffect(\n\t\t() => {\n\t\t\tif (value === undefined) {\n\t\t\t\tsetEditorState(EditorState.createEmpty());\n\t\t\t}\n\t\t},\n\t\t[value]\n\t)\n\n\tconst customToolbar = useMemo(\n\t\t() => {\n\t\t\treturn {\n\t\t\t\toptions: ['inline', 'textAlign', 'list', 'emoji', 'link'],\n\t\t\t\tinline: {\n\t\t\t\t\toptions: ['bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript'],\n\t\t\t\t\t// className: styles.inline,\n\t\t\t\t\tbold: { icon: '', className: 'text_editor_bold' },\n\t\t\t\t\titalic: { icon: '', className: 'text_editor_italic' },\n\t\t\t\t\tunderline: { icon: '', className: 'text_editor_underline' },\n\t\t\t\t\tstrikethrough: { icon: '', className: 'text_editor_strikethrought' },\n\t\t\t\t\tsuperscript: { icon: '', className: 'text_editor_superscript' },\n\t\t\t\t\tsubscript: { icon: '', className: 'text_editor_subscript' }\n\t\t\t\t},\n\t\t\t\ttextAlign: {\n\t\t\t\t\t// className: styles.textAlign,\n\t\t\t\t\tleft: { icon: '', className: 'text_editor_alignLeft'},\n\t\t\t\t\tcenter: { icon: '', className: 'text_editor_alignMiddle' },\n\t\t\t\t\tright: { icon: '', className: 'text_editor_alignRight' },\n\t\t\t\t\tjustify: { icon: '', className: 'text_editor_justify' }\n\t\t\t\t},\n\t\t\t\tlist: {\n\t\t\t\t\t// className: styles.list,\n\t\t\t\t\tunordered: { icon: '', className: 'text_editor_unordered' },\n\t\t\t\t\tordered: { icon: '', className: 'text_editor_ordered' },\n\t\t\t\t\tindent: { icon: '', className: 'text_editor_indent' },\n\t\t\t\t\toutdent: { icon: '', className: 'text_editor_outdent' }\n\t\t\t\t},\n\t\t\t\temoji: {\n\t\t\t\t\ticon: '',\n\t\t\t\t\tclassName: 'text_editor_emoji',\n\t\t\t\t},\n\t\t\t\t// disabled images in text editor\n\t\t\t\t// images are saved as base64 as content and loading is too slow\n\t\t\t\t// TODO: consider to save image to storage and create link\n\t\t\t\t// image: {\n\t\t\t\t// \ticon: '',\n\t\t\t\t// \tclassName: 'text_editor_image',\n\t\t\t\t// \tuploadCallback: imageUploadCallback,\n\t\t\t\t// \tpreviewImage: true,\n\t\t\t\t// },\n\t\t\t\tlink: {\n\t\t\t\t\toptions: ['link'],\n\t\t\t\t\tlink: { icon: '', className: 'text_editor_link' },\n\t\t\t\t\tdefaultTargetOption: '_blank',\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[]\n\t)\n\n\tconst classNameWrapper = `${styles.wrapper_editor} ${disabled ? styles.disabled : ''}`;\n\tconst classNameEditor = `${styles.editor} ${disabled ? styles.disabled : ''}`;;\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t
\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"semaphore_wrapper__+MZYc\",\"semaphore_item\":\"semaphore_semaphore_item__gmHzP\",\"small\":\"semaphore_small__SakMj\",\"disabled\":\"semaphore_disabled__kR++h\",\"selected\":\"semaphore_selected__feBUj\",\"explanation\":\"semaphore_explanation__+OqhR\",\"explanation_item\":\"semaphore_explanation_item__yR3QF\",\"circle\":\"semaphore_circle__w+WU4\",\"tooltip\":\"semaphore_tooltip__Ct3BB\",\"arrow\":\"semaphore_arrow__JxVe2\"};","import { useCallback, useState } from 'react'\nimport styles from './semaphore.module.scss'\n// TODO: it shouldn't import anything from Table, when Tooltip component is refactored this should be fixed\nimport { defaultTooltipState } from 'components/Table/BaseTable/Body/Cell'\n\nexport type SemaphoreItemType = {\n\tid: string | number | boolean\n\tcolor: string\n\ttext?: string\n\texplanation?: string\n}\n\ntype Props = SemaphoreItemType & {\n\tisSelected?: boolean\n\tonClick?(id?: string | number | boolean): void\n\tdisabled?: boolean\n}\n\nexport const SemaphoreItem = ({ id, color, text, isSelected, onClick, disabled }: Props) => {\n\tconst [tooltipState, setTooltipState] = useState(defaultTooltipState);\n\n\tconst handleItemChange = useCallback(\n\t\t() => {\n\t\t\tonClick && onClick(isSelected ? undefined : id);\n\t\t},\n\t\t[id, isSelected, onClick]\n\t)\n\n\tconst handleMouseOver = useCallback(\n\t\t(e: React.MouseEvent) => {\n\t\t\tconst { top, left, width, height } = e.currentTarget.getBoundingClientRect();\n\t\t\tconst tooltipY = top - height - 12;\n\t\t\tconst tooltipX = left + width / 2;\n\n\t\t\tsetTooltipState({\n\t\t\t\tvisible: true,\n\t\t\t\tposition: { x: tooltipX, y: tooltipY }\n\t\t\t});\n\t\t},\n\t\t[]\n\t)\n\n\tconst handleMouseLeave = useCallback(\n\t\t() => setTooltipState(defaultTooltipState),\n\t\t[]\n\t)\n\n\tconst className = `${styles.semaphore_item} ${disabled ? styles.disabled : ''} ${isSelected ? styles.selected : ''}`\n\n\treturn (\n\t\t\n\t\t\t{tooltipState.visible && text &&\n\t\t\t\t\n\t\t\t\t\t{text}\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t}\n\t\t\n\t);\n}\n","import { ControlsCommonProps } from \"components/Form/fields\";\nimport { useMemo } from \"react\";\nimport { SemaphoreItem, SemaphoreItemType } from \"./SemaphoreItem\";\nimport styles from './semaphore.module.scss'\nimport { Popup, POSITION } from \"components/Popup\";\nimport { InfoSquaredIcon } from \"components/icons/icons\";\nimport { Translation } from \"components/Translations/Translation\";\n\nexport type SemaphoreProps = ControlsCommonProps & {\n\tcolors?: SemaphoreItemType[]\n\twithExplanation?: boolean\n}\n\nexport const Semaphore = ({ colors, value, onChange, disabled, withExplanation }: SemaphoreProps) => {\n\tconst itemContent = useMemo(\n\t\t() => {\n\t\t\treturn colors?.map((item) => {\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t})\n\t\t},\n\t\t[colors, value, onChange, disabled]\n\t);\n\n\tconst explanationMemo = useMemo(\n\t\t() => {\n\t\t\treturn colors?.map((item) => {\n\t\t\t\treturn (\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t)\n\t\t\t})\n\t\t},\n\t\t[colors]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t{itemContent}\n\n\t\t\t{withExplanation &&\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t}\n\t\t
\n\t)\n}\n","import { ValidatorFunctionType } from \"./models\";\n\nexport const isRequiredValidator: ValidatorFunctionType = (value: any) => {\n\tif (value === null || value === undefined || value === ''\n\t\t|| (value instanceof Map && value.size === 0)\n\t\t|| (value instanceof Set && value.size === 0)\n\t\t|| (value instanceof Array && value.length === 0)\n\t) {\n\t\treturn {\n\t\t\tmessage: 'i18n.validator.required'\n\t\t}\n\t} else {\n\t\treturn undefined;\n\t}\n}\n\nexport const isEmailValidator = (value: string) => {\n\tif (!value) {\n\t\treturn undefined;\n\t}\n\n\tconst regex = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n\tif (!regex.test(value)) {\n\t\treturn {\n\t\t\tmessage: 'i18n.validator.invalidEmail'\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nexport const isLinkValidator = (value: string) => {\n\tif (!value) {\n\t\treturn undefined;\n\t}\n\n\tconst regex = /([a-zA-Z]{3,5}:\\/\\/|www\\.)[-a-zA-Z0-9@:%_\\\\+.~#?*&//=]+/gi;\n\n\tif (!regex.test(value)) {\n\t\treturn {\n\t\t\tmessage: 'i18n.validator.invalidLink'\n\t\t}\n\t}\n\n\treturn undefined;\n}\n","import { useContext, useCallback, useEffect, useMemo } from 'react';\nimport { Subtract } from 'utility-types';\nimport { SmartFormGroup } from 'components/SmartContainer/SmartContainer';\nimport { FieldMessage } from '../addons/FieldMessage/FieldMessage';\nimport { ErrorType, FormContext, IFormContext, ValidatorFunctionType } from '../models';\nimport { InputProps, SelectProps } from '../controls';\nimport { isRequiredValidator, isEmailValidator } from '../validators';\n\n// function should return object with dependant fields values { dependantField1: value1, dependantField2: value2 }\nexport type UpdateDependantsFunctionType = (newValue: any, oldValues: any) => any;\n\nexport type ControlsCommonProps

= {\n\tvalue?: P\n\tonChange?(value?: P): void\n\tonBlur?(): void\n\tdisabled?: boolean\n}\n\nexport type FieldProps = {\n\tid: string\n\tlabel?: string\n\tisRequired?: boolean\n\tisEmail?: boolean\n\tvalidator?: ValidatorFunctionType\n\tupdateDependants?: UpdateDependantsFunctionType\n\tdisabled?: boolean\n\tinline?: boolean\n\tmultiline?: boolean\n\tsize?: 'small' | 'medium'\n}\n\ntype Props = FieldProps & Subtract<(SelectProps | InputProps), ControlsCommonProps> & {\n\tControl: any\n}\n\nexport const Field = ({ id, label, isRequired, isEmail, validator, updateDependants, disabled, inline, multiline, size, Control, ...rest }: Props) => {\n\tconst context = useContext(FormContext);\n\tconst registerValidatorsInContext = context.registerValidators; // eslint is complaining (in useEffect dependencies) when using context.registerValidators\n\n\t// register validators in FormContext, so Form has access to it\n\tuseEffect(\n\t\t() => {\n\t\t\tlet validatorsToRegister: ValidatorFunctionType[] = []\n\t\t\tisRequired && validatorsToRegister.push(isRequiredValidator);\n\t\t\tisEmail && validatorsToRegister.push(isEmailValidator);\n\t\t\tvalidator && validatorsToRegister.push(validator);\n\n\t\t\tregisterValidatorsInContext && registerValidatorsInContext(id, validatorsToRegister)\n\t\t\treturn () => {\n\t\t\t\tregisterValidatorsInContext && registerValidatorsInContext(id, [])\n\t\t\t}\n\t\t},\n\t\t[id, validator, isRequired, isEmail, registerValidatorsInContext]\n\t)\n\n\tconst onChangeCallback = useCallback(\n\t\t(value) => {\n\t\t\tconst dependantValues = updateDependants && updateDependants(value, context.values);\n\t\t\tcontext.onFieldChange && context.onFieldChange(id, value, dependantValues);\n\t\t},\n\t\t[id, context, updateDependants]\n\t)\n\n\tconst onBlurCallback = useCallback(\n\t\t() => context.validateField && context.validateField(id),\n\t\t[id, context]\n\t)\n\n\tconst controlContent = useMemo(\n\t\t() => (\n\t\t\t\n\t\t),\n\t\t[context.disabled, context.values, onChangeCallback, onBlurCallback, disabled, id, size, rest, Control]\n\t)\n\n\t// Field always has ErrorType in errorsMap, so casting error as ErrorType\n\tconst content = useMemo(\n\t\t() => {\n\t\t\tif (inline) {\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{controlContent}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t\t\t{controlContent}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\t\t[inline, controlContent, label, isRequired, id, context.errorsMap, multiline, size]\n\t)\n\n\treturn (\n\t\t<>{content}\n\t)\n}\n","import { Subtract } from 'utility-types';\nimport { Field, ControlsCommonProps, FieldProps } from './Field';\nimport { Attachment, AttachmentProps } from '../controls';\nimport { InsertAttachmentRequest } from 'services/tenantManagementService';\n\nexport const AttachmentField = (props: Subtract> & FieldProps) => {\n\treturn (\n\t\t\n\t)\n}\n","import { Subtract } from 'utility-types';\nimport { AutoComplete, AutoCompleteProps } from '../controls';\nimport { Field, FieldProps, ControlsCommonProps } from './Field';\n\nexport const AutoCompleteField = (props: Subtract> & FieldProps) => {\n\treturn (\n\t\t\n\t)\n}\n","import { Subtract } from 'utility-types';\nimport { Field, ControlsCommonProps, FieldProps } from './Field';\nimport { Checkbox, CheckboxProps } from '../controls';\n\nexport const CheckboxField = (props: Subtract> & FieldProps) => {\n\treturn (\n\t\t\n\t)\n}\n","import { Subtract } from 'utility-types';\nimport { SimpleColorPicker, SimpleColorPickerProps } from '../controls';\nimport { Field, ControlsCommonProps, FieldProps } from './Field';\n\nexport const ColorField = (props: Subtract> & FieldProps) => {\n\treturn (\n\t\t\n\t)\n}\n","import { Subtract } from 'utility-types';\nimport { DatePicker, DatePickerProps } from '../controls';\nimport { Field, ControlsCommonProps, FieldProps } from './Field';\n\nexport const DateField = (props: Subtract> & FieldProps) => {\n\treturn (\n\t\t\n\t)\n}\n","import { InsertAttachmentRequest } from 'services/tenantManagementService';\nimport { Subtract } from 'utility-types';\nimport { FileInput, FileInputProps } from '../controls';\nimport { Field, ControlsCommonProps, FieldProps } from './Field';\n\nexport const FileInputField = (props: Subtract> & FieldProps) => {\n\treturn (\n\t\t\n\t)\n}\n","import { Subtract } from 'utility-types';\nimport { Input, InputProps } from '../controls';\nimport { Field, ControlsCommonProps, FieldProps } from './Field';\n\nexport const InputField = (props: Subtract> & FieldProps) => {\n\treturn (\n\t\t\n\t)\n\t}\n","import { Subtract } from 'utility-types';\nimport { InputNumber, InputNumberProps } from '../controls';\nimport { Field, ControlsCommonProps, FieldProps } from './Field';\n\nexport const InputNumberField = (props: Subtract> & FieldProps) => {\n\treturn (\n\t\t\n\t)\n}\n","import { ValidatorFunctionType } from 'components/Form/models';\nimport { useReducer } from 'react';\n\nexport const ADD_VALIDATOR_TYPE = 'ADD_VALIDATOR';\n\ntype ActionType = {\n\ttype: string\n\tindex: number\n\tid: string\n\tvalidatorFunctions: ValidatorFunctionType[]\n}\n\ntype StateType = Array<{\n\t[fieldName: string]: ValidatorFunctionType[]\n}>\n\nconst initialState: StateType = [];\n\nfunction registeredValidatorsReducer(state: StateType, action: ActionType): StateType {\n\tswitch (action.type) {\n\t\tcase ADD_VALIDATOR_TYPE:\n\t\t\tconst oldItemValidators = state[action.index] || {};\n\t\t\tconst newItemValidators = {\n\t\t\t\t...oldItemValidators,\n\t\t\t\t[action.id]: action.validatorFunctions\n\t\t\t}\n\n\t\t\tconst newState = [...state];\n\t\t\tnewState[action.index] = newItemValidators;\n\n\t\t\treturn newState;\n\t\tdefault:\n\t\t\treturn state;\n\t}\n}\n\nexport const useItemsRegisteredValidatorsReducer = (): [StateType, React.Dispatch] => {\n\treturn useReducer(registeredValidatorsReducer, initialState);\n}\n","import { ErrorsType, globalErrorKey } from \"../../../models\";\n\nexport const isUniqueFieldNameValidator = (fieldName: string, label: string, values: Array): ErrorsType[] | undefined => {\n\tconst fieldValues = values.map(value => value[fieldName]);\n\tconst duplicates = fieldValues.filter((value, index: number) => fieldValues.indexOf(value) !== index);\n\tif (duplicates.length > 0) {\n\t\tconst errors: ErrorsType[] = [];\n\t\terrors[values.length - 1] = { [globalErrorKey]: {\n\t\t\tmessage: 'i18n.validator.unique',\n\t\t\ti18nArgs: [label]\n\t\t}}\n\t\treturn errors;\n\t}\n\treturn undefined;\n}\n","import { useCallback, useContext, useEffect } from 'react';\nimport { ErrorsType, ErrorType, FormContext, IFormContext, ValidatorFunctionType } from 'components/Form/models';\nimport { ADD_VALIDATOR_TYPE, useItemsRegisteredValidatorsReducer } from './useItemsRegisteredValidatorsReducer';\nimport { isUniqueFieldNameValidator } from './validators';\n\n// not extending FieldProps type, because it is big difference\nexport type ItemsFieldProps = {\n\tid: string\n\tvalidator?: ValidatorFunctionType\n\tdisabled?: boolean\n\tuniqueFieldNames?: {id: string, label: string}[]\n}\n\nexport type ItemsControlCommonProps = {\n\tfieldId: string\n\tvalue?: any[]\n\tonChange?(index: number, id: string, value: any): void\n\tdisabled?: boolean\n\terrors: ErrorsType[]\n\tregisterValidators(index: number, id: string, validatorFunctions: Array): void\n\tvalidateField(index: number, id: string, value?: any): void\n\tonDelete(index: number): void\n}\n\nexport const useItemsField = (props: ItemsFieldProps) => {\n\tconst { id, validator, disabled, uniqueFieldNames } = props;\n\n\tconst [registeredValidatorsForFieldsFromItems, dispatchRegisteredValidatorsForFieldsFromItems] = useItemsRegisteredValidatorsReducer();\n\tconst context = useContext(FormContext);\n\tconst registerValidatorsInContext = context.registerValidators; // eslint is complaining (in useEffect dependencies) when using context.registerValidators\n\n\tconst validateFieldCallback = useCallback(\n\t\t(id: string, itemValues: any) => {\n\t\t\tlet newError: ErrorType | undefined;\n\t\t\tconst currentValue = itemValues[id];\n\n\t\t\tfor (const validator of registeredValidatorsForFieldsFromItems[id] || []) {\n\t\t\t\tnewError = validator(currentValue, itemValues, id);\n\t\t\t\tif (newError) {\n\t\t\t\t\treturn newError;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t},\n\t\t[registeredValidatorsForFieldsFromItems]\n\t)\n\n\tconst validateFieldsFromAllItemsCallback = useCallback(\n\t\t(values: any) => {\n\t\t\tconst newValues = values || context.values[id] || [];\n\t\t\tconst errors: ErrorsType[] = [];\n\n\t\t\tfor (let i = 0; i < newValues.length; i++) {\n\t\t\t\tfor (const fieldName of Object.keys(registeredValidatorsForFieldsFromItems[i])) {\n\t\t\t\t\tconst fieldError = validateFieldCallback(fieldName, newValues[i]);\n\t\t\t\t\tif (fieldError) {\n\t\t\t\t\t\tif (!errors[i]) {\n\t\t\t\t\t\t\terrors[i] = {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\terrors[i][fieldName] = fieldError;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn errors.length === 0 ? undefined : errors;\n\t\t},\n\t\t[id, context.values, registeredValidatorsForFieldsFromItems, validateFieldCallback]\n\t)\n\n\t// register validators for ItemsField in FormContext, so Form has access to it\n\tuseEffect(\n\t\t() => {\n\t\t\tlet validatorsToRegister: ValidatorFunctionType[] = []\n\t\t\tvalidator && validatorsToRegister.push(validator);\n\t\t\tvalidatorsToRegister.push(validateFieldsFromAllItemsCallback);\n\n\t\t\tconst uniqueFieldNameValidators: ValidatorFunctionType[] = uniqueFieldNames?.map(fieldName => isUniqueFieldNameValidator.bind(null, fieldName.id, fieldName.label)) || [];\n\t\t\tvalidatorsToRegister = [...validatorsToRegister, ...uniqueFieldNameValidators]\n\n\t\t\tregisterValidatorsInContext && registerValidatorsInContext(id, validatorsToRegister);\n\t\t\treturn () => {\n\t\t\t\tregisterValidatorsInContext && registerValidatorsInContext(id, []);\n\t\t\t}\n\t\t},\n\t\t[id, validator, registerValidatorsInContext, validateFieldsFromAllItemsCallback, uniqueFieldNames]\n\t)\n\n\t// registered validators for item\n\tconst registerValidatorsForItemCallback = useCallback(\n\t\t(index: number, id: string, validatorFunctions: Array) => {\n\t\t\tdispatchRegisteredValidatorsForFieldsFromItems({\n\t\t\t\ttype: ADD_VALIDATOR_TYPE,\n\t\t\t\tindex,\n\t\t\t\tid,\n\t\t\t\tvalidatorFunctions\n\t\t\t})\n\t\t},\n\t\t[dispatchRegisteredValidatorsForFieldsFromItems]\n\t);\n\n\tconst itemHasErrorsCallback = useCallback(\n\t\t(itemErrors: ErrorsType = {}) => {\n\t\t\tlet haveError: boolean = false;\n\t\t\tObject.keys(itemErrors).map((key: string) => {\n\t\t\t\tif (key && itemErrors[key] !== undefined) {\n\t\t\t\t\thaveError = true;\n\t\t\t\t}\n\t\t\t\treturn null; // just for eslint\n\t\t\t});\n\t\t\treturn haveError;\n\t\t},\n\t\t[]\n\t)\n\n\tconst itemsHaveErrorsCallback = useCallback(\n\t\t(itemsErrors: ErrorsType[]) => {\n\t\t\tfor (const itemErrors of itemsErrors) {\n\t\t\t\tif (itemErrors && itemHasErrorsCallback(itemErrors)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\t[itemHasErrorsCallback]\n\t)\n\n\tconst onBlurCallback = useCallback(\n\t\t(index: number, fieldName: string, itemValues?: any) => {\n\t\t\tlet errors: ErrorsType[] | undefined = (context.errorsMap[id] || []) as ErrorsType[]; // TableField always uses ErrorsType, so safe to cast\n\t\t\tconst fieldError = validateFieldCallback(fieldName, itemValues || context.values[id][index]);\n\t\t\tif (fieldError) {\n\t\t\t\tif (!errors[index]) {\n\t\t\t\t\terrors[index] = {};\n\t\t\t\t}\n\n\t\t\t\terrors[index][fieldName] = fieldError;\n\t\t\t} else {\n\t\t\t\tif (errors[index]) {\n\t\t\t\t\tdelete errors[index][fieldName];\n\t\t\t\t}\n\n\t\t\t\tconst itemsHaveErrors = itemsHaveErrorsCallback(errors);\n\t\t\t\tif (!itemsHaveErrors) {\n\t\t\t\t\terrors = undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcontext.setFieldError && context.setFieldError(id, errors);\n\t\t},\n\t\t[id, context, validateFieldCallback, itemsHaveErrorsCallback]\n\t)\n\n\tconst onChangeCallback = useCallback(\n\t\t(index: number, fieldName: string, newValue: any) => {\n\t\t\tconst itemsValues = [...context.values[id]];\n\t\t\titemsValues[index] = {\n\t\t\t\t...itemsValues[index]\n\t\t\t};\n\t\t\titemsValues[index][fieldName] = newValue;\n\n\t\t\tcontext.setFieldValue && context.setFieldValue(id, itemsValues);\n\t\t\tonBlurCallback(index, fieldName, itemsValues[index]);\n\t\t},\n\t\t[id, context, onBlurCallback]\n\t)\n\n\tconst deleteItemCallback = useCallback(\n\t\t(index: number) => {\n\t\t\tconst newValues = [...context.values[id]];\n\t\t\tnewValues.splice(index, 1);\n\t\t\tcontext.setFieldValue && context.setFieldValue(id, newValues);\n\n\t\t\tif (context.errorsMap[id]) {\n\t\t\t\tlet newErrors: ErrorsType[] | undefined = [...context.errorsMap[id] as ErrorsType[]]; // TableField always uses ErrorsType, so safe to cast\n\t\t\t\tnewErrors.splice(index, 1);\n\n\t\t\t\tconst itemsHaveErrors = itemsHaveErrorsCallback(newErrors);\n\t\t\t\tif (!itemsHaveErrors) {\n\t\t\t\t\tnewErrors = undefined;\n\t\t\t\t}\n\t\t\t\tcontext.setFieldError && context.setFieldError(id, newErrors);\n\t\t\t}\n\t\t},\n\t\t[id, context, itemsHaveErrorsCallback]\n\t)\n\n\treturn {\n\t\tvalue: context.values[id],\n\t\tonChange: onChangeCallback,\n\t\tdisabled: disabled || context.disabled,\n\t\tfieldId: id,\n\t\terrors: context.errorsMap[id],\n\t\tregisterValidators: registerValidatorsForItemCallback,\n\t\tvalidateField: onBlurCallback,\n\t\tonDelete: deleteItemCallback,\n\t} as ItemsControlCommonProps\n}\n","import { Subtract } from 'utility-types';\nimport { CustomItems, CustomItemsProps } from '../controls';\nimport { ItemsFieldProps, ItemsControlCommonProps, useItemsField } from '../controls/Table/wrappers/useItemsField';\n\nexport const ItemsField = ({ id, validator, disabled, uniqueFieldNames, ...rest }: ItemsFieldProps & Subtract) => {\n\tconst itemsFieldProps = useItemsField({\n\t\tid,\n\t\tvalidator,\n\t\tdisabled,\n\t\tuniqueFieldNames\n\t} as ItemsFieldProps)\n\n\tconst tableSpecificProps = rest as Subtract;\n\n\treturn (\n\t\t\n\t)\n}\n","import { Subtract } from 'utility-types';\nimport { MapSinglePicker, MapSinglePickerProps } from '../controls';\nimport { Field, FieldProps, ControlsCommonProps } from './Field';\n\nexport const MapSingleField = (props: Subtract> & FieldProps) => {\n\treturn (\n\t\t\n\t)\n}\n","import { Subtract } from 'utility-types';\nimport { MapMultiPicker, MapMultiPickerProps } from '../controls';\nimport { Field, FieldProps, ControlsCommonProps } from './Field';\n\nexport const MapMultiField = (props: Subtract> & FieldProps) => {\n\treturn (\n\t\t\n\t)\n}\n","import { Subtract } from 'utility-types';\nimport { Field, ControlsCommonProps, FieldProps } from './Field';\nimport { MultiCheckbox, MultiCheckboxProps } from '../controls';\n\nexport const MultiCheckboxField = (props: Subtract>> & FieldProps) => {\n\treturn (\n\t\t\n\t)\n}\n","import { Subtract } from 'utility-types';\nimport { MultiSelect, MultiSelectProps } from '../controls';\nimport { Field, ControlsCommonProps, FieldProps } from './Field';\n\nexport const MultiSelectField = (props: Subtract>> & FieldProps) => {\n\treturn (\n\t\t\n\t)\n}\n","import { Subtract } from 'utility-types';\nimport { Radio, RadioProps } from '../controls';\nimport { Field, ControlsCommonProps, FieldProps } from './Field';\n\nexport const RadioField = (props: Subtract> & FieldProps) => {\n\treturn (\n\t\t\n\t)\n}\n","import { useCallback } from 'react';\nimport DatePickerLib from 'react-datepicker';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport { CalendarIcon } from 'components/icons/icons';\nimport { ControlsCommonProps } from '../../fields';\nimport styles from './datePicker.module.scss';\nimport { getLastDayOfMonth } from 'utils/dateTimeUtils';\n\nexport type RangeMonthDateType = {\n\tfrom?: Date\n\tto?: Date\n}\n\nexport type RangeMonthPickerProps = ControlsCommonProps\n\nexport const RangeMonthPicker = ({\n\tvalue,\n\tonChange,\n\tonBlur,\n\tdisabled,\n}: ControlsCommonProps) => {\n\tconst onChangeCallback = useCallback(\n\t\t([from, to]) => {\n\t\t\tonChange?.({\n\t\t\t\tfrom,\n\t\t\t\tto: getLastDayOfMonth(to)\n\t\t\t})\n\t\t},\n\t\t[onChange]\n\t)\n\n\tconst onCalendarCloseCallback = useCallback(\n\t\t() => {\n\t\t\tif (value && value.from && !value.to) {\n\t\t\t\tonChange?.({\n\t\t\t\t\tfrom: value.from,\n\t\t\t\t\tto: getLastDayOfMonth(value.from)\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tonBlur?.();\n\t\t},\n\t\t[onBlur, onChange, value]\n\t)\n\n\treturn (\n\t\t

\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t)\n}\n","import { Subtract } from 'utility-types';\nimport { RangeMonthDateType, RangeMonthPicker, RangeMonthPickerProps } from '../controls/DatePicker/RangeMonthPicker';\nimport { Field, ControlsCommonProps, FieldProps } from './Field';\n\nexport const RangeMonthField = (props: Subtract> & FieldProps) => {\n return (\n \n )\n}\n","import { Subtract } from 'utility-types';\nimport { Select, SelectProps } from '../controls';\nimport { Field, FieldProps, ControlsCommonProps } from './Field';\n\nexport const SelectField = (props: Subtract> & FieldProps) => {\n\treturn (\n\t\t\n\t)\n}\n","import { useCallback, useContext, useEffect } from 'react';\nimport { Subtract } from 'utility-types';\nimport { DragDropContext, DropResult } from 'react-beautiful-dnd';\nimport { IFormContext, FormContext, ErrorsType } from '../models';\nimport { Table, TableProps } from '../controls';\nimport { ItemsFieldProps, ItemsControlCommonProps, useItemsField } from '../controls/Table/wrappers/useItemsField';\n\nexport const TableField = ({ id, validator, disabled, uniqueFieldNames, ...rest }: ItemsFieldProps & Subtract) => {\n\tconst context = useContext(FormContext);\n\n\tconst itemsFieldProps = useItemsField({\n\t\tid,\n\t\tvalidator,\n\t\tdisabled,\n\t\tuniqueFieldNames\n\t} as ItemsFieldProps)\n\n\tconst tableSpecificProps = rest as Subtract;\n\n\t// if a column was dynamically removed, remove validation errors for that column\n\tuseEffect(\n\t\t() => {\n\t\t\tconst fieldNames = new Set(tableSpecificProps.headers.map(x => x.id).filter(x => !!x));\n\t\t\tif (fieldNames.size === 0 || context.setFieldError === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst fieldError = context.errorsMap[id];\n\t\t\tif ((fieldError instanceof Array) && fieldError.length > 0) {\n\t\t\t\tlet changed = false;\n\t\t\t\tconst newErrors = [...fieldError];\n\t\t\t\tfor (let i = 0; i < fieldError.length; ++i) {\n\t\t\t\t\tif (fieldError[i] && Object.keys(fieldError[i]).some(y => !(fieldNames.has(y)))) {\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tconst newError = Object.keys(fieldError[i])\n\t\t\t\t\t\t\t.filter(x => fieldNames.has(x))\n\t\t\t\t\t\t\t.reduce((acc, cv) => ({ ...acc, [cv]: fieldError[cv] }), {});\n\n\t\t\t\t\t\tnewErrors.splice(i, 1, newError);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (changed) {\n\t\t\t\t\tcontext.setFieldError(id, newErrors.filter(x => !!x && Object.keys(x).length > 0));\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[id, tableSpecificProps.headers, context]\n\t)\n\n\tconst handleDragEnd = useCallback(\n\t\t(result: DropResult) => {\n\t\t\tconst { destination, source } = result;\n\t\t\tif (!destination || destination.droppableId !== source.droppableId || destination.index === source.index) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst newTableValues = [...context.values[id]];\n\t\t\tconst newErrors: ErrorsType[] = newTableValues.map((_, ind) => (context.errorsMap[id] || [])[ind] || undefined)\n\t\t\tconst draggedElementError = newErrors[source.index]\n\n\t\t\tnewTableValues.splice(source.index, 1);\n\t\t\tnewTableValues.splice(destination.index, 0, context.values[id][source.index]);\n\n\t\t\tnewErrors.splice(source.index, 1)\n\t\t\tnewErrors.splice(destination.index, 0, draggedElementError)\n\n\t\t\tcontext.setFieldError && context.setFieldError(id, newErrors);\n\t\t\tcontext.setFieldValue && context.setFieldValue(id, newTableValues);\n\t\t\ttableSpecificProps.onReorder && tableSpecificProps.onReorder(newTableValues);\n\t\t},\n\t\t[id, context, tableSpecificProps]\n\t);\n\n\tconst TableComponent: JSX.Element = (\n\t\t\n\t)\n\n\tif (tableSpecificProps.draggable) {\n\t\treturn (\n\t\t\t\n\t\t\t\t{TableComponent}\n\t\t\t\n\t\t)\n\t}\n\n\treturn TableComponent;\n}\n","import { Subtract } from 'utility-types';\nimport { Textarea, TextareaProps } from '../controls';\nimport { Field, ControlsCommonProps, FieldProps } from './Field';\n\nexport const TextareaField = (props: Subtract> & FieldProps) => {\n\treturn (\n\t\t\n\t)\n}\n","import { Subtract } from 'utility-types';\nimport { TimePicker, TimePickerProps } from '../controls';\nimport { Field, ControlsCommonProps, FieldProps } from './Field';\n\nexport const TimeField = (props: Subtract> & FieldProps) => {\n\treturn (\n\t\t\n\t)\n}\n","import { Subtract } from 'utility-types';\nimport { TextEditor, TextEditorProps } from '../controls';\nimport { Field, ControlsCommonProps, FieldProps } from './Field';\n\nexport const TextEditorField = (props: Subtract> & FieldProps) => {\n\treturn (\n\t\t\n\t)\n}\n","import { Subtract } from 'utility-types';\nimport { Semaphore, SemaphoreProps } from '../controls';\nimport { Field, ControlsCommonProps, FieldProps } from './Field';\n\nexport const SemaphoreField = (props: Subtract> & FieldProps) => {\n\treturn (\n\t\t\n\t)\n}","// https://codesandbox.io/s/react-router-preventing-transitions-1yvzb?from-embed=&file=/example.js:720-732\n// https://michaelchan-13570.medium.com/using-react-router-v4-prompt-with-custom-modal-component-ca839f5faf39\n// https://stackoverflow.com/questions/52447828/is-there-a-way-to-modify-the-page-title-with-react-router-v4/54112771#54112771\n\nimport { useCallback, useEffect, useState } from 'react';\nimport { Location } from 'history';\nimport { Prompt, useHistory } from 'react-router-dom';\nimport { Dialog } from 'components/Dialog';\nimport { ColumnContainer, RowContainer } from 'components/Layout';\nimport Button from 'components/Button';\nimport { Translation } from 'components/Translations/Translation';\n\ntype Props = {\n\tshouldBlockNavigation(): boolean\n}\n\nexport const UnsavedChangesGuard = ({ shouldBlockNavigation }: Props) => {\n\tconst history = useHistory();\n\n\tconst [opened, setOpened] = useState(false);\n\tconst [lastLocation, setLastLocation] = useState(null);\n\tconst [confirmedNavigation, setConfirmedNavigation] = useState(false);\n\n\tconst closeCallback = useCallback(\n\t\t() => setOpened(false),\n\t\t[]\n\t)\n\n\tconst handleBlockedNavigation = (nextLocation: Location): boolean => {\n\t\tif (nextLocation.pathname.startsWith(history.location.pathname)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (!confirmedNavigation && shouldBlockNavigation()) {\n\t\t\tsetOpened(true);\n\t\t\tsetLastLocation(nextLocation);\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\tconst handleConfirmNavigationClick = useCallback(\n\t\t() => {\n\t\t\tsetOpened(false);\n\t\t\tsetConfirmedNavigation(true);\n\t\t},\n\t\t[]\n\t)\n\n\tuseEffect(\n\t\t() => {\n\t\t\tif (confirmedNavigation && lastLocation) {\n\t\t\t\t// Navigate to the previous blocked location with your navigate function\n\t\t\t\thistory.push(lastLocation.pathname);\n\t\t\t}\n\t\t},\n\t\t[history, confirmedNavigation, lastLocation]\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n","import React, { useCallback, useMemo, useState } from 'react';\nimport Button from 'components/Button';\nimport { ColumnContainer, RowContainer } from 'components/Layout';\nimport { FieldMessage } from './addons';\nimport { ADD_VALIDATOR_TYPE, useRegisteredValidatorsReducer } from './useRegisteredValidatorsReducer';\nimport { UnsavedChangesGuard } from './UnsavedChangesGuard/UnsavedChangesGuard';\nimport ErrorBoundary from 'features/ErrorBoundary';\nimport { isAutoCompleteHit, isAutoCompleteRemoteHit, isMultiSelectHit, isTextEditorHit } from './controls';\nimport { ErrorsType, ErrorType, FormContext, globalErrorKey, IFormContext, ValidatorFunctionType, ValuesType } from './models';\n\ntype Props = {\n\tvalues: ValuesType\n\tinitialValues?: ValuesType\n\tonChange(values: ValuesType): void\n\trender(): any\n\tdisabled?: boolean\n\tdisableUnsavedChangesGuard?: boolean\n\n\t// onSubmit can have better return type, more strict type\n\tonSubmit?(): Promise\n\tsubmitButtonText?: string\n\thideSubmitButton?: boolean\n\tonCancel?(): void\n\tcancelButtonText?: string\n\thideCancelButton?: boolean\n\trenderAdditionalButtons?(disabled?: boolean, handleSubmitCallback?: () => void, isSubmitting?: boolean): any\n\thideButtons?: boolean\n}\n\nexport const Form = ({\n\tvalues,\n\tinitialValues,\n\tonChange: onChangeProp,\n\trender,\n\tdisabled,\n\tdisableUnsavedChangesGuard,\n\tonSubmit,\n\tsubmitButtonText = 'i18n.button.save',\n\thideSubmitButton,\n\tonCancel,\n\tcancelButtonText = 'i18n.button.cancel',\n\thideCancelButton,\n\trenderAdditionalButtons,\n\thideButtons\n}: Props) => {\n\tconst [errorsMap, setErrorsMap] = useState({});\n\tconst [isSubmitting, setIsSubmitting] = useState(false);\n\tconst [registeredValidators, dispatchRegisteredValidators] = useRegisteredValidatorsReducer();\n\n\tconst haveErrorsCallback = useCallback(\n\t\t() => {\n\t\t\tlet haveError: boolean = false;\n\t\t\tObject.keys(errorsMap).map((key: string) => {\n\t\t\t\tif (key === globalErrorKey || errorsMap[key] === undefined) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tconst errorsArray = errorsMap[key];\n\n\t\t\t\t// TableField - ErrorsType[]\n\t\t\t\tif (errorsArray instanceof Array) {\n\t\t\t\t\tfor (const rowErrorsMap of errorsArray) {\n\t\t\t\t\t\tif (!rowErrorsMap) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst keys = Object.keys(rowErrorsMap);\n\t\t\t\t\t\tconst firstKey = keys[0];\n\n\t\t\t\t\t\tif (keys.length > 1 || firstKey !== globalErrorKey) {\n\t\t\t\t\t\t\thaveError = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// field - ErrorType\n\t\t\t\telse {\n\t\t\t\t\thaveError = true;\n\t\t\t\t}\n\n\t\t\t\treturn undefined; // just for eslint\n\t\t\t});\n\t\t\treturn haveError;\n\t\t},\n\t\t[errorsMap]\n\t)\n\n\tconst validateFieldCallback = useCallback(\n\t\t(id: string, value?: any) => {\n\t\t\tlet newError: ErrorType | ErrorsType[] | undefined;\n\t\t\tconst currentValue = value || values[id];\n\n\t\t\tfor (const validator of registeredValidators[id] || []) {\n\t\t\t\tnewError = validator(currentValue, { ...values, [id]: value}, id)\n\t\t\t\tif (newError) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsetErrorsMap((state: any) => {\n\t\t\t\treturn {\n\t\t\t\t\t...state,\n\t\t\t\t\t[id]: newError\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn newError === undefined;\n\t\t},\n\t\t[values, registeredValidators]\n\t)\n\n\tconst validateFormCallback = useCallback(\n\t\t() => {\n\t\t\tlet valid = true;\n\n\t\t\tfor (const fieldName of Object.keys(registeredValidators)) {\n\t\t\t\tvalid = validateFieldCallback(fieldName) && valid;\n\t\t\t}\n\n\t\t\treturn valid;\n\t\t},\n\t\t[registeredValidators, validateFieldCallback]\n\t)\n\n\tconst handleSubmitCallback = useCallback(\n\t\tasync (): Promise => {\n\t\t\tsetIsSubmitting(true);\n\n\t\t\tif (validateFormCallback() && onSubmit) {\n\t\t\t\tlet serverErrors = await onSubmit();\n\n\t\t\t\tsetErrorsMap(serverErrors || {});\n\t\t\t}\n\n\t\t\tsetIsSubmitting(false);\n\t\t},\n\t\t[validateFormCallback, onSubmit]\n\t)\n\n\tconst handleCancelCallback = useCallback(\n\t\t() => onCancel && onCancel(),\n\t\t[onCancel]\n\t)\n\n\tconst onFieldChangeCallback = useCallback(\n\t\t(id: string, value: any, dependantValues?: ValuesType) => {\n\t\t\tonChangeProp({\n\t\t\t\t...values,\n\t\t\t\t[id]: value !== \"\" ? value : undefined,\n\t\t\t\t...dependantValues\n\t\t\t})\n\n\t\t\t// if changed field has error, validate it to check if that error is solved\n\t\t\tif (errorsMap[id]) {\n\t\t\t\tvalidateFieldCallback(id, value);\n\t\t\t}\n\t\t},\n\t\t[validateFieldCallback, errorsMap, values, onChangeProp]\n\t)\n\n\tconst registerValidatorsCallback = useCallback(\n\t\t(id: string, validatorFunctions: Array) => {\n\t\t\tdispatchRegisteredValidators({\n\t\t\t\ttype: ADD_VALIDATOR_TYPE,\n\t\t\t\tid,\n\t\t\t\tvalidatorFunctions\n\t\t\t})\n\t\t},\n\t\t[dispatchRegisteredValidators]\n\t);\n\n\tconst setFieldError = useCallback(\n\t\t(id: string, fieldError: ErrorsType[]) => {\n\t\t\tsetErrorsMap((state: any) => {\n\t\t\t\treturn {\n\t\t\t\t\t...state,\n\t\t\t\t\t[id]: fieldError\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t\t[]\n\t)\n\n\tconst setFieldValue = useCallback(\n\t\t(id: string, fieldValue: any) => {\n\t\t\tonChangeProp({\n\t\t\t\t...values,\n\t\t\t\t[id]: fieldValue\n\t\t\t})\n\t\t},\n\t\t[onChangeProp, values]\n\t)\n\n\tconst context: IFormContext = useMemo(\n\t\t() => {\n\t\t\treturn {\n\t\t\t\tvalues,\n\t\t\t\terrorsMap,\n\t\t\t\tonFieldChange: onFieldChangeCallback,\n\t\t\t\tvalidateField: validateFieldCallback,\n\t\t\t\tdisabled,\n\t\t\t\tregisterValidators: registerValidatorsCallback,\n\t\t\t\tsetFieldValue, // added because of TableField\n\t\t\t\tsetFieldError // added because of TableField\n\t\t\t}\n\t\t},\n\t\t[values, errorsMap, validateFieldCallback, onFieldChangeCallback, disabled, registerValidatorsCallback, setFieldError, setFieldValue]\n\t)\n\n\tconst hasUnsavedChanges = useCallback(\n\t\t() => {\n\t\t\t// if form is submitting and this method is called, it means that onSubmit handler called route switching because success = true\n\t\t\tif (disabled || isSubmitting) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// implement some better check, deep equal\n\t\t\t// Date - when changed to same, it is different object\n\t\t\tfor (const key of Object.keys(values)) {\n\t\t\t\tconst value = values[key] !== \"\" ? values[key] : undefined; // UserForm initials were \"\" and initialValue.initials is undefined\n\t\t\t\tconst initialValue = initialValues && (initialValues[key] !== \"\" ? initialValues[key] : undefined);\n\n\t\t\t\t// eslint-disable-next-line\n\t\t\t\tif (value != initialValue) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\t[disabled, values, initialValues, isSubmitting]\n\t)\n\n\tconst handleKeyUp = useCallback(\n\t\t(e: React.KeyboardEvent) => {\n\t\t\tif (e.key === 'Enter') {\n\t\t\t\tif (e.target && (e.target as any).type === 'textarea') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (isTextEditorHit(e.target as HTMLElement)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (isAutoCompleteHit(e.target as HTMLElement)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (isAutoCompleteRemoteHit(e.target as HTMLElement)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (isMultiSelectHit(e.target as HTMLElement)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\te.stopPropagation();\n\n\t\t\t\tif (disabled || isSubmitting || haveErrorsCallback()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\thandleSubmitCallback();\n\t\t\t}\n\t\t},\n\t\t[disabled, handleSubmitCallback, haveErrorsCallback, isSubmitting]\n\t)\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{render()}\n\t\t\t\t\t
\n\n\t\t\t\t\t{context.errorsMap?.[globalErrorKey] &&\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\n\t\t\t\t\t{!hideButtons &&\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{!hideSubmitButton &&\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t{renderAdditionalButtons && renderAdditionalButtons(isSubmitting || disabled, handleSubmitCallback, isSubmitting)}\n\t\t\t\t\t\t\t{!hideCancelButton &&\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t
\n\n\t\t\t\t{/* unsaved changes */}\n\t\t\t\t{!disableUnsavedChangesGuard &&\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t
\n\t\t
\n\t)\n}\n","import { Translation } from \"components/Translations/Translation\"\n\ntype Props = {\n\ttitle: string\n\tchildren: any\n}\n\nexport const FormGroup = ({ title, children }: Props) => {\n\treturn (\n\t\t<>\n\t\t\t
\n\t\t\t{children}\n\t\t\n\t)\n}\n","import { createContext } from \"react\";\n\n// when there is some validation problem on form, that is not strictly on one field, backend is sending it thru property with id ''\nexport const globalErrorKey = '';\n\nexport type ErrorType = {\n\tmessage: string\n\ti18nArgs?: string[]\n};\n\n// field error is ErrorType\n// delta error is ErrorsType[]\n// global error is always ErrorType so defined separately for TS not to complain\nexport type ErrorsType = {\n\t[key: string]: ErrorType | ErrorsType[] | undefined\n} & {\n\t[globalErrorKey]?: ErrorType | undefined\n};\n\nexport type ValidatorFunctionType = (value: any, values: any, id: string) => ErrorType | ErrorsType[] | undefined;\n\nexport type ValuesType = {\n\t[key: string]: any\n}\n\nexport interface IFormContext {\n\tvalues: ValuesType\n\terrorsMap: ErrorsType\n\tonFieldChange?: (id: string, value: any, dependantValues: ValuesType) => void\n\tvalidateField?: (id: string, value?: any) => void\n\tdisabled?: boolean\n\tregisterValidators?(id: string, validatorFunctions: Array): void\n\tsetFieldValue?(id: string, fieldValue: any): void\n\tsetFieldError?(id: string, fieldError: ErrorsType[] | undefined): void // only TableField uses it so type ErrorsType[] is enough\n}\n\nexport const FormContext = createContext({\n\tvalues: {},\n\terrorsMap: {}\n});\n","import { useReducer } from 'react';\nimport { ValidatorFunctionType } from './models';\n\nexport const ADD_VALIDATOR_TYPE = 'ADD_VALIDATOR';\n\ntype ActionType = {\n\ttype: string\n\tid: string\n\tvalidatorFunctions: Array\n}\n\ntype StateType = {\n\t[fieldName: string]: Array\n}\n\nconst initialState: StateType = {};\n\nfunction registeredValidatorsReducer(state: any, action: ActionType) {\n\tswitch (action.type) {\n\t\tcase ADD_VALIDATOR_TYPE:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[action.id]: action.validatorFunctions\n\t\t\t};\n\t\tdefault:\n\t\t\treturn state;\n\t\t\t// throw new Error(`Bad registered validators reducer action type: ${action.type}`);\n\t}\n}\n\nexport const useRegisteredValidatorsReducer = (): [StateType, React.Dispatch] => {\n\treturn useReducer(registeredValidatorsReducer, initialState);\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"columnContainer_container__7uELS\",\"item_disabled\":\"columnContainer_item_disabled__JreYH\",\"item_small\":\"columnContainer_item_small__gh7Ej\",\"item_medium\":\"columnContainer_item_medium__QzYY0\",\"item_large\":\"columnContainer_item_large__aJmeT\",\"item_xlarge\":\"columnContainer_item_xlarge__OESnb\"};","import React from 'react';\nimport styles from './columnContainer.module.scss';\n\ntype Props = {\n\tchildren: React.ReactElement | Array | any\n\tmargin?: 'xlarge' | 'large' | 'medium' | 'small' | 'disabled'\n}\n\nconst ColumnContainer = ({ children, margin = 'large' }: Props) => {\n\treturn (\n\t\t
\n\t\t\t{React.Children.map(children, (child) => (\n\t\t\t\t
\n\t\t\t\t\t{child}\n\t\t\t\t
\n\t\t\t))}\n\t\t
\n\t)\n}\n\nexport default ColumnContainer;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"rowContainer_container__TnINh\",\"item_xsmall\":\"rowContainer_item_xsmall__19P8b\",\"item_small\":\"rowContainer_item_small__+GXfv\",\"item_medium\":\"rowContainer_item_medium__bunE9\",\"item_large\":\"rowContainer_item_large__hbd-d\",\"item_xlarge\":\"rowContainer_item_xlarge__-qHCI\"};","import React from 'react';\nimport { Property } from 'csstype';\nimport styles from './rowContainer.module.scss';\n\ntype Props = {\n\tchildren: any // React.ReactElement | Array,\n\tmargin?: 'large' | 'medium' | 'small' | 'xsmall' | 'xlarge'\n\tjustifyContent?: Property.JustifyContent\n\talignItems?: Property.AlignItems\n\tflex?: Property.Flex\n\twrap?: Property.FlexWrap\n}\n\nconst RowContainer = ({ children, margin = 'small', justifyContent, alignItems, flex, wrap }: Props) => {\n\treturn (\n\t\t
\n\t\t\t{React.Children.map(children, (child) => {\n\t\t\t\tif (!child) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t
\n\t\t\t\t\t\t{child}\n\t\t\t\t\t
\n\t\t\t\t)\n\t\t\t})}\n\t\t
\n\t)\n}\n\nexport default RowContainer;\n","// extracted by mini-css-extract-plugin\nexport default {\"vertical_xsmall\":\"separator_vertical_xsmall__sSd05\",\"vertical_small\":\"separator_vertical_small__eNlnE\",\"vertical_medium\":\"separator_vertical_medium__O4yWE\",\"vertical_large\":\"separator_vertical_large__WVMKp\",\"vertical_xlarge\":\"separator_vertical_xlarge__+REVQ\"};","import styles from './separator.module.scss';\n\ntype Props = {\n\tmargin?: 'xlarge' | 'large' | 'medium' | 'small' | 'xsmall',\n}\n\nconst VerticalSeparator = ({ margin = 'large' }: Props) => {\n\treturn (\n\t\t
\n\t)\n}\n\nexport default VerticalSeparator;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"notificationContent_container__aovOR\",\"icon\":\"notificationContent_icon__uENhl\",\"message\":\"notificationContent_message__V2C3N\",\"message_with_route\":\"notificationContent_message_with_route__BMaLY\"};","import { IconType } from 'components/icons/icons';\nimport { Translation } from 'components/Translations/Translation';\nimport styles from './notificationContent.module.scss';\nimport 'react-toastify/dist/ReactToastify.css';\nimport './toastrOverride.scss';\n\ntype Props = {\n\tmessage: string\n\ti18nArgs?: string[]\n\troute?: string\n\tIcon: IconType\n}\n\nexport const NotificationContent = ({ message, i18nArgs, route, Icon }: Props) => {\n\tconst messageContent = \n\n\tlet content = {messageContent}\n\tif (route) {\n\t\tcontent = {messageContent}\n\t}\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t{content}\n\t\t
\n\t)\n}\n","import { toast, ToastOptions } from 'react-toastify';\nimport { CheckIcon, InfoIcon, WarningIcon } from 'components/icons/icons';\nimport { NotificationContent } from './NotificationContent';\n\nconst defaultOptions = {\n\thideProgressBar: true,\n\tdraggable: false\n}\n\ntype NotificationArg = {\n\tmessage: string\n\ti18nArgs?: string[]\n\troute?: string\n\toptions?: ToastOptions\n}\n\ntype Notification = {\n\tinfo: (arg: NotificationArg) => void\n\tsuccess: (arg: NotificationArg) => void\n\twarning: (arg: NotificationArg) => void\n\terror: (arg: NotificationArg) => void\n}\n\nexport const notification: Notification = {\n\tinfo: ({ options, ...props }) => {\n\t\ttoast(\n\t\t\t,\n\t\t\t{\n\t\t\t\t...defaultOptions,\n\t\t\t\ttype: toast.TYPE.INFO,\n\t\t\t\t...options\n\t\t\t}\n\t\t);\n\t},\n\tsuccess: ({ options, ...props }) => {\n\t\ttoast(\n\t\t\t,\n\t\t\t{\n\t\t\t\t...defaultOptions,\n\t\t\t\ttype: toast.TYPE.SUCCESS,\n\t\t\t\t...options\n\t\t\t}\n\t\t);\n\t},\n\twarning: ({ options, ...props }) => {\n\t\ttoast(\n\t\t\t,\n\t\t\t{\n\t\t\t\t...defaultOptions,\n\t\t\t\ttype: toast.TYPE.WARNING,\n\t\t\t\tautoClose: false,\n\t\t\t\t...options\n\t\t\t}\n\t\t);\n\t},\n\terror: ({ options, ...props }) => {\n\t\ttoast(\n\t\t\t,\n\t\t\t{\n\t\t\t\t...defaultOptions,\n\t\t\t\ttype: toast.TYPE.ERROR,\n\t\t\t\tautoClose: false,\n\t\t\t\t...options\n\t\t\t}\n\t\t);\n\t}\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"popup_wrapper__1g4e2\",\"popup\":\"popup_popup__iVUhL\",\"popup_top\":\"popup_popup_top__LPJZn\",\"popup_bottom\":\"popup_popup_bottom__sZ10f\",\"popup_left\":\"popup_popup_left__Xu3dl\",\"popup_right\":\"popup_popup_right__aVE3N\",\"popup_inner\":\"popup_popup_inner__haYO7\",\"popup_arrow\":\"popup_popup_arrow__sLNBs\",\"popup_arrow_top\":\"popup_popup_arrow_top__8pGSW\",\"popup_arrow_bottom\":\"popup_popup_arrow_bottom__KSF2f\",\"popup_arrow_left\":\"popup_popup_arrow_left__9Cl4H\",\"popup_arrow_right\":\"popup_popup_arrow_right__jacYv\",\"popup_close\":\"popup_popup_close__Xe77Z\"};","export enum PLACEMENT {\n\tTOP = 'top',\n\tBOTTOM = 'bottom',\n\tLEFT = 'left',\n\tRIGHT = 'right',\n\tCENTER = 'center'\n};\n\nexport const POSITION = {\n\tTOP_LEFT: [PLACEMENT.TOP, PLACEMENT.LEFT],\n\tTOP_CENTER: [PLACEMENT.TOP, PLACEMENT.CENTER],\n\tTOP_RIGHT: [PLACEMENT.TOP, PLACEMENT.RIGHT],\n\tBOTTOM_LEFT: [PLACEMENT.BOTTOM, PLACEMENT.LEFT],\n\tBOTTOM_CENTER: [PLACEMENT.BOTTOM, PLACEMENT.CENTER],\n\tBOTTOM_RIGHT: [PLACEMENT.BOTTOM, PLACEMENT.RIGHT],\n\tLEFT_TOP: [PLACEMENT.LEFT, PLACEMENT.TOP],\n\tLEFT_CENTER: [PLACEMENT.LEFT, PLACEMENT.CENTER],\n\tLEFT_BOTTOM: [PLACEMENT.LEFT, PLACEMENT.BOTTOM],\n\tRIGHT_TOP: [PLACEMENT.RIGHT, PLACEMENT.TOP],\n\tRIGHT_CENTER: [PLACEMENT.RIGHT, PLACEMENT.CENTER],\n\tRIGHT_BOTTOM: [PLACEMENT.RIGHT, PLACEMENT.BOTTOM],\n};\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport styles from './popup.module.scss';\nimport { POSITION } from './constants';\nimport { useArrowDataMemo, useContainerDataMemo } from './useDataMemo';\nimport { PLACEMENT } from '.';\nimport { noop } from 'utils/commonHelper';\n\n// depends on $arrow_size from scss\nconst minSize = 26;\n\nfunction getMinBBoxData(element: any) {\n\tconst bBox = element.getBoundingClientRect();\n\tlet dx = 0;\n\tlet dy = 0;\n\n\tif (bBox.width < minSize) {\n\t\tdx = minSize - bBox.width;\n\t\tbBox.x -= dx / 2;\n\t\tbBox.width += dx;\n\t}\n\tif (bBox.height < minSize) {\n\t\tdy = minSize - bBox.height;\n\t\tbBox.y -= dy / 2;\n\t\tbBox.height += dy;\n\t}\n\n\treturn {\n\t\tbBox,\n\t\tdx,\n\t\tdy\n\t}\n}\n\ntype Props = {\n\tposition: PLACEMENT[]\n\tcontent: any\n\tstayOpen?: boolean\n\tinitialOpen?: boolean\n\tchildren: React.ReactElement\n}\n\nexport const Popup = ({ position = POSITION.RIGHT_CENTER, content, stayOpen, initialOpen, children }: Props) => {\n\tconst [bBoxData, setBBoxData] = useState({});\n\tconst [isOpened, setIsOpened] = useState(initialOpen);\n\n\tconst popupContainer = useRef();\n\n\tconst arrowData = useArrowDataMemo(position, bBoxData);\n\tconst containerData = useContainerDataMemo(position, bBoxData);\n\n\tconst arrowContent = useMemo(\n\t\t() => (\n\t\t\t\n\t\t),\n\t\t[arrowData]\n\t);\n\n\tuseEffect(\n\t\t() => {\n\t\t\tif (popupContainer.current && popupContainer.current.previousSibling) {\n\t\t\t\tconst newBBoxData = getMinBBoxData(popupContainer.current.previousSibling);\n\t\t\t\tsetBBoxData(newBBoxData);\n\t\t\t}\n\t\t},\n\t\t[]\n\t);\n\n\tconst openPopup = useCallback(\n\t\t() => setIsOpened(true),\n\t\t[]\n\t);\n\n\tconst closePopup = useCallback(\n\t\t() => setIsOpened(false),\n\t\t[]\n\t);\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t{children}\n\t\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t{stayOpen &&\n\t\t\t\t\t
\n\t\t\t\t\t\t

x

\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t{content}\n\t\t\t
\n\t\t\t{arrowContent}\n\t\t\t
\n\t\t\n\t)\n};\n","import { useMemo } from 'react';\nimport styles from './popup.module.scss';\nimport { PLACEMENT } from './constants';\n\nexport const useArrowDataMemo = function (position: PLACEMENT[], bBoxData: any) {\n\treturn useMemo(\n\t\t() => {\n\t\t\tconst { bBox } = bBoxData;\n\n\t\t\tconst arrowData: any = {\n\t\t\t\tclassName: styles.popup_arrow + ' ' + styles[`popup_arrow_${position[0]}`],\n\t\t\t\ttop: undefined,\n\t\t\t\tbottom: undefined,\n\t\t\t\tleft: undefined,\n\t\t\t\tright: undefined\n\t\t\t};\n\n\t\t\tif (bBox === undefined) {\n\t\t\t\treturn arrowData;\n\t\t\t}\n\n\t\t\tswitch (position[1]) {\n\t\t\t\tcase PLACEMENT.TOP:\n\t\t\t\tcase PLACEMENT.BOTTOM:\n\t\t\t\t\tarrowData[position[1]] = `calc(100% - ${bBox.height / 2}px`\n\t\t\t\t\tbreak;\n\t\t\t\tcase PLACEMENT.LEFT:\n\t\t\t\tcase PLACEMENT.RIGHT:\n\t\t\t\t\tarrowData[position[1]] = `calc(100% - ${bBox.width / 2}px`\n\t\t\t\t\tbreak;\n\t\t\t\tcase PLACEMENT.CENTER:\n\t\t\t\t\tif (position[0] === PLACEMENT.TOP || position[0] === PLACEMENT.BOTTOM) {\n\t\t\t\t\t\tarrowData.left = '50%';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tarrowData.top = '50%';\n\t\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn arrowData;\n\t\t},\n\t\t[position, bBoxData]\n\t)\n};\n\nexport const useContainerDataMemo = function (position: PLACEMENT[], bBoxData: any) {\n\treturn useMemo(\n\t\t() => {\n\t\t\tconst { bBox, dx, dy } = bBoxData;\n\n\t\t\tconst containerData: any = {\n\t\t\t\tclassName: styles.popup + ' ' + styles[`popup_${position[0]}`],\n\t\t\t\ttop: undefined,\n\t\t\t\tleft: undefined,\n\t\t\t\ttransform: undefined,\n\t\t\t\ttransformOrigin: undefined\n\t\t\t};\n\n\t\t\tif (bBox === undefined) {\n\t\t\t\treturn containerData;\n\t\t\t}\n\n\t\t\tswitch (position[1]) {\n\t\t\t\tcase PLACEMENT.CENTER:\n\t\t\t\t\tif (position[0] === PLACEMENT.TOP || position[0] === PLACEMENT.BOTTOM) {\n\t\t\t\t\t\tcontainerData.left = '50%';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontainerData.top = '50%';\n\t\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet translateX: any = 0;\n\t\t\tlet translateY: any = 0;\n\t\t\tlet originX;\n\t\t\tlet originY;\n\n\t\t\tswitch (position[0]) {\n\t\t\t\tcase PLACEMENT.TOP:\n\t\t\t\t\ttranslateY = '-100%';\n\t\t\t\t\toriginY = 'bottom';\n\t\t\t\t\tbreak;\n\t\t\t\tcase PLACEMENT.BOTTOM:\n\t\t\t\t\ttranslateY = '100%';\n\t\t\t\t\toriginY = 'top';\n\t\t\t\t\tbreak;\n\t\t\t\tcase PLACEMENT.LEFT:\n\t\t\t\t\ttranslateX = '-100%';\n\t\t\t\t\toriginX = 'right';\n\t\t\t\t\tbreak;\n\t\t\t\tcase PLACEMENT.RIGHT:\n\t\t\t\t\ttranslateX = '100%';\n\t\t\t\t\toriginX = 'left';\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tswitch (position[1]) {\n\t\t\t\tcase PLACEMENT.TOP:\n\t\t\t\t\ttranslateY = `calc(-100% + ${dy / 2}px)`;\n\t\t\t\t\toriginY = `calc(100% - ${bBox.height / 2}px)`;\n\t\t\t\t\tbreak;\n\t\t\t\tcase PLACEMENT.BOTTOM:\n\t\t\t\t\ttranslateY = `${-bBox.height + dy / 2}px`\n\t\t\t\t\toriginY = `${bBox.height / 2}px`;\n\t\t\t\t\tbreak;\n\t\t\t\tcase PLACEMENT.LEFT:\n\t\t\t\t\ttranslateX = `calc(-100% + ${bBox.width - dx / 2}px)`;\n\t\t\t\t\toriginX = `calc(100% - ${bBox.width / 2}px)`;\n\t\t\t\t\tbreak;\n\t\t\t\tcase PLACEMENT.RIGHT:\n\t\t\t\t\ttranslateX = `${-dx / 2}px`;\n\t\t\t\t\toriginX = `${bBox.width / 2}px`;\n\t\t\t\t\tbreak;\n\t\t\t\tcase PLACEMENT.CENTER:\n\t\t\t\t\tif (position[0] === PLACEMENT.TOP || position[0] === PLACEMENT.BOTTOM) {\n\t\t\t\t\t\ttranslateX = '-50%';\n\t\t\t\t\t\toriginX = 'center';\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttranslateY = '-50%';\n\t\t\t\t\t\toriginY = 'center';\n\t\t\t\t\t}\n\t\t\t}\n\n\t\t\tcontainerData.transform = `translate(${translateX}, ${translateY})`\n\t\t\tcontainerData.transformOrigin = `${originX} ${originY}`\n\n\t\t\treturn containerData;\n\t\t},\n\t\t[position, bBoxData]\n\t)\n};\n","import { Translation } from 'components/Translations/Translation';\nimport { Popup } from '../Popup';\nimport { POSITION, PLACEMENT } from '../constants';\nimport { InfoSquaredIcon } from 'components/icons/icons';\n\ntype Props = {\n\tmessage?: string\n\tposition?: PLACEMENT[]\n}\n\nexport const InfoPopup = ({ message, position = POSITION.RIGHT_CENTER }: Props) => {\n\treturn (\n\t\t<>\n\t\t\t{message &&\n\t\t\t\t

\n\t\t\t\t\t}\n\t\t\t\t\tposition={position}\n\t\t\t\t\tstayOpen={false}\n\t\t\t\t\tinitialOpen={false}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t}\n\t\t\t{!message &&\n\t\t\t\t\n\t\t\t}\n\t\t\n\t)\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"shorten\":\"shorten_shorten__tWnbv\"};","import styles from './shorten.module.scss';\n\ntype Props = {\n\tchildren: any\n\ttitle?: string\n}\n\nexport const Shorten = ({ title, children }: Props) => {\n\treturn (\n\t\t
\n\t\t\t{children}\n\t\t
\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"requiredField_container__ZDWKA\"};","import styles from './requiredField.module.scss';\n\nconst RequiredField = () => {\n\treturn (\n\t\t\n\t)\n}\n\nexport default RequiredField;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"smartContainer_container__HkWMI\",\"item_xxsmall\":\"smartContainer_item_xxsmall__j0Pk-\",\"item_xsmall\":\"smartContainer_item_xsmall__jgoX3\",\"item_small\":\"smartContainer_item_small__TodUQ\",\"item_medium\":\"smartContainer_item_medium__+DNKi\",\"item_large\":\"smartContainer_item_large__1FP4-\",\"item_xlarge\":\"smartContainer_item_xlarge__5argo\",\"item_xxlarge\":\"smartContainer_item_xxlarge__SnM1A\",\"form_group_inline\":\"smartContainer_form_group_inline__+nViu\",\"label\":\"smartContainer_label__T6d+D\",\"field\":\"smartContainer_field__aC+yp\",\"form_group_multiline\":\"smartContainer_form_group_multiline__oPaqL\",\"inline\":\"smartContainer_inline__prw+d\",\"inline_item\":\"smartContainer_inline_item__7lWTz\",\"small\":\"smartContainer_small__HtHLM\"};","import React from 'react';\nimport { Property } from 'csstype';\nimport RequiredField from './RequiredField';\nimport styles from './smartContainer.module.scss';\nimport { Translation } from 'components/Translations/Translation';\n\ntype Props = {\n\tchildren: React.ReactElement[] | React.ReactElement | any\n\tjustifyContent?: Property.JustifyContent\n}\n\nconst SmartContainer = ({ children, justifyContent }: Props) => {\n\treturn (\n\t\t
\n\t\t\t{children}\n\t\t
\n\t)\n}\n\ntype ItemProps = Props & {\n\tsize?: 'xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge'\n}\n\nconst SmartItem = ({ children, size = 'medium' }: ItemProps) => {\n\treturn (\n\t\t
\n\t\t\t{children}\n\t\t
\n\t)\n}\n\ntype InlineProps = Props & {\n\tflex?: Property.Flex\n\talignItems?: Property.AlignItems\n}\n\nconst SmartInline = ({ children, flex = '1', alignItems = 'center' }: InlineProps) => {\n\treturn (\n\t\t
\n\t\t\t{React.Children.map(children, (child) => {\n\t\t\t\tif (!child) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t
\n\t\t\t\t\t\t{child}\n\t\t\t\t\t
\n\t\t\t\t)\n\t\t\t})}\n\t\t
\n\t)\n}\n\ntype FormGroupProps = {\n\tlabel?: string\n\tisRequired?: boolean\n\tchildren: React.ReactElement | Array\n\tmultiline?: boolean\n\tsize?: 'small' | 'medium'\n\ti18nArgs?: string[] | undefined\n}\n\nconst SmartFormGroup = ({ label, isRequired, children, multiline, size, i18nArgs }: FormGroupProps) => {\n\tconst className = multiline ? styles.form_group_multiline : styles.form_group_inline;\n\n\treturn (\n\t\t
\n\t\t\t{label &&\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t{isRequired && }\n\t\t\t\t
\n\t\t\t}\n\t\t\t
\n\t\t\t\t{children}\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport {\n\tSmartContainer,\n\tSmartItem,\n\tSmartFormGroup,\n\tSmartInline\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"spinner\":\"spinner_spinner__du8pg\",\"text\":\"spinner_text__0eQXx\"};","import { Translation } from 'components/Translations/Translation';\nimport styles from './spinner.module.scss';\n\ntype SpinnerProps = {\n\tchildren: any,\n\ttext?: string,\n\ttextColor?: string\n}\n\nconst Spinner = ({ children, text, textColor }: SpinnerProps) => {\n\treturn (\n\t\t
\n\t\t\t{children}\n\t\t\t{text &&\n\t\t\t\t}\n\t\t
\n\t)\n}\n\nexport default Spinner;\n","// extracted by mini-css-extract-plugin\nexport default {\"spinner_clip\":\"clipSpinner_spinner_clip__is3Sn\"};","import { getCssVariableValue } from 'utils/cssVariablesUtils';\nimport styles from './clipSpinner.module.scss';\n\ntype ClipSpinnerProps = {\n\tsize: number,\n\tcolor?: string\n}\n\nconst ClipSpinner = ({ size, color }: ClipSpinnerProps) => {\n\tconst brandColor = getCssVariableValue('--brand-color');\n\n\tconst spinnerColor = color || brandColor;\n\n\treturn (\n\t\t\n\t)\n}\n\nexport default ClipSpinner;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"overlaySpinner_container__zJr8a\",\"background\":\"overlaySpinner_background__D8-sQ\"};","import ClipSpinner from \"./ClipSpinner/ClipSpinner\"\nimport Spinner from \"./Spinner\"\nimport styles from './overlaySpinner.module.scss'\n\ntype Props = {\n\tsize?: number\n\tcolor?: string\n\tuseBrandColor?: boolean\n\twithBackground?: boolean\n}\n\nexport const OverlaySpinner = ({ size = 20, color = '#000', useBrandColor, withBackground }: Props) => {\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t)\n}\n","import { useCallback, useState, memo, useMemo, useRef } from 'react'\nimport { GenericColumnModel, FormatterCell } from '../models'\nimport styles from './body.module.scss'\nimport { EditableCell } from './EditableCell/EditableCell'\nimport { Tooltip } from '../Tooltip/Tooltip'\nimport { useCellFormatter } from './cellFormatter'\nimport { ErrorType } from 'components/Form'\nimport { Translation } from 'components/Translations/Translation'\n\nexport const defaultTooltipState = {\n\tvisible: false,\n\tposition: { x: 0, y: 0 }\n}\n\ntype Props = {\n\tcolumn: GenericColumnModel\n\tvalue: any\n\tcolumnWidth: number\n\trowData: any\n\tcellEdited?: (rowData: any, columnId: string, value: any) => Promise\n\terror: ErrorType | undefined\n}\n\nconst CellWithoutMemo = ({ column, value, columnWidth, rowData, cellEdited, error }: Props) => {\n\tconst contentRef = useRef(null);\n\tconst [saving, setSaving] = useState(false);\n\tconst [tooltipState, setTooltipState] = useState(defaultTooltipState);\n\n\tconst formatterCell: FormatterCell = useMemo(\n\t\t() => ({\n\t\t\tvalue,\n\t\t\trowData,\n\t\t\tcolumnId: column.id\n\t\t}),\n\t\t[value, rowData, column.id]\n\t)\n\n\tconst isCellEditable = useMemo(\n\t\t() => column.editable?.(formatterCell) || false,\n\t\t[column, formatterCell]\n\t)\n\n\tconst clickCallback = useCallback(\n\t\t(e: React.MouseEvent) => {\n\t\t\tif (isCellEditable) {\n\t\t\t\t// don't select row\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t},\n\t\t[isCellEditable]\n\t)\n\n\tconst onChangeCompleteCallback = useCallback(\n\t\tasync (columnId: string, value: any) => {\n\t\t\tif (cellEdited && rowData[columnId] !== value) {\n\t\t\t\tsetSaving(true);\n\t\t\t\tawait cellEdited(rowData, columnId, value);\n\t\t\t\tsetSaving(false);\n\t\t\t}\n\t\t},\n\t\t[cellEdited, rowData]\n\t)\n\n\tconst showTooltipCallback = useCallback(\n\t\t(e: React.MouseEvent) => {\n\t\t\tconst content = contentRef.current;\n\t\t\tif (!content) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst tooltipX = e.clientX + 12;\n\t\t\tconst tooltipY = e.clientY + 12;\n\n\t\t\tconst contentWidth = content.scrollWidth;\n\t\t\tconst contentHeight = content.scrollHeight;\n\t\t\tconst screenWidth = window.innerWidth;\n\t\t\tconst screenHeight = window.innerHeight;\n\n\t\t\tlet adjustedX = tooltipX;\n\t\t\tlet adjustedY = tooltipY;\n\n\t\t\t// Adjust position if tooltip overflow right\n\t\t\tif (tooltipX + contentWidth > screenWidth) {\n\t\t\t\tadjustedX = screenWidth - contentWidth - 12;\n\t\t\t}\n\t\t\t// Adjust position if tooltip overflow bottom\n\t\t\tif (tooltipY + contentHeight > screenHeight) {\n\t\t\t\tadjustedY = screenHeight - contentHeight - 12;\n\t\t\t}\n\n\t\t\tif (content.scrollWidth > content.clientWidth) {\n\t\t\t\tsetTooltipState({\n\t\t\t\t\tvisible: true,\n\t\t\t\t\tposition: { x: adjustedX, y: adjustedY }\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\t[]\n\t)\n\n\tconst hideTooltipCallback = useCallback(\n\t\t() => setTooltipState(defaultTooltipState),\n\t\t[]\n\t)\n\n\tconst cellFormatter = useCellFormatter();\n\n\tconst formattedCell = useMemo(\n\t\t() => {\n\t\t\tconst formatted = cellFormatter(column, formatterCell, isCellEditable);\n\t\t\t// if formatted is string, return translation of formatted\n\t\t\tif (typeof formatted === 'string') {\n\t\t\t\treturn \n\t\t\t}\n\t\t\treturn formatted;\n\t\t},\n\t\t[column, formatterCell, isCellEditable, cellFormatter]\n\t)\n\n\tconst className = `${styles.cell} ${isCellEditable ? styles.editing : ''} ${!!column.frozen ? styles.frozen : ''} ${error ? styles.error : ''}`;\n\n\tconst styleMemo = useMemo(\n\t\t() => (!isCellEditable && column.getStyle) ? column.getStyle(value) : {},\n\t\t[value, column, isCellEditable]\n\t)\n\n\t// data-type and data-columnid must always be present, so be aware when changing\n\treturn (\n\t\t\n\t\t\t{isCellEditable &&\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{formattedCell}\n\t\t\t\t\n\t\t\t\t{tooltipState.visible &&\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\n\t\t\n\t)\n}\n\nexport const Cell = memo(CellWithoutMemo);\n","import { Input } from \"components/Form\"\n\ntype Props = {\n\tvalue: string\n\tonChange(value: string): void\n\tonBlur(): void\n\tloading: boolean\n}\n\nexport const StringEditableCell = ({ value, onChange, onBlur, loading }: Props) => {\n\treturn (\n\t\t\n\t)\n}\n","import { AutoComplete } from \"components/Form\"\nimport { useMemo } from \"react\"\nimport { FormatterCell, OptionColumnModel } from \"../../models\"\n\ntype Props = {\n\tcolumn: OptionColumnModel\n\tvalue: string\n\tonChange(value: string): void\n\tonBlur(): void\n\tloading: boolean\n\tformatterCell: FormatterCell\n}\n\nexport const OptionEditableCell = ({ column, value, onChange, onBlur, loading, formatterCell }: Props) => {\n\tconst specificPropsMemo = useMemo(\n\t\t() => {\n\t\t\tconst { items, getItems, getItemText, getItemId, getItemStyle, getText } = column;\n\t\t\tconst newItems = getItems ? getItems(formatterCell) : items;\n\n\t\t\treturn {\n\t\t\t\titems: newItems,\n\t\t\t\tgetItemText,\n\t\t\t\tgetItemId,\n\t\t\t\tgetItemStyle,\n\t\t\t\tgetText\n\t\t\t}\n\t\t},\n\t\t[column, formatterCell]\n\t)\n\n\treturn (\n\t\t\n\t)\n}\n","import { DatePicker } from 'components/Form'\n\ntype Props = {\n\tvalue: Date\n\tonChange(value: Date): void\n\tonBlur(): void\n\tloading: boolean\n}\n\nexport const DateEditableCell = ({ value, onChange, onBlur, loading }: Props) => {\n\treturn (\n\t\t\n\t)\n}\n","import { InputNumber } from \"components/Form\"\n\ntype Props = {\n\tvalue: number\n\tonChange(value: number): void\n\tonBlur(): void\n\tloading: boolean\n}\n\nexport const NumberEditableCell = ({ value, onChange, onBlur, loading }: Props) => {\n\treturn (\n\t\t\n\t)\n}\n","import { Checkbox } from 'components/Form'\n\ntype Props = {\n\tvalue: boolean\n\tonChange(value: boolean): void\n\tonBlur(): void\n\tloading: boolean\n}\n\nexport const BooleanEditableCell = ({ value, onChange, onBlur, loading }: Props) => {\n\treturn (\n\t\t\n\t)\n}\n","import { MultiSelect } from 'components/Form'\nimport { useMemo } from 'react'\nimport { FormatterCell, OptionsColumnModel } from '../../models'\n\ntype Props = {\n\tcolumn: OptionsColumnModel\n\tvalue: (string | number)[]\n\tonChange(value: (string | number)[]): void\n\tonBlur(): void\n\tloading: boolean\n\tformatterCell: FormatterCell\n}\n\nexport const OptionsEditableCell = ({ column, value, onChange, onBlur, loading, formatterCell }: Props) => {\n\tconst specificPropsMemo = useMemo(\n\t\t() => {\n\t\t\tconst { items, getItemId, getItemText, getItems } = column;\n\t\t\tconst newItems = getItems ? getItems(formatterCell) : items;\n\n\t\t\treturn {\n\t\t\t\titems: newItems,\n\t\t\t\tgetItemId,\n\t\t\t\tgetItemText,\n\t\t\t\tgetItems\n\t\t\t}\n\t\t},\n\t\t[column, formatterCell]\n\t)\n\n\treturn (\n\t\t\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"linkCell_container__Jb+g7\",\"dropdown_content\":\"linkCell_dropdown_content__lsNQ+\",\"link_item\":\"linkCell_link_item__gRuiA\",\"link\":\"linkCell_link__E3jTv\",\"delete_icon\":\"linkCell_delete_icon__bHgUF\",\"add_icon\":\"linkCell_add_icon__UNX0B\",\"link_badge\":\"linkCell_link_badge__P9RkA\"};","import { DeleteIcon, LinkIcon, PlusIcon } from 'components/icons/icons'\nimport { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport styles from './linkCell.module.scss'\nimport { Input } from 'components/Form'\nimport { getAbsoluteUrl } from '../LinkCell/helper'\nimport { createPortal } from 'react-dom'\nimport { Cover } from 'components/Cover'\nimport { getCssVariableValue } from 'utils/cssVariablesUtils'\n\nconst isValidLink = (link: string) => {\n\tconst regex = /^(https?:\\/\\/|www\\.)[\\w-]+(\\.[\\w-]+)+([/?#].*)?$/i\n\treturn regex.test(link);\n}\n\ntype Props = {\n\tvalue: string\n\tonChange(value: string): void\n\tonBlur(): void\n}\n\nexport const LinkEditableCell = ({ value, onChange, onBlur }: Props) => {\n\tconst containerRef = useRef(null);\n\tconst [isOpen, setIsOpen] = useState(false);\n\tconst [newLink, setNewLink] = useState('');\n\tconst [showLinkInput, setShowLinkInput] = useState(false);\n\tconst [dropdownStyle, setDropdownStyle] = useState({});\n\tconst [errorStyle, setErrorStyle] = useState({});\n\n\tconst openCellDropdownCallback = useCallback(\n\t\t() => setIsOpen(true),\n\t\t[]\n\t)\n\n\tconst closeCellDropdownCallback = useCallback(\n\t\t() => setIsOpen(false),\n\t\t[]\n\t)\n\n\tconst handleOpenLinkCallback = useCallback(\n\t\t(link: string) => {\n\t\t\tconst url = getAbsoluteUrl(link);\n\t\t\twindow.open(url, '_blank');\n\t\t\tcloseCellDropdownCallback();\n\t\t},\n\t\t[closeCellDropdownCallback]\n\t)\n\n\tconst handleDeleteCallback = useCallback(\n\t\t(uri: string) => {\n\t\t\tconst updatedLinks = value.split(';').filter(link => link !== uri).join(';');\n\t\t\tonChange(updatedLinks);\n\t\t},\n\t\t[value, onChange]\n\t)\n\n\tconst handleOnChangeCallback = useCallback(\n\t\t() => {\n\t\t\tif (isValidLink(newLink)) {\n\t\t\t\tconst updatedLinks = value ? `${value};${newLink}` : newLink;\n\t\t\t\tonChange(updatedLinks);\n\t\t\t\tsetNewLink('');\n\t\t\t\tsetShowLinkInput(false);\n\t\t\t} else {\n\t\t\t\tsetErrorStyle({ borderColor: getCssVariableValue('--error-color') });\n\t\t\t}\n\t\t},\n\t\t[value, newLink, onChange]\n\t)\n\n\tconst handleOnBlurCallback = useCallback(\n\t\t() => {\n\t\t\tonBlur();\n\t\t\thandleOnChangeCallback();\n\t\t},\n\t\t[onBlur, handleOnChangeCallback]\n\t)\n\n\tconst onKeyDownCallback = useCallback(\n\t\t(eventKey: string) => {\n\t\t\tif (eventKey === 'Enter') {\n\t\t\t\thandleOnChangeCallback();\n\t\t\t}\n\t\t},\n\t\t[handleOnChangeCallback]\n\t)\n\n\tconst linkCount = useMemo(\n\t\t() => (value || '').split(';').filter(x => !!x).length,\n\t\t[value]\n\t)\n\n\tconst dropdownContentMemo = useMemo(\n\t\t() => {\n\t\t\tconst dropdownContent = (\n\t\t\t\t
\n\t\t\t\t\t{(value || '').split(';').filter(x => !!x).map((link, i) => (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t handleOpenLinkCallback(link)}\n\t\t\t\t\t\t\t\ttitle={link}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{link}\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t handleDeleteCallback(link)} />\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t))}\n\t\t\t\t\t{!showLinkInput ?\n\t\t\t\t\t\t
setShowLinkInput(true)}>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t:\n\t\t\t\t\t\t setNewLink(newValue)}\n\t\t\t\t\t\t\tonBlur={handleOnBlurCallback}\n\t\t\t\t\t\t\tonKeyDown={onKeyDownCallback}\n\t\t\t\t\t\t\tstyle={errorStyle}\n\t\t\t\t\t\t\thideMaxLength\n\t\t\t\t\t\t\tsize='small'\n\t\t\t\t\t\t\tfocus\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t);\n\n\t\t\treturn createPortal(dropdownContent, document.body);\n\t\t},\n\t\t[value, dropdownStyle, showLinkInput, newLink, errorStyle, handleOnBlurCallback, handleOpenLinkCallback, handleDeleteCallback, onKeyDownCallback]\n\t)\n\n\tconst calculateDropdownPortalStyle = useCallback(\n\t\t() => {\n\t\t\tconst container = containerRef.current;\n\n\t\t\tif (container) {\n\t\t\t\tconst { bottom, top, width, left } = container.getBoundingClientRect();\n\n\t\t\t\tconst viewportHeight = window.innerHeight;\n\t\t\t\tconst spaceBelow = viewportHeight - bottom;\n\t\t\t\tconst spaceAbove = top\n\t\t\t\tconst dropdownHeight = linkCount >= 5 ? 160 : linkCount > 0 ? linkCount * 32 : 32; // maxHeight(5 options * 32px)\n\t\t\t\tconst openAbove = spaceBelow < dropdownHeight && spaceAbove > spaceBelow;\n\t\t\t\tconst dropdownMaxWidth = 500;\n\n\t\t\t\tconst dropdownStyle: React.CSSProperties = {\n\t\t\t\t\tminWidth: `${width}px`,\n\t\t\t\t\tmaxWidth: `${dropdownMaxWidth}px`,\n\t\t\t\t\tleft: `${left + window.scrollX}px`,\n\t\t\t\t\t...(openAbove ?\n\t\t\t\t\t\t{ bottom: `${viewportHeight - spaceAbove - window.scrollY}px` } :\n\t\t\t\t\t\t{ top: `${bottom + window.scrollY}px` }\n\t\t\t\t\t),\n\t\t\t\t};\n\n\t\t\t\tsetDropdownStyle(dropdownStyle);\n\t\t\t}\n\t\t},\n\t\t[linkCount]\n\t)\n\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (isOpen) {\n\t\t\t\tcalculateDropdownPortalStyle();\n\n\t\t\t\twindow.addEventListener('scroll', calculateDropdownPortalStyle, true);\n\n\t\t\t\treturn () => {\n\t\t\t\t\twindow.removeEventListener('scroll', calculateDropdownPortalStyle, true);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[isOpen, calculateDropdownPortalStyle]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t{isOpen && }\n\t\t\t
\n\t\t\t\t\n\t\t\t\t{linkCount > 0 && {linkCount}}\n\t\t\t
\n\t\t\t{isOpen && dropdownContentMemo}\n\t\t
\n\t)\n}\n","import { TimePicker } from 'components/Form'\nimport { TimeColumnModel } from '../../models'\n\ntype Props = {\n\tcolumn: TimeColumnModel\n\tvalue: number\n\tonChange(value: number): void\n\tonBlur(): void\n\tloading: boolean\n}\n\nexport const TimeEditableCell = ({ column, value, onChange, onBlur, loading }: Props) => {\n\treturn (\n\t\t\n\t)\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\"\nimport { GenericColumnModel, BooleanColumnModel, DateColumnModel, NumberColumnModel, OptionColumnModel, OptionsColumnModel, StringColumnModel, LinkColumnModel, CurrencyColumnModel, FormatterCell, TimeColumnModel, DurationColumnModel } from \"../../models\"\nimport { convertMinutesToTicks, convertTicksToMinutes } from \"utils/dateTimeUtils\"\nimport { StringEditableCell } from \"./StringEditableCell\"\nimport { OptionEditableCell } from \"./OptionEditableCell\"\nimport { DateEditableCell } from \"./DateEditableCell\"\nimport { NumberEditableCell } from \"./NumberEditableCell\"\nimport { BooleanEditableCell } from \"./BooleanEditableCell\"\nimport { OptionsEditableCell } from \"./OptionsEditableCell\"\nimport { LinkEditableCell } from \"./LinkEditableCell\"\nimport { TimeEditableCell } from \"./TimeEditableCell\"\n\ntype Props = {\n\tcolumn: GenericColumnModel\n\tvalue: any\n\tonChangeComplete(columnId: string, value: any): void\n\tloading: boolean\n\tformatterCell: FormatterCell\n}\n\nexport const EditableCell = ({ column, value, onChangeComplete, loading, formatterCell }: Props) => {\n\tconst [currentValue, setCurrentValue] = useState(value);\n\t// setCurrentValueCallback and onBlur are called by AutoComplete in the same execution, so onBlur has old currentValue\n\t// everything about currentValueRef is a quick fix, feel free to reimplement if there is some simple solution\n\tconst currentValueRef = useRef();\n\tcurrentValueRef.current = currentValue;\n\n\tuseEffect(\n\t\t() => {\n\t\t\tsetCurrentValue(column instanceof DurationColumnModel ? convertTicksToMinutes(value) : value);\n\t\t},\n\t\t[value, column]\n\t)\n\n\tconst onBlurCallback = useCallback(\n\t\t() => {\n\t\t\tif (column instanceof DurationColumnModel) {\n\t\t\t\tconst ticks = convertMinutesToTicks(currentValueRef.current);\n\t\t\t\tonChangeComplete(column.id, ticks);\n\t\t\t} else {\n\t\t\t\tonChangeComplete(column.id, currentValueRef.current);\n\t\t\t}\n\t\t},\n\t\t[column, onChangeComplete]\n\t)\n\n\tconst setCurrentValueCallback = useCallback(\n\t\t(value: any) => {\n\t\t\t// for boolean column, change is completed on every change,\n\t\t\t// and for other columns, change is completed on blur\n\t\t\tif (column instanceof BooleanColumnModel) {\n\t\t\t\tcurrentValueRef.current = value;\n\t\t\t\tsetCurrentValue(value);\n\t\t\t\tonChangeComplete(column.id, value);\n\t\t\t} else {\n\t\t\t\tcurrentValueRef.current = value;\n\t\t\t\tsetCurrentValue(value)\n\t\t\t}\n\t\t},\n\t\t[column, onChangeComplete]\n\t)\n\n\tconst props = useMemo(\n\t\t() => {\n\t\t\treturn {\n\t\t\t\tvalue: currentValue,\n\t\t\t\tonChange: setCurrentValueCallback,\n\t\t\t\tonBlur: onBlurCallback,\n\t\t\t\tloading\n\t\t\t}\n\t\t},\n\t\t[currentValue, setCurrentValueCallback, onBlurCallback, loading]\n\t)\n\n\tif (column instanceof OptionColumnModel) {\n\t\treturn \n\t} else if (column instanceof OptionsColumnModel) {\n\t\treturn \n\t} else if (column instanceof DateColumnModel) {\n\t\treturn \n\t} else if (column instanceof LinkColumnModel) {\n\t\treturn \n\t} else if (column instanceof NumberColumnModel || column instanceof CurrencyColumnModel || column instanceof DurationColumnModel) {\n\t\treturn \n\t} else if (column instanceof TimeColumnModel) {\n\t\treturn \n\t} else if (column instanceof BooleanColumnModel) {\n\t\treturn \n\t} else if (column instanceof StringColumnModel) {\n\t\treturn \n\t}\n\t// TODO:code_improvements FormattedReference is missing in editable cells, instead when there is need for editing we use Option(s)\n\t// so we should create some support for FormattedReference editing to make it cleaner\n\n\treturn <>\n}\n","export const getAbsoluteUrl = (url: string) => {\n\tif (!url.startsWith('http://') && !url.startsWith('https://')) {\n\t\treturn `https://${url}`;\n\t}\n\n\treturn url;\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"linkCell_container__bDPQn\",\"dropdown_content\":\"linkCell_dropdown_content__6L+T9\",\"link_item\":\"linkCell_link_item__Wf8-0\",\"link\":\"linkCell_link__s2aUk\",\"link_badge\":\"linkCell_link_badge__9d8fg\",\"simple_attachment\":\"linkCell_simple_attachment__D9nKX\",\"icon\":\"linkCell_icon__ZqT5v\"};","import { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { AttachmentIcon, LinkIcon } from 'components/icons/icons';\nimport { getAbsoluteUrl } from './helper';\nimport styles from './linkCell.module.scss'\nimport FileSaver from 'file-saver';\nimport { OverlaySpinner } from 'components/Spinner';\nimport { createPortal } from 'react-dom';\nimport { Cover } from 'components/Cover';\n\ntype AttachmentType = {\n\tid: number\n\tname: string\n\turi?: string | undefined;\n}\n\ntype Props = {\n\tvalue: string | AttachmentType[]\n\tisCellEditable: boolean | undefined\n\ttype: 'link' | 'attachment'\n\troute?: string\n\tdownloadAttachment?: (attachmentId: number) => Promise\n\tisSimpleAttachment?: boolean\n}\n\nexport const LinkCell = ({ value, isCellEditable = false, type, route, downloadAttachment, isSimpleAttachment }: Props) => {\n\tconst containerRef = useRef(null);\n\tconst [isOpen, setIsOpen] = useState(false);\n\tconst [downloadingId, setDownloadingId] = useState();\n\tconst [dropdownStyle, setDropdownStyle] = useState({});\n\n\tconst handleOpenCallback = useCallback(\n\t\t(e: React.MouseEvent) => {\n\t\t\t// don't select row\n\t\t\te.stopPropagation();\n\n\t\t\tsetIsOpen(true);\n\t\t},\n\t\t[]\n\t)\n\n\tconst handleCloseCallback = useCallback(\n\t\t() => {\n\t\t\tif (!downloadingId) {\n\t\t\t\tsetIsOpen(false);\n\t\t\t}\n\t\t},\n\t\t[downloadingId]\n\t)\n\n\tconst handleOnLinkClickCallback = useCallback(\n\t\tasync (e: React.MouseEvent, link: string | number) => {\n\t\t\t// don't select row\n\t\t\te.stopPropagation();\n\n\t\t\tif (type === 'link' && typeof link === 'string') {\n\t\t\t\tconst url = getAbsoluteUrl(link);\n\t\t\t\twindow.open(url, '_blank');\n\t\t\t}\n\n\t\t\tif (type === 'attachment' && downloadAttachment) {\n\t\t\t\t// if attachment is simple, then link value is 'string' as file name. We pass 0 as argument, and don't use 'id' for bind function in this case.\n\t\t\t\tconst id = typeof link === 'number' ? link : 0;\n\t\t\t\tsetDownloadingId(link);\n\t\t\t\tconst response = await downloadAttachment(id);\n\n\t\t\t\tif (response.status === 200) {\n\t\t\t\t\tFileSaver.saveAs(response.data, response.fileName);\n\t\t\t\t}\n\n\t\t\t\tsetDownloadingId(undefined);\n\t\t\t}\n\n\t\t\thandleCloseCallback();\n\t\t},\n\t\t[handleCloseCallback, type, downloadAttachment]\n\t)\n\n\tconst renderItemsMemo = useMemo(\n\t\t() => {\n\t\t\tif (isSimpleAttachment) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tif (type === 'link') {\n\t\t\t\tconst links = (value as string).split(';').filter(x => !!x);\n\t\t\t\tconst routes = route?.split(';').filter(x => !!x) || [];\n\n\t\t\t\treturn links.map((link, i) => {\n\t\t\t\t\tconst route = routes[i];\n\t\t\t\t\treturn (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{route ?\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{link}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t
handleOnLinkClickCallback(e, link)} title={link}>\n\t\t\t\t\t\t\t\t\t{link}\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t
\n\t\t\t\t\t)\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn (value as AttachmentType[]).map((attachment) => (\n\t\t\t\t\t
\n\t\t\t\t\t\t
handleOnLinkClickCallback(e, attachment.id)}>\n\t\t\t\t\t\t\t{attachment.name}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t{downloadingId === attachment.id &&\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t));\n\t\t\t}\n\t\t},\n\t\t[handleOnLinkClickCallback, type, value, downloadingId, isSimpleAttachment, route]\n\t)\n\n\tconst linkCount = useMemo(\n\t\t() => {\n\t\t\treturn type === 'link' ?\n\t\t\t\t(value as string).split(';').filter(x => !!x).length :\n\t\t\t\t(value as AttachmentType[]).length;\n\t\t},\n\t\t[value, type]\n\t)\n\n\tconst calculateDropdownPortalStyle = useCallback(\n\t\t() => {\n\t\t\tconst container = containerRef.current;\n\n\t\t\tif (container) {\n\t\t\t\tconst { bottom, top, width, left } = container.getBoundingClientRect();\n\n\t\t\t\tconst viewportHeight = window.innerHeight;\n\t\t\t\tconst spaceBelow = viewportHeight - bottom;\n\t\t\t\tconst spaceAbove = top\n\t\t\t\tconst dropdownHeight = linkCount >= 5 ? 160 : linkCount > 0 ? linkCount * 32 : 32; // maxHeight(5 options * 32px)\n\t\t\t\tconst openAbove = spaceBelow < dropdownHeight && spaceAbove > spaceBelow;\n\t\t\t\tconst dropdownMaxWidth = 500;\n\n\t\t\t\tconst dropdownStyle: React.CSSProperties = {\n\t\t\t\t\tminWidth: `${width}px`,\n\t\t\t\t\tmaxWidth: `${dropdownMaxWidth}px`,\n\t\t\t\t\tleft: `${left + window.scrollX}px`,\n\t\t\t\t\t...(openAbove ?\n\t\t\t\t\t\t{ bottom: `${viewportHeight - spaceAbove - window.scrollY}px` } :\n\t\t\t\t\t\t{ top: `${bottom + window.scrollY}px` }\n\t\t\t\t\t),\n\t\t\t\t};\n\n\t\t\t\tsetDropdownStyle(dropdownStyle);\n\t\t\t}\n\t\t},\n\t\t[linkCount]\n\t)\n\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (isOpen) {\n\t\t\t\tcalculateDropdownPortalStyle();\n\n\t\t\t\twindow.addEventListener('scroll', calculateDropdownPortalStyle, true);\n\n\t\t\t\treturn () => {\n\t\t\t\t\twindow.removeEventListener('scroll', calculateDropdownPortalStyle, true);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[isOpen, calculateDropdownPortalStyle]\n\t)\n\n\tif (isSimpleAttachment) {\n\t\treturn (\n\t\t\t
handleOnLinkClickCallback(e, value as string)}>\n\t\t\t\t\n\t\t\t\t{value as string}\n\t\t\t\t{downloadingId === value as string && }\n\t\t\t
\n\t\t)\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t
\n\t\t\t\t{isOpen && }\n\t\t\t\t{type === 'link' ?\n\t\t\t\t\t :\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t{linkCount}\n\t\t\t
\n\t\t\t{isOpen && !isCellEditable &&\n\t\t\t\tcreatePortal(\n\t\t\t\t\t
\n\t\t\t\t\t\t{renderItemsMemo}\n\t\t\t\t\t
,\n\t\t\t\t\tdocument.body\n\t\t\t\t)\n\t\t\t}\n\t\t\n\t)\n}\n","import { AttachmentColumnModel, BooleanColumnModel, CurrencyColumnModel, DateColumnModel, DateTimeColumnModel, DurationColumnModel, FormattedReferenceColumnModel, FormatterCell, GenericColumnModel, LinkColumnModel, MapOptionColumnModel, NumberColumnModel, OptionColumnModel, OptionsColumnModel, SemaphoreColumnModel, StringColumnModel, TimeColumnModel } from \"../models\";\nimport { convertToAbsoluteName, getSelectedItem, MapItem } from \"components/Form/controls/MapPicker/MapPicker/helpers\";\nimport { formatCurrencyUtil } from \"utils/currencyUtils\";\nimport { LinkCell } from \"./LinkCell/LinkCell\";\nimport { getFormatedId } from \"utils/commonHelper\";\nimport { CheckIcon, LinkIcon } from \"components/icons/icons\";\nimport { convertTicksToMinutes, formatTime, formatTimeWithoutAmOrPm, minutesToDhm, useFormatDate, useFormatDateTime } from \"utils/dateTimeUtils\";\nimport styles from './body.module.scss'\nimport { useCallback } from 'react';\n\nconst formattedOptionValue = (column: GenericColumnModel, formatterCell: FormatterCell) => {\n\tconst { items, getItemId, getItemText, getItems } = column as OptionColumnModel;\n\tconst newItems = getItems ? getItems(formatterCell) : items;\n\tif (newItems && getItemId && getItemText) {\n\t\tconst selectedOption = newItems.find((item: any) => getItemId(item) === formatterCell.value);\n\t\treturn selectedOption ? getItemText(selectedOption) : formatterCell.value;\n\t}\n\treturn formatterCell.value;\n}\n\nconst formattedOptionsValue = (column: GenericColumnModel, formatterCell: FormatterCell) => {\n\tconst { items, getItemId, getItemText, getItems } = column as OptionColumnModel;\n\tconst newItems = getItems ? getItems(formatterCell) : items;\n\n\tconst formattedValues: any[] = [];\n\tfor (let itemValue of formatterCell.value || []) {\n\t\tconst selectedOption = newItems.find((item: any) => getItemId(item) === itemValue);\n\t\tformattedValues.push(selectedOption ? getItemText(selectedOption) : itemValue);\n\t}\n\n\treturn formattedValues.join(', ');\n}\n\nconst formatMapOption = (id: number | undefined, options: MapItem[] = []) => {\n\tconst selectedOption = getSelectedItem(id, options);\n\tif (selectedOption) {\n\t\treturn convertToAbsoluteName(selectedOption, options);\n\t}\n\n\treturn '';\n}\n\nconst formatCurrency = (value: number | undefined) => {\n\treturn formatCurrencyUtil(value) || '';\n}\n\nconst formattedLinkValue = (value: string | undefined, isCellEditable: boolean) => {\n\treturn value ? : <>;\n}\n\nconst formattedAttachmentValue = (value: any[] | undefined, column: AttachmentColumnModel, formatterCell: FormatterCell, isCellEditable: boolean) => {\n\tif (!value || value.length === 0) {\n\t\treturn <>;\n\t}\n\n\tconst downloadAttachmentFunction = column.download ?\n\t\tasync (attachmentId: number) => column.download && column.download(formatterCell, attachmentId)\n\t\t: undefined;\n\n\treturn (\n\t\t\n\t)\n}\n\nconst createSemaphoreElement = (value: string, column: SemaphoreColumnModel) => {\n\tconst item = column.colors.find((item) => item.id === value);\n\tconst color = item?.color;\n\tconst text = item?.text;\n\n\tconst handleMouseOver = (e: React.MouseEvent) => {\n\t\tif (text) {\n\t\t\tconst target = e.currentTarget;\n\t\t\tconst { left, width, top, height } = target.getBoundingClientRect();\n\t\t\tconst tooltipY = top - height + 2;\n\t\t\tconst tooltipX = left + width + 12;\n\n\t\t\tconst tooltip = document.createElement('div');\n\t\t\ttooltip.textContent = text;\n\t\t\tObject.assign(tooltip.style, {\n\t\t\t\tposition: 'fixed',\n\t\t\t\ttop: `${tooltipY}px`,\n\t\t\t\tleft: `${tooltipX}px`,\n\t\t\t\tbackgroundColor: 'var(--table-tooltip-background)',\n\t\t\t\tcolor: 'var(--content-color)',\n\t\t\t\tfontSize: 'var(--font-size-small)',\n\t\t\t\toutline: '1px solid var(--table-tooltip-background)',\n\t\t\t\tpadding: '6px',\n\t\t\t\tborderRadius: '4px',\n\t\t\t\tzIndex: '10',\n\t\t\t\tmaxWidth: '375px',\n\t\t\t\twordWrap: 'break-word',\n\t\t\t\twhiteSpace: 'normal'\n\t\t\t});\n\n\t\t\tconst arrow = document.createElement('div');\n\t\t\tObject.assign(arrow.style, {\n\t\t\t\tposition: 'absolute',\n\t\t\t\twidth: '0',\n\t\t\t\theight: '0',\n\t\t\t\tborderTop: '4px solid transparent',\n\t\t\t\tborderBottom: '4px solid transparent',\n\t\t\t\tborderRight: '6px solid var(--table-tooltip-background)',\n\t\t\t\ttop: '50%',\n\t\t\t\tleft: '-6px',\n\t\t\t\ttransform: 'translateY(-50%)'\n\t\t\t});\n\n\t\t\ttooltip.appendChild(arrow);\n\t\t\ttooltip.className = 'custom_tooltip';\n\t\t\tdocument.body.appendChild(tooltip);\n\t\t}\n\t}\n\n\tconst handleMouseLeave = () => {\n\t\tconst tooltip = document.querySelector('.custom_tooltip');\n\t\tif (tooltip) {\n\t\t\ttooltip.remove();\n\t\t}\n\t}\n\n\treturn (\n\t\t\n\t)\n}\n\nconst formatReferenceColumn = (value: number | number[] | undefined, column: FormattedReferenceColumnModel, formatterCell: FormatterCell, isCellEditable: boolean) => {\n\tif (!value) {\n\t\treturn '';\n\t}\n\n\tconst formattedValue = !Array.isArray(value) ?\n\t\tgetFormatedId(column.entityPrefix, value) :\n\t\tvalue.map((id) => getFormatedId(column.entityPrefix, id)).join(';');\n\n\tif (column.route) {\n\t\tconst route = column.route(formatterCell);\n\n\t\tif (column.multiLink) {\n\t\t\treturn ;\n\t\t}\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t{formattedValue}\n\t\t\t
\n\t\t)\n\t} else {\n\t\treturn formattedValue;\n\t}\n}\n\nconst formatDurationValue = (value: number | undefined, column: DurationColumnModel) => {\n\tif (column.showInDhm) {\n\t\treturn minutesToDhm(value || 0);\n\t}\n\n\treturn value ? `${convertTicksToMinutes(value)} min` : '';\n}\n\nconst formatTimeValue = (value: number | undefined, column: TimeColumnModel) => {\n\tif (column.isDuration) {\n\t\treturn formatTimeWithoutAmOrPm(value);\n\t}\n\n\treturn formatTime(value);\n}\n\n// Body cell, footer cell and Ticket History (History.tsx) use it\nexport const useCellFormatter = () => {\n\tconst formatDate = useFormatDate();\n\tconst formatDateTime = useFormatDateTime();\n\n\treturn useCallback(\n\t\t(column: GenericColumnModel, formatterCell: FormatterCell, isCellEditable: boolean) => {\n\t\t\tconst value = formatterCell.value;\n\t\t\tconst isBooleanColumn = column instanceof BooleanColumnModel;\n\n\t\t\tif (column.formatter) {\n\t\t\t\treturn column.formatter(formatterCell);\n\t\t\t}\n\n\t\t\tif (column instanceof FormattedReferenceColumnModel) {\n\t\t\t\treturn formatReferenceColumn(value, column, formatterCell, isCellEditable);\n\t\t\t} else if (column instanceof SemaphoreColumnModel) {\n\t\t\t\treturn createSemaphoreElement(value, column);\n\t\t\t} else if (column instanceof DateColumnModel) {\n\t\t\t\treturn formatDate(value);\n\t\t\t} else if (column instanceof DateTimeColumnModel) {\n\t\t\t\treturn formatDateTime(value);\n\t\t\t} else if (column instanceof CurrencyColumnModel) {\n\t\t\t\treturn formatCurrency(value && parseFloat(value));\n\t\t\t} else if (column instanceof OptionsColumnModel) {\n\t\t\t\treturn formattedOptionsValue(column, formatterCell);\n\t\t\t} else if (column instanceof OptionColumnModel) {\n\t\t\t\treturn formattedOptionValue(column, formatterCell);\n\t\t\t} else if (column instanceof MapOptionColumnModel) {\n\t\t\t\treturn formatMapOption(value && parseInt(value), column.items);\n\t\t\t} else if (column instanceof LinkColumnModel) {\n\t\t\t\treturn formattedLinkValue(value, isCellEditable);\n\t\t\t} else if (column instanceof AttachmentColumnModel) {\n\t\t\t\treturn formattedAttachmentValue(value, column, formatterCell, isCellEditable);\n\t\t\t} else if (column instanceof TimeColumnModel) {\n\t\t\t\treturn formatTimeValue(value, column);\n\t\t\t} else if (column instanceof DurationColumnModel) {\n\t\t\t\treturn formatDurationValue(value, column);\n\t\t\t} else if (column instanceof NumberColumnModel) {\n\t\t\t\treturn value ? parseInt(value) : '';\n\t\t\t} else if (column instanceof StringColumnModel) {\n\t\t\t\treturn value ? value.toString() : '';\n\t\t\t} else if (isBooleanColumn && !isCellEditable) {\n\t\t\t\treturn value ? : <>;\n\t\t\t}\n\n\t\t\treturn '';\n\t\t},\n\t\t[formatDate, formatDateTime]\n\t)\n\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"content\":\"tooltip_content__NNm98\"};","import { Translation } from 'components/Translations/Translation'\nimport styles from './tooltip.module.scss'\n\ntype Props = {\n\tcontent: string // TODO: content moze biti string | number | React.ReactElement (formatter iz models.ts) pa bi valjalo implementirati tako i tooltip\n\ttopPosition: number\n\tleftPosition: number\n\twithTranslation?: boolean\n}\n\nexport const Tooltip = ({ content, topPosition, leftPosition, withTranslation = false }: Props) => {\n\treturn (\n\t\t
\n\t\t\t{withTranslation ? : content}\n\t\t
\n\t)\n}\n","import { ErrorType } from \"components/Form\";\nimport { MapItem } from \"components/Form/controls/MapPicker/MapPicker/helpers\";\nimport { SemaphoreItemType } from \"components/Form/controls/Semaphore/SemaphoreItem\";\nimport { EntityPrefixEnum } from \"utils/commonHelper\"\n\n/** Type of first argument in Column formatter method */\nexport type FormatterCell = {\n\t/** Unformatted value of the cell */\n\tvalue: any;\n\t/** GenericColumnModel concrete object that is passed to the row that contains the cell */\n\trowData: any;\n\tcolumnId: string;\n}\n\nexport type ValidatorFunc = (cell: FormatterCell) => ErrorType | undefined\n\nexport const enum FooterCalculatorEnum {\n\tSUM = 'sum'\n}\n\n/** Abstract model of Column. Concrete models extend this one. */\nexport class GenericColumnModel {\n\t/** Column id */\n\tid: string;\n\t/** Title that is displayed in Column header */\n\ttitle: string;\n\t/** Returns formatted value for display. Table has its fallback formatters based on type of Column, so in most common cases it is not needed to set it. */\n\tformatter?: (cell: FormatterCell) => string | number | React.ReactElement;\n\t/** Initial width of column. User can resize that column. */\n\twidth?: number;\n\t/** Column that needs to be frozen/sticky to the start/end of the table, and not scrolled horizontaly.\n\t * For now 'start' value should be set only for first n columns, and 'end' for last m columns (we cannot say 'start' or 'end' for column that is somewhere in the middle) */\n\tfrozen?: 'start' | 'end';\n\t/** Horizontal align of the Cell content. By default it is 'left'. */\n\talign?: 'left' | 'center' | 'right';\n\t/** Defines the first column in the Nested Table, used only for expanding or collapsing child rows. */\n\tisNested?: boolean;\n\t/** If cell needs to have specific CSS styles, this method should be used and return object that is passed to style property of Cell component. For example color of Cell content. */\n\tgetStyle?: (value: any) => React.CSSProperties;\n\t/** Removes sort icon from Column header. */\n\tdisableSort?: boolean;\n\t/** Removes filter functionality from Column header. */\n\tdisableFilter?: boolean;\n\t/** Value that will be displayed in footer cell. Footer will be shown only if some column sets footerValue */\n\tfooterValue?: () => number | string;\n\t/** Calculates footer value. If footerValue is set, this option is ignored */\n\tfooterCalculator?: FooterCalculatorEnum;\n\t/** Returns formatted value to display in footer. Usually used to format footerCalculator value */\n\tfooterFormatter?: (cell: FormatterCell) => string | number;\n\n\t/** Cells inside of this Column are clickable and editable control based on the type of Column will be mounted inside of the Cell */\n\teditable?: (cell: FormatterCell) => boolean;\n\t/** Cells inside of this Column's footer are clickable and editable control based on the type of Column will be mounted inside of the footer Cell */\n\tfooterEditable?: (cell: FormatterCell) => boolean;\n\t/** Only editable cells are validated and save is blocked until all columns validator successfully passed */\n\tvalidator?: ValidatorFunc;\n\t/** If column is required, it adds '*' to the header and validates if cell is empty. */\n\tisRequired?: (cell: FormatterCell) => boolean\n\n\tconstructor(data: GenericColumnModel) {\n\t\tthis.id = data.id;\n\t\tthis.title = data.title;\n\t\tthis.formatter = data.formatter;\n\t\tthis.width = data.width;\n\t\tthis.frozen = data.frozen;\n\t\tthis.align = data.align;\n\t\tthis.isNested = data.isNested;\n\t\tthis.editable = data.editable;\n\t\tthis.getStyle = data.getStyle;\n\t\tthis.disableSort = data.disableSort;\n\t\tthis.disableFilter = data.disableFilter;\n\t\tthis.footerValue = data.footerValue;\n\t\tthis.footerCalculator = data.footerCalculator;\n\t\tthis.footerFormatter = data.footerFormatter;\n\t\tthis.editable = data.editable;\n\t\tthis.footerEditable = data.footerEditable;\n\t\tthis.validator = data.validator;\n\t\tthis.isRequired = data.isRequired;\n\t}\n}\n\nexport class StringColumnModel extends GenericColumnModel { }\nexport class DateColumnModel extends GenericColumnModel { }\nexport class DateTimeColumnModel extends GenericColumnModel { }\nexport class NumberColumnModel extends GenericColumnModel { }\nexport class BooleanColumnModel extends GenericColumnModel { }\nexport class CurrencyColumnModel extends GenericColumnModel { }\nexport class LinkColumnModel extends GenericColumnModel { }\n\nexport class TimeColumnModel extends GenericColumnModel {\n\t/** If it is not time in a day, but some amount of effort or duration. So we display time span with hours that are unlimited and minutes that are limited to 0-59 */\n\tisDuration?: boolean;\n\n\tconstructor(data: TimeColumnModel) {\n\t\tsuper(data);\n\t\tthis.isDuration = data.isDuration;\n\t}\n}\n\nexport class DurationColumnModel extends GenericColumnModel {\n\tshowInDhm?: boolean;\n\n\tconstructor(data: DurationColumnModel) {\n\t\tsuper(data);\n\t\tthis.showInDhm = data.showInDhm;\n\t}\n}\n\nexport class AttachmentColumnModel extends GenericColumnModel {\n\tdownload?: (cell: FormatterCell, attachmentId: number) => Promise\n\tsimple?: boolean\n\n\tconstructor(data: AttachmentColumnModel) {\n\t\tsuper(data);\n\t\tthis.download = data.download;\n\t\tthis.simple = data.simple;\n\t}\n}\n\nexport class SemaphoreColumnModel extends GenericColumnModel {\n\tcolors: SemaphoreItemType[];\n\n\tconstructor(data: SemaphoreColumnModel) {\n\t\tsuper(data);\n\t\tthis.colors = data.colors;\n\t}\n}\n\nexport class FormattedReferenceColumnModel extends GenericColumnModel {\n\tentityPrefix: EntityPrefixEnum;\n\troute?: (cell: FormatterCell) => string;\n\tmultiLink?: boolean;\n\n\tconstructor(data: FormattedReferenceColumnModel) {\n\t\tsuper(data);\n\t\tthis.entityPrefix = data.entityPrefix;\n\t\tthis.route = data.route;\n\t\tthis.multiLink = data.multiLink;\n\t}\n}\n\n// created generic model, so Option, Options and Map can extend it\n// (not good if concrete model extends another concrete model, then we would need to take care about order of if/else checks for instanceof)\nexport class OptionGenericColumnModel extends GenericColumnModel {\n\titems: T[];\n\tgetItems?: (cell: FormatterCell) => T[];\n\tgetItemId: (option: T) => number | string;\n\tgetItemText: (option: T) => string;\n\tgetItemStyle?: (option: T) => React.CSSProperties;\n\n\tconstructor(data: OptionGenericColumnModel) {\n\t\tsuper(data);\n\t\tthis.items = data.items;\n\t\tthis.getItems = data.getItems;\n\t\tthis.getItemId = data.getItemId;\n\t\tthis.getItemText = data.getItemText;\n\t\tthis.getItemStyle = data.getItemStyle;\n\t}\n}\n\nexport class MapOptionColumnModel extends OptionGenericColumnModel { }\nexport class OptionsColumnModel extends OptionGenericColumnModel { }\n\nexport class OptionColumnModel extends OptionGenericColumnModel {\n\t/** If text inside of control needs to be displayed differently than text inside of option items. */\n\tgetText?: (option: T) => string | undefined;\n\n\tconstructor(data: OptionColumnModel) {\n\t\tsuper(data);\n\t\tthis.getText = data.getText;\n\t}\n}\n\n// interaction types\n\nexport type SortType = {\n\tcolumnId?: string\n\tisAsc?: boolean\n}\n\nexport type OrFilterType = {\n\tcolumnId?: string | undefined\n\tvalue?: any | undefined\n\toperation?: any // TODO:code_improvement GenericFilterOperationEnum\n}\n\nexport type FilterType = {\n\tcolumnId?: string | undefined\n\tvalue?: any | undefined\n\toperation?: any // TODO:code_improvement GenericFilterOperationEnum\n\torFilters?: OrFilterType[] | undefined\n}\n\nexport type FilterSortPageType = {\n\toffset: number\n\tlimit: number\n\t/** Used only for NestedTable to handle pagination changes when needed. */\n\tnestedLimit?: number\n\tfilters?: FilterType[]\n\t/** If there are some filters outside of the table that need to applied to the table fetch/export requests, but not visible on UI as Active Filters */\n\tadditionalFilters?: FilterType[]\n\tsort?: SortType\n}\n\nexport type InteractionManager = InteractionManagerTyped;\n\n// after moving selectedRow to InteractionManager so we can implement deselecting of row after it is deleted,\n// we needed to created typed InteractionManager\n// as only useInteractionManager really needs T, we decided not to force code to set InteractionManager in 100+ places\n// so InteractionManager and InteractionManagerTyped is created\nexport type InteractionManagerTyped = {\n\tclick?: (rowData: any) => void\n\tdoubleClick?: (rowData: any) => void\n\tmiddleClick?: (rowData: any) => void\n\treorderColumn?: (columnsOrder: string[] | undefined) => Promise\n\tresizeColumn?: (columnId: string, size: number | undefined) => Promise\n\tresetAllColumnWidths?: () => void\n\tsort?: (columnId: string | undefined) => void\n\tfilter?: (filters: FilterType[]) => void\n\tchangeOffset?: (offset: number) => void\n\tchangeNestedLimit?: (limit: number) => void\n\tselectedRow: T | undefined\n}\n","import { GenericFilterModel, GenericFilterModelCollection, GenericSortModel } from \"services/tenantManagementService\";\nimport { FilterSortPageType } from \"../BaseTable\";\nimport { capitalizeFirstLetter } from \"utils/stringUtil\";\nimport { BackendColumnFields, BackendColumnFieldsMap } from \"features/TableColumns/prepareExportColumns\";\n\n// apply default values to backend filter fields if they are not defined\nconst applyDefaults = (columnId: string, specificBackendColumnFields: BackendColumnFields | undefined) => {\n\tconst backendFields = { ...specificBackendColumnFields };\n\n\t// now lets add some default values where needed\n\n\tif (backendFields.dbFilterFieldPath === undefined) {\n\t\tbackendFields.dbFilterFieldPath = capitalizeFirstLetter(columnId);\n\t}\n\n\treturn backendFields;\n}\n\nexport const prepareFiltersModel = (\n\tfilterSortPage: FilterSortPageType,\n\tspecificBackendColumnFieldsMap: BackendColumnFieldsMap | undefined\n): GenericFilterModelCollection => {\n\tconst genericFilter = new GenericFilterModelCollection();\n\tgenericFilter.offset = filterSortPage.offset;\n\tgenericFilter.limit = filterSortPage.limit;\n\n\tconst sortColumnId = filterSortPage.sort?.columnId\n\tif (sortColumnId) {\n\t\tconst backendFields = applyDefaults(sortColumnId, specificBackendColumnFieldsMap?.[sortColumnId]);\n\n\t\tgenericFilter.sorts = [\n\t\t\tnew GenericSortModel({\n\t\t\t\tproperty: backendFields.dbFilterFieldPath,\n\t\t\t\tisAsc: filterSortPage.sort?.isAsc || false\n\t\t\t})\n\t\t]\n\t}\n\n\tconst filters = [...(filterSortPage.filters || []), ...(filterSortPage.additionalFilters || [])]\n\tif (filters) {\n\t\tgenericFilter.filters = [];\n\t\tfor (let item of filters) {\n\t\t\tlet filterModel = new GenericFilterModel();\n\n\t\t\tif (item.columnId) {\n\t\t\t\tconst backendFields = applyDefaults(item.columnId, specificBackendColumnFieldsMap?.[item.columnId]);\n\t\t\t\tfilterModel = new GenericFilterModel({\n\t\t\t\t\tproperty: backendFields.dbFilterFieldPath,\n\t\t\t\t\tvalue: item.value,\n\t\t\t\t\toperation: item.operation\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (item.orFilters) {\n\t\t\t\tfilterModel = new GenericFilterModel({\n\t\t\t\t\torFilters: item.orFilters?.map((orFilter) => {\n\t\t\t\t\t\tif (!orFilter.columnId) {\n\t\t\t\t\t\t\treturn new GenericFilterModel();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst backendFields = applyDefaults(orFilter.columnId, specificBackendColumnFieldsMap?.[orFilter.columnId]);\n\n\t\t\t\t\t\treturn new GenericFilterModel({\n\t\t\t\t\t\t\tproperty: backendFields.dbFilterFieldPath,\n\t\t\t\t\t\t\tvalue: orFilter.value,\n\t\t\t\t\t\t\toperation: orFilter.operation\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tgenericFilter.filters.push(filterModel);\n\t\t}\n\t}\n\n\t// this is to specific and will be added directly in action where needed\n // genericFilter.includes?: string[] | undefined;\n\n\treturn genericFilter;\n}\n","import { memo, MouseEvent, PointerEvent, useCallback, useMemo, useRef } from 'react'\nimport styles from './body.module.scss'\nimport { Cell } from './Cell'\nimport { GenericColumnModel, InteractionManager } from '../models'\nimport { ColumnWidthMap } from \"../useColumnWidths\"\nimport { DiagramIcon, MenuExpanderIcon as RowExpanderIcon } from 'components/icons/icons'\nimport { RowErrorsMap } from '../../CrudTable/CrudTable'\n\ntype Props = {\n\tcolumns: GenericColumnModel[]\n\trowData: any\n\tonClick: (rowData: any) => void\n\tcellEdited?: (rowData: any, columnId: string, value: any) => Promise\n\texpand?: (rowData: any) => void\n\tcollapse?: (rowData: any) => void\n\tonGroupClick?: (groupId: string) => void\n\tisSelected: boolean\n\tcolumnWidthMap: ColumnWidthMap\n\tinteractionManager: InteractionManager\n\trowErrorsMap: RowErrorsMap | undefined\n}\n\nconst RowWithoutMemo = ({ columns, rowData, onClick, cellEdited, expand, collapse, onGroupClick, isSelected, columnWidthMap, interactionManager, rowErrorsMap }: Props) => {\n\tconst rowRef = useRef(null);\n\n\tconst toggleRowExpandCollapseCallback = useCallback(\n\t\t(e: React.MouseEvent) => {\n\t\t\tif (!rowData.hasChildren) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (e.target instanceof SVGElement && e.target.closest('svg[data-icon=\"diagram\"]')) {\n\t\t\t\tonGroupClick?.(rowData.groupId);\n\t\t\t}\n\n\t\t\te.stopPropagation();\n\n\t\t\tif (rowData.expanded) {\n\t\t\t\tcollapse?.(rowData);\n\t\t\t} else {\n\t\t\t\texpand?.(rowData);\n\t\t\t}\n\t\t},\n\t\t[rowData, expand, collapse, onGroupClick]\n\t)\n\n\tconst columnsMemo = useMemo(\n\t\t() => columns.filter(column => column.frozen !== 'end'),\n\t\t[columns]\n\t)\n\n\tconst frozenRightColumns = useMemo(\n\t\t() => columns.filter(column => column.frozen === 'end'),\n\t\t[columns]\n\t)\n\n\tconst togglerClassName = useMemo(\n\t\t() => rowData.expanded ? styles.toggler_expanded : styles.toggler_collapsed,\n\t\t[rowData.expanded]\n\t)\n\n\tconst cellsContent = useCallback(\n\t\t(newColumns: GenericColumnModel[]) => {\n\t\t\treturn newColumns.map((column) => {\n\t\t\t\tif (column.isNested) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{rowData.hasChildren &&\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t{rowData.hasDiagram &&\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t{rowData.groupLevel &&\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{rowData.groupLevel}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t{rowData.groupName &&\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{rowData.groupName}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t{rowData.itemCount > 0 &&\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{`(${rowData.itemCount} ${rowData.itemCount > 1 ? 'items' : 'item'})`}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t})\n\t\t},\n\t\t[rowData, columnWidthMap, cellEdited, rowErrorsMap, toggleRowExpandCollapseCallback, togglerClassName]\n\t)\n\n\t// just to make onAuxClick trigger on middle click\n\tconst onPointerDownCallback = useCallback(\n\t\t(e: PointerEvent) => {\n\t\t\tif (e.button === 1) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t},\n\t\t[]\n\t)\n\n\tconst onClickCallback = useCallback(\n\t\t() => onClick(rowData),\n\t\t[onClick, rowData]\n\t)\n\n\tconst onMiddleClickCallback = useCallback(\n\t\t(e: MouseEvent) => {\n\t\t\tif (e.button === 1) {\n\t\t\t\tinteractionManager.middleClick?.(rowData);\n\t\t\t}\n\t\t},\n\t\t[interactionManager, rowData]\n\t)\n\n\tconst onDoubleClickCallback = useCallback(\n\t\t() => interactionManager.doubleClick?.(rowData),\n\t\t[interactionManager, rowData]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t{columnsMemo.length > 0 && (\n\t\t\t\t\tfrozenRightColumns.length > 0 ?\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{cellsContent(columnsMemo)}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t:\n\t\t\t\t\t\tcellsContent(columnsMemo)\n\t\t\t\t)}\n\t\t\t\t{frozenRightColumns.length > 0 &&\n\t\t\t\t\tcellsContent(frozenRightColumns)\n\t\t\t\t}\n\t\t\t
\n\t\t\n\t)\n}\n\nexport const Row = memo(RowWithoutMemo);\n","import { useCallback, useEffect, useMemo } from \"react\"\nimport { GenericColumnModel, InteractionManager } from \"../models\"\nimport styles from './body.module.scss'\nimport { Row } from \"./Row\"\nimport { ColumnWidthMap } from \"../useColumnWidths\"\nimport { TableErrorsMap } from \"../../CrudTable/CrudTable\"\n\ntype Props = {\n\tcolumns: GenericColumnModel[]\n\trowsData: any[]\n\tcolumnWidthMap: ColumnWidthMap\n\tcellEdited?: (rowData: any, columnId: string, value: any) => Promise\n\texpand?: (rowData: any) => void\n\tcollapse?: (rowData: any) => void\n\tonGroupClick?: (groupId: string) => void\n\tinteractionManager: InteractionManager\n\terrorsMap?: TableErrorsMap\n}\n\nexport const Body = ({ columns, rowsData, columnWidthMap, cellEdited, expand, collapse, onGroupClick, interactionManager, errorsMap }: Props) => {\n\tconst handleRowClickCallback = useCallback(\n\t\t(rowData: any) => {\n\t\t\tinteractionManager.click?.(rowData);\n\t\t},\n\t\t[interactionManager]\n\t)\n\n\t// after row is deleted, we want generic way to deselect that row (instead of doing it in every container when delete happens)\n\tuseEffect(\n\t\t() => {\n\t\t\tconst doesSelectedRowExists = rowsData.includes(interactionManager.selectedRow);\n\t\t\tif (!doesSelectedRowExists) {\n\t\t\t\tinteractionManager.click?.(undefined);\n\t\t\t}\n\t\t},\n\t\t[interactionManager, rowsData]\n\t)\n\n\tconst rowsContent = useMemo(\n\t\t() => rowsData.map((row, rowIndex) => (\n\t\t\t\n\t\t)),\n\t\t[rowsData, columns, handleRowClickCallback, interactionManager, columnWidthMap, cellEdited, expand, collapse, onGroupClick, errorsMap]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t{rowsContent}\n\t\t
\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"header_container__vDrhU\",\"column_direction\":\"header_column_direction__9vTfC\",\"row\":\"header_row__dM6BT\",\"cells_wrapper\":\"header_cells_wrapper__VFxeE\",\"cell\":\"header_cell__reerL\",\"frozen\":\"header_frozen__YkVac\",\"hover\":\"header_hover__dz2CF\",\"filter\":\"header_filter__bKoPb\",\"title\":\"header_title__Z3Ry-\",\"inner\":\"header_inner__gAbWs\",\"inner_with_sort\":\"header_inner_with_sort__43MlV\",\"inner_with_filter\":\"header_inner_with_filter__EP5yi\",\"sort\":\"header_sort__CIoZW\",\"ascending\":\"header_ascending__dYMsY\",\"active_sort\":\"header_active_sort__9ateg\",\"descending\":\"header_descending__DEhG6\"};","import { memo, useCallback, useRef, useState } from 'react'\nimport styles from './header.module.scss'\nimport { FilterIcon, LockIcon } from 'components/icons/icons'\nimport { SortType } from '../models';\nimport { Translation } from 'components/Translations/Translation';\nimport { emptySpaceColumnId } from 'components/Table';\nimport { Tooltip } from '../Tooltip/Tooltip';\nimport { defaultTooltipState } from '../Body/Cell';\n\nconst sortElementId = 'header_cell_sort';\n\ntype Props = {\n\t// from column\n\tid: string // column id\n\ttitle: string\n\tdisableSort?: boolean\n\n\t// additional props\n\tsort?: SortType\n\tsetSort?: (columnId: string | undefined) => void\n\thasFilter: boolean\n\tisFilterActive: boolean\n\tonFilter(columnId: string): void\n\tcolumnWidth: number\n\tfrozen?: boolean\n}\n\nconst CellWithoutMemo = ({ id, title, disableSort, sort, setSort, hasFilter, isFilterActive, onFilter, columnWidth, frozen }: Props) => {\n\tconst contentRef = useRef(null);\n\tconst [hover, setHover] = useState(false);\n\tconst [tooltipState, setTooltipState] = useState(defaultTooltipState);\n\n\tlet arrowClassName = '';\n\n\tif (sort?.columnId === id) {\n\t\tarrowClassName = `${styles[sort.isAsc ? 'ascending' : 'descending']} ${styles.active_sort}`;\n\t}\n\n\tconst mouseOverCallback = useCallback(\n\t\t(e: any) => {\n\t\t\tif (e.target.id !== sortElementId) {\n\t\t\t\tif (hasFilter) {\n\t\t\t\t\tsetHover(true);\n\t\t\t\t}\n\n\t\t\t\tconst content = contentRef.current;\n\t\t\t\tif (!content) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst tooltipX = e.clientX + 12;\n\t\t\t\tconst tooltipY = e.clientY + 12;\n\n\t\t\t\tconst contentWidth = content.scrollWidth;\n\t\t\t\tconst contentHeight = content.scrollHeight;\n\t\t\t\tconst screenWidth = window.innerWidth;\n\t\t\t\tconst screenHeight = window.innerHeight;\n\n\t\t\t\tlet adjustedX = tooltipX;\n\t\t\t\tlet adjustedY = tooltipY;\n\n\t\t\t\t// Adjust position if tooltip overflow right\n\t\t\t\tif (tooltipX + contentWidth > screenWidth) {\n\t\t\t\t\tadjustedX = screenWidth - contentWidth - 12;\n\t\t\t\t}\n\t\t\t\t// Adjust position if tooltip overflow bottom\n\t\t\t\tif (tooltipY + contentHeight > screenHeight) {\n\t\t\t\t\tadjustedY = screenHeight - contentHeight - 12;\n\t\t\t\t}\n\n\t\t\t\tif (content.scrollWidth > content.clientWidth) {\n\t\t\t\t\tsetTooltipState({\n\t\t\t\t\t\tvisible: true,\n\t\t\t\t\t\tposition: { x: adjustedX, y: adjustedY }\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[hasFilter]\n\t)\n\n\tconst mouseOutCallback = useCallback(\n\t\t() => {\n\t\t\tsetHover(false);\n\t\t\tsetTooltipState(defaultTooltipState);\n\t\t},\n\t\t[]\n\t)\n\n\tconst onSortCallback = useCallback(\n\t\t(e: any) => {\n\t\t\te.stopPropagation();\n\t\t\tsetSort && setSort(id);\n\t\t},\n\t\t[setSort, id]\n\t)\n\n\tconst onFilterClickCallback = useCallback(\n\t\t() => {\n\t\t\thasFilter && onFilter(id);\n\t\t},\n\t\t[id, hasFilter, onFilter]\n\t)\n\n\tconst className = `${styles.cell} ${hover ? styles.hover : ''} ${frozen ? styles.frozen : ''}`;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{frozen && id !== emptySpaceColumnId &&\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{isFilterActive &&\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t{!disableSort &&\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t{tooltipState.visible &&\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t
\n\t\t\n\t)\n}\n\nexport const Cell = memo(CellWithoutMemo);\n","import { RadioItemType } from 'components/Form';\nimport { FilterType } from '../models';\n\n// find first base filter by columnId\nexport const findFilter = (filters?: FilterType[], columnId?: string) => {\n\treturn filters?.find(filter => filter.columnId === columnId ||\n\t\tfilter.orFilters?.find(orFilter => orFilter.columnId === columnId)\n\t)\n}\n\nexport const findAllFilters = (filters: FilterType[], columnId?: string) => {\n\treturn filters.filter(filter => filter.columnId === columnId ||\n\t\tfilter.orFilters?.find(orFilter => orFilter.columnId === columnId)\n\t)\n}\n\nexport enum AndOrEnum {\n\tAnd = 'And',\n\tOr = 'Or'\n}\n\nexport const additionalFilterOptions: RadioItemType[] = [\n\t{ id: AndOrEnum.And, text: 'i18n.label.filter.and' },\n\t{ id: AndOrEnum.Or, text: 'i18n.label.filter.or' }\n]\n","import { useCallback, useMemo } from 'react'\nimport styles from './header.module.scss'\nimport { GenericColumnModel, FilterSortPageType, InteractionManager } from '../models'\nimport { Cell } from './Cell'\nimport { ColumnWidthMap } from \"../useColumnWidths\"\nimport { findFilter } from '../Filter/filtersHelper'\nimport { ReordableColumns } from 'components/DragNDrop'\nimport { noop } from 'utils/commonHelper'\nimport { Translation } from 'components/Translations/Translation'\n\nexport type HeaderGroup = {\n\tid: string\n\ttitle: string\n\tcolumnIds: string[]\n}\n\ntype Props = {\n\tcolumns: GenericColumnModel[]\n\tcolumnWidthMap: ColumnWidthMap\n\tfilterSortPage: FilterSortPageType\n\tonFilter: (columnId: string) => void\n\tdisabledReorder: boolean\n\tadditionalHeaderRow?: HeaderGroup[]\n\tinteractionManager: InteractionManager\n}\n\nexport const Header = ({ columns, columnWidthMap, filterSortPage, onFilter, disabledReorder, additionalHeaderRow, interactionManager }: Props) => {\n\tconst frozenStartColumnIdsMemo = useMemo(\n\t\t() => columns.filter(column => column.frozen === 'start').map(x => x.id),\n\t\t[columns]\n\t)\n\n\tconst draggableColumnIdsMemo = useMemo(\n\t\t() => columns.filter(column => !column.frozen).map(x => x.id),\n\t\t[columns]\n\t)\n\n\tconst frozenEndColumnIdsMemo = useMemo(\n\t\t() => columns.filter(column => column.frozen === 'end').map(x => x.id),\n\t\t[columns]\n\t)\n\n\tconst cellProps = useCallback(\n\t\t(column: GenericColumnModel) => {\n\t\t\treturn {\n\t\t\t\t...column,\n\t\t\t\tsort: filterSortPage.sort,\n\t\t\t\tsetSort: interactionManager.sort,\n\t\t\t\thasFilter: !column.disableFilter,\n\t\t\t\tisFilterActive: findFilter(filterSortPage.filters, column.id) !== undefined,\n\t\t\t\tonFilter: onFilter,\n\t\t\t\tcolumnWidth: columnWidthMap[column.id],\n\t\t\t\tfrozen: !!column.frozen\n\t\t\t}\n\t\t},\n\t\t[columnWidthMap, filterSortPage, onFilter, interactionManager]\n\t)\n\n\tconst renderCellsContent = useCallback(\n\t\t(id: string) => {\n\t\t\tconst column = columns.find(col => col.id === id);\n\n\t\t\tif (!column) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn \n\t\t},\n\t\t[columns, cellProps]\n\t)\n\n\tconst renderAdditionalHeaderContent = useCallback(\n\t\t() => {\n\t\t\tif (!additionalHeaderRow) {\n\t\t\t\treturn <>;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t
\n\t\t\t\t\t{frozenStartColumnIdsMemo.length > 0 &&\n\t\t\t\t\t\tfrozenStartColumnIdsMemo.map(columnId =>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t\t\t{additionalHeaderRow.map(group =>\n\t\t\t\t\t\t\t acc + (columnWidthMap[columnId] || 0), 0) }}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t)}\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t)\n\t\t},\n\t\t[additionalHeaderRow, frozenStartColumnIdsMemo, columnWidthMap]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t{renderAdditionalHeaderContent()}\n\t\t\t
\n\t\t\t\t{frozenStartColumnIdsMemo.length > 0 && frozenStartColumnIdsMemo.map(id => renderCellsContent(id))}\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t{frozenEndColumnIdsMemo.length > 0 && frozenEndColumnIdsMemo.map(id => renderCellsContent(id))}\n\t\t\t
\n\t\t
\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"baseTable_container__wdxIh\",\"empty_table\":\"baseTable_empty_table__oEzww\"};","// extracted by mini-css-extract-plugin\nexport default {\"line\":\"frozen_line__JjQiB\"};","import { useCallback, useEffect, useLayoutEffect, useMemo, useState } from \"react\"\nimport { GenericColumnModel } from \"../models\"\nimport styles from './frozen.module.scss'\nimport { ColumnWidthMap } from \"../useColumnWidths\"\n\ntype Props = {\n\tcolumns: GenericColumnModel[]\n\tcolumnWidthMap: ColumnWidthMap\n\tcontainerRef: React.MutableRefObject\n}\n\nexport const Frozen = ({ columns, columnWidthMap, containerRef }: Props) => {\n\tconst [containerClientWidth, setContainerClientWidth] = useState(containerRef.current?.clientWidth || 0);\n\tconst [scrollLeft, setScrollLeft] = useState(containerRef.current?.scrollLeft || 0);\n\n\tconst { leftColumnIds, rightColumnIds } = useMemo(\n\t\t() => {\n\t\t\tlet leftIds: string[] = [];\n\t\t\tlet rightIds: string[] = [];\n\t\t\tfor (let i = 0; i < columns.length; i++) {\n\t\t\t\tconst column = columns[i];\n\t\t\t\tif (column.frozen === 'start') {\n\t\t\t\t\tleftIds.push(column.id);\n\t\t\t\t}\n\t\t\t\tif (column.frozen === 'end') {\n\t\t\t\t\trightIds.push(column.id);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tleftColumnIds: leftIds,\n\t\t\t\trightColumnIds: rightIds\n\t\t\t}\n\t\t},\n\t\t[columns]\n\t)\n\n\tconst { leftFrozenPosition, rightFrozenPosition } = useMemo(\n\t\t() => {\n\t\t\tlet leftPosition = 0;\n\t\t\tif (leftColumnIds) {\n\t\t\t\tfor (const columnId of leftColumnIds) {\n\t\t\t\t\tleftPosition += columnWidthMap[columnId] || 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet rightPosition = 0;\n\t\t\tif (rightColumnIds) {\n\t\t\t\tfor (const columnId of rightColumnIds) {\n\t\t\t\t\trightPosition += columnWidthMap[columnId] || 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tleftFrozenPosition: leftPosition,\n\t\t\t\trightFrozenPosition: rightPosition\n\t\t\t}\n\t\t},\n\t\t[leftColumnIds, rightColumnIds, columnWidthMap]\n\t)\n\n\tconst updateFrozenCellsPositionCallback = useCallback(\n\t\t() => {\n\t\t\tconst container = containerRef.current;\n\t\t\tif (!container) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet left = 0;\n\t\t\tfor (let i = 0; i < columns.length; i++) {\n\t\t\t\tconst column = columns[i];\n\t\t\t\tif (column.frozen === 'start') {\n\t\t\t\t\tconst innerCells = container.querySelectorAll(`[data-columnid=\"${column.id}\"]`);\n\t\t\t\t\tfor (let j = 0; j < innerCells.length; j++) {\n\t\t\t\t\t\tlet innerCell = innerCells[j];\n\t\t\t\t\t\tconst cell = innerCell.closest('[data-type=\"cell\"]')!;\n\t\t\t\t\t\t(cell as HTMLElement).style.left = `${left}px`;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tleft += columnWidthMap[column.id];\n\t\t\t}\n\n\t\t\tlet right = 0;\n\t\t\tfor (let i = columns.length - 1; i > 0; i--) {\n\t\t\t\tconst column = columns[i];\n\t\t\t\tif (column.frozen === 'end') {\n\t\t\t\t\tconst innerCells = container.querySelectorAll(`[data-columnid=\"${column.id}\"]`);\n\t\t\t\t\tfor (let j = 0; j < innerCells.length; j++) {\n\t\t\t\t\t\tlet innerCell = innerCells[j];\n\t\t\t\t\t\tconst cell = innerCell.closest('[data-type=\"cell\"]')!;\n\t\t\t\t\t\t(cell as HTMLElement).style.right = `${right}px`;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tright += columnWidthMap[column.id];\n\t\t\t}\n\t\t},\n\t\t[columns, columnWidthMap, containerRef]\n\t)\n\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tupdateFrozenCellsPositionCallback();\n\t\t},\n\t\t[updateFrozenCellsPositionCallback]\n\t)\n\n\tconst resizeCallback = useCallback(\n\t\t() => {\n\t\t\tsetContainerClientWidth(containerRef.current?.clientWidth || 0);\n\t\t},\n\t\t[containerRef]\n\t)\n\n\tconst scrollCallback = useCallback(\n\t\t() => {\n\t\t\tsetScrollLeft(containerRef.current?.scrollLeft || 0);\n\t\t},\n\t\t[containerRef]\n\t)\n\n\t// while scrolling we need to update frozen line positions\n\tuseEffect(\n\t\t() => {\n\t\t\tconst container = containerRef.current;\n\t\t\tif (container && (leftFrozenPosition || rightFrozenPosition)) {\n\t\t\t\tcontainer?.addEventListener('scroll', scrollCallback);\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\tcontainer?.removeEventListener('scroll', scrollCallback);\n\t\t\t}\n\t\t},\n\t\t[leftFrozenPosition, rightFrozenPosition, containerRef, scrollCallback]\n\t)\n\n\t// initially right frozen line is not drawn as container probably has width 0\n\t// additionaly we here also handle when window size is changed\n\tuseEffect(\n\t\t() => {\n\t\t\tlet resizeObserver: ResizeObserver | undefined;\n\n\t\t\tconst container = containerRef.current;\n\t\t\tif (container && (leftFrozenPosition || rightFrozenPosition)) {\n\t\t\t\tresizeObserver = new ResizeObserver((entries) => {\n\t\t\t\t\tif (entries.length === 1) {\n\t\t\t\t\t\tsetContainerClientWidth(entries[0].contentRect.width);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresizeObserver.observe(containerRef.current!);\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\tresizeObserver?.disconnect();\n\t\t\t}\n\t\t},\n\t\t[leftFrozenPosition, rightFrozenPosition, containerRef, resizeCallback]\n\t)\n\n\treturn (\n\t\t<>\n\t\t\t{leftFrozenPosition !== 0 &&
}\n\t\t\t{rightFrozenPosition !== 0 &&
}\n\t\t\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"pagination_container__+3Hk2\",\"item\":\"pagination_item__8nS+s\",\"disabled\":\"pagination_disabled__amcA0\"};","import { memo, useCallback, useMemo } from 'react';\nimport styles from './pagination.module.scss';\nimport { ArrowLeftNewIcon } from 'components/icons/icons';\nimport { ArrowRightNewIcon } from 'components/icons/icons';\nimport { ArrowDoubleLeftNewIcon } from 'components/icons/icons';\nimport { ArrowDoubleRightNewIcon } from 'components/icons/icons';\n\ntype Props = {\n\toffset: number\n\tlimit: number\n\tcount: number\n\tonChange: (offset: number) => void\n\tcompact?: boolean\n}\n\nconst PaginationWithoutMemo = ({ offset, limit, count, onChange, compact }: Props) => {\n\tconst disabledPrev = offset === 0;\n\tconst disabledNext = offset + limit >= count;\n\n\tconst firstPageCallback = useCallback(\n\t\t() => {\n\t\t\t!disabledPrev && onChange(0);\n\t\t},\n\t\t[disabledPrev, onChange]\n\t)\n\n\tconst lastPageCallback = useCallback(\n\t\t() => {\n\t\t\t!disabledNext && onChange(Math.floor((count - 1) / limit) * limit);\n\t\t},\n\t\t[disabledNext, onChange, count, limit]\n\t)\n\n\tconst nextPageCallback = useCallback(\n\t\t() => {\n\t\t\t!disabledNext && onChange(offset + limit);\n\t\t},\n\t\t[disabledNext, onChange, offset, limit]\n\t)\n\n\tconst prevPageCallback = useCallback(\n\t\t() => {\n\t\t\t!disabledPrev && onChange(offset - limit);\n\t\t},\n\t\t[disabledPrev, onChange, offset, limit]\n\t)\n\n\tconst currentPage = useMemo(\n\t\t() => Math.ceil((offset + 1) / limit),\n\t\t[offset, limit],\n\t)\n\n\t// in compact mode, if there is only one page, do not show pagination\n\tif (compact && count <= limit) {\n\t\treturn <>\n\t}\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t{currentPage.toString()}
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport const Pagination = memo(PaginationWithoutMemo);\n","// extracted by mini-css-extract-plugin\nexport default {\"line\":\"resize_line__FY7e5\",\"active\":\"resize_active__lJAWc\"};","export const columnMinWidth = 60;\nexport const defaultPaginationLimit = 20;\n\n/** If there is a need for horizontal empty space inside of a table,\n * for example when grouping columns we need first column to have left margin so emptySpaceColumnId column is added with some minWidth. */\nexport const emptySpaceColumnId = 'empty_space';\n","import { useCallback, useEffect, useMemo, useState } from \"react\"\nimport { GenericColumnModel, InteractionManager } from \"../models\"\nimport styles from './resize.module.scss'\nimport { columnMinWidth } from \"../consts\"\nimport { ColumnWidthMap } from \"../useColumnWidths\"\n\ntype LineProps = {\n\tcolumnId: string\n\tleft: number\n\tactive: boolean\n\tsetActive(columnId?: string): void\n\tresize(columnId: string, dx: number): void\n\tresizeComplete(columnId: string): void\n\tresetWidth(columnId): void\n}\n\nconst Line = ({ columnId, left, active, setActive, resize, resizeComplete, resetWidth }: LineProps) => {\n\tconst [isMouseMoved, setIsMouseMoved] = useState(false);\n\n\tconst mouseDownCallback = useCallback(\n\t\t(e: React.MouseEvent) => {\n\t\t\te.preventDefault();\n\n\t\t\tsetIsMouseMoved(false);\n\t\t\tsetActive(columnId);\n\t\t},\n\t\t[columnId, setActive]\n\t);\n\n\tconst mouseMoveCallback = useCallback(\n\t\t(e: MouseEvent) => {\n\t\t\tif (!active) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetIsMouseMoved(true);\n\t\t\tresize(columnId, e.movementX);\n\t\t},\n\t\t[active, columnId, resize]\n\t)\n\n\tconst mouseUpCallback = useCallback(\n\t\t(e: MouseEvent) => {\n\t\t\tsetActive(undefined);\n\t\t\tif (isMouseMoved) {\n\t\t\t\tresizeComplete(columnId);\n\t\t\t}\n\t\t},\n\t\t[columnId, resizeComplete, setActive, isMouseMoved]\n\t)\n\n\tuseEffect(\n\t\t() => {\n\t\t\tif (active) {\n\t\t\t\tdocument.addEventListener('mousemove', mouseMoveCallback);\n\t\t\t\tdocument.addEventListener('mouseup', mouseUpCallback);\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener('mousemove', mouseMoveCallback);\n\t\t\t\tdocument.removeEventListener('mouseup', mouseUpCallback);\n\t\t\t}\n\t\t},\n\t\t[active, mouseMoveCallback, mouseUpCallback]\n\t)\n\n\tconst resetWidthCallback = useCallback(\n\t\t() => {\n\t\t\tresetWidth(columnId);\n\t\t},\n\t\t[columnId, resetWidth]\n\t)\n\n\treturn (\n\t\t\n\t)\n}\n\ntype Props = {\n\tcolumns: GenericColumnModel[]\n\tcolumnWidthMap: ColumnWidthMap\n\tsetColumnWidthMap: React.Dispatch>\n\tinteractionManager: InteractionManager\n}\n\nexport const Resize = ({ columns, columnWidthMap, setColumnWidthMap, interactionManager }: Props) => {\n\tconst [activeColumnId, setActiveColumnId] = useState();\n\n\tconst resizeCallback = useCallback(\n\t\t(columnId: string, dx: number) => {\n\t\t\tsetColumnWidthMap((state) => {\n\t\t\t\tconst newValue = { ...state };\n\t\t\t\tif (newValue[columnId] + dx >= columnMinWidth) {\n\t\t\t\t\tnewValue[columnId] += dx;\n\t\t\t\t} else {\n\t\t\t\t\tnewValue[columnId] = columnMinWidth;\n\t\t\t\t}\n\t\t\t\treturn newValue;\n\t\t\t});\n\n\t\t},\n\t\t[setColumnWidthMap]\n\t)\n\n\tconst resizeCompleteCallback = useCallback(\n\t\t(columnId: string) => {\n\t\t\tconst width = columnWidthMap[columnId];\n\t\t\tinteractionManager.resizeColumn?.(columnId, width);\n\t\t},\n\t\t[columnWidthMap, interactionManager]\n\t)\n\n\tconst resetColumnWidthCallback = useCallback(\n\t\t(columnId: string) => {\n\t\t\tinteractionManager.resizeColumn?.(columnId, undefined);\n\t\t},\n\t\t[interactionManager]\n\t)\n\n\tconst linesContent = useMemo(\n\t\t() => {\n\t\t\tconst lines: any[] = [];\n\t\t\tlet left = 0;\n\n\t\t\tfor (const column of columns) {\n\t\t\t\tleft += columnWidthMap[column.id] || 0;\n\n\t\t\t\t// disable resize of frozen columns for now because it behaves strange\n\t\t\t\tif (column.frozen) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlines.push(\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn lines;\n\t\t},\n\t\t[columns, columnWidthMap, resetColumnWidthCallback, activeColumnId, resizeCallback, resizeCompleteCallback]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t{linesContent}\n\t\t
\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"filterItem_item__0hqLi\",\"conjunction\":\"filterItem_conjunction__QPdJU\",\"operation\":\"filterItem_operation__WnOpL\",\"delete_button\":\"filterItem_delete_button__h61s5\"};","import { GenericFilterOperationEnum } from 'services/tenantManagementService';\n\nexport const formatFilterOperation = (filterOperation?: GenericFilterOperationEnum) => {\n\tswitch(filterOperation) {\n\t\tcase GenericFilterOperationEnum.EQUALS:\n\t\t\treturn 'i18n.label.filter.operation.equals'\n\t\tcase GenericFilterOperationEnum.LIKE:\n\t\t\treturn 'i18n.label.filter.operation.like'\n\t\tcase GenericFilterOperationEnum.LIKE_STARTSWITH:\n\t\t\treturn 'i18n.label.filter.operation.likeStartsWith';\n\t\tcase GenericFilterOperationEnum.LIKE_ENDSWITH:\n\t\t\treturn 'i18n.label.filter.operation.likeEndsWith';\n\t\tcase GenericFilterOperationEnum.NOT_EQUALS:\n\t\t\treturn 'i18n.label.filter.operation.notEquals';\n\t\tcase GenericFilterOperationEnum.GREATER_THAN:\n\t\t\treturn 'i18n.label.filter.operation.greaterThan'\n\t\tcase GenericFilterOperationEnum.GREATER_EQUAL_THAN:\n\t\t\treturn 'i18n.label.filter.operation.greaterEqualThan'\n\t\tcase GenericFilterOperationEnum.LESS_THAN:\n\t\t\treturn 'i18n.label.filter.operation.lessThan'\n\t\tcase GenericFilterOperationEnum.LESS_EQUAL_THAN:\n\t\t\treturn 'i18n.label.filter.operation.lessEqualThen'\n\t\tdefault:\n\t\t\treturn 'i18n.label.filter.operation.equals'\n\t}\n}\n","import { RowContainer } from 'components/Layout';\nimport { useMemo } from 'react';\nimport { convertTicksToMinutes, formatTime, formatTimeWithoutAmOrPm, useFormatDate } from 'utils/dateTimeUtils';\nimport styles from './filterItem.module.scss';\nimport { formatFilterOperation } from './filterItemHelper';\nimport { getFormatedId } from 'utils/commonHelper';\nimport { MapItem, convertToAbsoluteName, getSelectedItem } from 'components/Form/controls/MapPicker/MapPicker/helpers';\nimport { BooleanColumnModel, CurrencyColumnModel, DateColumnModel, DateTimeColumnModel, DurationColumnModel, FilterType, FormattedReferenceColumnModel, GenericColumnModel, MapOptionColumnModel, NumberColumnModel, OptionColumnModel, OptionsColumnModel, StringColumnModel, TimeColumnModel } from '../../models';\nimport { Translation } from 'components/Translations/Translation';\n\ntype Props = {\n\tfilter: FilterType\n\tcolumns: GenericColumnModel[]\n}\n\nconst FilterItem = ({ filter, columns }: Props) => {\n\tconst formatDate = useFormatDate();\n\n\tconst filterItemMemo = useMemo(\n\t\t() => {\n\t\t\tconst column = columns.find((column) => column.id === filter.columnId);\n\t\t\tif (!column) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tlet value = '';\n\n\t\t\tif (column instanceof OptionColumnModel || column instanceof OptionsColumnModel) {\n\t\t\t\tconst { items, getItemId, getItemText } = column;\n\t\t\t\tfor (const option of items) {\n\t\t\t\t\tconst optionId = getItemId && getItemId(option);\n\t\t\t\t\tif (optionId === filter.value) {\n\t\t\t\t\t\tvalue = getItemText ? getItemText(option) : filter.value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (column instanceof MapOptionColumnModel) {\n\t\t\t\tconst options = column.items as MapItem[] || [];\n\t\t\t\tconst selectedOption = getSelectedItem(filter.value, options);\n\t\t\t\tif (selectedOption) {\n\t\t\t\t\tvalue = convertToAbsoluteName(selectedOption, options);\n\t\t\t\t}\n\t\t\t} else if (column instanceof DateColumnModel || column instanceof DateTimeColumnModel) {\n\t\t\t\tvalue = formatDate(new Date(filter.value));\n\t\t\t} else if (column instanceof TimeColumnModel) {\n\t\t\t\tconst { isDuration } = column;\n\t\t\t\tvalue = isDuration ? formatTimeWithoutAmOrPm(filter.value) : formatTime(filter.value);\n\t\t\t} else if (column instanceof FormattedReferenceColumnModel) {\n\t\t\t\tconst { entityPrefix } = column;\n\t\t\t\tvalue = entityPrefix ? getFormatedId(entityPrefix, filter.value) : filter.value;\n\t\t\t} else if (column instanceof BooleanColumnModel) {\n\t\t\t\tvalue = String(filter.value)\n\t\t\t} else if (column instanceof NumberColumnModel || column instanceof CurrencyColumnModel || column instanceof StringColumnModel || column instanceof DurationColumnModel) {\n\t\t\t\tvalue = column instanceof DurationColumnModel ? `${convertTicksToMinutes(filter.value)} min` : filter.value;\n\t\t\t} else {\n\t\t\t\tvalue = filter.value;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttitle: column.title,\n\t\t\t\tvalue\n\t\t\t}\n\t\t},\n\t\t[columns, filter, formatDate]\n\t)\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t{/* da li dodati delete, tipa na hover da se pojavi neki 'X' */}\n\t\t\t\t{/* X */}\n\t\t\t\n\t\t\n\t)\n\n}\n\nexport default FilterItem;\n","import { RowContainer } from 'components/Layout';\nimport FilterItem from './FilterItem';\nimport { useGetOrFiltersCallback } from './useGetOrFiltersCallback';\nimport styles from './filterItem.module.scss'\nimport { useMemo } from 'react';\nimport { GenericColumnModel, FilterType } from '../../models';\nimport { Translation } from 'components/Translations/Translation';\n\ntype Props = {\n\tfilters: FilterType[]\n\tcolumns: GenericColumnModel[]\n}\n\nexport const FilterItems = ({ filters, columns }: Props) => {\n\tconst getOrFiltersCallback = useGetOrFiltersCallback(columns);\n\n\tconst itemsContent = useMemo(\n\t\t() => {\n\t\t\tconst content: React.ReactNode[] = [];\n\t\t\tfor (let i = 0; i < filters.length; i++) {\n\t\t\t\tconst filter = filters[i];\n\n\t\t\t\tif (filter.columnId && columns.find(column => filter.columnId === column.id)) {\n\t\t\t\t\tcontent.push();\n\t\t\t\t\tif (i < filters.length - 1) {\n\t\t\t\t\t\tcontent.push(\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (filter.orFilters && columns.find(column => filter.orFilters?.find(orFilter => orFilter.columnId === column.id))) {\n\t\t\t\t\tcontent.push(getOrFiltersCallback(filter.orFilters))\n\t\t\t\t\tif (i < filters.length - 1) {\n\t\t\t\t\t\tcontent.push(\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn content;\n\t\t},\n\t\t[columns, filters, getOrFiltersCallback]\n\t)\n\n\treturn (\n\t\t\n\t\t\t{itemsContent}\n\t\t\n\t)\n}\n","import { useCallback } from 'react';\nimport FilterItem from './FilterItem';\nimport styles from './filterItem.module.scss'\nimport { GenericColumnModel, OrFilterType } from '../../models';\nimport { Translation } from 'components/Translations/Translation';\n\nexport const useGetOrFiltersCallback = (columns: GenericColumnModel[]) => {\n\treturn useCallback(\n\t\t(filters: OrFilterType[]) => {\n\t\t\tconst content: React.ReactNode[] = [];\n\t\t\tfor (let i = 0; i < filters.length; i++) {\n\t\t\t\tconst filter = filters[i];\n\n\t\t\t\tcontent.push();\n\t\t\t\tif (i < filters.length - 1) {\n\t\t\t\t\tcontent.push(\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcontent.unshift(();\n\t\t\tcontent.push());\n\t\t\treturn content;\n\t\t},\n\t\t[columns]\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"activeFilter_container__SYgZk\",\"header\":\"activeFilter_header__G1NSP\",\"items\":\"activeFilter_items__HYaUA\",\"button\":\"activeFilter_button__LqA3s\"};","\nimport { FilterItems } from './FilterItems';\nimport { Shorten } from 'components/Shorten/Shorten';\nimport styles from './activeFilter.module.scss'\nimport { FilterType } from '../../models';\nimport { DeleteIcon } from 'components/icons/icons';\nimport { GenericColumnModel } from '../../models';\n\ntype Props = {\n\tfilters: FilterType[]\n\tcolumns: GenericColumnModel[]\n\tonClearAll: () => void\n}\n\nexport const ActiveFilter = ({ filters, columns, onClearAll }: Props) => {\n\treturn (\n\t\t
\n\t\t\t

Filter

\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t)\n}\n","import Button from 'components/Button';\nimport { Form, SelectField } from 'components/Form';\nimport { SmartContainer, SmartItem } from 'components/SmartContainer/SmartContainer';\nimport { useCallback, useEffect, useState } from 'react';\nimport { GenericFilterOperationEnum } from 'services/tenantManagementService';\nimport { findFilter } from '../../filtersHelper';\nimport { BooleanColumnModel, FilterType } from 'components/Table';\n\ntype Props = {\n\tcolumn: BooleanColumnModel\n\tfilters: FilterType[]\n\tonSave: (filters: FilterType[]) => void\n\tonCancel: () => void\n}\n\ntype State = {\n\tselectedValue: 'true' | 'false' | ''\n}\n\nconst filterOptions = ['true', 'false'];\n\nexport const BooleanFilter = ({ column, filters, onSave, onCancel }: Props) => {\n\tconst [values, setValues] = useState({ selectedValue: '' });\n\n\tuseEffect(\n\t\t() => {\n\t\t\tconst currentFilter = findFilter(filters, column.id);\n\n\t\t\tif (currentFilter) {\n\t\t\t\tsetValues({ selectedValue: currentFilter.value });\n\t\t\t} else {\n\t\t\t\tsetValues({ selectedValue: '' });\n\t\t\t}\n\t\t},\n\t\t[filters, column.id]\n\t)\n\n\tconst submitCallback = useCallback(\n\t\tasync () => {\n\t\t\tlet newFilters = [...filters];\n\n\t\t\tconst currentFilter = findFilter(newFilters, column.id);\n\t\t\tif (currentFilter) {\n\t\t\t\tconst index = newFilters.indexOf(currentFilter);\n\t\t\t\tnewFilters.splice(index, 1);\n\t\t\t}\n\n\t\t\tif (values.selectedValue === 'true' || values.selectedValue === 'false') {\n\t\t\t\tnewFilters.push({\n\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\toperation: GenericFilterOperationEnum.EQUALS,\n\t\t\t\t\tvalue: values.selectedValue === 'true'\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tonSave && await onSave(newFilters);\n\t\t},\n\t\t[filters, column.id, onSave, values]\n\t)\n\n\tconst clearCallback = useCallback(\n\t\t() => {\n\t\t\tsetValues({ selectedValue: '' });\n\t\t},\n\t\t[]\n\t)\n\n\treturn (\n\t\t (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t item}\n\t\t\t\t\t\t\tgetItemText={item => item}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\trenderAdditionalButtons={() => (\n\t\t\t\t\n\t\t\t)}\n\t\t/>\n\t)\n}\n","import { GenericFilterOperationEnum } from \"services/tenantManagementService\";\nimport { AndOrEnum } from \"../../filtersHelper\";\n\nexport class DateFilterModel {\n\tfilterType1?: GenericFilterOperationEnum\n\tfilterValue1?: Date;\n\tfilterType2?: GenericFilterOperationEnum;\n\tfilterValue2?: Date;\n\tadditionalFilter: AndOrEnum = AndOrEnum.And;\n\n\tconstructor(filterModel?: DateFilterModel) {\n\t\tif (filterModel) {\n\t\t\tthis.filterType1 = filterModel.filterType1;\n\t\t\tthis.filterValue1 = filterModel.filterValue1;\n\t\t\tthis.filterType2 = filterModel.filterType2;\n\t\t\tthis.filterValue2 = filterModel.filterValue2;\n\t\t\tthis.additionalFilter = filterModel.additionalFilter;\n\n\t\t}\n\t}\n}\n","import Button from 'components/Button';\nimport { DateField, Form, RadioField, SelectField } from 'components/Form';\nimport { SmartContainer, SmartInline, SmartItem } from 'components/SmartContainer/SmartContainer';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { GenericFilterOperationEnum } from 'services/tenantManagementService';\nimport { additionalFilterOptions, AndOrEnum, findAllFilters } from '../../filtersHelper';\nimport { DateFilterModel } from './DateFilterModel';\nimport { DateColumnModel, DateTimeColumnModel, FilterType } from 'components/Table';\nimport { formatServerDate } from 'utils/dateTimeUtils';\n\ntype Props = {\n\tcolumn: DateColumnModel | DateTimeColumnModel\n\tfilters: FilterType[]\n\tonSave: (filters: FilterType[]) => void\n\tonCancel: () => void\n}\n\nconst filterTypeOptions = [\n\t{ value: GenericFilterOperationEnum.EQUALS, text: 'i18n.label.filter.operation.equals' },\n\t{ value: GenericFilterOperationEnum.NOT_EQUALS, text: 'i18n.label.filter.operation.notEquals' },\n\t{ value: GenericFilterOperationEnum.GREATER_EQUAL_THAN, text: 'i18n.label.filter.operation.greaterEqualThan' },\n\t{ value: GenericFilterOperationEnum.GREATER_THAN, text: 'i18n.label.filter.operation.greaterThan' },\n\t{ value: GenericFilterOperationEnum.LESS_EQUAL_THAN, text: 'i18n.label.filter.operation.lessEqualThen' },\n\t{ value: GenericFilterOperationEnum.LESS_THAN, text: 'i18n.label.filter.operation.lessThan' },\n]\n\nexport const DateFilter = ({ column, filters, onSave, onCancel }: Props) => {\n\tconst [values, setValues] = useState(new DateFilterModel());\n\n\tuseEffect(\n\t\t() => {\n\t\t\tconst newValues = new DateFilterModel();\n\n\t\t\tconst currentFilters = findAllFilters(filters, column.id);\n\t\t\t// if there are two filters that means AND filter is used\n\t\t\tif (currentFilters && currentFilters.length === 2) {\n\t\t\t\tnewValues.additionalFilter = AndOrEnum.And;\n\t\t\t\tnewValues.filterType1 = currentFilters[0].operation;\n\t\t\t\tnewValues.filterValue1 = new Date(currentFilters[0].value);\n\t\t\t\tnewValues.filterType2 = currentFilters[1].operation;\n\t\t\t\tnewValues.filterValue2 = new Date(currentFilters[1].value);\n\t\t\t\t// if there is one filter, but without OR filters\n\t\t\t} else if (currentFilters && currentFilters.length === 1 && (!currentFilters[0].orFilters || currentFilters[0].orFilters.length === 0)) {\n\t\t\t\tnewValues.additionalFilter = AndOrEnum.And;\n\t\t\t\tnewValues.filterType1 = currentFilters[0].operation;\n\t\t\t\tnewValues.filterValue1 = new Date(currentFilters[0].value);\n\t\t\t\t// if there is one filter, with two OR filters\n\t\t\t} else if (currentFilters && currentFilters.length === 1 && currentFilters[0].orFilters && currentFilters[0].orFilters.length === 2) {\n\t\t\t\tnewValues.additionalFilter = AndOrEnum.Or;\n\t\t\t\tnewValues.filterType1 = currentFilters[0].orFilters[0].operation\n\t\t\t\tnewValues.filterValue1 = new Date(currentFilters[0].orFilters[0].value);\n\t\t\t\tnewValues.filterType2 = currentFilters[0].orFilters[1].operation\n\t\t\t\tnewValues.filterValue2 = new Date(currentFilters[0].orFilters[1].value);\n\t\t\t\t// if there is one filter, with one OR filters\n\t\t\t} else if (currentFilters && currentFilters.length === 1 && currentFilters[0].orFilters && currentFilters[0].orFilters.length === 1) {\n\t\t\t\tnewValues.additionalFilter = AndOrEnum.Or;\n\t\t\t\tnewValues.filterType1 = currentFilters[0].orFilters[0].operation\n\t\t\t\tnewValues.filterValue1 = new Date(currentFilters[0].orFilters[0].value)\n\t\t\t}\n\n\t\t\tsetValues(newValues);\n\t\t},\n\t\t[filters, column.id]\n\t)\n\n\tconst submitCallback = useCallback(\n\t\tasync () => {\n\t\t\tlet newFilters = [...filters];\n\t\t\t// remove current filters with specific columnId\n\t\t\tconst currentFilters = findAllFilters(newFilters, column.id);\n\t\t\tif (currentFilters.length > 0) {\n\t\t\t\tcurrentFilters.forEach(filter => {\n\t\t\t\t\tconst index = newFilters.indexOf(filter);\n\t\t\t\t\tnewFilters.splice(index, 1);\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tconst newFilter: FilterType = {};\n\t\t\t// If OR filter is selected, add filters to orFilters array\n\t\t\tif (values.additionalFilter === AndOrEnum.Or) {\n\t\t\t\tnewFilter.orFilters = []\n\t\t\t\tif (values.filterType1) {\n\t\t\t\t\tnewFilter.orFilters.push({\n\t\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\t\toperation: values.filterType1,\n\t\t\t\t\t\tvalue: formatServerDate(values.filterValue1)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tif (values.filterType2) {\n\t\t\t\t\tnewFilter.orFilters.push({\n\t\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\t\toperation: values.filterType2,\n\t\t\t\t\t\tvalue: formatServerDate(values.filterValue2)\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (newFilter.orFilters.length > 0) {\n\t\t\t\t\tnewFilters.push(newFilter);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If AND filter is selected add \"Parent\" filter\n\t\t\tif (values.additionalFilter === AndOrEnum.And) {\n\t\t\t\tif (values.filterType1) {\n\t\t\t\t\tnewFilters.push({\n\t\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\t\toperation: values.filterType1,\n\t\t\t\t\t\tvalue: formatServerDate(values.filterValue1)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// If second filter is selected add new \"Parent\" filter\n\t\t\t\tif (values.filterType2) {\n\t\t\t\t\tnewFilters.push({\n\t\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\t\toperation: values.filterType2,\n\t\t\t\t\t\tvalue: formatServerDate(values.filterValue2)\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tonSave && await onSave(newFilters);\n\t\t},\n\t\t[filters, column.id, onSave, values]\n\t)\n\n\tconst clearCallback = useCallback(\n\t\t() => {\n\t\t\tsetValues(new DateFilterModel());\n\t\t},\n\t\t[]\n\t)\n\n\t// filter EQUAL and NOT_EQUAL do not work because the column contains date and time, and filter works only for dates, so we remove these options\n\tconst filteredTypeOptions = useMemo(\n\t\t() => column instanceof DateTimeColumnModel ? filterTypeOptions.slice(2) : filterTypeOptions,\n\t\t[column]\n\t)\n\n\treturn (\n\t\t (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t item.value}\n\t\t\t\t\t\t\t\tgetItemText={(item) => item.text}\n\t\t\t\t\t\t\t\tinline\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t item.value}\n\t\t\t\t\t\t\t\tgetItemText={(item) => item.text}\n\t\t\t\t\t\t\t\tinline\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\trenderAdditionalButtons={() => (\n\t\t\t\t\n\t\t\t)}\n\t\t/>\n\t)\n}\n","import { GenericFilterOperationEnum } from \"services/tenantManagementService\";\nimport { AndOrEnum } from \"../../filtersHelper\";\n\nexport class NumberFilterModel {\n\tfilterType1?: GenericFilterOperationEnum\n\tfilterValue1?: number;\n\tfilterType2?: GenericFilterOperationEnum;\n\tfilterValue2?: number;\n\tadditionalFilter: AndOrEnum = AndOrEnum.And;\n\n\tconstructor(filterModel?: NumberFilterModel) {\n\t\tif (filterModel) {\n\t\t\tthis.filterType1 = filterModel.filterType1;\n\t\t\tthis.filterValue1 = filterModel.filterValue1;\n\t\t\tthis.filterType2 = filterModel.filterType2;\n\t\t\tthis.filterValue2 = filterModel.filterValue2;\n\t\t\tthis.additionalFilter = filterModel.additionalFilter;\n\n\t\t}\n\t}\n}\n","import Button from 'components/Button';\nimport { Form, InputNumberField, RadioField, SelectField } from 'components/Form';\nimport { SmartContainer, SmartInline, SmartItem } from 'components/SmartContainer/SmartContainer';\nimport { useCallback, useEffect, useState } from 'react';\nimport { GenericFilterOperationEnum } from 'services/tenantManagementService';\nimport { additionalFilterOptions, AndOrEnum, findAllFilters } from '../../filtersHelper';\nimport { NumberFilterModel } from './NumberFilterModel';\nimport { CurrencyColumnModel, DurationColumnModel, FilterType, NumberColumnModel } from 'components/Table';\nimport { convertMinutesToTicks, convertTicksToMinutes } from 'utils/dateTimeUtils';\n\ntype Props = {\n\tcolumn: NumberColumnModel | CurrencyColumnModel | DurationColumnModel\n\tfilters: FilterType[]\n\tonSave: (filters: FilterType[]) => void\n\tonCancel: () => void\n}\n\nconst filterTypeOptions = [\n\t{ value: GenericFilterOperationEnum.EQUALS, text: 'i18n.label.filter.operation.equals' },\n\t{ value: GenericFilterOperationEnum.NOT_EQUALS, text: 'i18n.label.filter.operation.notEquals' },\n\t{ value: GenericFilterOperationEnum.GREATER_EQUAL_THAN, text: 'i18n.label.filter.operation.greaterEqualThan' },\n\t{ value: GenericFilterOperationEnum.GREATER_THAN, text: 'i18n.label.filter.operation.greaterThan' },\n\t{ value: GenericFilterOperationEnum.LESS_EQUAL_THAN, text: 'i18n.label.filter.operation.lessEqualThen' },\n\t{ value: GenericFilterOperationEnum.LESS_THAN, text: 'i18n.label.filter.operation.lessThan' },\n]\n\nexport const NumberFilter = ({ column, filters, onSave, onCancel }: Props) => {\n\tconst [values, setValues] = useState(new NumberFilterModel());\n\n\tconst convertValueToTicks = useCallback(\n\t\t(value: number | undefined, column: NumberColumnModel | CurrencyColumnModel | DurationColumnModel) => {\n\t\t\tif (column instanceof DurationColumnModel) {\n\t\t\t\treturn convertMinutesToTicks(value);\n\t\t\t}\n\n\t\t\treturn value;\n\t\t},\n\t\t[]\n\t)\n\n\tconst convertValueFromTicks = useCallback(\n\t\t(value: number | undefined, column: NumberColumnModel | CurrencyColumnModel | DurationColumnModel) => {\n\t\t\tif (column instanceof DurationColumnModel) {\n\t\t\t\treturn convertTicksToMinutes(value);\n\t\t\t}\n\n\t\t\treturn value;\n\t\t},\n\t\t[]\n\t)\n\n\tuseEffect(\n\t\t() => {\n\t\t\tconst newValues = new NumberFilterModel();\n\n\t\t\tconst currentFilters = findAllFilters(filters, column.id);\n\t\t\t// if there are two filters that means AND filter is used\n\t\t\tif (currentFilters && currentFilters.length === 2) {\n\t\t\t\tnewValues.additionalFilter = AndOrEnum.And;\n\t\t\t\tnewValues.filterType1 = currentFilters[0].operation;\n\t\t\t\tnewValues.filterValue1 = convertValueFromTicks(currentFilters[0].value, column);\n\t\t\t\tnewValues.filterType2 = currentFilters[1].operation;\n\t\t\t\tnewValues.filterValue2 = convertValueFromTicks(currentFilters[1].value, column);\n\t\t\t\t// if there is one filter, but without OR filters\n\t\t\t} else if (currentFilters && currentFilters.length === 1 && (!currentFilters[0].orFilters || currentFilters[0].orFilters.length === 0)) {\n\t\t\t\tnewValues.additionalFilter = AndOrEnum.And;\n\t\t\t\tnewValues.filterType1 = currentFilters[0].operation;\n\t\t\t\tnewValues.filterValue1 = convertValueFromTicks(currentFilters[0].value, column);\n\t\t\t\t// if there is one filter, with two OR filters\n\t\t\t} else if (currentFilters && currentFilters.length === 1 && currentFilters[0].orFilters && currentFilters[0].orFilters.length === 2) {\n\t\t\t\tnewValues.additionalFilter = AndOrEnum.Or;\n\t\t\t\tnewValues.filterType1 = currentFilters[0].orFilters[0].operation\n\t\t\t\tnewValues.filterValue1 = convertValueFromTicks(currentFilters[0].orFilters[0].value, column)\n\t\t\t\tnewValues.filterType2 = currentFilters[0].orFilters[1].operation\n\t\t\t\tnewValues.filterValue2 = convertValueFromTicks(currentFilters[0].orFilters[1].value, column)\n\t\t\t\t// if there is one filter, with one OR filters\n\t\t\t} else if (currentFilters && currentFilters.length === 1 && currentFilters[0].orFilters && currentFilters[0].orFilters.length === 1) {\n\t\t\t\tnewValues.additionalFilter = AndOrEnum.Or;\n\t\t\t\tnewValues.filterType1 = currentFilters[0].orFilters[0].operation\n\t\t\t\tnewValues.filterValue1 = convertValueFromTicks(currentFilters[0].orFilters[0].value, column)\n\t\t\t}\n\n\t\t\tsetValues(newValues);\n\t\t},\n\t\t[filters, column, convertValueFromTicks]\n\t)\n\n\tconst submitCallback = useCallback(\n\t\tasync () => {\n\t\t\tlet newFilters = [...filters];\n\t\t\t// remove current filters with specific columnId\n\t\t\tconst currentFilters = findAllFilters(newFilters, column.id);\n\t\t\tif (currentFilters.length > 0) {\n\t\t\t\tcurrentFilters.forEach(filter => {\n\t\t\t\t\tconst index = newFilters.indexOf(filter);\n\t\t\t\t\tnewFilters.splice(index, 1);\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tconst newFilter: FilterType = {}\n\t\t\t// If OR filter is selected, add filters to orFilters array\n\t\t\tif (values.additionalFilter === AndOrEnum.Or) {\n\t\t\t\tnewFilter.orFilters = []\n\t\t\t\tif (values.filterType1) {\n\t\t\t\t\tnewFilter.orFilters.push({\n\t\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\t\toperation: values.filterType1,\n\t\t\t\t\t\tvalue: convertValueToTicks(values.filterValue1, column)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tif (values.filterType2) {\n\t\t\t\t\tnewFilter.orFilters.push({\n\t\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\t\toperation: values.filterType2,\n\t\t\t\t\t\tvalue: convertValueToTicks(values.filterValue2, column)\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (newFilter.orFilters.length > 0) {\n\t\t\t\t\tnewFilters.push(newFilter);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If AND filter is selected add \"Parent\" filter\n\t\t\tif (values.additionalFilter === AndOrEnum.And) {\n\t\t\t\tif (values.filterType1) {\n\t\t\t\t\tnewFilters.push({\n\t\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\t\toperation: values.filterType1,\n\t\t\t\t\t\tvalue: convertValueToTicks(values.filterValue1, column)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// If second filter is selected add new \"Parent\" filter\n\t\t\t\tif (values.filterType2) {\n\t\t\t\t\tnewFilters.push({\n\t\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\t\toperation: values.filterType2,\n\t\t\t\t\t\tvalue: convertValueToTicks(values.filterValue2, column)\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tonSave && await onSave(newFilters);\n\t\t},\n\t\t[filters, column, onSave, values, convertValueToTicks]\n\t)\n\n\tconst clearCallback = useCallback(\n\t\t() => {\n\t\t\tsetValues(new NumberFilterModel());\n\t\t},\n\t\t[]\n\t)\n\n\treturn (\n\t\t (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t item.value}\n\t\t\t\t\t\t\t\tgetItemText={(item) => item.text}\n\t\t\t\t\t\t\t\tinline\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t item.value}\n\t\t\t\t\t\t\t\tgetItemText={(item) => item.text}\n\t\t\t\t\t\t\t\tinline\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\trenderAdditionalButtons={() => (\n\t\t\t\t\n\t\t\t)}\n\t\t/>\n\t)\n}\n","import Button from 'components/Button';\nimport { Form, MultiSelectField } from 'components/Form';\nimport { SmartContainer, SmartItem } from 'components/SmartContainer/SmartContainer';\nimport { useCallback, useEffect, useState } from 'react';\nimport { GenericFilterOperationEnum } from 'services/tenantManagementService';\nimport { findFilter } from '../../filtersHelper';\nimport { FilterType, OptionsColumnModel } from 'components/Table';\n\ntype Props = {\n\tcolumn: OptionsColumnModel\n\tfilters: FilterType[]\n\tonSave: (filters: FilterType[]) => void\n\tonCancel: () => void\n}\n\ntype State = {\n\tselectedValues: any[]\n}\n\nexport const OptionsFilter = ({ column, filters, onSave, onCancel }: Props) => {\n\tconst [values, setValues] = useState({ selectedValues: [] })\n\n\tuseEffect(\n\t\t() => {\n\t\t\t// only one AND filter can be added for options filter\n\t\t\tconst currentFilter = findFilter(filters, column.id);\n\t\t\tif (!currentFilter) {\n\t\t\t\tsetValues({ selectedValues: [] });\n\t\t\t} else if (currentFilter?.columnId === column.id) {\n\t\t\t\tsetValues({ selectedValues: [currentFilter.value] })\n\t\t\t} else if (currentFilter.orFilters && currentFilter.orFilters.length > 0) {\n\t\t\t\tconst newValues = currentFilter.orFilters\n\t\t\t\t\t.filter(filter => filter.columnId === column.id)\n\t\t\t\t\t.map(filter => filter.value)\n\t\t\t\tsetValues({ selectedValues: newValues });\n\t\t\t}\n\t\t},\n\t\t[filters, column.id]\n\t)\n\n\tconst submitCallback = useCallback(\n\t\tasync () => {\n\t\t\t// only one \"Parent\" filter can be added for options filter\n\t\t\tlet newFilters = [...filters];\n\n\t\t\tconst currentFilter = findFilter(newFilters, column.id);\n\t\t\tlet newFilter: FilterType | undefined;\n\t\t\tif (values.selectedValues.length > 1) {\n\t\t\t\tnewFilter = {\n\t\t\t\t\torFilters: values.selectedValues.map((value: any) =>\n\t\t\t\t\t({\n\t\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\t\toperation: GenericFilterOperationEnum.EQUALS,\n\t\t\t\t\t\tvalue\n\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t} else if (values.selectedValues.length === 1) {\n\t\t\t\tnewFilter = {\n\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\toperation: GenericFilterOperationEnum.EQUALS,\n\t\t\t\t\tvalue: values.selectedValues[0]\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (currentFilter) {\n\t\t\t\tconst index = newFilters.indexOf(currentFilter);\n\t\t\t\tnewFilters.splice(index, 1);\n\t\t\t}\n\t\t\tif (newFilter) {\n\t\t\t\tnewFilters.push(newFilter);\n\t\t\t}\n\t\t\tonSave && await onSave(newFilters);\n\t\t},\n\t\t[column.id, filters, values, onSave]\n\t)\n\n\tconst clearCallback = useCallback(\n\t\t() => {\n\t\t\tsetValues({ selectedValues: [] });\n\t\t},\n\t\t[]\n\t)\n\n\tconst { items, getItemId, getItemText } = column;\n\n\treturn (\n\t\t (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\trenderAdditionalButtons={() => (\n\t\t\t\t\n\t\t\t)}\n\t\t/>\n\t)\n}\n","import { GenericFilterOperationEnum } from \"services/tenantManagementService\";\nimport { AndOrEnum } from \"../../filtersHelper\";\n\nexport class StringFilterModel {\n\tfilterType1?: GenericFilterOperationEnum\n\tfilterValue1: string = ''\n\tfilterType2?: GenericFilterOperationEnum;\n\tfilterValue2: string = ''\n\tadditionalFilter: AndOrEnum = AndOrEnum.And;\n\n\tconstructor(filterModel?: StringFilterModel) {\n\t\tif (filterModel) {\n\t\t\tthis.filterType1 = filterModel.filterType1;\n\t\t\tthis.filterValue1 = filterModel.filterValue1;\n\t\t\tthis.filterType2 = filterModel.filterType2;\n\t\t\tthis.filterValue2 = filterModel.filterValue2;\n\t\t\tthis.additionalFilter = filterModel.additionalFilter;\n\t\t}\n\t}\n}\n","import Button from 'components/Button';\nimport { Form, InputField, RadioField, SelectField } from 'components/Form';\nimport { SmartContainer, SmartInline, SmartItem } from 'components/SmartContainer/SmartContainer';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { GenericFilterOperationEnum } from 'services/tenantManagementService';\nimport { additionalFilterOptions, AndOrEnum, findAllFilters } from '../../filtersHelper';\nimport { StringFilterModel } from './StringFilterModel';\nimport { getFormatedId, getUnformattedId } from 'utils/commonHelper';\nimport { FormattedReferenceColumnModel, StringColumnModel, FilterType } from 'components/Table';\n\ntype Props = {\n\tcolumn: StringColumnModel | FormattedReferenceColumnModel\n\tfilters: FilterType[]\n\tonSave: (filters: FilterType[]) => void\n\tonCancel: () => void\n}\n\nconst filterStringTypeOptions = [\n\t{ value: GenericFilterOperationEnum.EQUALS, text: 'i18n.label.filter.operation.equals' },\n\t{ value: GenericFilterOperationEnum.LIKE, text: 'i18n.label.filter.operation.like' },\n\t{ value: GenericFilterOperationEnum.LIKE_STARTSWITH, text: 'i18n.label.filter.operation.likeStartsWith' },\n\t{ value: GenericFilterOperationEnum.LIKE_ENDSWITH, text: 'i18n.label.filter.operation.likeEndsWith' },\n\t{ value: GenericFilterOperationEnum.NOT_EQUALS, text: 'i18n.label.filter.operation.notEquals' },\n]\n\n// value will be number, so be carefull to have operations that are used for both string and number only\nconst filterFormattedReferenceTypeOptions = [\n\t{ value: GenericFilterOperationEnum.EQUALS, text: 'i18n.label.filter.operation.equals' },\n\t{ value: GenericFilterOperationEnum.NOT_EQUALS, text: 'i18n.label.filter.operation.notEquals' }\n]\n\nexport const StringFilter = ({ column, filters, onSave, onCancel }: Props) => {\n\tconst [values, setValues] = useState(new StringFilterModel());\n\n\tconst filterTypeOptions = useMemo(\n\t\t() => column instanceof FormattedReferenceColumnModel ? filterFormattedReferenceTypeOptions : filterStringTypeOptions,\n\t\t[column]\n\t)\n\n\tuseEffect(\n\t\t() => {\n\t\t\tconst newValues = new StringFilterModel();\n\n\t\t\tconst currentFilters = findAllFilters(filters, column.id);\n\t\t\t// if there are two filters that means AND filter is used\n\t\t\tif (currentFilters && currentFilters.length === 2) {\n\t\t\t\tnewValues.additionalFilter = AndOrEnum.And;\n\t\t\t\tnewValues.filterType1 = currentFilters[0].operation;\n\t\t\t\tnewValues.filterValue1 = column instanceof FormattedReferenceColumnModel ? getFormatedId(column.entityPrefix, currentFilters[0].value) : currentFilters[0].value;\n\t\t\t\tnewValues.filterType2 = currentFilters[1].operation;\n\t\t\t\tnewValues.filterValue2 = column instanceof FormattedReferenceColumnModel ? getFormatedId(column.entityPrefix, currentFilters[1].value) : currentFilters[1].value;\n\t\t\t\t// if there is one filter, but without OR filters\n\t\t\t} else if (currentFilters && currentFilters.length === 1 && (!currentFilters[0].orFilters || currentFilters[0].orFilters.length === 0)) {\n\t\t\t\tnewValues.additionalFilter = AndOrEnum.And;\n\t\t\t\tnewValues.filterType1 = currentFilters[0].operation;\n\t\t\t\tnewValues.filterValue1 = column instanceof FormattedReferenceColumnModel ? getFormatedId(column.entityPrefix, currentFilters[0].value) : currentFilters[0].value;\n\t\t\t\t// if there is one filter, with two OR filters\n\t\t\t} else if (currentFilters && currentFilters.length === 1 && currentFilters[0].orFilters && currentFilters[0].orFilters.length === 2) {\n\t\t\t\tnewValues.additionalFilter = AndOrEnum.Or;\n\t\t\t\tnewValues.filterType1 = currentFilters[0].orFilters[0].operation\n\t\t\t\tnewValues.filterValue1 = column instanceof FormattedReferenceColumnModel ? getFormatedId(column.entityPrefix, currentFilters[0].orFilters[0].value) : currentFilters[0].orFilters[0].value;\n\t\t\t\tnewValues.filterType2 = currentFilters[0].orFilters[1].operation\n\t\t\t\tnewValues.filterValue2 = column instanceof FormattedReferenceColumnModel ? getFormatedId(column.entityPrefix, currentFilters[0].orFilters[1].value) : currentFilters[0].orFilters[1].value;\n\t\t\t\t// if there is one filter, with one OR filters\n\t\t\t} else if (currentFilters && currentFilters.length === 1 && currentFilters[0].orFilters && currentFilters[0].orFilters.length === 1) {\n\t\t\t\tnewValues.additionalFilter = AndOrEnum.Or;\n\t\t\t\tnewValues.filterType1 = currentFilters[0].orFilters[0].operation\n\t\t\t\tnewValues.filterValue1 = column instanceof FormattedReferenceColumnModel ? getFormatedId(column.entityPrefix, currentFilters[0].orFilters[0].value) : currentFilters[0].orFilters[0].value;\n\t\t\t}\n\n\t\t\tsetValues(newValues);\n\t\t},\n\t\t[filters, column]\n\t)\n\n\tconst submitCallback = useCallback(\n\t\tasync () => {\n\t\t\tlet newFilters = [...filters];\n\t\t\t// remove current filters with specific columnId\n\t\t\tconst currentFilters = findAllFilters(newFilters, column.id);\n\t\t\tif (currentFilters.length > 0) {\n\t\t\t\tcurrentFilters.forEach(filter => {\n\t\t\t\t\tconst index = newFilters.indexOf(filter);\n\t\t\t\t\tnewFilters.splice(index, 1);\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tconst newFilter: FilterType = {};\n\t\t\t// If OR filter is selected, add filters to orFilters array\n\t\t\tif (values.additionalFilter === AndOrEnum.Or) {\n\t\t\t\tnewFilter.orFilters = []\n\t\t\t\tif (values.filterType1) {\n\t\t\t\t\tnewFilter.orFilters.push({\n\t\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\t\toperation: values.filterType1,\n\t\t\t\t\t\tvalue: column instanceof FormattedReferenceColumnModel ? (getUnformattedId(column.entityPrefix, values.filterValue1) || '') : values.filterValue1\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tif (values.filterType2) {\n\t\t\t\t\tnewFilter.orFilters.push({\n\t\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\t\toperation: values.filterType2,\n\t\t\t\t\t\tvalue: column instanceof FormattedReferenceColumnModel ? (getUnformattedId(column.entityPrefix, values.filterValue2) || '') : values.filterValue2\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (newFilter.orFilters.length > 0) {\n\t\t\t\t\tnewFilters.push(newFilter);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If AND filter is selected add \"Parent\" filter\n\t\t\tif (values.additionalFilter === AndOrEnum.And) {\n\t\t\t\tif (values.filterType1) {\n\t\t\t\t\tnewFilters.push({\n\t\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\t\toperation: values.filterType1,\n\t\t\t\t\t\tvalue: column instanceof FormattedReferenceColumnModel ? (getUnformattedId(column.entityPrefix, values.filterValue1) || '') : values.filterValue1\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// If second filter is selected add new \"Parent\" filter\n\t\t\t\tif (values.filterType2) {\n\t\t\t\t\tnewFilters.push({\n\t\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\t\toperation: values.filterType2,\n\t\t\t\t\t\tvalue: column instanceof FormattedReferenceColumnModel ? (getUnformattedId(column.entityPrefix, values.filterValue2) || '') : values.filterValue2\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tonSave && await onSave(newFilters);\n\t\t},\n\t\t[filters, column, onSave, values]\n\t)\n\n\tconst clearCallback = useCallback(\n\t\t() => {\n\t\t\tsetValues(new StringFilterModel());\n\t\t},\n\t\t[]\n\t)\n\n\treturn (\n\t\t (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t item.value}\n\t\t\t\t\t\t\t\tgetItemText={(item) => item.text}\n\t\t\t\t\t\t\t\tinline\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t item.value}\n\t\t\t\t\t\t\t\tgetItemText={(item) => item.text}\n\t\t\t\t\t\t\t\tinline\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\trenderAdditionalButtons={() => (\n\t\t\t\t\n\t\t\t)}\n\t\t/>\n\t)\n}\n","import Button from 'components/Button';\nimport { Form, MapSingleField } from 'components/Form';\nimport { SmartContainer, SmartItem } from 'components/SmartContainer/SmartContainer';\nimport { useCallback, useEffect, useState } from 'react';\nimport { GenericFilterOperationEnum } from 'services/tenantManagementService';\nimport { findFilter } from '../../filtersHelper';\nimport { FilterType, MapOptionColumnModel } from 'components/Table';\n\ntype Props = {\n\tcolumn: MapOptionColumnModel\n\tfilters: FilterType[]\n\tonSave: (filters: FilterType[]) => void\n\tonCancel: () => void\n}\n\ntype State = {\n\tselectedValue: any\n}\n\nexport const MapFilter = ({ column, filters, onSave, onCancel }: Props) => {\n\tconst [values, setValues] = useState({ selectedValue: '' })\n\n\tuseEffect(\n\t\t() => {\n\t\t\tconst currentFilter = findFilter(filters, column.id);\n\n\t\t\tif (currentFilter) {\n\t\t\t\tsetValues({ selectedValue: currentFilter.value });\n\t\t\t} else {\n\t\t\t\tsetValues({ selectedValue: '' });\n\t\t\t}\n\t\t},\n\t\t[filters, column.id]\n\t)\n\n\tconst submitCallback = useCallback(\n\t\tasync () => {\n\t\t\tlet newFilters = [...filters];\n\n\t\t\tconst currentFilter = findFilter(newFilters, column.id);\n\t\t\tif (currentFilter) {\n\t\t\t\tconst index = newFilters.indexOf(currentFilter);\n\t\t\t\tnewFilters.splice(index, 1);\n\t\t\t}\n\n\t\t\tif (values.selectedValue) {\n\t\t\t\tnewFilters.push({\n\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\toperation: GenericFilterOperationEnum.EQUALS,\n\t\t\t\t\tvalue: values.selectedValue\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tonSave && await onSave(newFilters);\n\t\t},\n\t\t[column.id, filters, values, onSave]\n\t)\n\n\tconst clearCallback = useCallback(\n\t\t() => {\n\t\t\tsetValues({ selectedValue: '' });\n\t\t},\n\t\t[]\n\t)\n\n\treturn (\n\t\t (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\trenderAdditionalButtons={() => (\n\t\t\t\t\n\t\t\t)}\n\t\t/>\n\t)\n}\n","import Button from 'components/Button';\nimport { Form } from 'components/Form';\nimport { SmartContainer, SmartItem } from 'components/SmartContainer/SmartContainer';\nimport { useCallback, useEffect, useState } from 'react';\nimport { GenericFilterOperationEnum } from 'services/tenantManagementService';\nimport { findFilter } from '../../filtersHelper';\nimport { FilterType, SemaphoreColumnModel } from 'components/Table';\nimport { SemaphoreField } from 'components/Form';\n\ntype Props = {\n\tcolumn: SemaphoreColumnModel\n\tfilters: FilterType[]\n\tonSave: (filters: FilterType[]) => void\n\tonCancel: () => void\n}\n\ntype State = {\n\tselectedValue: any\n}\n\nexport const SemaphoreFilter = ({ column, filters, onSave, onCancel }: Props) => {\n\tconst [values, setValues] = useState({ selectedValue: '' })\n\n\tuseEffect(\n\t\t() => {\n\t\t\tconst currentFilter = findFilter(filters, column.id);\n\n\t\t\tif (currentFilter) {\n\t\t\t\tsetValues({ selectedValue: currentFilter.value});\n\t\t\t} else {\n\t\t\t\tsetValues({ selectedValue: ''});\n\t\t\t}\n\t\t},\n\t\t[filters, column.id]\n\t)\n\n\tconst submitCallback = useCallback(\n\t\tasync () => {\n\t\t\tlet newFilters = [...filters];\n\n\t\t\tconst currentFilter = findFilter(newFilters, column.id);\n\t\t\tif (currentFilter) {\n\t\t\t\tconst index = newFilters.indexOf(currentFilter);\n\t\t\t\tnewFilters.splice(index, 1);\n\t\t\t}\n\n\t\t\tif (values.selectedValue) {\n\t\t\t\tnewFilters.push({\n\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\toperation: GenericFilterOperationEnum.EQUALS,\n\t\t\t\t\tvalue: values.selectedValue\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tonSave && await onSave(newFilters);\n\t\t},\n\t\t[column.id, filters, values, onSave]\n\t)\n\n\tconst clearCallback = useCallback(\n\t\t() => {\n\t\t\tsetValues({ selectedValue: '' }) ;\n\t\t},\n\t\t[]\n\t)\n\n\treturn (\n\t\t (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\trenderAdditionalButtons={() => (\n\t\t\t\t\n\t\t\t)}\n\t\t/>\n\t)\n}\n","import { GenericFilterOperationEnum } from 'services/tenantManagementService';\nimport { AndOrEnum } from '../../filtersHelper';\n\nexport class TimeFilterModel {\n\tfilterType1?: GenericFilterOperationEnum;\n\tfilterValue1?: number;\n\tfilterType2?: GenericFilterOperationEnum;\n\tfilterValue2?: number;\n\tadditionalFilter: AndOrEnum = AndOrEnum.And;\n\n\tconstructor(filterModel?: TimeFilterModel) {\n\t\tif (filterModel) {\n\t\t\tthis.filterType1 = filterModel.filterType1;\n\t\t\tthis.filterValue1 = filterModel.filterValue1;\n\t\t\tthis.filterType2 = filterModel.filterType2;\n\t\t\tthis.filterValue2 = filterModel.filterValue2;\n\t\t\tthis.additionalFilter = filterModel.additionalFilter;\n\t\t}\n\t}\n}\n","import Button from 'components/Button';\nimport { Form, RadioField, SelectField, TimeField } from 'components/Form';\nimport { SmartContainer, SmartInline, SmartItem } from 'components/SmartContainer/SmartContainer';\nimport { useCallback, useEffect, useState } from 'react';\nimport { GenericFilterOperationEnum } from 'services/tenantManagementService';\nimport { additionalFilterOptions, AndOrEnum, findAllFilters } from '../../filtersHelper';\nimport { FilterType, TimeColumnModel } from 'components/Table';\nimport { TimeFilterModel } from './TimeFilterModel';\n\ntype Props = {\n\tcolumn: TimeColumnModel\n\tfilters: FilterType[]\n\tonSave: (filters: FilterType[]) => void\n\tonCancel: () => void\n}\n\nconst filterTypeOptions = [\n\t{ value: GenericFilterOperationEnum.EQUALS, text: 'i18n.label.filter.operation.equals' },\n\t{ value: GenericFilterOperationEnum.NOT_EQUALS, text: 'i18n.label.filter.operation.notEquals' },\n\t{ value: GenericFilterOperationEnum.GREATER_EQUAL_THAN, text: 'i18n.label.filter.operation.greaterEqualThan' },\n\t{ value: GenericFilterOperationEnum.GREATER_THAN, text: 'i18n.label.filter.operation.greaterThan' },\n\t{ value: GenericFilterOperationEnum.LESS_EQUAL_THAN, text: 'i18n.label.filter.operation.lessEqualThen' },\n\t{ value: GenericFilterOperationEnum.LESS_THAN, text: 'i18n.label.filter.operation.lessThan' },\n];\n\nexport const TimeFilter = ({ column, filters, onSave, onCancel }: Props) => {\n\tconst [values, setValues] = useState(new TimeFilterModel());\n\n\tuseEffect(\n\t\t() => {\n\t\t\tconst newValues = new TimeFilterModel();\n\n\t\t\tconst currentFilters = findAllFilters(filters, column.id);\n\t\t\t// if there are two filters that means AND filter is used\n\t\t\tif (currentFilters && currentFilters.length === 2) {\n\t\t\t\tnewValues.additionalFilter = AndOrEnum.And;\n\t\t\t\tnewValues.filterType1 = currentFilters[0].operation;\n\t\t\t\tnewValues.filterValue1 = currentFilters[0].value;\n\t\t\t\tnewValues.filterType2 = currentFilters[1].operation;\n\t\t\t\tnewValues.filterValue2 = currentFilters[1].value;\n\t\t\t\t// if there is one filter, but without OR filters\n\t\t\t} else if (currentFilters && currentFilters.length === 1 && (!currentFilters[0].orFilters || currentFilters[0].orFilters.length === 0)) {\n\t\t\t\tnewValues.additionalFilter = AndOrEnum.And;\n\t\t\t\tnewValues.filterType1 = currentFilters[0].operation;\n\t\t\t\tnewValues.filterValue1 = currentFilters[0].value;\n\t\t\t\t// if there is one filter, with two OR filters\n\t\t\t} else if (currentFilters && currentFilters.length === 1 && currentFilters[0].orFilters && currentFilters[0].orFilters.length === 2) {\n\t\t\t\tnewValues.additionalFilter = AndOrEnum.Or;\n\t\t\t\tnewValues.filterType1 = currentFilters[0].orFilters[0].operation;\n\t\t\t\tnewValues.filterValue1 = currentFilters[0].orFilters[0].value;\n\t\t\t\tnewValues.filterType2 = currentFilters[0].orFilters[1].operation;\n\t\t\t\tnewValues.filterValue2 = currentFilters[0].orFilters[1].value;\n\t\t\t\t// if there is one filter, with one OR filters\n\t\t\t} else if (currentFilters && currentFilters.length === 1 && currentFilters[0].orFilters && currentFilters[0].orFilters.length === 1) {\n\t\t\t\tnewValues.additionalFilter = AndOrEnum.Or;\n\t\t\t\tnewValues.filterType1 = currentFilters[0].orFilters[0].operation;\n\t\t\t\tnewValues.filterValue1 = currentFilters[0].orFilters[0].value;\n\t\t\t}\n\n\t\t\tsetValues(newValues);\n\t\t},\n\t\t[filters, column.id]\n\t)\n\n\tconst submitCallback = useCallback(\n\t\tasync () => {\n\t\t\tlet newFilters = [...filters];\n\t\t\t// remove current filters with specific columnId\n\t\t\tconst currentFilters = findAllFilters(newFilters, column.id);\n\t\t\tif (currentFilters.length > 0) {\n\t\t\t\tcurrentFilters.forEach(filter => {\n\t\t\t\t\tconst index = newFilters.indexOf(filter);\n\t\t\t\t\tnewFilters.splice(index, 1);\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tconst newFilter: FilterType = {};\n\t\t\t// If OR filter is selected, add filters to orFilters array\n\t\t\tif (values.additionalFilter === AndOrEnum.Or) {\n\t\t\t\tnewFilter.orFilters = [];\n\t\t\t\tif (values.filterType1) {\n\t\t\t\t\tnewFilter.orFilters.push({\n\t\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\t\toperation: values.filterType1,\n\t\t\t\t\t\tvalue: values.filterValue1\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (values.filterType2) {\n\t\t\t\t\tnewFilter.orFilters.push({\n\t\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\t\toperation: values.filterType2,\n\t\t\t\t\t\tvalue: values.filterValue2\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (newFilter.orFilters.length > 0) {\n\t\t\t\t\tnewFilters.push(newFilter);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If AND filter is selected add \"Parent\" filter\n\t\t\tif (values.additionalFilter === AndOrEnum.And) {\n\t\t\t\tif (values.filterType1) {\n\t\t\t\t\tnewFilters.push({\n\t\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\t\toperation: values.filterType1,\n\t\t\t\t\t\tvalue: values.filterValue1\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// If second filter is selected add new \"Parent\" filter\n\t\t\t\tif (values.filterType2) {\n\t\t\t\t\tnewFilters.push({\n\t\t\t\t\t\tcolumnId: column.id,\n\t\t\t\t\t\toperation: values.filterType2,\n\t\t\t\t\t\tvalue: values.filterValue2\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tonSave && await onSave(newFilters);\n\t\t},\n\t\t[filters, column.id, onSave, values]\n\t)\n\n\tconst clearCallback = useCallback(\n\t\t() => {\n\t\t\tsetValues(new TimeFilterModel());\n\t\t},\n\t\t[]\n\t)\n\n\treturn (\n\t\t (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t item.value}\n\t\t\t\t\t\t\t\tgetItemText={(item) => item.text}\n\t\t\t\t\t\t\t\tinline\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t item.value}\n\t\t\t\t\t\t\t\tgetItemText={(item) => item.text}\n\t\t\t\t\t\t\t\tinline\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\trenderAdditionalButtons={() => (\n\t\t\t\t\n\t\t\t)}\n\t\t/>\n\t)\n}\n","import { memo } from 'react';\nimport { BooleanFilter } from './BooleanFilter/BooleanFilter';\nimport { DateFilter } from './DateFilter/DateFilter';\nimport { NumberFilter } from './NumberFilter/NumberFilter';\nimport { OptionsFilter } from './OptionsFilter/OptionsFilter';\nimport { StringFilter } from './StringFilter/StringFilter';\nimport { MapFilter } from './MapFilter/MapFilter';\nimport { GenericColumnModel, BooleanColumnModel, CurrencyColumnModel, DateColumnModel, FilterType, FormattedReferenceColumnModel, MapOptionColumnModel, NumberColumnModel, OptionColumnModel, OptionsColumnModel, SemaphoreColumnModel, StringColumnModel, DurationColumnModel, TimeColumnModel, DateTimeColumnModel } from '../../models';\nimport { SemaphoreFilter } from './SemaphoreFilter/SemaphoreFilter';\nimport { TimeFilter } from './TimeFilter/TimeFilter';\n\ntype Props = {\n\tcolumn: GenericColumnModel\n\tfilters: FilterType[]\n\tonSave: (filters: FilterType[]) => void\n\tonCancel: () => void\n}\n\nconst FilterElement = ({ column, ...rest }: Props) => {\n\tif (column instanceof FormattedReferenceColumnModel) {\n\t\treturn ;\n\t} else if (column instanceof DateColumnModel || column instanceof DateTimeColumnModel) {\n\t\treturn ;\n\t} else if (column instanceof OptionsColumnModel || column instanceof OptionColumnModel) {\n\t\treturn ;\n\t} else if (column instanceof MapOptionColumnModel) {\n\t\treturn \n\t} else if (column instanceof BooleanColumnModel) {\n\t\treturn \n\t} else if (column instanceof NumberColumnModel || column instanceof CurrencyColumnModel || column instanceof DurationColumnModel) {\n\t\treturn \n\t} else if (column instanceof SemaphoreColumnModel) {\n\t\treturn \n\t} else if (column instanceof TimeColumnModel) {\n\t\treturn \n\t} else if (column instanceof StringColumnModel) {\n\t\treturn \n\t} else {\n\t\treturn \n\t}\n}\n\nexport default memo(FilterElement)\n","import { useCallback, useMemo } from 'react';\nimport { Dialog } from 'components/Dialog';\nimport { ActiveFilter } from './ActiveFilter/ActiveFilter';\nimport FilterElement from './FilterTypes/FilterElement';\nimport { GenericColumnModel, FilterType } from '../models';\nimport { Translation } from 'components/Translations/Translation';\n\ntype Props = {\n\tcolumn?: GenericColumnModel\n\tcolumns: GenericColumnModel[]\n\tfilters: FilterType[]\n\tonCancel: () => void;\n\tonSave: (filters: FilterType[]) => void;\n}\n\nexport const Filter = ({ column, columns, filters, onCancel, onSave }: Props) => {\n\tconst clearAllCallback = useCallback(\n\t\t() => onSave([]),\n\t\t[onSave]\n\t)\n\n\t// const deleteCallback = useCallback(\n\t// \t(filterForDelete) => {\n\t// \t\t// check is it and filter\n\t// \t\tconst newFilters = [...filters];\n\t// \t\tconst andIndex = newFilters.indexOf(filterForDelete);\n\t// \t\tif (andIndex !== -1) {\n\t// \t\t\tnewFilters.splice(andIndex, 1)\n\t// \t\t\tonSave(newFilters);\n\t// \t\t\treturn;\n\t// \t\t}\n\t// \t\t// otherwise find it in or filters\n\t// \t\tnewFilters.forEach((filter, index) => {\n\t// \t\t\tif (filter.orFilters) {\n\t// \t\t\t\tconst orIndex = filter.orFilters.indexOf(filterForDelete);\n\t// \t\t\t\tif (orIndex !== -1) {\n\t// \t\t\t\t\tconst newOrFilters = [...filter.orFilters];\n\t// \t\t\t\t\tnewOrFilters.splice(orIndex, 1);\n\n\t// \t\t\t\t\tif (newOrFilters.length > 0) {\n\t// \t\t\t\t\t\tfilter.orFilters = newOrFilters;\n\t// \t\t\t\t\t\treturn;\n\t// \t\t\t\t\t}\n\n\t// \t\t\t\t\t// if there are not orFilters anymore, remove parent filter\n\t// \t\t\t\t\tnewFilters.splice(index, 1);\n\t// \t\t\t\t\treturn;\n\t// \t\t\t\t}\n\t// \t\t\t}\n\t// \t\t})\n\n\t// \t\tonSave(newFilters)\n\t// \t},\n\t// \t[onSave, filters]\n\t// )\n\n\tconst showActiveFilter = useMemo(\n\t\t() => {\n\t\t\tfor (let i = 0; i < columns.length; i++) {\n\t\t\t\tconst field = columns[i].id;\n\n\t\t\t\tif (filters && filters.length > 0 && filters.find(item => item.columnId === field || item.orFilters?.find(orFilterItem => orFilterItem.columnId === field))) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\t[filters, columns]\n\t)\n\n\treturn (\n\t\t<>\n\t\t\t{showActiveFilter && (\n\t\t\t\t\n\t\t\t)}\n\t\t\t{column &&\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t}\n\t\t\n\t)\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"footer_container__5tCyx\",\"row\":\"footer_row__0kV9+\",\"row_wrapper\":\"footer_row_wrapper__2jMUf\",\"cells_wrapper\":\"footer_cells_wrapper__SB8ef\",\"cell\":\"footer_cell__gkWmT\",\"frozen\":\"footer_frozen__KA2B8\",\"editing\":\"footer_editing__qoGAo\",\"content\":\"footer_content__qOVRd\",\"align_center\":\"footer_align_center__Ts-7k\",\"align_right\":\"footer_align_right__ro-pz\"};","import { memo, useCallback, useMemo, useState } from 'react'\nimport { FormatterCell, GenericColumnModel } from '../models'\nimport { EditableCell } from '../Body/EditableCell/EditableCell'\nimport styles from './footer.module.scss'\n\ntype Props = {\n\tcolumn: GenericColumnModel\n\tcolumnWidth: number\n\tgetCellValue(column: GenericColumnModel): string\n\trowData: any\n\tcellEdited?: (columnId: string, value: any) => Promise\n}\n\nconst CellWithoutMemo = ({ column, columnWidth, getCellValue, rowData, cellEdited }: Props) => {\n\tconst [saving, setSaving] = useState(false);\n\n\tconst cellValue = useMemo(\n\t\t() => getCellValue(column),\n\t\t[getCellValue, column]\n\t)\n\n\tconst formatterCell: FormatterCell = useMemo(\n\t\t() => ({\n\t\t\tvalue: cellValue,\n\t\t\trowData,\n\t\t\tcolumnId: column.id\n\t\t}),\n\t\t[cellValue, rowData, column.id]\n\t)\n\n\tconst isCellEditable = useMemo(\n\t\t() => column.footerEditable?.(formatterCell) || false,\n\t\t[column, formatterCell]\n\t)\n\n\tconst onChangeCompleteCallback = useCallback(\n\t\tasync (columnId: string, value: any) => {\n\t\t\tif (cellEdited && rowData[columnId] !== value) {\n\t\t\t\tsetSaving(true);\n\t\t\t\tawait cellEdited(columnId, value);\n\t\t\t\tsetSaving(false);\n\t\t\t}\n\t\t},\n\t\t[cellEdited, rowData]\n\t)\n\n\tconst className = `${styles.cell} ${isCellEditable ? styles.editing : ''} ${!!column.frozen ? styles.frozen : ''}`;\n\n\treturn (\n\t\t\n\t\t\t{isCellEditable &&\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{cellValue}\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport const Cell = memo(CellWithoutMemo);\n","import { memo, useCallback, useMemo } from 'react'\nimport styles from './footer.module.scss'\nimport { Cell } from './Cell'\nimport { FormatterCell, GenericColumnModel } from '../models'\nimport { ColumnWidthMap } from \"../useColumnWidths\"\nimport { useCellFormatter } from '../Body/cellFormatter'\n\ntype Props = {\n\trowData?: any\n\tcolumns: GenericColumnModel[]\n\tcolumnWidthMap: ColumnWidthMap\n\tcellEdited?: (columnId: string, value: any) => Promise\n}\n\nconst RowWithoutMemo = ({ rowData, columns, columnWidthMap, cellEdited }: Props) => {\n\tconst columnsMemo = useMemo(\n\t\t() => columns.filter(column => column.frozen !== 'end'),\n\t\t[columns]\n\t)\n\n\tconst frozenRightColumns = useMemo(\n\t\t() => columns.filter(column => column.frozen === 'end'),\n\t\t[columns]\n\t)\n\n\tconst cellFormatter = useCellFormatter();\n\n\tconst getCellValueCallback = useCallback(\n\t\t(column: GenericColumnModel) => {\n\t\t\tif (rowData) {\n\t\t\t\t// this row is from footerRowsData\n\t\t\t\tconst formatterCell: FormatterCell = {\n\t\t\t\t\tvalue: rowData[column.id] || '',\n\t\t\t\t\trowData,\n\t\t\t\t\tcolumnId: column.id\n\t\t\t\t}\n\n\t\t\t\treturn cellFormatter(column, formatterCell, false);\n\n\t\t\t} else {\n\t\t\t\t// this row is generated from columns\n\t\t\t\tif (!column.footerValue) {\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\tif (column.footerFormatter) {\n\t\t\t\t\tconst cell: FormatterCell = {\n\t\t\t\t\t\tvalue: column.footerValue(),\n\t\t\t\t\t\trowData: [], // INFO: nije implementirano posto nije postojala potreba\n\t\t\t\t\t\tcolumnId: column.id\n\t\t\t\t\t}\n\n\t\t\t\t\treturn column.footerFormatter(cell);\n\t\t\t\t}\n\n\t\t\t\treturn column.footerValue();\n\t\t\t}\n\t\t},\n\t\t[rowData, cellFormatter]\n\t)\n\n\tconst cellsContent = useCallback(\n\t\t(newColumns: GenericColumnModel[]) => {\n\t\t\treturn newColumns.map((column) => {\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t})\n\t\t},\n\t\t[columnWidthMap, getCellValueCallback, rowData, cellEdited]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t{columnsMemo.length > 0 && (\n\t\t\t\t\tfrozenRightColumns.length > 0 ?\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{cellsContent(columnsMemo)}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t:\n\t\t\t\t\t\tcellsContent(columnsMemo)\n\t\t\t\t)}\n\t\t\t\t{frozenRightColumns.length > 0 &&\n\t\t\t\t\tcellsContent(frozenRightColumns)\n\t\t\t\t}\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport const Row = memo(RowWithoutMemo);\n","import { GenericColumnModel } from \"../models\"\nimport styles from './footer.module.scss'\nimport { Row } from \"./Row\"\nimport { ColumnWidthMap } from \"../useColumnWidths\"\n\ntype Props = {\n\tcolumns: GenericColumnModel[]\n\tcolumnWidthMap: ColumnWidthMap\n\tfooterRowsData?: any[]\n\tfooterCellEdited?: (columnId: string, value: any) => Promise\n}\n\nexport const Footer = ({ columns, columnWidthMap, footerRowsData, footerCellEdited }: Props) => {\n\tconst hasFooterInColumns = columns.some((column) => column.footerValue !== undefined);\n\tconst hasFooterRowsData = footerRowsData && footerRowsData.length > 0;\n\n\tconst hideFooter = !hasFooterInColumns && !hasFooterRowsData;\n\tif (hideFooter) {\n\t\treturn <>\n\t}\n\n\treturn (\n\t\t
\n\t\t\t{hasFooterInColumns &&\n\t\t\t\t\n\t\t\t}\n\t\t\t{hasFooterRowsData &&\n\t\t\t\tfooterRowsData.map((rowData, rowIndex) => (\n\t\t\t\t\t\n\t\t\t\t))\n\n\t\t\t}\n\t\t
\n\t)\n}\n","import { GenericColumnModel, OptionColumnModel, OptionsColumnModel, MapOptionColumnModel, StringColumnModel } from \"./models\";\n\nexport const getColumnMaxInitialWidth = (column: GenericColumnModel): number => {\n\tswitch (true) {\n\t\tcase column instanceof OptionColumnModel || column instanceof OptionsColumnModel:\n\t\t\treturn 300;\n\t\tcase column instanceof MapOptionColumnModel:\n\t\t\treturn 300;\n\t\tcase column instanceof StringColumnModel:\n\t\t\treturn 500;\n\t\tdefault:\n\t\t\treturn 150;\n\t}\n};\n","import { useCallback, useRef, useState } from \"react\";\nimport { Body } from \"./Body/Body\";\nimport { HeaderGroup, Header } from \"./Header/Header\";\nimport { GenericColumnModel, FilterSortPageType, FilterType, InteractionManager } from \"./models\";\nimport styles from './baseTable.module.scss'\nimport { Frozen } from \"./Separators/Frozen\";\nimport { Pagination } from \"./Pagination/Pagination\";\nimport { Resize } from \"./Separators/Resize\";\nimport { Filter } from \"./Filter/Filter\";\nimport { defaultPaginationLimit } from \"./consts\";\nimport { Footer } from \"./Footer/Footer\";\nimport { OverlaySpinner } from \"components/Spinner\";\nimport { Translation } from \"components/Translations/Translation\";\nimport { TableErrorsMap } from \"../CrudTable/CrudTable\";\nimport { useColumnWidths } from \"./useColumnWidths\";\n\ntype Props = {\n\tcolumns: GenericColumnModel[]\n\trowsData: any[]\n\tfooterRowsData?: any[]\n\tcellEdited?: (oldRowData: any, columnId: string, newValue: any) => Promise\n\tfooterCellEdited?: (columnId: string, newValue: any) => Promise\n\t/** Every next refetch so Spinner can be displayed */\n\trefetching?: boolean\n\n\tpagination?: {\n\t\toffset?: number // starting index\n\t\tlimit?: number // max number of rows\n\t\tcount: number // length of all items\n\t\tonChange: (offset: number) => void\n\t}\n\tcompact?: boolean\n\n\tfilterSortPage: FilterSortPageType\n\tdisabledReorder: boolean\n\n\t/**\n\t * - fill: Table will resize the columns and expand each column equally to fill up width of the table. However, if column has set width, it will keep that specific width.\n\t * - If fill is not set, fitData will be used by default. Table will resize the columns to fit their data, and ensure that rows take up the full width of the table.\n\t*/\n\tfill?: boolean\n\n\t/** Render additional header row above the default header.\n\t * This row includes grouped columns, with each group spanning width of the grouped columns.\n\t*/\n\tadditionalHeaderRow?: HeaderGroup[]\n\texpand?: (rowData: any) => void\n\tcollapse?: (rowData: any) => void\n\tonGroupClick?: (groupId: string) => void\n\n\tinteractionManager: InteractionManager\n\n\terrorsMap?: TableErrorsMap\n}\n\nexport const BaseTable = ({\n\tcolumns, rowsData, footerRowsData, cellEdited, footerCellEdited, refetching,\n\tpagination, compact, filterSortPage, disabledReorder, fill,\n\tadditionalHeaderRow, expand, collapse, onGroupClick, interactionManager, errorsMap\n}: Props) => {\n\tconst containerRef = useRef(null);\n\tconst [activeFilterColumn, setActiveFilterColumn] = useState();\n\n\tconst { columnWidthMap, setColumnWidthMap } = useColumnWidths(columns, rowsData, containerRef, fill);\n\n\tconst setFiltersCallback = useCallback(\n\t\t(newFilters: FilterType[]) => {\n\t\t\tinteractionManager.filter?.(newFilters);\n\t\t\tsetActiveFilterColumn(undefined);\n\t\t},\n\t\t[interactionManager]\n\t)\n\n\tconst cancelFilterCallback = useCallback(\n\t\t() => setActiveFilterColumn(undefined),\n\t\t[]\n\t)\n\n\tconst onFilterClickCallback = useCallback(\n\t\t(columnId: string) => {\n\t\t\tconst selectedColumn = columns.find((column) => column.id === columnId);\n\t\t\tsetActiveFilterColumn(selectedColumn);\n\t\t},\n\t\t[columns]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t{rowsData.length > 0 ?\n\t\t\t\t\t<>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t:\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t
\n\t\t\t{pagination && rowsData.length > 0 &&\n\t\t\t\t\n\t\t\t}\n\t\t\t{refetching &&\n\t\t\t\t\n\t\t\t}\n\t\t
\n\t)\n}\n","import { useCallback, useEffect, useLayoutEffect, useState } from \"react\";\nimport { FormatterCell, GenericColumnModel } from \"./models\";\nimport { columnMinWidth } from \"./consts\";\nimport { getColumnMaxInitialWidth } from \"./helpers\";\n\nexport type ColumnWidthMap = { [columnId: string]: number }\n\nexport const useColumnWidths = (columns: GenericColumnModel[], rowsData: any[], containerRef: React.MutableRefObject, fill: boolean | undefined) => {\n\tconst [containerWidth, setContainerWidth] = useState(containerRef.current?.offsetWidth || 0);\n\tconst [columnWidthMap, setColumnWidthMap] = useState({});\n\n\tconst calculateColumnWidthsCallback = useCallback(\n\t\t() => {\n\t\t\tconst container = containerRef.current;\n\n\t\t\tif (!container) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst maxColumnWidthMap: ColumnWidthMap = {};\n\n\t\t\tfor (let i = 0; i < columns.length; i++) {\n\t\t\t\tconst column = columns[i];\n\t\t\t\tconst columnId = column.id;\n\n\t\t\t\t// if width is set, use it directly\n\t\t\t\tif (column.width) {\n\t\t\t\t\tmaxColumnWidthMap[columnId] = column.width;\n\t\t\t\t} else {\n\t\t\t\t\t// if width is not set, get all the cells that belong to this column and calculate which cell width is the biggest\n\t\t\t\t\tconst innerCells = container.querySelectorAll(`[data-columnid=\"${columnId}\"]`);\n\t\t\t\t\tconst maxInitialWidth = getColumnMaxInitialWidth(column);\n\n\t\t\t\t\tmaxColumnWidthMap[columnId] = columnMinWidth;\n\n\t\t\t\t\tfor (let j = 0; j < innerCells.length; j++) {\n\t\t\t\t\t\t// calculate cellWidth as content width + cell horizontal padding\n\t\t\t\t\t\tconst innerCell = innerCells[j];\n\t\t\t\t\t\tconst cell = innerCell.closest('[data-type=\"cell\"]')!;\n\t\t\t\t\t\tconst isBodyCell = !!innerCell.closest('[data-body=\"true\"]');\n\t\t\t\t\t\tconst paddingLeft = window.getComputedStyle(cell, null).getPropertyValue('padding-left');\n\t\t\t\t\t\tconst paddingRight = window.getComputedStyle(cell, null).getPropertyValue('padding-right');\n\t\t\t\t\t\tlet cellWidth = innerCell.getBoundingClientRect().width + parseInt(paddingLeft) + parseInt(paddingRight);\n\n\t\t\t\t\t\t// if cell is editable it contains control that can have some icon, so we leave space for icon\n\t\t\t\t\t\tif (isBodyCell && column.editable) {\n\t\t\t\t\t\t\tconst formatterCell: FormatterCell = {\n\t\t\t\t\t\t\t\trowData: rowsData[j - 1], // - 1 because innerCells include one header cell (header, body, footer)\n\t\t\t\t\t\t\t\tvalue: rowsData[j - 1][columnId],\n\t\t\t\t\t\t\t\tcolumnId\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst isEditable = column.editable(formatterCell);\n\n\t\t\t\t\t\t\tif (isEditable) {\n\t\t\t\t\t\t\t\t// TODO:code_improvement random number because of arrow/time_icon/date_icon/some_paddings, and it shouldn't be hardcoded here\n\t\t\t\t\t\t\t\tcellWidth += 28;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// if cellWidth is bigger than maxInitialWidth, then calculation is finished and we use maxInitialWidth value as Column width\n\t\t\t\t\t\tif (cellWidth >= maxInitialWidth) {\n\t\t\t\t\t\t\tmaxColumnWidthMap[columnId] = maxInitialWidth;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (cellWidth > maxColumnWidthMap[columnId]) {\n\t\t\t\t\t\t\tmaxColumnWidthMap[columnId] = Math.ceil(cellWidth);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst totalColumnWidth = columns.reduce((total, column) => total + maxColumnWidthMap[column.id], 0);\n\n\t\t\t// if fill === true and there is more empty space on the right, increase column widths so there is no empty space\n\t\t\tif (fill && totalColumnWidth < containerWidth) {\n\t\t\t\t// TODO:code_improvements when fill and table is smaller than container,\n\t\t\t\t// the last column resize line is out of the bounds and horizontal scroll appears,\n\t\t\t\t// so we add -3 which represents half width of resize handle\n\t\t\t\tconst extraSpace = containerWidth - totalColumnWidth - 3;\n\t\t\t\t// increase column widths equally, except ones that have width set (GenericColumnModel.width)\n\t\t\t\tconst affectedColumns = columns.filter((column) => !column.width);\n\t\t\t\tfor (const column of affectedColumns) {\n\t\t\t\t\tconst columnId = column.id;\n\t\t\t\t\tmaxColumnWidthMap[columnId] = maxColumnWidthMap[columnId] + Math.floor(extraSpace / affectedColumns.length);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsetColumnWidthMap(maxColumnWidthMap);\n\t\t},\n\t\t[containerRef, columns, fill, containerWidth, rowsData]\n\t)\n\n\tuseEffect(\n\t\t() => {\n\t\t\tconst container = containerRef.current;\n\n\t\t\tif (!container) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst resizeObserver = new ResizeObserver(() => {\n\t\t\t\tsetContainerWidth(container.clientWidth);\n\t\t\t});\n\n\t\t\tresizeObserver.observe(container);\n\n\t\t\treturn () => {\n\t\t\t\tresizeObserver.disconnect();\n\t\t\t};\n\t\t},\n\t\t[containerRef]\n\t);\n\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tcalculateColumnWidthsCallback();\n\t\t},\n\t\t[calculateColumnWidthsCallback]\n\t)\n\n\treturn {\n\t\tcolumnWidthMap,\n\t\tsetColumnWidthMap\n\t}\n}\n","import { FormatterCell } from \"components/Table\";\n\nexport const customTextAreaFormatter = (cell: FormatterCell) => {\n\tconst { value } = cell;\n\tif (value) {\n\t\tconst dummyElement = document.createElement('div');\n\t\tdummyElement.innerHTML = value;\n\t\treturn dummyElement.innerText;\n\t}\n\n\treturn ''\n}\n","import { ColumnMapType, ElementMapType, MultiListType } from 'components/DragNDrop';\nimport { ConfigureViewColumnType } from './ConfigureView';\nimport { GenericColumnModel } from 'components/Table';\n\nexport const getMultiListDataByTableColumns = (visibleColumns: GenericColumnModel[], hiddenColumns: GenericColumnModel[]): MultiListType => {\n\tconst allTableColumns = [...visibleColumns, ...hiddenColumns];\n\n\tconst elementMap: ElementMapType = allTableColumns.reduce(\n\t\t(elementsObject: ElementMapType, tableColumn) => {\n\t\t\telementsObject[tableColumn.id] = {\n\t\t\t\tid: tableColumn.id,\n\t\t\t\tcontent: tableColumn.title,\n\t\t\t\tfrozen: tableColumn.frozen\n\t\t\t};\n\n\t\t\treturn elementsObject;\n\t\t},\n\t\t{}\n\t);\n\n\tconst availableColumns = hiddenColumns.map((item) => item.id);\n\tconst selectedColumns = visibleColumns.map((item) => item.id);\n\n\tconst columnMap: ColumnMapType = {\n\t\tavailable: { id: 'available', title: 'i18n.configureView.hidden', elementIds: availableColumns },\n\t\tselected: { id: 'selected', title: 'i18n.configureView.visible', elementIds: selectedColumns },\n\t};\n\n\treturn { elementMap, columnMap, columnOrder: ['available', 'selected'] };\n}\n\nexport const getTableColumnsDataByMultiList = (multiList: MultiListType, visibleColumns: GenericColumnModel[], hiddenColumns: GenericColumnModel[]): ConfigureViewColumnType[] => {\n\tconst allTableColumns = [...visibleColumns, ...hiddenColumns];\n\n\tconst result: ConfigureViewColumnType[] = [];\n\tconst multiListKeys = [\n\t\t...multiList.columnMap['selected'].elementIds,\n\t\t...multiList.columnMap['available'].elementIds,\n\t];\n\tmultiListKeys.forEach((key) => {\n\t\tconst tableColumnElement = allTableColumns.find((tableColumn) => tableColumn.id === key)!\n\n\t\tconst newTableColumnElement = {\n\t\t\t...tableColumnElement,\n\t\t\tvisible: multiList.columnMap['selected'].elementIds.includes(key),\n\t\t}\n\n\t\tresult.push(newTableColumnElement);\n\t});\n\n\treturn result;\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"icon\":\"resetButtons_icon__vDrEe\"};","import { RowContainer } from 'components/Layout';\nimport styles from './resetButtons.module.scss';\nimport { ResetFilterIcon, ResetOrderIcon, ResetSortIcon, ResetWidthIcon } from 'components/icons/icons';\nimport { useCallback, useMemo } from 'react';\nimport { InteractionManager } from '../BaseTable';\n\ntype Props = {\n\tinteractionManager: InteractionManager\n}\n\nexport const ResetButtons = ({ interactionManager }: Props) => {\n\tconst resetColumnsWidthCallback = useCallback(\n\t\t() => interactionManager.resetAllColumnWidths?.(),\n\t\t[interactionManager]\n\t)\n\n\tconst resetColumnsOrderCallback = useCallback(\n\t\t() => interactionManager.reorderColumn?.(undefined),\n\t\t[interactionManager]\n\t)\n\n\tconst resetColumnsFilterCallback = useCallback(\n\t\t() => interactionManager.filter?.([]),\n\t\t[interactionManager]\n\t)\n\n\tconst resetColumnsSortCallback = useCallback(\n\t\t() => interactionManager.sort?.(undefined),\n\t\t[interactionManager]\n\t)\n\n\tconst icons = useMemo(\n\t\t() => [\n\t\t\t,\n\t\t\t,\n\t\t\t,\n\t\t\t\n\t\t],\n\t\t[resetColumnsFilterCallback, resetColumnsOrderCallback, resetColumnsSortCallback, resetColumnsWidthCallback]\n\t)\n\n\tconst titles = ['width', 'order', 'filter', 'sorting'];\n\n\treturn (\n\t\t\n\t\t\t{icons.map((icon, idx) => (\n\t\t\t\t
\n\t\t\t\t\t{icon}\n\t\t\t\t
\n\t\t\t))}\n\t\t
\n\t)\n}\n","import { useState, useCallback, useEffect, } from 'react';\nimport { Dialog } from 'components/Dialog';\nimport { RowContainer } from 'components/Layout';\nimport Button from 'components/Button';\nimport { MultiList, MultiListType } from 'components/DragNDrop';\nimport ColumnContainer from 'components/Layout/ColumnContainer';\nimport { getTableColumnsDataByMultiList, getMultiListDataByTableColumns } from './multiListHelper';\nimport { GenericColumnModel, InteractionManager } from 'components/Table';\nimport { ResetButtons } from './ResetButtons';\n\nexport type ConfigureViewColumnType = {\n\tid: string\n\ttitle: string\n\tvisible?: boolean\n\tfrozen?: 'start' | 'end'\n}\n\ntype Props = {\n\tvisibleColumns: GenericColumnModel[]\n\thiddenColumns: GenericColumnModel[]\n\tinteractionManager: InteractionManager\n}\n\nexport const ConfigureView = ({ visibleColumns, hiddenColumns, interactionManager }: Props) => {\n\tconst [isModalOpen, setIsModalOpen] = useState(false);\n\tconst [currentMultiList, setCurrentMultiList] = useState(\n\t\tgetMultiListDataByTableColumns(visibleColumns, hiddenColumns)\n\t);\n\tconst [loading, setLoading] = useState(false);\n\n\tuseEffect(\n\t\t() => {\n\t\t\tsetCurrentMultiList(getMultiListDataByTableColumns(visibleColumns, hiddenColumns));\n\t\t},\n\t\t[visibleColumns, hiddenColumns]\n\t)\n\n\tconst openModalCallback = useCallback(\n\t\t() => {\n\t\t\tsetIsModalOpen(true)\n\t\t},\n\t\t[]\n\t);\n\n\tconst closeModalCallback = useCallback(\n\t\t() => setIsModalOpen(false),\n\t\t[]\n\t);\n\n\tconst saveCallback = useCallback(\n\t\tasync () => {\n\t\t\tsetLoading(true);\n\t\t\tconst newTableColumns = getTableColumnsDataByMultiList(\n\t\t\t\tcurrentMultiList,\n\t\t\t\tvisibleColumns,\n\t\t\t\thiddenColumns\n\t\t\t);\n\t\t\tconst visibleConfigureViewColumns = newTableColumns.filter(column => column.visible);\n\t\t\tconst columnOrder: string[] = visibleConfigureViewColumns.map(column => column.id)\n\t\t\tawait interactionManager.reorderColumn?.(columnOrder);\n\n\t\t\tsetLoading(false);\n\t\t\tsetIsModalOpen(false);\n\t\t},\n\t\t[currentMultiList, visibleColumns, hiddenColumns, interactionManager]\n\t)\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n","export const calculateSum = (filteredData: any[], columnId: string) => {\n\tlet calculated = 0;\n\n\tfor (let rowData of filteredData || []) {\n\t\tconst value = rowData[columnId];\n\t\tcalculated += value || 0;\n\t}\n\n\treturn calculated;\n}\n","import { noop } from 'utils/commonHelper';\nimport { formatServerDate } from 'utils/dateTimeUtils'\nimport { sortByString } from 'utils/stringUtil';\nimport { BooleanColumnModel, CurrencyColumnModel, DateColumnModel, DateTimeColumnModel, DurationColumnModel, FilterType, FormattedReferenceColumnModel, GenericColumnModel, MapOptionColumnModel, NumberColumnModel, OptionColumnModel, OptionGenericColumnModel, OptionsColumnModel, SortType, StringColumnModel, TimeColumnModel } from '../BaseTable/models';\nimport { GenericFilterOperationEnum } from 'services/tenantManagementService';\nimport { defaultPaginationLimit } from '../BaseTable/consts';\n\n// filter methods\n\ntype PrimitiveType = number | string | boolean\n\nconst arePrimitiveTypesEqual = (first: PrimitiveType, second: PrimitiveType) => {\n\treturn first === second;\n}\n\nconst arePrimitiveTypesNotEqual = (first: PrimitiveType, second: PrimitiveType) => {\n\treturn first !== second;\n}\n\nconst like = (value: string, filterValue: string) => {\n\tif (value === filterValue) {\n\t\treturn true;\n\t}\n\tif (value === undefined || filterValue === undefined) {\n\t\treturn false;\n\t}\n\n\treturn value.toLowerCase().includes(filterValue.toLowerCase());\n}\n\nconst likeStartsWith = (value: string, filterValue: string) => {\n\tif (value === filterValue) {\n\t\treturn true;\n\t}\n\tif (value === undefined || filterValue === undefined) {\n\t\treturn false;\n\t}\n\n\treturn value.toLowerCase().startsWith(filterValue.toLowerCase());\n}\n\nconst likeEndsWith = (value: string, filterValue: string) => {\n\tif (value === filterValue) {\n\t\treturn true;\n\t}\n\tif (value === undefined || filterValue === undefined) {\n\t\treturn false;\n\t}\n\n\treturn value.toLowerCase().endsWith(filterValue.toLowerCase());\n}\n\nconst greaterEqual = (value: number, filterValue: number) => {\n\treturn value >= filterValue;\n}\n\nconst greater = (value: number, filterValue: number) => {\n\treturn value > filterValue;\n}\n\nconst lessEqual = (value: number, filterValue: number) => {\n\treturn value <= filterValue;\n}\n\nconst less = (value: number, filterValue: number) => {\n\treturn value < filterValue;\n}\n\nconst areDatesEqual = (first: Date, second: Date) => {\n\tif (first === second) {\n\t\treturn true;\n\t}\n\tif (first === undefined || second === undefined) {\n\t\treturn false;\n\t}\n\n\tconst firstFormatted = formatServerDate(first)\n\tconst secondFormatted = formatServerDate(second)\n\n\treturn firstFormatted === secondFormatted;\n}\n\nconst areDatesNotEqual = (first: Date, second: Date) => {\n\treturn !areDatesEqual(first, second);\n}\n\nconst dateGreaterEqual = (value: Date, filterValue: Date) => {\n\tif (value === undefined || filterValue === undefined) {\n\t\treturn false;\n\t}\n\n\tconst fullYear = value.getFullYear();\n\tconst month = value.getMonth();\n\tconst dayOfTheMonth = value.getDate();\n\n\tconst filterFullYear = filterValue.getFullYear();\n\tconst filterMonth = filterValue.getMonth();\n\tconst filterDayOfTheMonth = filterValue.getDate();\n\n\treturn (\n\t\tfullYear > filterFullYear ||\n\t\t(fullYear === filterFullYear && month > filterMonth) ||\n\t\t(fullYear === filterFullYear && month === filterMonth && dayOfTheMonth >= filterDayOfTheMonth)\n\t)\n}\n\nconst dateGreater = (value: Date, filterValue: Date) => {\n\tif (value === undefined || filterValue === undefined) {\n\t\treturn false;\n\t}\n\n\tconst fullYear = value.getFullYear();\n\tconst month = value.getMonth();\n\tconst dayOfTheMonth = value.getDate();\n\n\tconst filterFullYear = filterValue.getFullYear();\n\tconst filterMonth = filterValue.getMonth();\n\tconst filterDayOfTheMonth = filterValue.getDate();\n\n\treturn (\n\t\tfullYear > filterFullYear ||\n\t\t(fullYear === filterFullYear && month > filterMonth) ||\n\t\t(fullYear === filterFullYear && month === filterMonth && dayOfTheMonth > filterDayOfTheMonth)\n\t)\n}\n\nconst dateLessEqual = (value: Date, filterValue: Date) => {\n\tif (value === undefined || filterValue === undefined) {\n\t\treturn false;\n\t}\n\n\treturn !dateGreater(value, filterValue);\n}\n\nconst dateLess = (value: Date, filterValue: Date) => {\n\tif (value === undefined || filterValue === undefined) {\n\t\treturn false;\n\t}\n\n\treturn !dateGreaterEqual(value, filterValue);\n}\n\nconst doesRowSatisfy = (rowData: any, filteredColumn: GenericColumnModel, filter: FilterType) => {\n\tlet compareFunction: (value: any, filterValue: any) => boolean = noop as any;\n\tlet filterValue = filter.value;\n\n\tif (\n\t\tfilteredColumn instanceof OptionColumnModel ||\n\t\tfilteredColumn instanceof OptionsColumnModel ||\n\t\tfilteredColumn instanceof MapOptionColumnModel ||\n\t\tfilteredColumn instanceof BooleanColumnModel\n\t) {\n\t\tcompareFunction = arePrimitiveTypesEqual;\n\t} else if (filteredColumn instanceof FormattedReferenceColumnModel) {\n\t\tswitch (filter.operation) {\n\t\t\tcase GenericFilterOperationEnum.EQUALS:\n\t\t\t\tcompareFunction = arePrimitiveTypesEqual;\n\t\t\t\tbreak;\n\t\t\tcase GenericFilterOperationEnum.NOT_EQUALS:\n\t\t\t\tcompareFunction = arePrimitiveTypesNotEqual;\n\t\t\t\tbreak;\n\t\t}\n\t} else if (filteredColumn instanceof StringColumnModel) {\n\t\tswitch (filter.operation) {\n\t\t\tcase GenericFilterOperationEnum.EQUALS:\n\t\t\t\tcompareFunction = arePrimitiveTypesEqual;\n\t\t\t\tbreak;\n\t\t\tcase GenericFilterOperationEnum.NOT_EQUALS:\n\t\t\t\tcompareFunction = arePrimitiveTypesNotEqual;\n\t\t\t\tbreak;\n\t\t\tcase GenericFilterOperationEnum.LIKE:\n\t\t\t\tcompareFunction = like;\n\t\t\t\tbreak;\n\t\t\tcase GenericFilterOperationEnum.LIKE_STARTSWITH:\n\t\t\t\tcompareFunction = likeStartsWith;\n\t\t\t\tbreak;\n\t\t\tcase GenericFilterOperationEnum.LIKE_ENDSWITH:\n\t\t\t\tcompareFunction = likeEndsWith;\n\t\t\t\tbreak;\n\t\t}\n\t} else if (\n\t\tfilteredColumn instanceof NumberColumnModel ||\n\t\tfilteredColumn instanceof TimeColumnModel ||\n\t\tfilteredColumn instanceof CurrencyColumnModel ||\n\t\tfilteredColumn instanceof DurationColumnModel\n\t) {\n\t\tswitch (filter.operation) {\n\t\t\tcase GenericFilterOperationEnum.EQUALS:\n\t\t\t\tcompareFunction = arePrimitiveTypesEqual;\n\t\t\t\tbreak;\n\t\t\tcase GenericFilterOperationEnum.NOT_EQUALS:\n\t\t\t\tcompareFunction = arePrimitiveTypesNotEqual;\n\t\t\t\tbreak;\n\t\t\tcase GenericFilterOperationEnum.GREATER_EQUAL_THAN:\n\t\t\t\tcompareFunction = greaterEqual;\n\t\t\t\tbreak;\n\t\t\tcase GenericFilterOperationEnum.GREATER_THAN:\n\t\t\t\tcompareFunction = greater;\n\t\t\t\tbreak;\n\t\t\tcase GenericFilterOperationEnum.LESS_EQUAL_THAN:\n\t\t\t\tcompareFunction = lessEqual;\n\t\t\t\tbreak;\n\t\t\tcase GenericFilterOperationEnum.LESS_THAN:\n\t\t\t\tcompareFunction = less;\n\t\t\t\tbreak;\n\t\t}\n\t} else if (filteredColumn instanceof DateColumnModel || filteredColumn instanceof DateTimeColumnModel) {\n\t\tswitch (filter.operation) {\n\t\t\tcase GenericFilterOperationEnum.EQUALS:\n\t\t\t\tcompareFunction = areDatesEqual;\n\t\t\t\tbreak;\n\t\t\tcase GenericFilterOperationEnum.NOT_EQUALS:\n\t\t\t\tcompareFunction = areDatesNotEqual;\n\t\t\t\tbreak;\n\t\t\tcase GenericFilterOperationEnum.GREATER_EQUAL_THAN:\n\t\t\t\tcompareFunction = dateGreaterEqual;\n\t\t\t\tbreak;\n\t\t\tcase GenericFilterOperationEnum.GREATER_THAN:\n\t\t\t\tcompareFunction = dateGreater;\n\t\t\t\tbreak;\n\t\t\tcase GenericFilterOperationEnum.LESS_EQUAL_THAN:\n\t\t\t\tcompareFunction = dateLessEqual;\n\t\t\t\tbreak;\n\t\t\tcase GenericFilterOperationEnum.LESS_THAN:\n\t\t\t\tcompareFunction = dateLess;\n\t\t\t\tbreak;\n\t\t}\n\t\t// Date(Time) values are Date types, but filter value is type string so converting to Date\n\t\tfilterValue = new Date(filter.value);\n\t}\n\treturn compareFunction(rowData[filteredColumn.id], filterValue)\n}\n\nexport const filterData = (data: any[], filters: FilterType[] = [], columns: GenericColumnModel[]) => {\n\tif (filters.length === 0 || data.length === 0) {\n\t\treturn data;\n\t}\n\n\tlet filteredData = [...data];\n\n\tfor (const filter of filters) {\n\t\t// property\n\t\tif (filter.columnId) {\n\t\t\tconst filteredColumn = columns.find((column) => filter.columnId === column.id);\n\t\t\tif (!filteredColumn) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst afterFilterData: any[] = [];\n\t\t\tfor (const rowData of filteredData) {\n\t\t\t\tif (doesRowSatisfy(rowData, filteredColumn, filter)) {\n\t\t\t\t\tafterFilterData.push(rowData);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfilteredData = afterFilterData;\n\t\t}\n\t\t// or filters\n\t\telse if (filter.orFilters) {\n\t\t\tconst afterFilterData: any[] = [];\n\n\t\t\tfor (const rowData of filteredData) {\n\t\t\t\tfor (const orFilter of filter.orFilters) {\n\t\t\t\t\tconst filteredColumn = columns.find((column) => orFilter.columnId === column.id);\n\t\t\t\t\tif (!filteredColumn) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (doesRowSatisfy(rowData, filteredColumn, orFilter)) {\n\t\t\t\t\t\tafterFilterData.push(rowData);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfilteredData = afterFilterData;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn filteredData;\n}\n\n// sort methods\n\nconst sortByNumber = (data: any[], property: string) => {\n\tconst sortedData = [...data];\n\n\tsortedData.sort((first, second) => {\n\t\tconst firstValue = first[property] || 0;\n\t\tconst secondValue = second[property] || 0;\n\t\treturn firstValue - secondValue;\n\t})\n\n\treturn sortedData;\n}\n\nconst sortByDate = (data: any[], property: string) => {\n\tconst sortedData = [...data];\n\n\tsortedData.sort((first, second) => {\n\t\tconst firstTime = first[property] ? first[property].getTime() : 0;\n\t\tconst secondTime = second[property] ? second[property].getTime() : 0;\n\t\treturn firstTime - secondTime;\n\t})\n\n\treturn sortedData;\n}\n\nconst sortOptionByString = (data: any[], column: OptionGenericColumnModel) => {\n\tconst sortedData = [...data];\n\tconst { items, getItemId, getItemText } = column;\n\n\treturn sortedData.sort((a, b) => {\n\t\tconst itemA = items.find(item => getItemId(item) === a[column.id]);\n\t\tconst itemB = items.find(item => getItemId(item) === b[column.id]);\n\n\t\tconst textA = itemA ? getItemText(itemA).toUpperCase() : '';\n\t\tconst textB = itemB ? getItemText(itemB).toUpperCase() : '';\n\n\t\tif (textA < textB) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif (textA > textB) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t});\n}\n\nexport const sortData = (data: any[], sort: SortType | undefined, columns: GenericColumnModel[]) => {\n\tif (data.length === 0 || sort?.columnId === undefined) {\n\t\treturn data;\n\t}\n\n\tconst sortColumn = columns.find((column) => sort.columnId === column.id);\n\n\tif (sortColumn === undefined) {\n\t\treturn data;\n\t}\n\n\tlet sortedData: any[] = [];\n\n\tif (\n\t\tsortColumn instanceof OptionColumnModel ||\n\t\tsortColumn instanceof OptionsColumnModel ||\n\t\tsortColumn instanceof MapOptionColumnModel\n\t) {\n\t\tsortedData = sortOptionByString(data, sortColumn);\n\t} else if (\n\t\tsortColumn instanceof BooleanColumnModel ||\n\t\tsortColumn instanceof NumberColumnModel ||\n\t\tsortColumn instanceof TimeColumnModel ||\n\t\tsortColumn instanceof CurrencyColumnModel ||\n\t\tsortColumn instanceof DurationColumnModel ||\n\t\tsortColumn instanceof FormattedReferenceColumnModel\n\t) {\n\t\tsortedData = sortByNumber(data, sortColumn.id);\n\t} else if (sortColumn instanceof DateColumnModel || sortColumn instanceof DateTimeColumnModel) {\n\t\tsortedData = sortByDate(data, sortColumn.id);\n\t} else if (sortColumn instanceof StringColumnModel) {\n\t\tsortedData = sortByString(data, sortColumn.id);\n\t}\n\n\treturn sort.isAsc ? sortedData : sortedData.reverse();\n}\n\n// pagination methods\n\nexport const paginateData = (data: any[], offset: number = 0, limit: number = defaultPaginationLimit) => {\n\treturn data.slice(offset, offset + limit);\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"skeleton\":\"skeletonTable_skeleton__BdGnL\",\"header\":\"skeletonTable_header__nHKU0\",\"row\":\"skeletonTable_row__qZaj-\",\"cell\":\"skeletonTable_cell__STFz8\",\"flex_1\":\"skeletonTable_flex_1__AhEyk\",\"flex_2\":\"skeletonTable_flex_2__EWvRa\",\"flex_3\":\"skeletonTable_flex_3__4cf9Z\"};","import { useEffect, useState } from 'react'\nimport styles from './skeletonTable.module.scss'\nimport { OverlaySpinner } from 'components/Spinner';\n\nconst rows = 4;\n\nexport const SkeletonTable = () => {\n\tconst [columns, setColumns] = useState([3, 1, 2, 1, 3]);\n\n\tuseEffect(\n\t\t() => {\n\t\t\tconst width = window.innerWidth;\n\t\t\tif (width < 1280) {\n\t\t\t\tsetColumns((state) => state.slice(0, -1));\n\t\t\t}\n\t\t},\n\t\t[]\n\t)\n\n\tconst renderCells = (columns: number[]) =>\n\t\tcolumns.map((col, colIndex) =>
\n\t)\n\n\treturn (\n\t\t
\n\t\t\t
\n\t\t\t\t{renderCells(columns)}\n\t\t\t
\n\t\t\t{[...Array(rows)].map((_, rowIndex) => (\n\t\t\t\t
\n\t\t\t\t\t{renderCells(columns)}\n\t\t\t\t
\n\t\t\t))}\n\t\t\t\n\t\t
\n\t)\n}\n","import Button from \"components/Button\"\nimport { RowContainer } from \"components/Layout\"\nimport { FilterSortPageType, GenericColumnModel, InteractionManager } from \"../BaseTable\"\nimport { Export, ExportFormFlags } from \"features/Export/Export\"\nimport { ExportDataModel, FileResponse } from \"services/tenantManagementService\"\nimport { useCallback, useMemo, useState } from \"react\"\nimport { SimpleDialog } from \"components/Dialog\"\nimport { ConfigureView } from \"../ConfigureView\"\n\ntype Props = {\n\tvisibleColumns: GenericColumnModel[]\n\thiddenColumns: GenericColumnModel[]\n\tfilterSortPage: FilterSortPageType\n\tinteractionManager: InteractionManager\n\taddHandler(): void\n\tdeleteHandler(selectedRow: any): void\n\tisDeleteable?: boolean\n\tisCreateable?: boolean\n\tisViewConfigurable?: boolean\n\texportFunction?(model: ExportDataModel): Promise\n\texportTitle?: string\n\texportFormFlags?: ExportFormFlags\n\trenderExportComponent?: () => React.ReactElement\n}\n\nexport const Toolbar = ({\n\tvisibleColumns,\n\thiddenColumns,\n\tfilterSortPage,\n\tinteractionManager,\n\taddHandler,\n\tdeleteHandler,\n\tisDeleteable = true,\n\tisCreateable = true,\n\tisViewConfigurable = true,\n\texportFunction,\n\texportTitle,\n\texportFormFlags,\n\trenderExportComponent\n}: Props) => {\n\tconst selectedRow = interactionManager.selectedRow; // can be undefined\n\n\tconst [isConfirmDeleteModalOpen, setIsConfirmDeleteModalOpen] = useState(false);\n\n\tconst openConfirmDeleteModal = useCallback(\n\t\t() => setIsConfirmDeleteModalOpen(true),\n\t\t[]\n\t);\n\n\tconst closeConfirmDeleteModal = useCallback(\n\t\t() => setIsConfirmDeleteModalOpen(false),\n\t\t[]\n\t)\n\n\tconst onDeleteConfirmed = useCallback(\n\t\tasync () => {\n\t\t\tcloseConfirmDeleteModal();\n\t\t\tselectedRow && deleteHandler(selectedRow);\n\t\t},\n\t\t[closeConfirmDeleteModal, deleteHandler, selectedRow]\n\t);\n\n\tconst exportContent = useMemo(\n\t\t() => {\n\t\t\tif (renderExportComponent) {\n\t\t\t\treturn renderExportComponent();\n\t\t\t}\n\n\t\t\tif (exportFunction && exportTitle) {\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn <>\n\t\t},\n\t\t[exportFormFlags, exportFunction, exportTitle, filterSortPage, hiddenColumns, renderExportComponent, visibleColumns]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{isViewConfigurable &&\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t{exportContent}\n\t\t\t\t\n\t\t\t\n\t\t
\n\t)\n}\n","import { FormatterCell, ValidatorFunc } from \"../BaseTable\";\n\nexport const isRequiredValidator: ValidatorFunc = (cell: FormatterCell) => {\n\tconst value = cell.value;\n\n\tif (value === null || value === undefined || value === ''\n\t\t|| (value instanceof Map && value.size === 0)\n\t\t|| (value instanceof Set && value.size === 0)\n\t\t|| (value instanceof Array && value.length === 0)\n\t) {\n\t\treturn {\n\t\t\tmessage: 'i18n.validator.required'\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\n// isUniqueFieldNameValidator za formu pogledaj ako treba\n","import ErrorBoundary from \"features/ErrorBoundary\";\nimport { BaseTable, FilterSortPageType, FooterCalculatorEnum, GenericColumnModel, InteractionManager, FormatterCell, ValidatorFunc } from \"../BaseTable\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport Button from \"components/Button\";\nimport { ColumnContainer, RowContainer } from \"components/Layout\";\nimport { calculateSum } from \"../LocalTable/footerCalculationHelpers\";\nimport { filterData, sortData } from \"../LocalTable/filterSortPageHelpers\";\nimport { SkeletonTable } from \"../BaseTable/Skeleton/SkeletonTable\";\nimport { Toolbar } from \"../Toolbar/Toolbar\";\nimport { ExportDataModel, FileResponse } from \"services/tenantManagementService\";\nimport { cloneColumnModel } from \"features/TableColumns/usePrepareTableColumns\";\nimport { ExportFormFlags } from \"features/Export/Export\";\nimport { ErrorType, FieldMessage, globalErrorKey } from \"components/Form\";\nimport { isRequiredValidator } from \"./validators\";\nimport { isEmptyObject } from \"utils/objectUtil\";\n\nexport type RowErrorsMap = {\n\t[columnId: string]: ErrorType\n}\nexport type TableErrorsMap = {\n\t[rowDataId: number]: RowErrorsMap\n} & {\n\t[globalErrorKey]?: ErrorType | undefined\n}\n\ntype Props = {\n\t/** Row data model must contain field 'id' */\n\trowsData: any[]\n\tinitialRowsData: any[]\n\tfooterRowsData?: any[]\n\tvisibleColumns: GenericColumnModel[]\n\thiddenColumns: GenericColumnModel[]\n\tfilterSortPage: FilterSortPageType\n\tinteractionManager: InteractionManager\n\n\tonChange(newRowsData: any[], oldRowData: any, columnId: string, newValue: any): any\n\tonSubmit?(): Promise\n\tonCancel?(): void\n\tonAdd?(): any\n\tonDelete?(id: number): void\n\tisDeleteable?: boolean\n\tisCreateable?: boolean\n\tisViewConfigurable?: boolean\n\texportFunction?(model: ExportDataModel): Promise\n\texportTitle?: string\n\texportFormFlags?: ExportFormFlags\n\trenderExportComponent?: () => React.ReactElement\n\thideToolbar?: boolean\n\trenderAdditionalButtons?(disabled?: boolean, handleSubmitCallback?: () => void, isSubmitting?: boolean): any\n}\n\nconst CrudTableWithoutSkeleton = ({\n\trowsData,\n\tinitialRowsData,\n\tfooterRowsData,\n\tonChange,\n\tonSubmit,\n\tonCancel,\n\tonAdd,\n\tonDelete,\n\tisDeleteable,\n\tisCreateable,\n\tisViewConfigurable,\n\texportFunction,\n\texportTitle,\n\trenderAdditionalButtons,\n\tvisibleColumns,\n\thiddenColumns,\n\tfilterSortPage,\n\texportFormFlags,\n\trenderExportComponent,\n\thideToolbar,\n\tinteractionManager\n}: Props) => {\n\tconst [errorsMap, setErrorsMap] = useState({})\n\tconst [isSubmitting, setIsSubmitting] = useState(false);\n\tconst [frozenRowsDataFilterSort, setFrozenRowsDataFilterSort] = useState();\n\n\tuseEffect(\n\t\t() => {\n\t\t\tsetFrozenRowsDataFilterSort(undefined);\n\t\t},\n\t\t[filterSortPage]\n\t)\n\n\tconst notFrozenRowsDataFilterSort = useMemo(\n\t\t() => {\n\t\t\tconst filteredData = filterData(rowsData, filterSortPage.filters, visibleColumns)\n\t\t\tconst filteredSortedData = sortData(filteredData, filterSortPage.sort, visibleColumns);\n\t\t\treturn filteredSortedData;\n\t\t},\n\t\t[rowsData, filterSortPage.filters, filterSortPage.sort, visibleColumns]\n\t)\n\n\tconst rowsDataFilterSort = frozenRowsDataFilterSort || notFrozenRowsDataFilterSort;\n\n\tconst convertedColumns: GenericColumnModel[] = useMemo(\n\t\t() => visibleColumns.map((column) => {\n\t\t\tif (column.footerCalculator === FooterCalculatorEnum.SUM && column.footerValue === undefined) {\n\t\t\t\t// to perserve class type\n\t\t\t\tconst clonedColumn = cloneColumnModel(column);\n\t\t\t\tclonedColumn.footerValue = calculateSum.bind(null, rowsDataFilterSort, column.id)\n\t\t\t\treturn clonedColumn;\n\t\t\t}\n\n\t\t\treturn column;\n\t\t}),\n\t\t[visibleColumns, rowsDataFilterSort]\n\t)\n\n\tconst updateErrorsMapCallback = useCallback(\n\t\t(error: ErrorType | undefined, columnId: string, rowId: number) => {\n\t\t\tif (error) {\n\t\t\t\t// add error in errors map\n\t\t\t\tsetErrorsMap((state) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\t[rowId]: {\n\t\t\t\t\t\t\t...state[rowId],\n\t\t\t\t\t\t\t[columnId]: error\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\t// delete error from errors map\n\t\t\t\tsetErrorsMap((state) => {\n\t\t\t\t\tconst rowErrorsMap = state[rowId];\n\t\t\t\t\trowErrorsMap && delete rowErrorsMap[columnId];\n\n\t\t\t\t\tif (rowErrorsMap && isEmptyObject(rowErrorsMap)) {\n\t\t\t\t\t\tdelete state[rowId];\n\t\t\t\t\t\treturn state;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\t[rowId]: rowErrorsMap\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\t[]\n\t)\n\n\tconst validateCellCallback = useCallback(\n\t\t(validator: ValidatorFunc, rowData: any, columnId: string, value: any, isGlobalError?: boolean) => {\n\t\t\tconst formatterCell: FormatterCell = {\n\t\t\t\tvalue,\n\t\t\t\trowData: {\n\t\t\t\t\t...rowData,\n\t\t\t\t\t[columnId]: value\n\t\t\t\t},\n\t\t\t\tcolumnId\n\t\t\t}\n\n\t\t\tconst error = validator(formatterCell);\n\t\t\tif (isGlobalError) {\n\t\t\t\tsetErrorsMap((state) => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\t[globalErrorKey]: error\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn state;\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tupdateErrorsMapCallback(error, columnId, rowData.id);\n\t\t\t}\n\n\t\t\treturn error === undefined;\n\t\t},\n\t\t[updateErrorsMapCallback]\n\t)\n\n\tconst cellEditedCallback = useCallback(\n\t\tasync (oldRowData: any, columnId: string, value: any) => {\n\t\t\tconst column = visibleColumns.find((item) => item.id === columnId)!;\n\n\t\t\tconst formatterCell: FormatterCell = {\n\t\t\t\tvalue,\n\t\t\t\trowData: {\n\t\t\t\t\t...oldRowData,\n\t\t\t\t\t[columnId]: value\n\t\t\t\t},\n\t\t\t\tcolumnId\n\t\t\t}\n\n\t\t\tcolumn.validator && validateCellCallback(column.validator, oldRowData, columnId, value);\n\t\t\tcolumn.isRequired?.(formatterCell) && validateCellCallback(isRequiredValidator, oldRowData, columnId, value);\n\n\t\t\tconst newRowsData = rowsData.map((item) => {\n\t\t\t\tif (item.id === oldRowData.id) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...oldRowData,\n\t\t\t\t\t\t[columnId]: value\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn item;\n\t\t\t});\n\n\t\t\tconst newRow = onChange(newRowsData, oldRowData, columnId, value);\n\n\t\t\tconst newFilteredSortedData = rowsDataFilterSort.map((item) => {\n\t\t\t\treturn newRow.id === item.id ? newRow : item;\n\t\t\t})\n\n\t\t\tsetFrozenRowsDataFilterSort(newFilteredSortedData);\n\t\t},\n\t\t[visibleColumns, validateCellCallback, rowsData, onChange, rowsDataFilterSort]\n\t)\n\n\t// const hasUnsavedChanges = useCallback(\n\t// \t() => {\n\t// \t\t// if (isSubmitting) {\n\t// \t\t// \treturn false;\n\t// \t\t// }\n\n\t// \t\t// for (const key of Object.keys(values)) {\n\t// \t\t// \tconst value = values[key] !== \"\" ? values[key] : undefined; // UserForm initials were \"\" and initialValue.initials is undefined\n\t// \t\t// \tconst initialValue = initialValues && (initialValues[key] !== \"\" ? initialValues[key] : undefined);\n\n\t// \t\t// \t// eslint-disable-next-line\n\t// \t\t// \tif (value != initialValue) {\n\t// \t\t// \t\treturn true;\n\t// \t\t// \t}\n\t// \t\t// }\n\n\t// \t\treturn false;\n\t// \t},\n\t// \t[]\n\t// )\n\n\tconst validateTableCallback = useCallback(\n\t\t() => {\n\t\t\tfor (const column of visibleColumns) {\n\t\t\t\tif (column.isRequired) {\n\t\t\t\t\tfor (const rowData of rowsData) {\n\t\t\t\t\t\tconst formatterCell: FormatterCell = {\n\t\t\t\t\t\t\tvalue: rowData[column.id],\n\t\t\t\t\t\t\trowData,\n\t\t\t\t\t\t\tcolumnId: column.id\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (column.isRequired(formatterCell)) {\n\t\t\t\t\t\t\tconst isValid = validateCellCallback(isRequiredValidator, rowData, column.id, rowData[column.id]);\n\t\t\t\t\t\t\tif (isValid === false) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (column.validator) {\n\t\t\t\t\tfor (const rowData of rowsData) {\n\t\t\t\t\t\tconst isValid = validateCellCallback(column.validator, rowData, column.id, rowData[column.id]);\n\t\t\t\t\t\tif (isValid === false) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const column of hiddenColumns) {\n\t\t\t\tif (column.isRequired) {\n\t\t\t\t\tfor (const rowData of rowsData) {\n\t\t\t\t\t\tconst formatterCell: FormatterCell = {\n\t\t\t\t\t\t\tvalue: rowData[column.id],\n\t\t\t\t\t\t\trowData,\n\t\t\t\t\t\t\tcolumnId: column.id\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (column.isRequired(formatterCell)) {\n\t\t\t\t\t\t\tconst isValid = validateCellCallback(isRequiredValidator, rowData, column.id, rowData[column.id], true);\n\t\t\t\t\t\t\tif (isValid === false) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\t\t[hiddenColumns, rowsData, validateCellCallback, visibleColumns]\n\t)\n\n\tconst handleSubmitCallback = useCallback(\n\t\tasync (): Promise => {\n\t\t\tsetIsSubmitting(true);\n\n\t\t\tif (validateTableCallback() && onSubmit) {\n\t\t\t\tlet serverErrorsMap = await onSubmit();\n\n\t\t\t\tsetErrorsMap(serverErrorsMap || {});\n\n\t\t\t\tif (serverErrorsMap === undefined) {\n\t\t\t\t\tsetFrozenRowsDataFilterSort(undefined);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsetIsSubmitting(false);\n\t\t},\n\t\t[validateTableCallback, onSubmit]\n\t)\n\n\tconst handleCancelCallback = useCallback(\n\t\t() => onCancel && onCancel(),\n\t\t[onCancel]\n\t)\n\n\tconst addCallback = useCallback(\n\t\t() => {\n\t\t\tconst newRowData = onAdd?.();\n\t\t\tsetFrozenRowsDataFilterSort([\n\t\t\t\t...rowsDataFilterSort,\n\t\t\t\tnewRowData\n\t\t\t]);\n\t\t},\n\t\t[rowsDataFilterSort, onAdd]\n\t)\n\n\tconst deleteCallback = useCallback(\n\t\t(selectedRow: any | undefined) => {\n\t\t\tif (onDelete && selectedRow) {\n\t\t\t\tonDelete(selectedRow.id);\n\n\t\t\t\tif (errorsMap[selectedRow.id]) {\n\t\t\t\t\tdelete errorsMap[selectedRow.id];\n\t\t\t\t}\n\n\t\t\t\tconst indexOfDeleted = rowsDataFilterSort.findIndex((item) => item.id === selectedRow.id);\n\t\t\t\tsetFrozenRowsDataFilterSort([\n\t\t\t\t\t...rowsDataFilterSort.slice(0, indexOfDeleted),\n\t\t\t\t\t...rowsDataFilterSort.slice(indexOfDeleted + 1, rowsDataFilterSort.length)\n\t\t\t\t]);\n\t\t\t}\n\t\t},\n\t\t[onDelete, errorsMap, rowsDataFilterSort]\n\t)\n\n\tconst haveErrorsCallback = useCallback(\n\t\t() => {\n\t\t\tfor (const rowId in errorsMap) {\n\t\t\t\tconst rowErrorsMap = errorsMap[rowId];\n\n\t\t\t\tif (rowId === globalErrorKey || rowErrorsMap === undefined) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (const columnId in rowErrorsMap) {\n\t\t\t\t\tconst error = rowErrorsMap[columnId];\n\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\t[errorsMap]\n\t)\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{!hideToolbar &&\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{onSubmit &&\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{renderAdditionalButtons && renderAdditionalButtons(isSubmitting /*|| disabled*/, handleSubmitCallback, isSubmitting)}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{/* unsaved changes */}\n\t\t\t\t\t\t\t{/* {!disableUnsavedChangesGuard &&\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t} */}\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport const CrudTable = ({ fetching, ...rest }: Props & { fetching?: boolean }) => {\n\tif (fetching) {\n\t\treturn \n\t}\n\n\treturn \n}\n","export const isEmptyObject = (object) => {\n return Object.keys(object).length === 0;\n}\n","import { useMemo } from \"react\";\nimport { noop } from \"utils/commonHelper\";\nimport { filterData, paginateData, sortData } from \"./filterSortPageHelpers\";\nimport { FilterSortPageType, FooterCalculatorEnum, GenericColumnModel, InteractionManager } from \"../BaseTable/models\";\nimport { BaseTable } from \"../BaseTable/BaseTable\";\nimport { calculateSum } from \"./footerCalculationHelpers\";\nimport ErrorBoundary from \"features/ErrorBoundary\";\nimport { SkeletonTable } from \"../BaseTable/Skeleton/SkeletonTable\";\nimport { cloneColumnModel } from \"features/TableColumns/usePrepareTableColumns\";\nimport { HeaderGroup } from \"../BaseTable/Header/Header\";\n\nexport type LocalTableProps = {\n\tcolumns: GenericColumnModel[]\n\trowsData: any[]\n\tfooterRowsData?: any[]\n\tfilterSortPage: FilterSortPageType\n\tcellEdited?: (rowData: any, columnId: string, value: any) => Promise\n\tfooterCellEdited?: (columnId: string, value: any) => Promise\n\tfetching?: boolean\n\thasPagination?: boolean\n\tcompact?: boolean\n\tinteractionManager: InteractionManager\n\tfill?: boolean\n\tdisabledReorder?: boolean\n\tadditionalHeaderRow?: HeaderGroup[]\n\texpand?: (rowData: any) => void\n\tcollapse?: (rowData: any) => void\n\tonGroupClick?: (groupId: string) => void\n\tisNestedRowsData?: boolean\n}\n\nexport const LocalTable = ({\n\tcolumns,\n\trowsData,\n\tfooterRowsData,\n\tfilterSortPage,\n\tcellEdited,\n\tfooterCellEdited,\n\tfetching,\n\thasPagination,\n\tcompact,\n\tinteractionManager,\n\tfill,\n\tdisabledReorder = false,\n\tadditionalHeaderRow,\n\texpand,\n\tcollapse,\n\tonGroupClick,\n\tisNestedRowsData\n}: LocalTableProps) => {\n\tconst rowsDataFiltered = useMemo(\n\t\t() => filterData(rowsData, filterSortPage.filters, columns),\n\t\t[columns, filterSortPage.filters, rowsData]\n\t)\n\n\tconst rowsDataFilterSortPage = useMemo(\n\t\t() => {\n\t\t\tconst sortedData = sortData(rowsDataFiltered, filterSortPage.sort, columns);\n\t\t\tconst paginatedData = hasPagination ? paginateData(sortedData, filterSortPage.offset, (filterSortPage.nestedLimit || filterSortPage.limit)) : sortedData;\n\t\t\treturn paginatedData;\n\t\t},\n\t\t[rowsDataFiltered, filterSortPage, columns, hasPagination]\n\t)\n\n\tconst pagination = useMemo(\n\t\t() => {\n\t\t\tif (!hasPagination) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst newCount = isNestedRowsData ? rowsDataFiltered.filter(item => item.level === 0).length : rowsDataFiltered.length;\n\t\t\treturn {\n\t\t\t\toffset: filterSortPage.offset,\n\t\t\t\tlimit: filterSortPage.limit,\n\t\t\t\tcount: newCount,\n\t\t\t\tonChange: interactionManager.changeOffset || noop\n\t\t\t}\n\t\t},\n\t\t[hasPagination, filterSortPage.offset, filterSortPage.limit, isNestedRowsData, rowsDataFiltered, interactionManager.changeOffset]\n\t)\n\n\tconst convertedColumns: GenericColumnModel[] = useMemo(\n\t\t() => columns.map((column) => {\n\t\t\tif (column.footerCalculator === FooterCalculatorEnum.SUM && column.footerValue === undefined) {\n\t\t\t\t// to perserve class type\n\t\t\t\tconst clonedColumn = cloneColumnModel(column);\n\t\t\t\tclonedColumn.footerValue = calculateSum.bind(null, rowsDataFiltered, column.id)\n\t\t\t\treturn clonedColumn;\n\t\t\t}\n\n\t\t\treturn column;\n\t\t}),\n\t\t[columns, rowsDataFiltered]\n\t)\n\n\tif (fetching) {\n\t\treturn \n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t)\n}\n","export const getInitialRowsData = (items: any[], isWidgetData: boolean, groupByLevels: boolean) => {\n\tif (groupByLevels) {\n\t\tconst groupedData = groupDataByLevels(items);\n\t\treturn groupedData;\n\t}\n\n\tif (isWidgetData) {\n\t\treturn items.map((item) => {\n\t\t\treturn {\n\t\t\t\t...item,\n\t\t\t\texpanded: false,\n\t\t\t\thasChildren: item.children && item.children.length > 0,\n\t\t\t\tlevel: 0\n\t\t\t}\n\t\t});\n\t}\n\n\tconst filteredItems = items.filter((item) => item.parentId === undefined);\n\treturn filteredItems.map((item) => {\n\t\treturn {\n\t\t\t...item,\n\t\t\texpanded: false,\n\t\t\thasChildren: items.some(child => child.parentId === item.id),\n\t\t\tlevel: 0\n\t\t}\n\t});\n}\n\nexport const getExpandedRowsData = (rootItems: any[], items: any[], expandedItem: any, isWidgetData: boolean, groupByLevels: boolean) => {\n\tif (groupByLevels) {\n\t\tconst updatedItems = rootItems.map((item) => {\n\t\t\tif (item.groupId === expandedItem.groupId) {\n\t\t\t\treturn {\n\t\t\t\t\t...item,\n\t\t\t\t\texpanded: true\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn item;\n\t\t});\n\n\t\tconst childrenToAdd = expandedItem.children.map((child) => {\n\t\t\treturn {\n\t\t\t\t...child,\n\t\t\t\texpanded: false,\n\t\t\t\thasChildren: child.children && child.children.length > 0,\n\t\t\t\tlevel: expandedItem.level + 1\n\t\t\t}\n\t\t});\n\n\t\tconst parentIndex = updatedItems.findIndex((item) => item.groupId === expandedItem.groupId);\n\n\t\tconst newExpandedData = [\n\t\t\t...updatedItems.slice(0, parentIndex + 1),\n\t\t\t...childrenToAdd,\n\t\t\t...updatedItems.slice(parentIndex + 1)\n\t\t];\n\n\t\treturn newExpandedData;\n\t}\n\n\tif (isWidgetData) {\n\t\tconst updatedItems = rootItems.map((item) => {\n\t\t\tif (item.date === expandedItem.date) {\n\t\t\t\treturn {\n\t\t\t\t\t...item,\n\t\t\t\t\texpanded: true\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn item;\n\t\t});\n\n\t\tconst childrenToAdd = expandedItem.children.map((child) => {\n\t\t\treturn {\n\t\t\t\t...child,\n\t\t\t\texpanded: false,\n\t\t\t\thasChildren: child.children && child.children.length > 0,\n\t\t\t\tlevel: expandedItem.level + 1\n\t\t\t}\n\t\t});\n\n\t\tconst parentIndex = updatedItems.findIndex((item) => item.date === expandedItem.date);\n\n\t\tconst newExpandedData = [\n\t\t\t...updatedItems.slice(0, parentIndex + 1),\n\t\t\t...childrenToAdd,\n\t\t\t...updatedItems.slice(parentIndex + 1),\n\t\t];\n\n\t\treturn newExpandedData;\n\t}\n\n\tconst updatedItems = rootItems.map((item) => {\n\t\tif (item.id === expandedItem.id) {\n\t\t\treturn {\n\t\t\t\t...item,\n\t\t\t\texpanded: true\n\t\t\t}\n\t\t}\n\n\t\treturn item;\n\t});\n\n\tconst childrenToAdd = items.filter(child => child.parentId === expandedItem.id && !rootItems.some(item => item.id === child.id)).map((child) => {\n\t\treturn {\n\t\t\t...child,\n\t\t\texpanded: false,\n\t\t\thasChildren: items.some(grandChild => grandChild.parentId === child.id),\n\t\t\tlevel: expandedItem.level + 1\n\t\t}\n\t});\n\n\tconst parentIndex = updatedItems.findIndex(item => item.id === expandedItem.id);\n\n\tconst newExpandedData = [\n\t\t...updatedItems.slice(0, parentIndex + 1),\n\t\t...childrenToAdd,\n\t\t...updatedItems.slice(parentIndex + 1),\n\t];\n\n\treturn newExpandedData;\n}\n\nexport const getCollapsedRowsData = (items: any[], collapsedItem: any, isWidgetData: boolean, groupByLevels: boolean) => {\n\tif (groupByLevels) {\n\t\tconst updatedItems = items.map((item) => {\n\t\t\tif (item.groupId === collapsedItem.groupId) {\n\t\t\t\treturn {\n\t\t\t\t\t...item,\n\t\t\t\t\texpanded: false\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn item;\n\t\t});\n\n\t\tconst expandedChildren = getAllExpandedGroupChildren(collapsedItem);\n\n\t\tconst newCollapsedData = updatedItems.filter(item => !expandedChildren.some(child => child.groupId === item.groupId));\n\n\t\treturn newCollapsedData;\n\t}\n\n\tif (isWidgetData) {\n\t\tconst updatedItems = items.map((item) => {\n\t\t\tif (item.date === collapsedItem.date) {\n\t\t\t\treturn {\n\t\t\t\t\t...item,\n\t\t\t\t\texpanded: false\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn item;\n\t\t});\n\n\t\tconst expandedChildren = collapsedItem.children || [];\n\n\t\tconst newCollapsedData = updatedItems.filter(item => !expandedChildren.some(child => child.date === item.date));\n\n\t\treturn newCollapsedData;\n\t}\n\n\tconst updatedItems = items.map((item) => {\n\t\tif (item.id === collapsedItem.id) {\n\t\t\treturn {\n\t\t\t\t...item,\n\t\t\t\texpanded: false\n\t\t\t};\n\t\t}\n\n\t\treturn item;\n\t});\n\n\tconst expandedChildren = getAllExpandedChildren(collapsedItem, items);\n\n\tconst newCollapsedData = updatedItems.filter(item => !expandedChildren.some(child => child.id === item.id));\n\n\treturn newCollapsedData;\n}\n\nconst getAllExpandedChildren = (parentItem: any, items: any[]) => {\n\tconst allChildren: any[] = [];\n\n\tconst findChildren = (parentId: any) => {\n\t\tconst children = items.filter(item => item.parentId === parentId);\n\t\tfor (const child of children) {\n\t\t\tallChildren.push(child);\n\t\t\tfindChildren(child.id);\n\t\t}\n\t}\n\n\tfindChildren(parentItem.id);\n\n\treturn allChildren;\n}\n\nconst getAllExpandedGroupChildren = (parentItem: any) => {\n\tconst allChildren: any[] = [];\n\n\tconst findChildren = (parent: any) => {\n\t\tif (parent.children && parent.children.length > 0) {\n\t\t\tfor (const child of parent.children) {\n\t\t\t\tallChildren.push(child);\n\t\t\t\tfindChildren(child);\n\t\t\t}\n\t\t}\n\t}\n\n\tfindChildren(parentItem);\n\n\treturn allChildren;\n}\n\nexport const handleExpandRows = (currentRows: any[], items: any[], targetLevel: number) => {\n\tconst rootItems = currentRows.filter(item => item.level === 0 && item.parentId === undefined);\n\tconst expandedRows: any[] = [];\n\n\tconst expandRowsToLevel = (rows: any[], currentLevel: number) => {\n\t\tfor (const row of rows) {\n\t\t\tconst newRow = {\n\t\t\t\t...row,\n\t\t\t\texpanded: currentLevel < targetLevel,\n\t\t\t\thasChildren: items.some(child => child.parentId === row.id),\n\t\t\t\tlevel: currentLevel\n\t\t\t};\n\t\t\texpandedRows.push(newRow);\n\n\t\t\tif (currentLevel < targetLevel && newRow.expanded && newRow.hasChildren) {\n\t\t\t\tconst childRows = items.filter(child => child.parentId === newRow.id);\n\t\t\t\texpandRowsToLevel(childRows, currentLevel + 1);\n\t\t\t}\n\t\t}\n\t};\n\n\texpandRowsToLevel(rootItems, 0);\n\n\treturn expandedRows;\n}\n\nexport const collapseAllRows = (items: any[]) => {\n\treturn items.filter(item => item.level === 0).map(item => {\n\t\treturn {\n\t\t\t...item,\n\t\t\texpanded: false\n\t\t}\n\t});\n}\n\nconst groupDataByLevels = (data: any[]) => {\n\tconst result: any[] = [];\n\n\tconst createGroup = (groupId: string, groupLevel: string, groupName: string, level: number, parent: any[], hasChildren: boolean, hasDiagram: boolean) => {\n\t\tlet group = parent.find(g => g.groupId === groupId);\n\n\t\tif (!group) {\n\t\t\tgroup = {\n\t\t\t\tgroupId,\n\t\t\t\tgroupLevel,\n\t\t\t\tgroupName,\n\t\t\t\tchildren: [],\n\t\t\t\texpanded: false,\n\t\t\t\thasChildren,\n\t\t\t\thasDiagram,\n\t\t\t\tlevel,\n\t\t\t\titemCount: 0\n\t\t\t};\n\t\t\tparent.push(group);\n\t\t}\n\n\t\tgroup.itemCount++;\n\t\treturn group;\n\t}\n\n\tfor (const item of data) {\n\t\tconst {\n\t\t\tlevel1Id, level1Name, level1Description, level1HasDiagram,\n\t\t\tlevel2Id, level2Name, level2Description, level2HasDiagram,\n\t\t\tid, processId, level3Name, level3Description, level3HasDiagram,\n\t\t\tlevel4Id, level4Name, processDescription\n\t\t} = item;\n\n\t\t// Level 1 group\n\t\tconst level1GroupId = `${level1Id}`;\n\t\tconst level1GroupName = `${level1Name}: ${level1Description}`;\n\t\tlet level1 = createGroup(level1GroupId, 'Level 1', level1GroupName, 0, result, true, level1HasDiagram);\n\n\t\t// Level 2 group\n\t\tconst level2GroupId = `${level2Id}`;\n\t\tconst level2GroupName = `${level2Name}: ${level2Description}`;\n\t\tlet level2 = createGroup(level2GroupId, 'Level 2', level2GroupName, 1, level1.children, true, level2HasDiagram);\n\n\t\t// Level 3 group\n\t\tconst level3GroupId = `${id}`;\n\t\tconst level3GroupName = `${level1Name}-${level2Name}-${level3Name}: ${level3Description}`;\n\t\tlet level3 = createGroup(level3GroupId, 'Level 3', level3GroupName, 2, level2.children, !!(level4Id && level4Name), level3HasDiagram);\n\n\t\tif (level4Id && level4Name) {\n\t\t\tconst hasFirstItem = level3.children.length > 0;\n\n\t\t\tconst level4Item = {\n\t\t\t\t...item,\n\t\t\t\tlevel1Name: hasFirstItem ? '' : level1Name,\n\t\t\t\tlevel1Description: hasFirstItem ? '' : level1Description,\n\t\t\t\tlevel2Name: hasFirstItem ? '' : level2Name,\n\t\t\t\tlevel2Description: hasFirstItem ? '' : level2Description,\n\t\t\t\tlevel3Name: hasFirstItem ? '' : level3Name,\n\t\t\t\tlevel3Description: hasFirstItem ? '' : level3Description,\n\t\t\t\tprocessId: hasFirstItem ? '' : processId,\n\t\t\t\tprocessDescription: hasFirstItem ? '' : processDescription,\n\t\t\t};\n\t\t\tlevel3.children.push(level4Item);\n\t\t}\n\n\t\t// Check if Level 3 has no children, if not, add item as its child\n\t\tif (level3.children.length === 0) {\n\t\t\tlevel3.children.push(item);\n\t\t}\n\t}\n\n\treturn result;\n}\n","import { FilterSortPageType, GenericColumnModel, InteractionManager } from \"../BaseTable/models\";\nimport ErrorBoundary from \"features/ErrorBoundary\";\nimport { LocalTable } from \"../LocalTable/LocalTable\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { collapseAllRows, getCollapsedRowsData, getExpandedRowsData, getInitialRowsData, handleExpandRows } from \"./helpers\";\nimport { HeaderGroup } from \"../BaseTable/Header/Header\";\n\nexport type NestedTableProps = {\n\tcolumns: GenericColumnModel[]\n\trowsData: any[]\n\tfilterSortPage: FilterSortPageType\n\tfetching?: boolean\n\thasPagination?: boolean\n\tcompact?: boolean\n\tfill?: boolean\n\tinteractionManager: InteractionManager\n\tlevel: number | undefined\n\tdisabledReorder?: boolean\n\tadditionalHeaderRow?: HeaderGroup[]\n\tisWidgetData?: boolean\n\tonGroupClick?: (groupId: string) => void\n\tgroupByLevels?: boolean\n}\n\nexport const NestedTable = ({\n\tcolumns,\n\trowsData,\n\tfilterSortPage,\n\tfetching,\n\thasPagination,\n\tcompact,\n\tfill,\n\tinteractionManager,\n\tlevel,\n\tdisabledReorder,\n\tadditionalHeaderRow,\n\tisWidgetData = false,\n\tonGroupClick,\n\tgroupByLevels = false\n}: NestedTableProps) => {\n\tconst [nestedRowsData, setNestedRowsData] = useState([]);\n\n\tuseEffect(\n\t\t() => {\n\t\t\tlet updatedRows = getInitialRowsData(rowsData, isWidgetData, groupByLevels);\n\n\t\t\tif (level !== undefined) {\n\t\t\t\tupdatedRows = handleExpandRows(updatedRows, rowsData, level);\n\t\t\t}\n\n\t\t\tsetNestedRowsData(updatedRows);\n\t\t},\n\t\t[rowsData, isWidgetData, groupByLevels, level]\n\t)\n\n\tuseEffect(\n\t\t() => {\n\t\t\tsetNestedRowsData((state) => {\n\t\t\t\tconst updatedRows = collapseAllRows(state);\n\t\t\t\treturn updatedRows;\n\t\t\t});\n\t\t},\n\t\t[filterSortPage.offset]\n\t)\n\n\tconst onExpandCallback = useCallback(\n\t\t(expandedItem: any) => {\n\t\t\tif (filterSortPage.nestedLimit) {\n\t\t\t\tconst currentLimit = filterSortPage.nestedLimit;\n\t\t\t\tconst childrenCount = expandedItem.children?.length || 0;\n\t\t\t\tconst newLimit = currentLimit + childrenCount;\n\t\t\t\tinteractionManager.changeNestedLimit?.(newLimit);\n\t\t\t}\n\n\t\t\tconst updatedRowsData = getExpandedRowsData(nestedRowsData, rowsData, expandedItem, isWidgetData, groupByLevels);\n\t\t\tsetNestedRowsData(updatedRowsData);\n\t\t},\n\t\t[rowsData, nestedRowsData, isWidgetData, filterSortPage.nestedLimit, interactionManager, groupByLevels]\n\t)\n\n\tconst onCollapseCallback = useCallback(\n\t\t(collapsedItem: any) => {\n\t\t\tif (filterSortPage.nestedLimit) {\n\t\t\t\tconst currentLimit = filterSortPage.nestedLimit;\n\t\t\t\tconst childrenCount = collapsedItem.children?.length || 0;\n\t\t\t\tconst newLimit = currentLimit - childrenCount;\n\t\t\t\tinteractionManager.changeNestedLimit?.(newLimit);\n\t\t\t}\n\n\t\t\tconst updatedRowsData = getCollapsedRowsData(nestedRowsData, collapsedItem, isWidgetData, groupByLevels);\n\t\t\tsetNestedRowsData(updatedRowsData);\n\t\t},\n\t\t[nestedRowsData, isWidgetData, filterSortPage.nestedLimit, interactionManager, groupByLevels]\n\t)\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t)\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { GenericFilterModelCollection } from \"services/tenantManagementService\"\nimport { Subject } from \"rxjs\";\nimport { tryCatchJsonByAction } from \"utils/fetchUtils\";\nimport { emptyArray, noop } from \"utils/commonHelper\";\nimport { BaseTable } from \"../BaseTable/BaseTable\";\nimport { GenericColumnModel, FilterSortPageType, InteractionManager } from \"../BaseTable/models\";\nimport { prepareFiltersModel } from \"./prepareFiltersModel\";\nimport { BackendColumnFieldsMap } from \"features/TableColumns/prepareExportColumns\";\nimport ErrorBoundary from \"features/ErrorBoundary\";\nimport { SkeletonTable } from \"../BaseTable/Skeleton/SkeletonTable\";\n\ntype CellEditedReturnType = void | {\n\trowData?: any\n\t/** In specific cases where container does some specific mapping of data and\n\t * takes care about rowsData, it needs to send whole rowsData instead of rowData */\n\trowsData?: any[]\n}\n\ntype Props = {\n\tcolumns: GenericColumnModel[]\n\tfilterSortPage: FilterSortPageType\n\tspecificBackendColumnFieldsMap?: BackendColumnFieldsMap\n\tfetchFunction: (genericFilter: GenericFilterModelCollection) => Promise\n\tsubscriptionTopic?: Subject\n\tcellEdited?: (rowData: any, columnId: string, value: any) => Promise\n\thidePagination?: boolean\n\tdisabledReorder?: boolean\n\tmapResponse?: (items: any) => any\n\tinteractionManager: InteractionManager\n}\n\nexport const RemoteTable = ({\n\tcolumns,\n\tfilterSortPage,\n\tspecificBackendColumnFieldsMap,\n\tfetchFunction,\n\tsubscriptionTopic,\n\tcellEdited,\n\thidePagination,\n\tdisabledReorder = false,\n\tmapResponse,\n\tinteractionManager\n}: Props) => {\n\tconst [count, setCount] = useState(0);\n\tconst [rowsData, setRowsData] = useState(emptyArray);\n\tconst [fetchState, setFetchState] = useState({\n\t\t// if it was already fetched (we want to be aware of first fetch because of Skeleton)\n\t\tfetched: false,\n\t\t// if refetching after the first fetch\n\t\trefetching: false\n\t})\n\n\tconst fetchDataCallback = useCallback(\n\t\tasync () => {\n\t\t\tsetFetchState((state) => ({\n\t\t\t\t...state,\n\t\t\t\trefetching: state.fetched\n\t\t\t}));\n\n\t\t\tconst newFiltersModel = prepareFiltersModel(filterSortPage, specificBackendColumnFieldsMap);\n\n\t\t\tconst bindedAction = fetchFunction.bind(null, newFiltersModel);\n\t\t\tconst response = await tryCatchJsonByAction(bindedAction);\n\t\t\tif (response.success) {\n\t\t\t\tlet items = response.items || emptyArray;\n\n\t\t\t\tif (mapResponse) {\n\t\t\t\t\titems = mapResponse(items);\n\t\t\t\t}\n\t\t\t\tsetRowsData(items);\n\t\t\t\tsetCount(response.count);\n\t\t\t}\n\n\t\t\tsetFetchState({\n\t\t\t\tfetched: true,\n\t\t\t\trefetching: false\n\t\t\t});\n\t\t},\n\t\t[filterSortPage, specificBackendColumnFieldsMap, fetchFunction, mapResponse]\n\t)\n\n\tuseEffect(\n\t\t() => {\n\t\t\tfetchDataCallback();\n\t\t},\n\t\t[fetchDataCallback]\n\t)\n\n\tuseEffect(\n\t\t() => {\n\t\t\tconst subscription = subscriptionTopic?.subscribe(fetchDataCallback);\n\t\t\treturn () => {\n\t\t\t\tsubscription?.unsubscribe();\n\t\t\t}\n\t\t},\n\t\t[fetchDataCallback, subscriptionTopic]\n\t)\n\n\tconst cellEditedCallback = useCallback(\n\t\tasync (rowData: any, columnId: string, value: any) => {\n\t\t\tconst returnValue = await cellEdited?.(rowData, columnId, value);\n\t\t\tif (!returnValue) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (returnValue.rowsData) {\n\t\t\t\tsetRowsData(returnValue.rowsData);\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tsetRowsData((state) => state.map((item) => item === rowData ? returnValue.rowData : item));\n\t\t\t}\n\t\t},\n\t\t[cellEdited]\n\t)\n\n\tconst pagination = useMemo(\n\t\t() => {\n\t\t\tif (hidePagination) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\toffset: filterSortPage.offset,\n\t\t\t\tlimit: filterSortPage.limit,\n\t\t\t\tcount,\n\t\t\t\tonChange: interactionManager.changeOffset || noop\n\t\t\t}\n\t\t},\n\t\t[hidePagination, filterSortPage, count, interactionManager]\n\t)\n\n\tif (!fetchState.fetched) {\n\t\treturn \n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t)\n}\n","import { useGetTranslation } from './translationUtils';\n\ntype Props = {\n\t// sometimes i18n is undefined somehow, so added \"| undefined\" just in case\n\ti18n: string | undefined\n\targs?: string[]\n}\n\nexport const Translation = ({ i18n, args = [] }: Props) => {\n\tconst getTranslation = useGetTranslation();\n\n\tif (i18n === undefined) {\n\t\treturn <>\n\t}\n\n\tlet translation = i18n;\n\n\tif (translation.startsWith('i18n')) {\n\t\ttranslation = getTranslation(i18n, args)\n\t}\n\n\treturn {translation}\n}\n","import { createContext, useContext, useReducer } from 'react';\nimport { LanguagesEnum } from 'services/tenantManagementService';\n\nexport type LanguageType = {\n\tshortName: string\n\tfullName: string\n\tlocale: string\n\ticonUri: string\n\tvalue: LanguagesEnum\n}\n\nexport const languages: { [key in LanguagesEnum]: LanguageType } = {\n\t[LanguagesEnum.English]: {\n\t\tshortName: 'ENG',\n\t\tfullName: 'English',\n\t\tlocale: 'en-US',\n\t\ticonUri: '/assets/flags/united_kingdom_32x32.png',\n\t\tvalue: LanguagesEnum.English\n\t},\n\t[LanguagesEnum.Serbian]: {\n\t\tshortName: 'SRP',\n\t\tfullName: 'Srpski',\n\t\tlocale: 'sr',\n\t\ticonUri: '/assets/flags/serbia_32x32.png',\n\t\tvalue: LanguagesEnum.Serbian\n\t}\n}\n\nexport const languageItems: LanguageType[] = Object.keys(languages).map((langKey) => {\n\treturn {\n\t\t...languages[langKey]\n\t}\n})\n\nexport enum TranslationKeyEnum {\n\tBASE = 'base',\n\tPROJECTS = 'projects',\n\tTICKETS = 'tickets',\n\tSCOPE = 'scope',\n\tTESTING = 'testing',\n\tTRAINING = 'training',\n\tTIME_TRAVEL = 'time_travel',\n\tRISK = 'risk',\n\tFINANCE = 'finance',\n\tCOMMUNICATION = 'communication',\n\tSCHEDULE = 'schedule',\n\tSITE_CONFIGURATION = 'site_configuration',\n\tACCOUNT = 'account'\n}\n\ntype TranslationState = {\n\ttranslations: { [key: string]: string }\n\tloadedTranslations: { [key: string]: boolean }\n\tloadingInProgress: Set\n}\n\nexport type TranslationAction = {\n\ttype: 'LOAD_TRANSLATION' | 'SET_TRANSLATION_LOADED' | 'SET_SELECTED_LANGUAGE'\n\tpayload: any\n}\n\nconst initialState: TranslationState = {\n\ttranslations: {},\n\tloadedTranslations: {\n\t\t[TranslationKeyEnum.BASE]: false,\n\t\t[TranslationKeyEnum.PROJECTS]: false,\n\t\t[TranslationKeyEnum.TICKETS]: false,\n\t\t[TranslationKeyEnum.SCOPE]: false,\n\t\t[TranslationKeyEnum.TESTING]: false,\n\t\t[TranslationKeyEnum.TRAINING]: false,\n\t\t[TranslationKeyEnum.TIME_TRAVEL]: false,\n\t\t[TranslationKeyEnum.RISK]: false,\n\t\t[TranslationKeyEnum.FINANCE]: false,\n\t\t[TranslationKeyEnum.COMMUNICATION]: false,\n\t\t[TranslationKeyEnum.SCHEDULE]: false,\n\t\t[TranslationKeyEnum.SITE_CONFIGURATION]: false,\n\t\t[TranslationKeyEnum.ACCOUNT]: false\n\t},\n\tloadingInProgress: new Set()\n}\n\nconst translationReducer = (state: TranslationState, action: TranslationAction): TranslationState => {\n\tswitch (action.type) {\n\t\tcase 'LOAD_TRANSLATION':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tloadingInProgress: new Set(state.loadingInProgress).add(action.payload)\n\t\t\t};\n\t\tcase 'SET_TRANSLATION_LOADED':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttranslations: {\n\t\t\t\t\t...state.translations,\n\t\t\t\t\t...action.payload.translations\n\t\t\t\t},\n\t\t\t\tloadedTranslations: {\n\t\t\t\t\t...state.loadedTranslations,\n\t\t\t\t\t[action.payload.routeId]: true\n\t\t\t\t},\n\t\t\t\tloadingInProgress: new Set(Array.from(state.loadingInProgress).filter(route => route !== action.payload.routeId))\n\t\t\t};\n\t\tcase 'SET_SELECTED_LANGUAGE':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tloadedTranslations: {\n\t\t\t\t\t[TranslationKeyEnum.BASE]: false,\n\t\t\t\t\t[TranslationKeyEnum.PROJECTS]: false,\n\t\t\t\t\t[TranslationKeyEnum.TICKETS]: false,\n\t\t\t\t\t[TranslationKeyEnum.SCOPE]: false,\n\t\t\t\t\t[TranslationKeyEnum.TESTING]: false,\n\t\t\t\t\t[TranslationKeyEnum.TRAINING]: false,\n\t\t\t\t\t[TranslationKeyEnum.TIME_TRAVEL]: false,\n\t\t\t\t\t[TranslationKeyEnum.RISK]: false,\n\t\t\t\t\t[TranslationKeyEnum.FINANCE]: false,\n\t\t\t\t\t[TranslationKeyEnum.COMMUNICATION]: false,\n\t\t\t\t\t[TranslationKeyEnum.SCHEDULE]: false,\n\t\t\t\t\t[TranslationKeyEnum.SITE_CONFIGURATION]: false,\n\t\t\t\t\t[TranslationKeyEnum.ACCOUNT]: false\n\t\t\t\t},\n\t\t\t\tloadingInProgress: new Set()\n\t\t\t};\n\t\tdefault:\n\t\t\treturn state;\n\t}\n}\n\nexport const TranslationsContext = createContext(initialState);\nconst TranslationsDispatchContext = createContext(null);\n\n/** It is bad to use it. It makes sence to use it in prepareExportColumns and ExportDocument\n * only because it is used in a callback (to send titles to backend / to immediately export pdf).\n * It is not meant to be used in React components nor for display on UI as it will not notify them when something is changed. */\nexport let exportedTranslationsState: TranslationState;\n\nexport const TranslationsProvider = ({ children }) => {\n\tconst [state, dispatch] = useReducer(translationReducer, initialState);\n\n\texportedTranslationsState = state;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{children}\n\t\t\t\n\t\t\n\t);\n}\n\nexport const useTranslations = () => {\n\treturn useContext(TranslationsContext);\n}\n\nexport const useTranslationsDispatch = () => {\n\treturn useContext(TranslationsDispatchContext);\n}\n","import { languages, useTranslations, useTranslationsDispatch } from \"components/Translations/TranslationsProvider\";\nimport { useCallback, useEffect } from 'react';\nimport { LanguagesEnum } from \"services/tenantManagementService\";\nimport { envSettings } from \"settings/envSettings\";\nimport { replacePlaceholders } from 'utils/stringUtil';\n\nconst LOCALE = 'locale';\n\nexport const setLocale = (locale: LanguagesEnum) => {\n\tlocalStorage.setItem(LOCALE, locale);\n}\n\nexport const getLocale = (): LanguagesEnum => {\n\tconst locale = localStorage.getItem(LOCALE);\n\tif (locale) {\n\t\treturn locale as LanguagesEnum;\n\t}\n\n\treturn LanguagesEnum.English;\n}\n\nexport const getLangCode = () => {\n\tconst locale = getLocale();\n\treturn languages[locale].locale;\n}\n\nexport const getLanguageFromLocale = (locale: LanguagesEnum | undefined) => {\n\tswitch (locale) {\n\t\tcase LanguagesEnum.Serbian:\n\t\t\treturn languages[LanguagesEnum.Serbian];\n\t\tcase LanguagesEnum.English:\n\t\tdefault:\n\t\t\treturn languages[LanguagesEnum.English];\n\t}\n}\n\nexport const useLoadTranslation = () => {\n\tconst dispatch = useTranslationsDispatch();\n\tconst { loadedTranslations, loadingInProgress } = useTranslations();\n\n\treturn useCallback(\n\t\tasync (routeId: string) => {\n\t\t\tif (loadedTranslations[routeId] || loadingInProgress.has(routeId)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdispatch({ type: 'LOAD_TRANSLATION', payload: routeId });\n\t\t\tconst locale = getLocale();\n\t\t\tsetLocale(locale);\n\t\t\tconst languageCode = languages[locale].locale;\n\t\t\ttry {\n\t\t\t\tconst apiUrl = envSettings.apiUrl;\n\t\t\t\tconst translationsText = await (await fetch(`${apiUrl}/translations/${languageCode}/${routeId}.json`)).text();\n\t\t\t\tconst translations = JSON.parse(translationsText);\n\t\t\t\tdispatch({ type: 'SET_TRANSLATION_LOADED', payload: { routeId, translations } });\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(`Error loading translation for ${routeId}:`, error);\n\t\t\t}\n\t\t},\n\t\t[dispatch, loadedTranslations, loadingInProgress]\n\t)\n}\n\nexport const useLoadTranslationEffect = (routeId: string) => {\n\tconst loadedTranslation = useLoadTranslation();\n\tuseEffect(\n\t\t() => {\n\t\t\tloadedTranslation(routeId);\n\t\t},\n\t\t[routeId, loadedTranslation]\n\t)\n}\n\nexport const isNotTranslated = (value: string) => {\n\treturn value.startsWith('i18n');\n}\n\nexport const useGetTranslation = () => {\n\tconst { translations } = useTranslations();\n\treturn useCallback(\n\t\t(i18n: string | undefined, args?: string[]) => {\n\t\t\tif (i18n === undefined) {\n\t\t\t\treturn ''\n\t\t\t}\n\n\t\t\tconst translation = translations[i18n];\n\n\t\t\tlet translatedArgs: string[] = [];\n\t\t\tif (args) {\n\t\t\t\tfor (let arg of args) {\n\t\t\t\t\tlet translatedArg = arg;\n\t\t\t\t\tif (arg && arg.startsWith('i18n')) {\n\t\t\t\t\t\ttranslatedArg = translations[arg] || arg; // if translation for that key doesn't exist, use arg\n\t\t\t\t\t}\n\t\t\t\t\ttranslatedArgs.push(translatedArg);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (translation) {\n\t\t\t\tconst translatedText = replacePlaceholders(translation, translatedArgs);\n\t\t\t\treturn translatedText;\n\t\t\t}\n\n\t\t\treturn i18n;\n\t\t},\n\t\t[translations]\n\t)\n}\n","var _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgArrowDown(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1024pt\",\n height: \"1023pt\",\n viewBox: \"0 0 1024 1023\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 1021.066406 77.847656 C 1017.0625 70.953125 1009.714844 66.726562 1001.746094 66.726562 L 22.289062 66.726562 C 14.316406 66.726562 6.972656 70.953125 2.964844 77.847656 C -0.996094 84.742188 -0.996094 93.191406 3.007812 100.085938 L 492.738281 945.15625 C 496.703125 952.050781 504.046875 956.273438 512.015625 956.273438 C 519.984375 956.273438 527.332031 952.046875 531.292969 945.15625 L 1021.023438 100.085938 C 1024.984375 93.234375 1024.984375 84.738281 1021.066406 77.847656 Z M 1021.066406 77.847656 \"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowDown);\nexport default __webpack_public_path__ + \"static/media/arrow_down.b9c17691d46ffda2230a73379e9f24b1.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgArrowRight(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1024pt\",\n height: \"1023pt\",\n viewBox: \"0 0 1024 1023\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 946.136719 492.234375 L 100.214844 2.96875 C 93.359375 -0.992188 84.855469 -0.992188 77.910156 2.96875 C 71.054688 6.929688 66.777344 14.265625 66.777344 22.226562 L 66.777344 1000.761719 C 66.777344 1008.722656 71.054688 1016.0625 77.910156 1020.019531 C 81.339844 1021.976562 85.210938 1022.996094 89.039062 1022.996094 C 92.914062 1022.996094 96.742188 1022.019531 100.214844 1020.019531 L 946.136719 530.75 C 952.992188 526.75 957.222656 519.410156 957.222656 511.492188 C 957.222656 503.578125 952.992188 496.195312 946.136719 492.234375 Z M 946.136719 492.234375 \"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowRight);\nexport default __webpack_public_path__ + \"static/media/arrow_right.a7794153c3d6f4426f624a3fc44ae928.svg\";\nexport { ForwardRef as ReactComponent };","const _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgBell(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: \"28px\",\n height: \"28px\",\n viewBox: \"0 0 28 28\",\n style: {\n enableBackground: \"new 0 0 28 28\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M17.7,23.6c-0.7-0.3-1.5,0-1.8,0.6c-0.2,0.4-0.5,0.7-0.8,0.9c-0.3,0.2-0.7,0.3-1.1,0.3 c-0.4,0-0.8-0.1-1.1-0.3c-0.3-0.2-0.6-0.5-0.8-0.9c-0.3-0.7-1.1-1-1.8-0.7c-0.7,0.3-1,1.1-0.7,1.7c0.4,0.8,1,1.5,1.7,2 c0.8,0.5,1.6,0.8,2.6,0.8c0,0,0,0,0.1,0c0.9,0,1.8-0.2,2.5-0.7c0.8-0.5,1.4-1.1,1.8-2C18.7,24.7,18.4,23.9,17.7,23.6z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M26.1,13.9c-1.1-1.1-1.6-1.9-1.6-2.6V9.7C24.5,4,19.8,0,14,0v0c0,0,0,0,0,0c0,0,0,0,0,0v0 C8.2,0,3.5,4,3.5,9.7v1.6c0,0.7-0.5,1.5-1.6,2.6C0.7,15.1,0,16.8,0,18.6c0,1.9,1.6,3.4,3.5,3.4h1.8H14h0h8.7h1.8 c1.9,0,3.5-1.5,3.5-3.4C28,16.8,27.3,15.1,26.1,13.9z M22.7,19.5h-2H14h0H7.3h-2c-1.5,0-2.3-0.8-2.1-2c0.2-1.3,1.2-2.3,2.1-3.3 c0.8-0.9,1-1.2,1.1-2.4V10c0-4.3,3.3-7.4,7.7-7.4c4.4,0,7.7,3.1,7.7,7.4v1.7c0.1,1.2,0.3,1.5,1.1,2.4c0.9,1,1.9,2,2.1,3.3 C25,18.6,24.2,19.5,22.7,19.5z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgBell);\nexport default __webpack_public_path__ + \"static/media/bell.c33ddb6485cd56eb406f236aed18f761.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgCalendar(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1024pt\",\n height: \"1024pt\",\n viewBox: \"0 0 1024 1024\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 64 384 L 64 896 C 64 931.347656 92.652344 960 128 960 L 896 960 C 931.347656 960 960 931.347656 960 896 L 960 384 Z M 320 832 L 192 832 L 192 704 L 320 704 Z M 320 640 L 192 640 L 192 512 L 320 512 Z M 576 832 L 448 832 L 448 704 L 576 704 Z M 576 640 L 448 640 L 448 512 L 576 512 Z M 832 832 L 704 832 L 704 704 L 832 704 Z M 832 640 L 704 640 L 704 512 L 832 512 Z M 832 640 \"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 288 192 C 270.328125 192 256 177.671875 256 160 L 256 96 C 256 78.328125 270.328125 64 288 64 C 305.671875 64 320 78.328125 320 96 L 320 160 C 320 177.671875 305.671875 192 288 192 Z M 768 160 L 768 96 C 768 78.328125 753.671875 64 736 64 C 718.328125 64 704 78.328125 704 96 L 704 160 C 704 177.671875 718.328125 192 736 192 C 753.671875 192 768 177.671875 768 160 Z M 896 128 L 832 128 L 832 160 C 832 213.019531 789.019531 256 736 256 C 682.980469 256 640 213.019531 640 160 L 640 128 L 384 128 L 384 160 C 384 213.019531 341.019531 256 288 256 C 234.980469 256 192 213.019531 192 160 L 192 128 L 128 128 C 92.652344 128 64 156.652344 64 192 L 64 320 L 960 320 L 960 192 C 960 156.652344 931.347656 128 896 128 Z M 896 128 \"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCalendar);\nexport default __webpack_public_path__ + \"static/media/calendar.44d06518da87ccfbd2d7e8aeed4e3d30.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgCheck(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1024pt\",\n height: \"1024pt\",\n viewBox: \"0 0 1024 1024\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 806.398438 308.480469 C 794.382812 296.363281 778.023438 289.550781 760.960938 289.550781 C 743.894531 289.550781 727.535156 296.363281 715.519531 308.480469 L 444.160156 579.839844 L 308.480469 444.160156 C 296.464844 432.042969 280.105469 425.230469 263.039062 425.230469 C 245.976562 425.230469 229.617188 432.042969 217.601562 444.160156 C 192.785156 469.121094 192.785156 509.4375 217.601562 534.398438 L 398.71875 715.519531 C 410.738281 727.636719 427.09375 734.449219 444.160156 734.449219 C 461.226562 734.449219 477.582031 727.636719 489.601562 715.519531 L 806.398438 398.71875 C 831.214844 373.757812 831.214844 333.441406 806.398438 308.480469 Z M 806.398438 308.480469 \"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheck);\nexport default __webpack_public_path__ + \"static/media/check.a45f1658af84950134c81dc068f5c792.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgDelete(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 14 14\",\n width: 14,\n height: 14,\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Icons\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m14.1 1.3l-5.7 5.7l5.7 5.7l-1.4 1.4l-5.7-5.7l-5.7 5.7l-1.4-1.4l5.7-5.7l-5.7-5.7l1.4-1.4l5.7 5.7l5.7-5.7z\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgDelete);\nexport default __webpack_public_path__ + \"static/media/delete.c526657cf42f903ae12ba80545a6a017.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgEdit(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 36 36\",\n width: 36,\n height: 36,\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"Layer\",\n className: \"s0\",\n d: \"m22.1 6.4l7.5 7.5l-22.1 22.1h-7.5v-7.5zm9.6 5.4l-7.5-7.5l3.7-3.7c0.8-0.8 2-0.8 2.8 0l4.7 4.7c0.8 0.8 0.8 2 0 2.8z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgEdit);\nexport default __webpack_public_path__ + \"static/media/edit.f7d4aa698740c82e6061b48338f81c2c.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgFile(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n enableBackground: \"new 0 0 48 48\",\n height: \"48px\",\n id: \"Layer_1\",\n viewBox: \"0 0 48 48\",\n width: \"48px\",\n xmlSpace: \"preserve\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M37,47H11c-2.209,0-4-1.791-4-4V5c0-2.209,1.791-4,4-4h18.973 c0.002,0,0.005,0,0.007,0h0.02H30c0.32,0,0.593,0.161,0.776,0.395l9.829,9.829C40.84,11.407,41,11.68,41,12l0,0v0.021 c0,0.002,0,0.003,0,0.005V43C41,45.209,39.209,47,37,47z M31,4.381V11h6.619L31,4.381z M39,13h-9c-0.553,0-1-0.448-1-1V3H11 C9.896,3,9,3.896,9,5v38c0,1.104,0.896,2,2,2h26c1.104,0,2-0.896,2-2V13z M33,39H15c-0.553,0-1-0.447-1-1c0-0.552,0.447-1,1-1h18 c0.553,0,1,0.448,1,1C34,38.553,33.553,39,33,39z M33,31H15c-0.553,0-1-0.447-1-1c0-0.552,0.447-1,1-1h18c0.553,0,1,0.448,1,1 C34,30.553,33.553,31,33,31z M33,23H15c-0.553,0-1-0.447-1-1c0-0.552,0.447-1,1-1h18c0.553,0,1,0.448,1,1C34,22.553,33.553,23,33,23 z\",\n fillRule: \"evenodd\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgFile);\nexport default __webpack_public_path__ + \"static/media/file.3a93a723eec78d45d842c9614af7636e.svg\";\nexport { ForwardRef as ReactComponent };","var _polygon;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgFilter(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 24 24\",\n width: 24,\n height: 24,\n stroke: \"currentColor\",\n strokeWidth: 2,\n fill: \"none\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _polygon || (_polygon = /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgFilter);\nexport default __webpack_public_path__ + \"static/media/filter.3f97827c756ae9593aaf1a9ba65cfd85.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgFolder(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 512 512\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": 1,\n id: \"_1\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M399,450H115a59.06,59.06,0,0,1-59-59V246a59.06,59.06,0,0,1,59-59h99.86a29,29,0,0,0,29-29h0a59.06,59.06,0,0,1,59-59H399a59.06,59.06,0,0,1,59,59V391A59.07,59.07,0,0,1,399,450ZM115,217a29,29,0,0,0-29,29V391a29,29,0,0,0,29,29H399a29,29,0,0,0,29-29V158a29,29,0,0,0-29-29H302.86a29,29,0,0,0-29,29,59.07,59.07,0,0,1-59,59Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121,217a15,15,0,0,1-15-15V63a15,15,0,0,1,15-15H393a15,15,0,0,1,15,15v51a15,15,0,0,1-30,0V78H136V202A15,15,0,0,1,121,217Z\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgFolder);\nexport default __webpack_public_path__ + \"static/media/folder.64ccaf5c7b64068e4634e7ef7d99b265.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgInfo(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1024pt\",\n height: \"1024pt\",\n viewBox: \"0 0 1024 1024\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 512 64 C 759.421875 64 960 264.578125 960 512 C 960 759.421875 759.421875 960 512 960 C 264.578125 960 64 759.421875 64 512 C 64.28125 264.695312 264.695312 64.28125 512 64 M 512 0 C 229.230469 0 0 229.230469 0 512 C 0 794.769531 229.230469 1024 512 1024 C 794.769531 1024 1024 794.769531 1024 512 C 1024 229.230469 794.769531 0 512 0 Z M 512 0 \"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 466.175781 452.800781 C 474.304688 431.679688 463.871094 420.800781 454.59375 420.800781 C 411.648438 420.800781 355.96875 522.816406 335.105469 522.816406 C 327.09375 522.21875 320.699219 515.90625 320 507.902344 C 320 486.785156 371.199219 437.503906 386.175781 422.273438 C 431.886719 374.636719 494.230469 346.503906 560.191406 343.742188 C 610.046875 343.742188 663.425781 374.207031 621.632812 488 L 538.113281 716.800781 C 528.269531 737.5 521.621094 759.578125 518.398438 782.273438 C 517.933594 786.320312 519.164062 790.382812 521.792969 793.496094 C 524.421875 796.609375 528.21875 798.5 532.289062 798.71875 C 567.105469 798.71875 630.910156 699.007812 647.488281 699.007812 C 655.902344 700.515625 661.867188 708.074219 661.375 716.609375 C 661.375 750.59375 525.695312 895.808594 408.511719 895.808594 C 366.71875 895.808594 337.726562 875.902344 337.726562 831.359375 C 344.800781 771.933594 360.742188 713.902344 385.023438 659.199219 Z M 528.832031 221.761719 C 529.769531 169.847656 572.015625 128.199219 623.9375 128 C 645.441406 126.871094 666.417969 134.898438 681.675781 150.09375 C 696.933594 165.289062 705.042969 186.234375 704 207.742188 C 703.882812 232.972656 693.664062 257.097656 675.621094 274.730469 C 657.578125 292.363281 633.222656 302.03125 608 301.566406 C 586.511719 302.890625 565.496094 294.886719 550.332031 279.601562 C 535.171875 264.316406 527.335938 243.238281 528.832031 221.761719 Z M 528.832031 221.761719 \"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgInfo);\nexport default __webpack_public_path__ + \"static/media/info.8e5be02d27e183cb9833fee33f001763.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgInfoSquared(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1024pt\",\n height: \"1024pt\",\n viewBox: \"0 0 1024 1024\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M199 49L801 49C883.8 49 951 116.2 951 199L951 801C951 883.8 883.8 951 801 951L199 951C116.2 951 49 883.8 49 801L49 199C49 116.2 116.2 49 199 49ZM539 168.4L539 168.4C492.7 168.4 454.6 205.5 454.5 251.9 454.5 299.3 492.7 337.6 539 337.6 584.2 337.6 622.4 299.3 622.4 253 622.4 206.7 585.3 168.4 539 168.4ZM658.3 750.1L658.3 750.1C661.8 737.4 651.4 729.3 637.4 733.9 629.3 736.2 622.3 742 614.2 745.4 603.8 750.1 593.4 753.5 583 754.7 570.3 755.8 561 748.9 557.5 736.2 555.2 726.9 554.1 716.5 555.2 707.2 557.5 687.5 562.1 667.8 565.6 648.1 576.1 587.9 587.7 528.8 598.1 468.6 601.5 452.4 603.8 436.2 603.8 420 603.8 400.3 592.3 391 572.6 391L490.4 391 412.8 391C405.9 391 398.9 391 393.2 392.2 381.6 394.5 375.8 400.3 374.6 409.5 373.5 417.6 379.3 426.9 389.7 430.4 398.9 432.7 408.2 433.8 417.4 435 439.4 437.3 446.4 445.5 446.4 467.5 446.4 470.9 445.2 474.4 445.2 477.9 436 530 426.7 583.3 417.4 635.4 412.8 665.5 408.2 695.6 403.6 725.8 397.8 769.8 440.6 811.5 474.2 816.1 495 819.6 514.7 819.6 535.6 819.6 579.6 819.6 616.6 801 646.7 769.8 651.3 765.2 656 757.1 658.3 750.1Z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgInfoSquared);\nexport default __webpack_public_path__ + \"static/media/info_squared.53c3963cc1eb2a3c82dbfc68e6dea174.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgPlus(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 1024,\n height: 1024,\n viewBox: \"0 0 1024 1024\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"icomoon-ignore\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M435.687 435.687h-344.511c-42.149 0-76.378 34.166-76.378 76.313 0 42.44 34.196 76.313 76.378 76.313h344.511v344.511c0 42.149 34.166 76.378 76.313 76.378 42.44 0 76.313-34.196 76.313-76.378v-344.511h344.511c42.149 0 76.378-34.166 76.378-76.313 0-42.44-34.196-76.313-76.378-76.313h-344.511v-344.511c0-42.149-34.166-76.378-76.313-76.378-42.44 0-76.313 34.196-76.313 76.378v344.511z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgPlus);\nexport default __webpack_public_path__ + \"static/media/plus.0edc2fadf4fcbe882193b005fe94425f.svg\";\nexport { ForwardRef as ReactComponent };","const _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgThemeToggle(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: \"28px\",\n height: \"28px\",\n viewBox: \"0 0 28 28\",\n style: {\n enableBackground: \"new 0 0 28 28\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M14,0C6.3,0,0,6.3,0,14c0,7.7,6.3,14,14,14c7.7,0,14-6.3,14-14C28,6.3,21.7,0,14,0z M14,25.2 c-6.2,0-11.2-5-11.2-11.2c0-6.2,5-11.2,11.2-11.2c6.2,0,11.2,5,11.2,11.2C25.2,20.2,20.2,25.2,14,25.2z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M14,22.1c4.5,0,8.1-3.6,8.1-8.1c0-4.5-3.6-8.1-8.1-8.1\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgThemeToggle);\nexport default __webpack_public_path__ + \"static/media/themeToggle.ba55c6797bd268cfaf3235e9c1579ebc.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgTreeStructure(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 256 256\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n fill: \"none\",\n height: 256,\n width: 256\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M156,92V80H144a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h12V164a16,16,0,0,1,16-16h40a16,16,0,0,1,16,16v40a16,16,0,0,1-16,16H172a16,16,0,0,1-16-16V192H144a32.1,32.1,0,0,1-32-32V136H84v8a16,16,0,0,1-16,16H36a16,16,0,0,1-16-16V112A16,16,0,0,1,36,96H68a16,16,0,0,1,16,16v8h28V96a32.1,32.1,0,0,1,32-32h12V52a16,16,0,0,1,16-16h40a16,16,0,0,1,16,16V92a16,16,0,0,1-16,16H172A16,16,0,0,1,156,92Z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgTreeStructure);\nexport default __webpack_public_path__ + \"static/media/tree_structure.fc9a4ed920556460ebc6655847d87ba8.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgWarning(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1024pt\",\n height: \"1024pt\",\n viewBox: \"0 0 1024 1024\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 780.480469 704 L 532.480469 272 C 526.46875 262.316406 515.878906 256.429688 504.480469 256.429688 C 493.082031 256.429688 482.492188 262.316406 476.480469 272 L 228.480469 704 C 219.847656 719.175781 224.976562 738.46875 240 747.359375 C 244.855469 750.238281 250.359375 751.835938 256 752 L 752 752 C 760.625 752.214844 768.972656 748.941406 775.144531 742.914062 C 781.320312 736.890625 784.800781 728.628906 784.800781 720 C 784.851562 714.371094 783.359375 708.835938 780.480469 704 Z M 503.679688 688 C 486.007812 688 471.679688 673.671875 471.679688 656 C 471.679688 638.328125 486.007812 624 503.679688 624 C 521.351562 624 535.679688 638.328125 535.679688 656 C 535.710938 672.949219 522.519531 686.984375 505.601562 688 Z M 535.679688 473.601562 L 519.679688 592 L 487.679688 592 L 471.679688 473.601562 L 471.679688 416 C 471.679688 398.328125 486.007812 384 503.679688 384 C 521.351562 384 535.679688 398.328125 535.679688 416 Z M 535.679688 473.601562 \"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgWarning);\nexport default __webpack_public_path__ + \"static/media/warning.bebe524393244e175b65c871c1527d72.svg\";\nexport { ForwardRef as ReactComponent };","const _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgCommunication(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: \"28px\",\n height: \"28px\",\n viewBox: \"0 0 28 28\",\n style: {\n enableBackground: \"new 0 0 28 28\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M19.6,12.6H8.4C7.6,12.6,7,12,7,11.2s0.6-1.4,1.4-1.4h11.2c0.8,0,1.4,0.6,1.4,1.4S20.4,12.6,19.6,12.6z\"\n })), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M19.6,18.2H8.4c-0.8,0-1.4-0.6-1.4-1.4c0-0.8,0.6-1.4,1.4-1.4h11.2c0.8,0,1.4,0.6,1.4,1.4 C21,17.6,20.4,18.2,19.6,18.2z\"\n })), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M14,28H1.4c-0.5,0-0.9-0.2-1.2-0.6C0,27-0.1,26.5,0.1,26c1-2.4,1.6-5.2,1.3-5.8c-1-1.9-1.5-4-1.5-6.2 C0,6.3,6.3,0,14,0s14,6.3,14,14S21.7,28,14,28z M3.4,25.2H14c6.2,0,11.2-5,11.2-11.2S20.2,2.8,14,2.8S2.8,7.8,2.8,14 c0,1.7,0.4,3.4,1.2,5C4.7,20.5,4.1,23.2,3.4,25.2z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCommunication);\nexport default __webpack_public_path__ + \"static/media/communication.c2b50c32c5aae2846d08d17826fa3f0c.svg\";\nexport { ForwardRef as ReactComponent };","const _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgProject(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: \"28px\",\n height: \"25.5px\",\n viewBox: \"0 0 28 25.5\",\n style: {\n enableBackground: \"new 0 0 28 25.5\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M24.1,25.5H3.9c-2.2,0-3.9-1.8-3.9-3.9V3.9C0,1.8,1.8,0,3.9,0h5.6c0.9,0,1.7,0.4,2.2,1.2l1.7,2.6h10.6 c2.2,0,3.9,1.8,3.9,3.9v13.8C28,23.7,26.2,25.5,24.1,25.5z M3.9,2.8c-0.6,0-1.1,0.5-1.1,1.1v17.6c0,0.6,0.5,1.1,1.1,1.1h20.1 c0.6,0,1.1-0.5,1.1-1.1V7.7c0-0.6-0.5-1.1-1.1-1.1H12.7c-0.5,0-0.9-0.2-1.2-0.6L9.5,2.8H3.9z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgProject);\nexport default __webpack_public_path__ + \"static/media/project.5ec2aa137ec3eff35b5d1605a3f11e2a.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgSchedule(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 19.3,\n height: 19.3,\n viewBox: \"0 0 19.3 19.3\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".schedule_icon_1{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;}.schedule_icon_2{fill:currentColor;}\"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(835.7 -1266.6)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n className: \"schedule_icon_1\",\n d: \"M-829.1,1269.5h-3.8a1.752,1.752,0,0,0-1.7,1.7v12a1.752,1.752,0,0,0,1.7,1.7h13.8a1.752,1.752,0,0,0,1.7-1.7v-12a1.752,1.752,0,0,0-1.7-1.7h-10Z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n className: \"schedule_icon_2\",\n cx: 0.9,\n cy: 0.9,\n r: 0.9,\n transform: \"translate(-827 1276.7)\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n className: \"schedule_icon_2\",\n cx: 0.9,\n cy: 0.9,\n r: 0.9,\n transform: \"translate(-822.4 1276.7)\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n className: \"schedule_icon_2\",\n cx: 0.9,\n cy: 0.9,\n r: 0.9,\n transform: \"translate(-827 1280.3)\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n className: \"schedule_icon_2\",\n cx: 0.9,\n cy: 0.9,\n r: 0.9,\n transform: \"translate(-822.4 1280.3)\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n className: \"schedule_icon_2\",\n cx: 0.9,\n cy: 0.9,\n r: 0.9,\n transform: \"translate(-831.6 1276.7)\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n className: \"schedule_icon_2\",\n cx: 0.9,\n cy: 0.9,\n r: 0.9,\n transform: \"translate(-831.6 1280.3)\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n className: \"schedule_icon_1\",\n x1: 17.2,\n transform: \"translate(-834.7 1273.7)\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n className: \"schedule_icon_1\",\n y2: 1.7,\n transform: \"translate(-831.2 1267.6)\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n className: \"schedule_icon_1\",\n y2: 1.7,\n transform: \"translate(-821 1267.6)\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSchedule);\nexport default __webpack_public_path__ + \"static/media/schedule.65cd4588fb1d964dd2b26a1a11e0bf23.svg\";\nexport { ForwardRef as ReactComponent };","const _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgTesting(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: \"28px\",\n height: \"25.6px\",\n viewBox: \"0 0 28 25.6\",\n style: {\n enableBackground: \"new 0 0 28 25.6\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M27.8,21L20.1,7.1l0-4.3h1.3c0.8,0,1.4-0.6,1.4-1.4S22.2,0,21.4,0h-2.6c0,0,0,0,0,0H6.1 C5.3,0,4.7,0.6,4.7,1.4s0.6,1.4,1.4,1.4h1.4v5L0.2,21C0.1,21.2,0,21.5,0,21.7c0,2.2,1.8,3.9,3.9,3.9h20.2c2.2,0,3.9-1.8,3.9-3.9 C28,21.5,27.9,21.2,27.8,21z M17.3,2.8l0,4.6c0,0.2,0.1,0.5,0.2,0.7l1.9,3.5c-2.7-0.4-4.7,0.4-6.4,0.9c-1.8,0.7-3.2,1.2-5.3,0.5 L10,8.8c0.1-0.2,0.2-0.4,0.2-0.7V2.8H17.3z M24.1,22.8H3.9c-0.5,0-0.9-0.4-1.1-0.8l3.6-6.6c3.4,1.3,5.9,0.7,7.9-0.4 c2.5-1.3,5.4-0.9,6.5-0.6l4.2,7.7C25,22.5,24.6,22.8,24.1,22.8z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgTesting);\nexport default __webpack_public_path__ + \"static/media/testing.99b1b122849db1063a6479cbc3c81288.svg\";\nexport { ForwardRef as ReactComponent };","const _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgTickets(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: \"28px\",\n height: \"28.8px\",\n viewBox: \"0 0 28 28.8\",\n style: {\n enableBackground: \"new 0 0 28 28.8\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M7.4,7.3h1.8c0.3,0,0.5-0.2,0.5-0.5c0-0.9,0.2-1.6,0.5-2.2c0.3-0.6,0.8-1,1.3-1.3c0.6-0.3,1.4-0.5,2.2-0.5 h0.5c0.9,0,1.6,0.2,2.2,0.5c0.6,0.3,1,0.8,1.3,1.3c0.3,0.6,0.5,1.4,0.5,2.2c0,0.3,0.2,0.5,0.5,0.5h1.8c0.3,0,0.5-0.2,0.5-0.5 c0-1.3-0.3-2.5-0.8-3.5c-0.6-1-1.4-1.9-2.4-2.4c-1-0.6-2.2-0.8-3.5-0.8h-0.5c-1.3,0-2.5,0.3-3.5,0.8c-1,0.6-1.9,1.4-2.4,2.4 C7.2,4.3,7,5.5,7,6.8C7,7.1,7.2,7.3,7.4,7.3z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M27.5,14.2h-4.5v-2.7c2.4-0.1,4.4-2.1,4.4-4.6c0-0.3-0.2-0.5-0.5-0.5h-1.9c-0.3,0-0.5,0.2-0.5,0.5 c0,1-0.8,1.8-1.8,1.8H5.2c-1,0-1.8-0.8-1.8-1.8c0-0.3-0.2-0.5-0.5-0.5H1c-0.3,0-0.5,0.2-0.5,0.5c0,2.5,2,4.5,4.4,4.6v2.7H0.5 c-0.3,0-0.5,0.2-0.5,0.5v1.8c0,0.3,0.2,0.5,0.5,0.5h4.5v2.8c0,0.2,0,0.3,0,0.5c-2.2,1-3.7,3.3-3.7,5.7c0,0.3,0.2,0.5,0.5,0.5h1.8 c0.3,0,0.5-0.2,0.5-0.5c0-1.2,0.6-2.3,1.5-2.9c0.2,0.5,0.4,0.9,0.6,1.3c0.8,1.3,1.9,2.5,3.3,3.3c1.4,0.8,3,1.2,4.6,1.2 c1.6,0,3.2-0.4,4.6-1.2c1.3-0.8,2.5-1.9,3.3-3.3c0.2-0.4,0.5-0.9,0.6-1.3c1,0.7,1.5,1.8,1.5,2.9c0,0.3,0.2,0.5,0.5,0.5h1.8 c0.3,0,0.5-0.2,0.5-0.5c0-2.5-1.4-4.7-3.7-5.7c0-0.2,0-0.3,0-0.5v-2.8h4.5c0.3,0,0.5-0.2,0.5-0.5v-1.8C28,14.4,27.8,14.2,27.5,14.2z M20.2,11.4v8.2c0,1.1-0.3,2.2-0.8,3.1c-0.5,0.9-1.3,1.7-2.2,2.2c-1.9,1.1-4.4,1.1-6.3,0c-0.9-0.5-1.7-1.3-2.2-2.2 c-0.6-0.9-0.8-2-0.8-3.1v-8.2H20.2z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgTickets);\nexport default __webpack_public_path__ + \"static/media/tickets.7863a0d89b86afd1e3a917935e0f0ea9.svg\";\nexport { ForwardRef as ReactComponent };","const _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgTimeTravel(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: \"28px\",\n height: \"28px\",\n viewBox: \"0 0 28 28\",\n style: {\n enableBackground: \"new 0 0 28 28\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M14,0C6.3,0,0,6.3,0,14c0,7.7,6.3,14,14,14c7.7,0,14-6.3,14-14C28,6.3,21.7,0,14,0z M14,25.2 c-6.2,0-11.2-5-11.2-11.2c0-6.2,5-11.2,11.2-11.2c6.2,0,11.2,5,11.2,11.2C25.2,20.2,20.2,25.2,14,25.2z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M18.1,12.8h-2.9V7.7c0-0.8-0.6-1.4-1.4-1.4s-1.4,0.6-1.4,1.4v6.5c0,0.8,0.6,1.4,1.4,1.4h4.3 c0.8,0,1.4-0.6,1.4-1.4C19.5,13.4,18.9,12.8,18.1,12.8z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgTimeTravel);\nexport default __webpack_public_path__ + \"static/media/time_travel.f4fd28328125c6602cd5bdf9fc4b9fd9.svg\";\nexport { ForwardRef as ReactComponent };","const _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgRisk(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: \"28px\",\n height: \"25.6px\",\n viewBox: \"0 0 28 25.6\",\n style: {\n enableBackground: \"new 0 0 28 25.6\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M27.3,17.9L18.5,2.6c-1.4-2.5-4.6-3.3-7-1.9C10.6,1.1,10,1.8,9.5,2.6L0.7,17.9c-0.7,1.2-0.9,2.6-0.5,3.9 s1.2,2.5,2.4,3.1c0.8,0.5,1.7,0.7,2.6,0.7h17.6c0,0,0,0,0,0c1.9,0,3.6-1,4.5-2.6C28.2,21.5,28.2,19.5,27.3,17.9z M24.9,21.6 L24.9,21.6c-0.4,0.7-1.2,1.2-2.1,1.2c0,0,0,0,0,0H5.2c0,0,0,0,0,0c-0.8,0-1.6-0.4-2-1.2c-0.4-0.7-0.4-1.6,0-2.4L12,4 c0.3-0.5,0.8-0.9,1.4-1.1c0.2-0.1,0.4-0.1,0.6-0.1c0.4,0,0.8,0.1,1.2,0.3C15.5,3.3,15.8,3.6,16,4l8.8,15.3 C25.3,20,25.3,20.9,24.9,21.6z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M14,17.6L14,17.6c-0.4,0-0.7,0.2-1,0.4c-0.3,0.3-0.4,0.6-0.4,1c0,0.7,0.6,1.3,1.3,1.3c0.4,0,0.7-0.2,1-0.4 c0.3-0.3,0.4-0.6,0.4-1C15.3,18.2,14.7,17.6,14,17.6z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M13.7,8.4L13.7,8.4c-0.7,0.2-1.1,0.8-1.1,1.5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.6c0,0.8,0.1,1.6,0.1,2.4 c0,0.8,0.1,1.5,0.1,2.3c0,0.5,0.5,1,1,1c0,0,0,0,0,0c0.6,0,1-0.4,1-1c0-0.3,0-0.6,0-0.9c0-0.6,0.1-1.2,0.1-1.7 c0-0.4,0.1-0.9,0.1-1.3c0-0.3,0-0.7,0.1-1c0-0.3,0-0.7,0.1-1c0-0.2,0-0.5-0.1-0.7C15,8.6,14.3,8.3,13.7,8.4z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgRisk);\nexport default __webpack_public_path__ + \"static/media/risk.91cf5cb68cb5536a542707cdfedb42fa.svg\";\nexport { ForwardRef as ReactComponent };","const _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgAccount(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: \"28px\",\n height: \"28px\",\n viewBox: \"0 0 28 28\",\n style: {\n enableBackground: \"new 0 0 28 28\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M27.8,26c-3.1-5.2-10.8-5.1-13.4-5.1l-1.2,0c-2.5,0-10-0.1-13.1,5.1c-0.4,0.6-0.2,1.4,0.5,1.8 C0.9,27.9,1.1,28,1.3,28c0.5,0,0.9-0.2,1.1-0.7c2.3-3.9,8.7-3.8,10.8-3.8l1.2,0c2.1,0,8.7-0.1,11,3.8c0.2,0.4,0.7,0.7,1.1,0.7 c0.2,0,0.5-0.1,0.7-0.2C28,27.5,28.2,26.6,27.8,26z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M14,17.8c4.9,0,9-4,9-8.9C23,4,18.9,0,14,0C9.1,0,5,4,5,8.9C5,13.8,9.1,17.8,14,17.8z M7.7,8.9 c0-3.5,2.8-6.3,6.3-6.3c3.5,0,6.3,2.8,6.3,6.3c0,3.5-2.8,6.3-6.3,6.3C10.5,15.2,7.7,12.3,7.7,8.9z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgAccount);\nexport default __webpack_public_path__ + \"static/media/account.76fa9b3273a109e7d7a0402b91e765ec.svg\";\nexport { ForwardRef as ReactComponent };","const _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgConfiguration(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: \"28px\",\n height: \"28px\",\n viewBox: \"0 0 28 28\",\n style: {\n enableBackground: \"new 0 0 28 28\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M14,9.1c-2.7,0-4.9,2.2-4.9,4.9c0,2.7,2.2,4.9,4.9,4.9s4.9-2.2,4.9-4.9C18.9,11.3,16.7,9.1,14,9.1z M16.9,14 c0,1.6-1.3,2.9-2.9,2.9c-1.6,0-2.9-1.3-2.9-2.9s1.3-2.9,2.9-2.9C15.6,11.1,16.9,12.4,16.9,14z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M25.3,10c-0.2-0.4-0.3-0.9-0.5-1.3c0.9-1.2,0.8-2.9-0.3-4l-1.4-1.4C22,2.2,20.2,2.1,19,3.1 c-0.3-0.1-0.6-0.3-1-0.4C17.8,1.1,16.5,0,15,0h-2c-1.6,0-2.8,1.1-3,2.7C9.6,2.8,9.2,3,8.9,3.1c-1.2-1-3-1-4.2,0.2L3.3,4.7 C2.2,5.8,2.1,7.7,3.1,8.9C3,9.2,2.8,9.6,2.7,10C1.2,10.2,0,11.5,0,13v2c0,1.6,1.2,2.8,2.7,3c0.1,0.3,0.3,0.7,0.4,1 c-1,1.2-0.9,3,0.2,4.1l1.4,1.4c1.1,1.1,2.8,1.2,4,0.3c0.4,0.2,0.8,0.4,1.3,0.5c0.2,1.5,1.5,2.7,3,2.7h2c1.6,0,2.8-1.1,3-2.7 c0.4-0.1,0.8-0.3,1.2-0.5c1.2,0.9,2.9,0.7,3.9-0.3l1.4-1.4c1.1-1.1,1.2-2.7,0.3-3.9c0.2-0.4,0.3-0.8,0.5-1.1c1.5-0.2,2.7-1.5,2.7-3 v-2C28,11.5,26.9,10.2,25.3,10z M22.8,20.1l0.2,0.2c0.4,0.4,0.4,0.9,0,1.3L21.6,23c-0.4,0.4-0.9,0.4-1.3,0l-0.2-0.2 c-0.3-0.3-0.9-0.4-1.4-0.2c-0.6,0.3-1.3,0.6-2,0.8c-0.5,0.1-0.8,0.6-0.8,1.1v0.4c0,0.5-0.4,0.9-0.9,0.9h-2c-0.5,0-0.9-0.4-0.9-0.9 v-0.4c0-0.5-0.3-0.9-0.8-1.1c-0.7-0.2-1.4-0.5-2.1-0.9c-0.2-0.1-0.4-0.2-0.6-0.2c-0.3,0-0.6,0.1-0.8,0.3L7.5,23 c-0.4,0.4-0.9,0.4-1.3,0l-1.4-1.4c-0.4-0.4-0.4-0.9,0-1.3L5.1,20c0.3-0.3,0.4-0.9,0.2-1.3C5,18,4.7,17.4,4.5,16.8 c-0.1-0.5-0.6-0.8-1.1-0.8H3.1c-0.5,0-0.9-0.4-0.9-0.9v-2c0-0.5,0.4-0.9,0.9-0.9h0.4c0.5,0,0.9-0.3,1.1-0.8c0.2-0.7,0.5-1.4,0.8-2 c0.2-0.5,0.2-1-0.2-1.4L4.8,7.5C4.6,7.3,4.5,7.1,4.5,6.9c0-0.2,0.1-0.5,0.3-0.7l1.4-1.4c0.2-0.2,0.4-0.3,0.7-0.3 c0.2,0,0.5,0.1,0.7,0.3l0.4,0.4c0.3,0.3,0.9,0.4,1.4,0.2c0.6-0.3,1.3-0.6,2-0.8c0.5-0.1,0.8-0.6,0.8-1.1V3.1c0-0.5,0.4-0.9,0.9-0.9 h2c0.5,0,0.9,0.4,0.9,0.9v0.4c0,0.5,0.3,0.9,0.8,1.1C17.4,4.7,18,5,18.6,5.3c0.5,0.2,1,0.2,1.3-0.2l0.3-0.3c0.2-0.2,0.4-0.3,0.7-0.3 c0.2,0,0.5,0.1,0.7,0.3L23,6.2c0.2,0.2,0.3,0.4,0.3,0.7c0,0.2-0.1,0.5-0.3,0.7l-0.2,0.2c-0.4,0.4-0.4,0.9-0.2,1.4 c0.4,0.7,0.7,1.4,0.9,2.1c0.1,0.5,0.6,0.8,1.1,0.8h0.4c0.5,0,0.9,0.4,0.9,0.9v2c0,0.5-0.4,0.9-0.9,0.9h-0.4c-0.5,0-0.9,0.3-1.1,0.8 c-0.2,0.7-0.5,1.4-0.8,2C22.4,19.2,22.5,19.8,22.8,20.1z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgConfiguration);\nexport default __webpack_public_path__ + \"static/media/configuration.856269a9e1530c910b5eda10b73aa072.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgCompanyInfo(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 29.286,\n height: 29.279,\n viewBox: \"0 0 29.286 29.279\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"info\",\n transform: \"translate(-768.35 -326.931)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_176\",\n \"data-name\": \"Path 176\",\n d: \"M783.909,356.21h-1.831a1.71,1.71,0,0,0-.22-.047,13.449,13.449,0,0,1-4.5-1.086,14.452,14.452,0,0,1-8.783-10.986c-.1-.53-.151-1.071-.224-1.608v-1.831c.017-.092.037-.184.051-.277.109-.705.168-1.421.332-2.113a14.642,14.642,0,0,1,28.895,2.726,14.655,14.655,0,0,1-12.11,15C784.984,356.082,784.445,356.137,783.909,356.21Zm-13.271-14.654a12.356,12.356,0,1,0,12.381-12.342A12.355,12.355,0,0,0,770.638,341.556Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_177\",\n \"data-name\": \"Path 177\",\n d: \"M947.325,492.117c0,1.219,0,2.439,0,3.657a1.135,1.135,0,0,1-.884,1.122,1.115,1.115,0,0,1-1.255-.571,1.348,1.348,0,0,1-.141-.573q-.014-3.658,0-7.316a1.142,1.142,0,1,1,2.284-.007C947.33,489.659,947.325,490.889,947.325,492.117Z\",\n transform: \"translate(-163.187 -148.088)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_178\",\n \"data-name\": \"Path 178\",\n d: \"M939.81,430.16a1.544,1.544,0,0,1,3.087.018,1.544,1.544,0,1,1-3.087-.018Z\",\n transform: \"translate(-158.36 -93.929)\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCompanyInfo);\nexport default __webpack_public_path__ + \"static/media/company_info.687ee92edb3397b4a36ffc096ef7a3f2.svg\";\nexport { ForwardRef as ReactComponent };","const _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgScope(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: \"28px\",\n height: \"28px\",\n viewBox: \"0 0 28 28\",\n style: {\n enableBackground: \"new 0 0 28 28\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M14,0C6.3,0,0,6.3,0,14c0,7.7,6.3,14,14,14c7.7,0,14-6.3,14-14C28,6.3,21.7,0,14,0z M14,25.2 c-6.2,0-11.2-5-11.2-11.2c0-6.2,5-11.2,11.2-11.2c6.2,0,11.2,5,11.2,11.2C25.2,20.2,20.2,25.2,14,25.2z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M14,9.3c-2.6,0-4.7,2.1-4.7,4.7c0,2.6,2.1,4.7,4.7,4.7c2.6,0,4.7-2.1,4.7-4.7C18.7,11.4,16.6,9.3,14,9.3z M14,16c-1.1,0-2-0.9-2-2c0-1.1,0.9-2,2-2c1.1,0,2,0.9,2,2C16,15.1,15.1,16,14,16z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgScope);\nexport default __webpack_public_path__ + \"static/media/scope.c25f8928c607dfde2efd81caa918be17.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgSettings(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 27.493,\n height: 28.3,\n viewBox: \"0 0 27.493 28.3\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"settings-svgrepo-com\",\n transform: \"translate(-6.85)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_469\",\n \"data-name\": \"Group 469\",\n transform: \"translate(6.85)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_183\",\n \"data-name\": \"Path 183\",\n d: \"M176.982,13.794V.8a.8.8,0,0,0-1.591,0v13a4.039,4.039,0,0,0,0,7.919V27.5a.8.8,0,1,0,1.591,0V21.713a4.039,4.039,0,0,0,0-7.919Zm-.8,6.4a2.445,2.445,0,1,1,2.445-2.445A2.447,2.447,0,0,1,176.186,20.2Z\",\n transform: \"translate(-162.41 0)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_184\",\n \"data-name\": \"Path 184\",\n d: \"M11.682,7.124V.8a.8.8,0,0,0-1.591,0V7.124a4.039,4.039,0,0,0,0,7.919V27.5a.8.8,0,1,0,1.591,0V15.037a4.036,4.036,0,0,0,0-7.913Zm-.8,6.4a2.445,2.445,0,1,1,2.445-2.445A2.447,2.447,0,0,1,10.886,13.528Z\",\n transform: \"translate(-6.85 0)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_185\",\n \"data-name\": \"Path 185\",\n d: \"M341.282,7.124V.8a.8.8,0,0,0-1.591,0V7.124a4.039,4.039,0,0,0,0,7.919V27.5a.8.8,0,1,0,1.591,0V15.037a4.036,4.036,0,0,0,0-7.913Zm-.8,6.4a2.445,2.445,0,1,1,2.445-2.445A2.447,2.447,0,0,1,340.486,13.528Z\",\n transform: \"translate(-317.029 0)\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSettings);\nexport default __webpack_public_path__ + \"static/media/settings.e5f0e8ac939e1c951c0c495aac39f15d.svg\";\nexport { ForwardRef as ReactComponent };","const _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgFinance(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: \"28px\",\n height: \"32.4px\",\n viewBox: \"0 0 28 32.4\",\n style: {\n enableBackground: \"new 0 0 28 32.4\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M16.5,20.3c-0.4-0.4-1-0.7-1.6-0.7c0,0,0,0,0,0h-1.4c-0.4,0-0.8-0.3-0.8-0.8c0-0.4,0.3-0.8,0.8-0.8h2.5 c0.4,0,0.8-0.3,0.8-0.7c0-0.2-0.1-0.4-0.2-0.5c-0.1-0.1-0.3-0.2-0.5-0.2c0,0,0,0-0.1,0h-1v-0.7c0-0.2-0.1-0.4-0.2-0.5 c-0.1-0.2-0.3-0.2-0.5-0.2c-0.4,0-0.8,0.3-0.8,0.7c0,0,0,0,0,0.1v0.7c-1.2,0-2.2,1.1-2.2,2.3c0,1.3,1,2.3,2.3,2.3h1.4 c0.4,0,0.8,0.3,0.8,0.8c0,0.4-0.3,0.8-0.8,0.8h-2.5c-0.2,0-0.4,0.1-0.5,0.2c-0.2,0.1-0.2,0.3-0.2,0.5c0,0.2,0.1,0.4,0.2,0.5 c0.1,0.2,0.3,0.2,0.5,0.2c0,0,0,0,0.1,0h1.1V25c0,0.4,0.3,0.8,0.7,0.8c0,0,0,0,0,0c0.2,0,0.4-0.1,0.5-0.2c0.1-0.1,0.2-0.3,0.2-0.5 c0,0,0,0,0-0.1v-0.7c0.6,0,1.2-0.3,1.6-0.7c0.4-0.4,0.7-1,0.7-1.6C17.2,21.3,16.9,20.7,16.5,20.3z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M26.4,18.1L26.4,18.1c-0.9-2-2-3.9-3.5-5.5c-1.2-1.4-2.5-2.7-4-3.8l3-5.6c0.3-0.6,0.2-1.3-0.2-1.7 c-0.8-0.9-2-1.4-3.3-1.5c-1,0.1-1.9,0.3-2.8,0.7c-0.4,0.2-0.9,0.3-1.4,0.4c-1.3-0.6-2.7-0.9-4.1-1c-1.7,0-3.3,0.8-4.4,2 C5.4,2.7,5.3,3.4,5.7,4l3.2,4.8C7.5,9.9,6.2,11.2,5,12.6c-1.4,1.7-2.6,3.5-3.5,5.5C0.5,20.5,0,23.1,0,25.7c0,3.7,3,6.7,6.7,6.7h14.6 c3.7,0,6.7-3,6.7-6.7C28,23.1,27.5,20.5,26.4,18.1z M11.3,10.6h5.4c1.5,1.1,2.9,2.4,4.1,3.9c2.7,3.1,4.3,7.1,4.3,11.2 c0,2.1-1.7,3.8-3.8,3.8l-14.6,0c-2.1,0-3.8-1.7-3.8-3.8c0.1-4.1,1.6-8.1,4.3-11.2C8.4,13,9.8,11.7,11.3,10.6z M16.3,7.7h-4.6 L8.8,3.4C9.2,3.2,9.7,3,10.2,3c1.1,0.1,2.1,0.3,3.1,0.8C13.7,3.9,14.1,4,14.5,4c0.8-0.1,1.7-0.3,2.4-0.7c0.5-0.3,1.1-0.4,1.6-0.5 c0.1,0,0.2,0,0.3,0L16.3,7.7z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgFinance);\nexport default __webpack_public_path__ + \"static/media/finance.027dd98e0e9ec4b70ff24f6a30aac102.svg\";\nexport { ForwardRef as ReactComponent };","const _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgTraining(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: \"28px\",\n height: \"31.1px\",\n viewBox: \"0 0 28 31.1\",\n style: {\n enableBackground: \"new 0 0 28 31.1\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M26.6,24.9c0.8,0,1.4-0.6,1.4-1.4v-17c0-1.9,0-3-0.5-4c-0.4-0.9-1.1-1.6-2-2c-1-0.5-2-0.5-4-0.5H6.5 c-1.9,0-3,0-4,0.5c-0.9,0.4-1.6,1.1-2,2C0,3.5,0,4.5,0,6.5v20.1c0,2.5,2,4.6,4.6,4.6h22c0.8,0,1.4-0.6,1.4-1.4 c0-0.8-0.6-1.4-1.4-1.4h-0.2v-3.5H26.6z M2.8,6.5c0-1.4,0-2.3,0.2-2.7C3.2,3.5,3.5,3.2,3.8,3C4.2,2.8,5,2.8,6.5,2.8h15.1 c1.4,0,2.3,0,2.7,0.2c0.3,0.2,0.6,0.4,0.8,0.8c0.2,0.4,0.2,1.2,0.2,2.7V22H4.6c-0.6,0-1.2,0.1-1.7,0.3V6.5z M23.6,28.3h-19 c-1,0-1.7-0.8-1.7-1.7c0-1,0.8-1.7,1.7-1.7h19V28.3z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M9.3,10.6h9.4c0.8,0,1.4-0.6,1.4-1.4s-0.6-1.4-1.4-1.4H9.3c-0.8,0-1.4,0.6-1.4,1.4S8.5,10.6,9.3,10.6z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {},\n d: \"M9.3,16.9h9.4c0.8,0,1.4-0.6,1.4-1.4c0-0.8-0.6-1.4-1.4-1.4H9.3c-0.8,0-1.4,0.6-1.4,1.4 C7.9,16.3,8.5,16.9,9.3,16.9z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgTraining);\nexport default __webpack_public_path__ + \"static/media/training.0d6f8ec8a72b20b278edaebd9e751b7d.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgMenuExpander(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 1024,\n height: 1024,\n viewBox: \"0 0 1024 1024\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"icomoon-ignore\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M692 992l120-120-360-360 360-360-120-120-480 480z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenuExpander);\nexport default __webpack_public_path__ + \"static/media/menu_expander.7816300ff49ca3099928406a4be12a64.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgCreateProject(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24.617,\n height: 27.229,\n viewBox: \"0 0 24.617 27.229\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_497\",\n \"data-name\": \"Group 497\",\n transform: \"translate(-309.5 -568.066)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"XMLID_458_\",\n transform: \"translate(319.466 579.042)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M138.847,129.957a8.127,8.127,0,1,0-.147-9.868m6.525-.975a5.8,5.8,0,1,1-5.8,5.8A5.807,5.807,0,0,1,145.225,119.114Z\",\n transform: \"translate(-138.7 -116.8)\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"XMLID_462_\",\n transform: \"translate(322.508 583.677)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M179.161,181.344h1.161V182.5a1.161,1.161,0,0,0,2.322,0v-1.161H183.8a1.161,1.161,0,0,0,0-2.322h-1.161v-1.161a1.161,1.161,0,1,0-2.322,0v1.161h-1.161a1.161,1.161,0,1,0,0,2.322Z\",\n transform: \"translate(-178 -176.7)\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_467\",\n \"data-name\": \"Group 467\",\n transform: \"translate(317.833 579.003)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M125.734,132.569a8.134,8.134,0,1,1,8.134-8.134A8.144,8.144,0,0,1,125.734,132.569Zm0-14.411a6.277,6.277,0,1,0,6.277,6.277A6.286,6.286,0,0,0,125.734,118.158Z\",\n transform: \"translate(-117.6 -116.3)\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_468\",\n \"data-name\": \"Group 468\",\n transform: \"translate(310 568.566)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_182\",\n \"data-name\": \"Path 182\",\n d: \"M0,2.92A32.794,32.794,0,0,1,5.39,2.5c2.773,0,4.807.644,6.1,1.8a5.842,5.842,0,0,1,1.905,4.55A6.415,6.415,0,0,1,11.716,13.5a9.016,9.016,0,0,1-6.645,2.387,9.555,9.555,0,0,1-2.258-.2V24.4H0ZM2.807,13.409a9.365,9.365,0,0,0,2.326.224c3.39,0,5.451-1.648,5.451-4.644,0-2.875-2.034-4.258-5.133-4.258a11.788,11.788,0,0,0-2.644.224v8.455Z\",\n transform: \"translate(0 -2.5)\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCreateProject);\nexport default __webpack_public_path__ + \"static/media/create_project.aaf5de167f88959d3334b44b3a012524.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgCreateUser(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 27.249,\n height: 27.041,\n viewBox: \"0 0 27.249 27.041\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_496\",\n \"data-name\": \"Group 496\",\n transform: \"translate(-478.527 -404.305)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"XMLID_455_\",\n transform: \"translate(478.527 403.055)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"XMLID_458_\",\n d: \"M1.246,130.873H11.68a8.723,8.723,0,1,0-.157-10.595A9.553,9.553,0,0,0,0,129.627,1.246,1.246,0,0,0,1.246,130.873Zm17.28-11.631a6.231,6.231,0,1,1-6.231,6.231A6.238,6.238,0,0,1,18.526,119.242Z\",\n transform: \"translate(0 -105.905)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"XMLID_461_\",\n d: \"M57.462,1.25a5.213,5.213,0,1,0,5.213,5.213A5.219,5.219,0,0,0,57.462,1.25Z\",\n transform: \"translate(-47.908)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"XMLID_462_\",\n d: \"M179.246,181.735h1.246v1.246a1.246,1.246,0,0,0,2.492,0v-1.246h1.246a1.246,1.246,0,0,0,0-2.492h-1.246V178a1.246,1.246,0,0,0-2.492,0v1.246h-1.246a1.246,1.246,0,0,0,0,2.492Z\",\n transform: \"translate(-163.213 -160.92)\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCreateUser);\nexport default __webpack_public_path__ + \"static/media/create_user.2f9ef5db1f28ea0a34ae771c977b383a.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgCreatePartner(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 38.436,\n height: 27.295,\n viewBox: \"0 0 38.436 27.295\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_498\",\n \"data-name\": \"Group 498\",\n transform: \"translate(-561.735 -568.305)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"add_partners\",\n transform: \"translate(-103.465 190.805)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"XMLID_455_\",\n transform: \"translate(676.14 377.508)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"XMLID_458_\",\n d: \"M796.957,507.351h10.529a8.8,8.8,0,1,0-.159-10.688,9.868,9.868,0,0,0-1.987-.21,9.653,9.653,0,0,0-9.641,9.641A1.256,1.256,0,0,0,796.957,507.351Zm17.437-11.736a6.287,6.287,0,1,1-6.287,6.287A6.29,6.29,0,0,1,814.394,495.615Z\",\n transform: \"translate(-795.7 -483.418)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"XMLID_461_\",\n d: \"M853.165,377.6a5.26,5.26,0,1,0,5.264,5.265A5.268,5.268,0,0,0,853.165,377.6Z\",\n transform: \"translate(-843.524 -377.6)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"XMLID_462_\",\n d: \"M974.957,558.13h1.257v1.257a1.257,1.257,0,1,0,2.515,0V558.13h1.257a1.257,1.257,0,1,0,0-2.515H978.73v-1.258a1.257,1.257,0,0,0-2.515,0v1.258h-1.257a1.257,1.257,0,1,0,0,2.515Z\",\n transform: \"translate(-958.778 -538.388)\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n id: \"XMLID_4_\",\n d: \"M676.827,533.11a9.867,9.867,0,0,0-1.987-.21,9.653,9.653,0,0,0-9.641,9.64,1.256,1.256,0,0,0,1.257,1.258h10.529m.62-5.441\",\n transform: \"translate(0 -142.373)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"XMLID_3_\",\n d: \"M722.665,377.5a5.26,5.26,0,1,0,5.265,5.265A5.274,5.274,0,0,0,722.665,377.5Z\",\n transform: \"translate(-47.824)\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCreatePartner);\nexport default __webpack_public_path__ + \"static/media/create_partner.3cd4740942879400180ec1a74f254565.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgHelp(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 10.789,\n height: 19.64,\n viewBox: \"0 0 10.789 19.64\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_491\",\n \"data-name\": \"Group 491\",\n transform: \"translate(-1852.326 -142.673)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_213\",\n \"data-name\": \"Path 213\",\n d: \"M9,9.854c0-4.638,7.289-4.638,7.289,0,0,3.313-3.313,2.65-3.313,6.626\",\n transform: \"translate(1845.076 138.048)\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 3.5\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_214\",\n \"data-name\": \"Path 214\",\n d: \"M12,18.014,12.013,18\",\n transform: \"translate(1846.052 141.828)\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 3.5\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgHelp);\nexport default __webpack_public_path__ + \"static/media/help.49aa121e2db1d309270c7434eb3c4ec3.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgUserList(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 27.249,\n height: 27.041,\n viewBox: \"0 0 27.249 27.041\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_495\",\n \"data-name\": \"Group 495\",\n transform: \"translate(-310.527 -404.305)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"XMLID_458_\",\n d: \"M1.246,130.873H11.68a8.723,8.723,0,1,0-.157-10.595A9.553,9.553,0,0,0,0,129.627,1.246,1.246,0,0,0,1.246,130.873Zm17.28-11.631a6.231,6.231,0,1,1-6.231,6.231A6.238,6.238,0,0,1,18.526,119.242Z\",\n transform: \"translate(310.527 297.15)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"XMLID_461_\",\n d: \"M57.462,1.25a5.213,5.213,0,1,0,5.213,5.213A5.219,5.219,0,0,0,57.462,1.25Z\",\n transform: \"translate(262.618 403.055)\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_27\",\n \"data-name\": \"Line 27\",\n x1: 1,\n y2: 1,\n transform: \"translate(326.5 424.5)\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeWidth: 2\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Ellipse_3\",\n \"data-name\": \"Ellipse 3\",\n transform: \"translate(327 419)\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 1.5\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 3,\n cy: 3,\n r: 3,\n stroke: \"none\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 3,\n cy: 3,\n r: 2.25,\n fill: \"none\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgUserList);\nexport default __webpack_public_path__ + \"static/media/user_list.d04b1a43b452e31977553b1d60485cfa.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgHamburger(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n height: \"32px\",\n id: \"Layer_1\",\n style: {\n enableBackground: \"new 0 0 32 32\"\n },\n viewBox: \"0 0 32 32\",\n width: \"32px\",\n xmlSpace: \"preserve\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4,10h24c1.104,0,2-0.896,2-2s-0.896-2-2-2H4C2.896,6,2,6.896,2,8S2.896,10,4,10z M28,14H4c-1.104,0-2,0.896-2,2 s0.896,2,2,2h24c1.104,0,2-0.896,2-2S29.104,14,28,14z M28,22H4c-1.104,0-2,0.896-2,2s0.896,2,2,2h24c1.104,0,2-0.896,2-2 S29.104,22,28,22z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgHamburger);\nexport default __webpack_public_path__ + \"static/media/hamburger.b778cb1777612594612f0bf2e4ff8477.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgClock(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: 24,\n height: 24,\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"m24 12c0 6.6-5.4 12-12 12-6.6 0-12-5.4-12-12 0-6.6 5.4-12 12-12 6.6 0 12 5.4 12 12zm-22 0c0 5.5 4.5 10 10 10 5.5 0 10-4.5 10-10 0-5.5-4.5-10-10-10-5.5 0-10 4.5-10 10zm11-8v7h5v2h-7v-9z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgClock);\nexport default __webpack_public_path__ + \"static/media/clock.3ba4fae7fa6cec7ea30d7c93b22b1663.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgArrowLeftNew(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"800px\",\n height: \"800px\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M604.7 759.2l61.8-61.8L481.1 512l185.4-185.4-61.8-61.8L357.5 512z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowLeftNew);\nexport default __webpack_public_path__ + \"static/media/arrow_left_new.b947315fe82f13a0b61046dce4350699.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgArrowRightNew(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: \"800px\",\n height: \"800px\",\n viewBox: \"-559 141 800 800\",\n style: {\n enableBackground: \"new -559 141 800 800\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M-231.4,347.9l-48.3,48.3L-134.9,541l-144.8,144.8l48.3,48.3L-38.3,541L-231.4,347.9z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowRightNew);\nexport default __webpack_public_path__ + \"static/media/arrow_right_new.d1a17fc5c64627899c4917ff735b6f9a.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgArrowDoubleLeftNew(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: \"800px\",\n height: \"800px\",\n viewBox: \"-559 141 800 800\",\n style: {\n enableBackground: \"new -559 141 800 800\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.9,734.1l48.3-48.3L-93.6,541L51.2,396.2L2.9,347.9L-190.2,541L2.9,734.1z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M-176.1,734.1l48.3-48.3L-272.6,541l144.8-144.8l-48.3-48.3L-369.2,541L-176.1,734.1z\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowDoubleLeftNew);\nexport default __webpack_public_path__ + \"static/media/arrow_double_left_new.b1314411013773effc29ec76643c893b.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgArrowDoubleRightNew(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: \"800px\",\n height: \"800px\",\n viewBox: \"-559 141 800 800\",\n style: {\n enableBackground: \"new -559 141 800 800\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M-320.9,347.9l-48.3,48.3L-224.4,541l-144.8,144.8l48.3,48.3L-127.8,541L-320.9,347.9z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M-141.9,347.9l-48.3,48.3L-45.4,541l-144.8,144.8l48.3,48.3L51.2,541L-141.9,347.9z\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowDoubleRightNew);\nexport default __webpack_public_path__ + \"static/media/arrow_double_right_new.d3d73e377c72b347eed6281709bf4bbe.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgDiagram(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"diagram conncection\",\n id: \"diagram_conncection\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18,7h4a1,1,0,0,0,1-1V2a1,1,0,0,0-1-1H18a1,1,0,0,0-1,1V3H13a1,1,0,0,0-1,1v7H9V9A1,1,0,0,0,8,8H2A1,1,0,0,0,1,9v6a1,1,0,0,0,1,1H8a1,1,0,0,0,1-1V13h3v7a1,1,0,0,0,1,1h4v1a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V18a1,1,0,0,0-1-1H18a1,1,0,0,0-1,1v1H14V13h3v1a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V10a1,1,0,0,0-1-1H18a1,1,0,0,0-1,1v1H14V5h3V6A1,1,0,0,0,18,7ZM7,14H3V10H7Zm12,5h2v2H19Zm0-8h2v2H19Zm0-8h2V5H19Z\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgDiagram);\nexport default __webpack_public_path__ + \"static/media/diagram.c9d29a3ce4cd7b1382ad69f17a161eff.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgLock(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 11.402,\n height: 11.402,\n viewBox: \"0 0 11.402 11.402\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".a,.b{fill:none;stroke:#909090;}.b{stroke-linecap:round;}\"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-1.5 -1.5)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n className: \"a\",\n d: \"M2,13.121c0-1.471,0-2.207.457-2.664S3.65,10,5.121,10H9.282c1.471,0,2.207,0,2.664.457s.457,1.193.457,2.664,0,2.207-.457,2.664-1.193.457-2.664.457H5.121c-1.471,0-2.207,0-2.664-.457S2,14.592,2,13.121Z\",\n transform: \"translate(0 -3.839)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"b\",\n d: \"M12,14v2.08\",\n transform: \"translate(-4.799 -5.759)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"b\",\n d: \"M6,6.161V5.121a3.121,3.121,0,1,1,6.241,0v1.04\",\n transform: \"translate(-1.92)\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLock);\nexport default __webpack_public_path__ + \"static/media/lock.c25e0acdfd19730c25ae337f94d91b70.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _path;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgAttachment(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 11.965,\n height: 11.8,\n viewBox: \"0 0 11.965 11.8\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".a{fill:none;stroke:#d8d8d8;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.8px;}\"))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n className: \"a\",\n d: \"M14,8.157l-5.2,4.9a3.544,3.544,0,0,1-4.8,0A3.077,3.077,0,0,1,4,8.53l5.2-4.9a2.363,2.363,0,0,1,3.2,0,2.051,2.051,0,0,1,0,3.021l-5.206,4.9a1.181,1.181,0,0,1-1.6,0,1.026,1.026,0,0,1,0-1.51l4.8-4.526\",\n transform: \"translate(-2.6 -2.6)\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgAttachment);\nexport default __webpack_public_path__ + \"static/media/attachment.bec039455f7d9a0a4bb524cdae3fd023.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgLink(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 11.911,\n height: 11.588,\n viewBox: \"0 0 11.911 11.588\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-900.338 -435.412)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.564,8.471a2.219,2.219,0,0,1,.163-3.116L12.342,2.73a2.2,2.2,0,0,1,3.1-.164,2.219,2.219,0,0,1-.163,3.116L13.976,6.995\",\n transform: \"translate(895.577 433.913)\",\n fill: \"rgba(0,0,0,0)\",\n stroke: \"#d8d8d8\",\n strokeLinecap: \"round\",\n strokeWidth: 1\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.446,10a2.219,2.219,0,0,1-.163,3.116L6.976,14.428,5.669,15.741a2.2,2.2,0,0,1-3.1.164,2.219,2.219,0,0,1,.163-3.116l1.307-1.312\",\n transform: \"translate(899 430.029)\",\n fill: \"rgba(0,0,0,0)\",\n stroke: \"#d8d8d8\",\n strokeLinecap: \"round\",\n strokeWidth: 1\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLink);\nexport default __webpack_public_path__ + \"static/media/link.f0fa890747014fa344a1faaacfcdba21.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgResetWidth(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 18.065,\n height: 13.958,\n viewBox: \"0 0 18.065 13.958\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".a{fill:none;stroke:#d8d8d8;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.2px;}\"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-0.951 -0.2)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n className: \"a\",\n d: \"M21.738,7.348V4.892c0-1.931,0-2.9.6-3.5S23.9.8,25.83.8h4.095c1.931,0,2.893,0,3.5.6s.6,1.565.6,3.5V7.351M20.1,5.71l1.638,1.638m1.636-1.636L21.736,7.351\",\n transform: \"translate(-17.851 0)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"a\",\n d: \"M1.8,378.436H7.086M3.436,376.8,1.8,378.436m1.636,1.638L1.8,378.436\",\n transform: \"translate(0 -366.765)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"a\",\n d: \"M458.188,378.338H452.9m3.65,1.638,1.638-1.638M456.55,376.7l1.638,1.638\",\n transform: \"translate(-440.02 -366.667)\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgResetWidth);\nexport default __webpack_public_path__ + \"static/media/reset_width.d1b4b6f4f3ccc8a960ad6310f1030ca5.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgResetOrder(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 17.412,\n height: 14.17,\n viewBox: \"0 0 17.412 14.17\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".a,.b{fill:none;stroke:#d8d8d8;stroke-width:1.2px;}.b{stroke-linecap:round;stroke-linejoin:round;}\"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-0.15 -0.15)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n className: \"a\",\n d: \"M66.67,502.026a3.011,3.011,0,0,1,.163-1.418,1.216,1.216,0,0,1,.445-.445A3.011,3.011,0,0,1,68.7,500a3.011,3.011,0,0,1,1.418.163,1.216,1.216,0,0,1,.445.445,6.256,6.256,0,0,1,0,2.837,1.216,1.216,0,0,1-.445.445,3.012,3.012,0,0,1-1.418.163,3.011,3.011,0,0,1-1.418-.163,1.216,1.216,0,0,1-.445-.445A3.01,3.01,0,0,1,66.67,502.026Z\",\n transform: \"translate(-65.92 -490.333)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"a\",\n d: \"M316.67,502.026a3.01,3.01,0,0,1,.163-1.418,1.216,1.216,0,0,1,.445-.445,6.256,6.256,0,0,1,2.837,0,1.216,1.216,0,0,1,.445.445,6.254,6.254,0,0,1,0,2.837,1.216,1.216,0,0,1-.445.445,6.257,6.257,0,0,1-2.837,0,1.216,1.216,0,0,1-.445-.445A3.009,3.009,0,0,1,316.67,502.026Z\",\n transform: \"translate(-309.84 -490.333)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"a\",\n d: \"M566.67,502.026a3.01,3.01,0,0,1,.163-1.418,1.216,1.216,0,0,1,.445-.445,6.256,6.256,0,0,1,2.837,0,1.216,1.216,0,0,1,.445.445,6.255,6.255,0,0,1,0,2.837,1.216,1.216,0,0,1-.445.445,6.258,6.258,0,0,1-2.837,0,1.217,1.217,0,0,1-.445-.445A3.01,3.01,0,0,1,566.67,502.026Z\",\n transform: \"translate(-553.761 -490.333)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"b\",\n d: \"M87.621,139.815v-2.432c0-1.911,0-2.866.594-3.46s1.549-.594,3.46-.594h4.053c1.911,0,2.866,0,3.46.594s.594,1.549.594,3.46v2.432M86,138.194l1.621,1.621m1.621-1.621-1.621,1.621\",\n transform: \"translate(-84.78 -132.58)\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgResetOrder);\nexport default __webpack_public_path__ + \"static/media/reset_order.005d2a8e94a93f4a44ac3c22486a3f2c.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgResetFilter(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 18,\n height: 18,\n viewBox: \"0 0 18 18\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-0.198 -0.198)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.876,8.574a4.275,4.275,0,0,0-3.728,2.175V8H14v4.589h4.589V11.442H16.075a3.151,3.151,0,1,1,2.8,4.589h-.287v1.147h.287a4.3,4.3,0,1,0,0-8.6Z\",\n transform: \"translate(-5.949 -3.39)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.766,5.147H3.147V6.966L7.4,11.219l.336.336v5.064H10.03V15.472h1.147v1.147a1.147,1.147,0,0,1-1.147,1.147H7.736a1.147,1.147,0,0,1-1.147-1.147V12.03L2.336,7.777A1.147,1.147,0,0,1,2,6.966V5.147A1.147,1.147,0,0,1,3.147,4H15.766Z\",\n transform: \"translate(-0.832 -1.685)\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgResetFilter);\nexport default __webpack_public_path__ + \"static/media/reset_filter.c141ca1454cb842c6b9891159917999b.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _g;\nconst _excluded = [\"title\", \"titleId\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from \"react\";\nfunction SvgResetSort(_ref, svgRef) {\n let {\n title,\n titleId\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 14.17,\n height: 17.412,\n viewBox: \"0 0 14.17 17.412\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".a,.b{fill:none;stroke:#d8d8d8;stroke-width:1.2px;}.b{stroke-linecap:round;stroke-linejoin:round;}\"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(14.32 -0.15) rotate(90)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n className: \"a\",\n d: \"M66.67,502.026a3.011,3.011,0,0,1,.163-1.418,1.216,1.216,0,0,1,.445-.445A3.011,3.011,0,0,1,68.7,500a3.011,3.011,0,0,1,1.418.163,1.216,1.216,0,0,1,.445.445,6.256,6.256,0,0,1,0,2.837,1.216,1.216,0,0,1-.445.445,3.012,3.012,0,0,1-1.418.163,3.011,3.011,0,0,1-1.418-.163,1.216,1.216,0,0,1-.445-.445A3.01,3.01,0,0,1,66.67,502.026Z\",\n transform: \"translate(-65.92 -490.333)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"a\",\n d: \"M316.67,502.026a3.01,3.01,0,0,1,.163-1.418,1.216,1.216,0,0,1,.445-.445,6.256,6.256,0,0,1,2.837,0,1.216,1.216,0,0,1,.445.445,6.254,6.254,0,0,1,0,2.837,1.216,1.216,0,0,1-.445.445,6.257,6.257,0,0,1-2.837,0,1.216,1.216,0,0,1-.445-.445A3.009,3.009,0,0,1,316.67,502.026Z\",\n transform: \"translate(-309.84 -490.333)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"a\",\n d: \"M566.67,502.026a3.01,3.01,0,0,1,.163-1.418,1.216,1.216,0,0,1,.445-.445,6.256,6.256,0,0,1,2.837,0,1.216,1.216,0,0,1,.445.445,6.255,6.255,0,0,1,0,2.837,1.216,1.216,0,0,1-.445.445,6.258,6.258,0,0,1-2.837,0,1.217,1.217,0,0,1-.445-.445A3.01,3.01,0,0,1,566.67,502.026Z\",\n transform: \"translate(-553.761 -490.333)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"b\",\n d: \"M87.621,139.815v-2.432c0-1.911,0-2.866.594-3.46s1.549-.594,3.46-.594h4.053c1.911,0,2.866,0,3.46.594s.594,1.549.594,3.46v2.432M86,138.194l1.621,1.621m1.621-1.621-1.621,1.621\",\n transform: \"translate(-84.78 -132.58)\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgResetSort);\nexport default __webpack_public_path__ + \"static/media/reset_sort.99f2e0896a6d2ff6a271312ea104455d.svg\";\nexport { ForwardRef as ReactComponent };","import { DefaultProjectClient, DefaultProjectResponse, SetDefaultProjectRequest } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { getUserInfo } from 'utils/storageUtils';\nimport { FetchingActionType, PersistValueActionType } from 'features/Persist/actionTypes';\nimport store from 'base/reducer/store';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\n\n// api\n\nexport const getDefaultProjectAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst userInfo = getUserInfo();\n\tconst client = new DefaultProjectClient();\n\treturn client.get(tenantId, userInfo.id);\n}\n\nexport const setDefaultProjectAction = (projectId: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst userInfo = getUserInfo();\n\tconst model = new SetDefaultProjectRequest({\n\t\tuserId: userInfo.id,\n\t\tprojectId\n\t})\n\n\tconst client = new DefaultProjectClient();\n\treturn client.set(tenantId, model);\n}\n\nexport const persistDefaultProjectAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedDefaultProject.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setDefaultProjectFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getDefaultProjectAction);\n\tif (response.success) {\n\t\tstore.dispatch(setDefaultProjectReduxAction(response.value || new DefaultProjectResponse()));\n\t} else {\n\t\tstore.dispatch(setDefaultProjectFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const DEFAULT_PROJECT_FETCHING = 'DEFAULT_PROJECT_FETCHING';\nexport const DEFAULT_PROJECT_SET = 'DEFAULT_PROJECT_SET';\n\nconst setDefaultProjectFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: DEFAULT_PROJECT_FETCHING,\n\t\tfetching\n\t}\n}\n\nexport const setDefaultProjectReduxAction = (value: DefaultProjectResponse): PersistValueActionType => {\n\treturn {\n\t\ttype: DEFAULT_PROJECT_SET,\n\t\tvalue\n\t}\n}\n","import { CompanyRequestModel, CompanyResponseModel, TenantClient } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport store from 'base/reducer/store';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport { FetchingActionType, PersistValueActionType } from 'features/Persist/actionTypes';\n\nexport const getCompanyInfoAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst tenantClient = new TenantClient();\n\treturn tenantClient.getCompany(tenantId);\n}\n\nexport const updateCompanyInfoAction = (companyInfo: CompanyRequestModel ) => {\n\tconst tenantId = getTenantId()!;\n\tconst tenantClient = new TenantClient();\n\treturn tenantClient.updateCompany(tenantId, companyInfo);\n}\n\n\nexport const persistCompanyInfoAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedCompanyInfo.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setCompanyInfoFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getCompanyInfoAction);\n\tif (response.success) {\n\t\tstore.dispatch(setCompanyInfoAction(response.value || new CompanyResponseModel()));\n\t} else {\n\t\tstore.dispatch(setCompanyInfoFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const COMPANY_INFO_FETCHING = 'COMPANY_INFO_FETCHING';\nexport const COMPANY_INFO_SET = 'COMPANY_INFO__SET';\n\nconst setCompanyInfoFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: COMPANY_INFO_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setCompanyInfoAction = (value: CompanyResponseModel): PersistValueActionType => {\n\treturn {\n\t\ttype: COMPANY_INFO_SET,\n\t\tvalue\n\t}\n}\n","import store from 'base/reducer/store';\nimport { OrganizationalUnitResponse, OrganizationalUnitClient, InsertOrganizationalUnitRequest, UpdateOrganizationalUnitRequest, UpdateOrderRequest } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils'\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\n// api\n\nexport const getAllOrganizationalUnitsAction = (parentId?: number, levelNumber?: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new OrganizationalUnitClient();\n\treturn client.getAll(tenantId, parentId, levelNumber);\n}\n\nexport const getOrganizationalUnitAction = (id: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new OrganizationalUnitClient();\n\treturn client.get(tenantId, id);\n}\n\nexport const createOrganizationalUnitAction = (model: InsertOrganizationalUnitRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new OrganizationalUnitClient();\n\treturn client.create(tenantId, model);\n}\n\nexport const updateOrganizationalUnitsAction = (model: UpdateOrganizationalUnitRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new OrganizationalUnitClient();\n\treturn client.update(tenantId, model);\n}\n\nexport const deleteOrganizationalUnitAction = (id: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new OrganizationalUnitClient();\n\treturn client.delete(tenantId, id);\n}\n\nexport const reorderOrganizationalUnitsAction = (modelOrders: UpdateOrderRequest[]) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new OrganizationalUnitClient();\n\treturn client.updateOrders(tenantId, modelOrders);\n}\n\nexport const persistOrganizationalUnitsAction = async (parentId?: number, levelNumber?: number) => {\n\tconst state = store.getState();\n\n\tif (state.persistedOrganizationalUnit.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setFetchingAction(true));\n\n\tconst bindedAction = getAllOrganizationalUnitsAction.bind(parentId, levelNumber);\n\tconst response = await tryCatchJsonByAction(bindedAction);\n\tif (response.success) {\n\t\tstore.dispatch(setAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const COMPANY_ORGANIZATIONAL_UNITS_SET = 'COMPANY_ORGANIZATIONAL_UNITS_SET';\nexport const COMPANY_ORGANIZATIONAL_UNITS_FETCHING = 'COMPANY_ORGANIZATIONAL_UNITS_FETCHING';\n\nexport const setFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: COMPANY_ORGANIZATIONAL_UNITS_FETCHING,\n\t\tfetching\n\t}\n}\n\nexport const setAction = (items: OrganizationalUnitResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: COMPANY_ORGANIZATIONAL_UNITS_SET,\n\t\titems\n\t}\n}\n","import { ChangeRequestStatusClient, SimpleStatusRequestUpdateSimpleStatusRequestItems, ChangeRequestStatusResponse } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils'\nimport store from 'base/reducer/store';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\n// api\n\nexport const getChangeRequestStatusesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ChangeRequestStatusClient();\n\treturn client.getAll(tenantId);\n}\n\nexport const updateChangeRequestStatusesAction = (model: SimpleStatusRequestUpdateSimpleStatusRequestItems) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ChangeRequestStatusClient();\n\treturn client.update(tenantId, model);\n}\n\nexport const persistChangeRequestStatusesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedChangeRequestStatus.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getChangeRequestStatusesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const CHANGE_REQUEST_STATUS_FETCHING = 'CHANGE_REQUEST_STATUS_FETCHING';\nexport const CHANGE_REQUEST_STATUS_SET = 'CHANGE_REQUEST_STATUS_SET';\n\nconst setFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: CHANGE_REQUEST_STATUS_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setAction = (items: ChangeRequestStatusResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: CHANGE_REQUEST_STATUS_SET,\n\t\titems\n\t}\n}\n","import { StatusReportStatusClient, SimpleStatusRequestUpdateSimpleStatusRequestItems, StatusReportStatusResponse } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport store from 'base/reducer/store';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\nexport const getCommunicationStatusesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new StatusReportStatusClient();\n\treturn client.getAll(tenantId);\n}\n\nexport const updateCommunicationStatusesAction = (model: SimpleStatusRequestUpdateSimpleStatusRequestItems) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new StatusReportStatusClient();\n\treturn client.update(tenantId, model);\n}\n\nexport const persistCommunicationStatusesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedCommunicationStatusReport.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getCommunicationStatusesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const STATUS_REPORT_FETCHING = 'STATUS_REPORT_FETCHING';\nexport const STATUS_REPORT_SET = 'STATUS_REPORT_SET';\n\nconst setFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: STATUS_REPORT_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setAction = (items: StatusReportStatusResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: STATUS_REPORT_SET,\n\t\titems\n\t}\n}\n\n","import { InvoiceStatusClient, SimpleStatusRequestUpdateSimpleStatusRequestItems, InvoiceStatusResponse } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils'\nimport store from 'base/reducer/store';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\n// api\n\nexport const getInvoiceStatusesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new InvoiceStatusClient();\n\treturn client.getAll(tenantId);\n}\n\nexport const updateInvoiceStatusesAction = (model: SimpleStatusRequestUpdateSimpleStatusRequestItems) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new InvoiceStatusClient();\n\treturn client.update(tenantId, model);\n}\n\nexport const persistInvoiceStatusesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedInvoiceStatus.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getInvoiceStatusesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const INVOICE_STATUSES_SET = 'INVOICE_STATUSES_SET';\nexport const INVOICE_STATUSES_FETCHING = 'INVOICE_STATUSES_FETCHING';\n\nconst setFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: INVOICE_STATUSES_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setAction = (items: InvoiceStatusResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: INVOICE_STATUSES_SET,\n\t\titems\n\t}\n}\n","import { SimpleStatusRequestUpdateSimpleStatusRequestItems, MeetingStatusClient, MeetingStatusResponse } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport store from 'base/reducer/store';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\nexport const getMeetingMinutesStatusesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new MeetingStatusClient();\n\treturn client.getAll(tenantId);\n}\n\nexport const updateMeetingMinutesStatusesAction = (model: SimpleStatusRequestUpdateSimpleStatusRequestItems) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new MeetingStatusClient();\n\treturn client.update(tenantId, model);\n}\n\nexport const persistMeetingStatusesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedMeetingStatus.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getMeetingMinutesStatusesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const MEETING_STATUS_FETCHING = 'MEETING_STATUS_FETCHING';\nexport const MEETING_STATUS_SET = 'MEETING_STATUS_SET';\n\nconst setFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: MEETING_STATUS_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setAction = (items: MeetingStatusResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: MEETING_STATUS_SET,\n\t\titems\n\t}\n}\n","import { ProjectStatusClient, ProjectStatusResponse, SimpleStatusRequestUpdateSimpleStatusRequestItems } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils'\nimport store from 'base/reducer/store';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\n// api\n\nexport const getProjectStatusesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectStatusClient();\n\treturn client.getAll(tenantId);\n}\n\nexport const updateProjectStatusesAction = (projectStatusesDelta: SimpleStatusRequestUpdateSimpleStatusRequestItems) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectStatusClient();\n\treturn client.update(tenantId, projectStatusesDelta);\n}\n\nexport const persistProjectStatusesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedProjectStatus.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setProjectStatusesFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getProjectStatusesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setProjectStatusesAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setProjectStatusesFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const PROJECT_STATUSES_SET = 'PROJECT_STATUSES_SET';\nexport const PROJECT_STATUSES_FETCHING = 'PROJECT_STATUSES_FETCHING';\n\nconst setProjectStatusesFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: PROJECT_STATUSES_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setProjectStatusesAction = (items: ProjectStatusResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: PROJECT_STATUSES_SET,\n\t\titems\n\t}\n}\n","import store from 'base/reducer/store';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { SimpleStatusRequestUpdateSimpleStatusRequestItems, ReportStatusResponse, ReportStatusClient } from 'services/tenantManagementService';\n\nexport const getReportStatusesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ReportStatusClient();\n\treturn client.getAll(tenantId);\n}\n\nexport const updateReportStatusesAction = (delta: SimpleStatusRequestUpdateSimpleStatusRequestItems) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ReportStatusClient();\n\treturn client.update(tenantId, delta);\n}\n\nexport const persistReportStatusesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedReportStatus.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getReportStatusesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const REPORT_STATUS_FETCHING = 'REPORT_STATUS_FETCHING';\nexport const REPORT_STATUS_SET = 'REPORT_STATUS_SET';\n\nconst setFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: REPORT_STATUS_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setAction = (items: ReportStatusResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: REPORT_STATUS_SET,\n\t\titems\n\t}\n}\n","import { RiskStatusResponse, RiskStatusClient, StatusDeltaRequest } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils'\nimport store from 'base/reducer/store';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\n// api\n\nexport const getRiskStatusesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new RiskStatusClient();\n\treturn client.getAll(tenantId);\n}\n\nexport const updateRiskStatusesAction = (delta: StatusDeltaRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new RiskStatusClient();\n\treturn client.update(tenantId, delta);\n}\n\nexport const persistRiskStatusesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedRiskStatus.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getRiskStatusesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const RISK_STATUSES_SET = 'RISK_STATUSES_SET';\nexport const RISK_STATUSES_FETCHING = 'RISK_STATUSES_FETCHING';\n\nconst setFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: RISK_STATUSES_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setAction = (items: RiskStatusResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: RISK_STATUSES_SET,\n\t\titems\n\t}\n}\n","import { StatusDeltaRequest, TaskStatusClient, TaskStatusResponse } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport store from 'base/reducer/store';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\n// api\n\nexport const getTaskStatusesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TaskStatusClient();\n\treturn client.getAll(tenantId);\n}\n\nexport const updateTaskStatusesAction = (model: StatusDeltaRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TaskStatusClient();\n\treturn client.update(tenantId, model);\n}\n\nexport const persistTaskStatusesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTaskStatus.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getTaskStatusesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TASK_STATUS_FETCHING = 'TASK_STATUS_FETCHING';\nexport const TASK_STATUS_SET = 'TASK_STATUS_SET';\n\nconst setFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TASK_STATUS_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setAction = (items: TaskStatusResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: TASK_STATUS_SET,\n\t\titems\n\t}\n}\n","import { TestStatusClient, TestStatusDeltaRequest, TestStatusResponse } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport store from 'base/reducer/store';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\n\n// api\n\nexport const getTestCaseStatusesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TestStatusClient();\n\treturn client.getAll(tenantId);\n}\n\nexport const updateTestCaseSStatusesAction = (model: TestStatusDeltaRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TestStatusClient();\n\treturn client.update(tenantId, model);\n}\n\nexport const persistTestCaseStatusesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTestCaseStatus.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getTestCaseStatusesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TEST_CASE_STATUSES_SET = 'TEST_CASE_STATUSES_SET';\nexport const TEST_CASE_STATUSES_FETCHING = 'TEST_CASE_STATUSES_FETCHING';\n\nconst setFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TEST_CASE_STATUSES_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setAction = (items: TestStatusResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: TEST_CASE_STATUSES_SET,\n\t\titems\n\t}\n}\n","import store from 'base/reducer/store';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { SimpleStatusRequestUpdateSimpleStatusRequestItems, TicketStatusClient, TicketStatusResponse } from 'services/tenantManagementService';\n\nexport const getTicketStatusesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TicketStatusClient();\n\treturn client.getAll(tenantId);\n}\n\nexport const updateTicketStatusesAction = (ticketStatusesDelta: SimpleStatusRequestUpdateSimpleStatusRequestItems) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TicketStatusClient();\n\treturn client.update(tenantId, ticketStatusesDelta);\n}\n\nexport const persistTicketStatusesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTicketStatus.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setTicketStatusesFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getTicketStatusesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setTicketStatusesAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setTicketStatusesFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TICKET_STATUS_FETCHING = 'TICKET_STATUS_FETCHING';\nexport const TICKET_STATUS_SET = 'TICKET_STATUS_SET';\n\nconst setTicketStatusesFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TICKET_STATUS_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setTicketStatusesAction = (items: TicketStatusResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: TICKET_STATUS_SET,\n\t\titems\n\t}\n}\n","import { SimpleStatusRequestUpdateSimpleStatusRequestItems, TimeTravelStatusClient, TimeTravelStatusResponse } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport store from 'base/reducer/store';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\n\n// api\n\nexport const getTimeAndTravelStatusesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TimeTravelStatusClient();\n\treturn client.getAll(tenantId);\n}\n\nexport const updateTimeAndTravelStatusesAction = (model: SimpleStatusRequestUpdateSimpleStatusRequestItems ) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TimeTravelStatusClient();\n\treturn client.update(tenantId, model);\n}\n\nexport const persistTimeAndTravelStatusesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTimeAndTravelStatus.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getTimeAndTravelStatusesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TIME_AND_TRAVEL_STATUSES_SET = 'TIME_AND_TRAVEL_STATUSES_SET';\nexport const TIME_AND_TRAVEL_STATUSES_FETCHING = 'TIME_AND_TRAVEL_STATUSES_FETCHING';\n\nconst setFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TIME_AND_TRAVEL_STATUSES_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setAction = (items: TimeTravelStatusResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: TIME_AND_TRAVEL_STATUSES_SET,\n\t\titems\n\t}\n}\n","import { SimpleStatusRequestUpdateSimpleStatusRequestItems, TrainingStatusClient, TrainingStatusResponse } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport store from 'base/reducer/store';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\n\n// api\n\nexport const getTrainingStatusesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TrainingStatusClient();\n\treturn client.getAll(tenantId);\n}\n\nexport const updateTrainingStatusesAction = (model: SimpleStatusRequestUpdateSimpleStatusRequestItems) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TrainingStatusClient();\n\treturn client.update(tenantId, model);\n}\n\nexport const persistTrainingCaseStatusesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTrainingStatus.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getTrainingStatusesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TRAINING_STATUSES_SET = 'TRAINING_STATUSES_SET';\nexport const TRAINING_STATUSES_FETCHING = 'TRAINING_STATUSES_FETCHING';\n\nconst setFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TRAINING_STATUSES_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setAction = (items: TrainingStatusResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: TRAINING_STATUSES_SET,\n\t\titems\n\t}\n}\n","import { SimpleStatusRequestUpdateSimpleStatusRequestItems, UserStatusClient, UserStatusResponse } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport store from 'base/reducer/store';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\nexport const getUserStatusesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst statusClient = new UserStatusClient();\n\treturn statusClient.getAll(tenantId);\n}\n\nexport const updateUserStatusesAction = (userStatusesDelta: SimpleStatusRequestUpdateSimpleStatusRequestItems ) => {\n\tconst tenantId = getTenantId()!;\n\tconst statusClient = new UserStatusClient();\n\treturn statusClient.update(tenantId, userStatusesDelta);\n}\n\nexport const persistUserStatusesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedUserStatus.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getUserStatusesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const USER_STATUS_FETCHING = 'USER_STATUS_FETCHING';\nexport const USER_STATUS_SET = 'USER_STATUS_SET';\n\nconst setFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: USER_STATUS_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setAction = (items: UserStatusResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: USER_STATUS_SET,\n\t\titems\n\t}\n}\n","import { TenantIsActiveDeltaRequest, CommunicationConfigClient, TenantIsActiveResponse } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport store from 'base/reducer/store';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\nexport const getMeetingTypesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new CommunicationConfigClient();\n\treturn client.getMeetingTypes(tenantId);\n}\n\nexport const updateMeetingTypesAction = (delta: TenantIsActiveDeltaRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new CommunicationConfigClient();\n\treturn client.updateMeetingTypes(tenantId, delta);\n}\n\nexport const persistMeetingTypesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedMeetingType.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getMeetingTypesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const MEETING_TYPE_FETCHING = 'MEETING_TYPE_FETCHING';\nexport const MEETING_TYPE_SET = 'MEETING_TYPE_SET';\n\nconst setFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: MEETING_TYPE_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setAction = (items: TenantIsActiveResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: MEETING_TYPE_SET,\n\t\titems\n\t}\n}\n","import { FinanceConfigClient, TenantIsActiveDeltaRequest, TenantIsActiveResponse } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport store from 'base/reducer/store';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\nexport const getCategoriesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new FinanceConfigClient();\n\treturn client.getFinanceCategories(tenantId);\n}\n\nexport const updateCategoriesAction = (model: TenantIsActiveDeltaRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new FinanceConfigClient();\n\treturn client.updateFinanceCategories(tenantId, model);\n}\n\nexport const persistFinanceCategoriesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedFinanceCategory.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getCategoriesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const FINANCE_CATEGORY_FETCHING = 'FINANCE_CATEGORY_FETCHING';\nexport const FINANCE_CATEGORY_SET = 'FINANCE_CATEGORY_SET';\n\nconst setFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: FINANCE_CATEGORY_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setAction = (items: TenantIsActiveResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: FINANCE_CATEGORY_SET,\n\t\titems\n\t}\n}\n","import { RiskConfigClient, TenantIsActiveDeltaRequest, TenantIsActiveResponse } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport store from 'base/reducer/store';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\n\nexport const getRiskTypesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new RiskConfigClient();\n\treturn client.getRiskTypes(tenantId);\n}\n\nexport const updateRiskTypesAction = (riskTypesDelta: TenantIsActiveDeltaRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new RiskConfigClient();\n\treturn client.updateRiskTypes(tenantId, riskTypesDelta);\n}\n\nexport const persistRiskTypesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedRiskType.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setRiskTypesFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getRiskTypesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setRiskTypesAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setRiskTypesFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const RISK_TYPES_FETCHING = 'RISK_TYPES_FETCHING';\nexport const RISK_TYPES_SET = 'RISK_TYPES_SET';\n\nconst setRiskTypesFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: RISK_TYPES_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setRiskTypesAction = (items: TenantIsActiveResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: RISK_TYPES_SET,\n\t\titems\n\t}\n}\n","import { ChangeRequestTypeClient, TenantIsActiveDeltaRequest, TenantIsActiveResponse } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils'\nimport store from 'base/reducer/store';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\n// api\n\nexport const getChangeRequestTypesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ChangeRequestTypeClient();\n\treturn client.get(tenantId);\n}\n\nexport const updateChangeRequestTypesAction = (model: TenantIsActiveDeltaRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ChangeRequestTypeClient();\n\treturn client.update(tenantId, model);\n}\n\nexport const persistChangeRequestTypesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedChangeRequestType.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getChangeRequestTypesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const SCOPE_CHANGE_REQUEST_TYPE_FETCHING = 'SCOPE_CHANGE_REQUEST_TYPE_FETCHING';\nexport const SCOPE_CHANGE_REQUEST_TYPE_SET = 'SCOPE_CHANGE_REQUEST_TYPE_SET';\n\nconst setFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: SCOPE_CHANGE_REQUEST_TYPE_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setAction = (items: TenantIsActiveResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: SCOPE_CHANGE_REQUEST_TYPE_SET,\n\t\titems\n\t}\n}\n","import { TicketAssignedGroupDeltaRequest, TicketAssignedGroupsResponse, TicketConfigClient } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport store from 'base/reducer/store';\n\nexport const getTicketAssignedGroupsAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TicketConfigClient();\n\treturn client.getAssignedGroups(tenantId);\n}\n\nexport const updateTicketAssignedGroupsAction = (ticketAssignedGroupsDelta: TicketAssignedGroupDeltaRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TicketConfigClient();\n\treturn client.updateAssignedGroups(tenantId, ticketAssignedGroupsDelta);\n}\n\nexport const persistTicketAssignedGroupsAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTicketAssignedGroup.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setTicketAssignedGroupsFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getTicketAssignedGroupsAction);\n\tif (response.success) {\n\t\tstore.dispatch(setTicketAssignedGroupsAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setTicketAssignedGroupsFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TICKET_ASSIGNED_GROUP_FETCHING = 'TICKET_ASSIGNED_GROUP_FETCHING';\nexport const TICKET_ASSIGNED_GROUP_SET = 'TICKET_ASSIGNED_GROUP_SET';\n\nconst setTicketAssignedGroupsFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TICKET_ASSIGNED_GROUP_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setTicketAssignedGroupsAction = (items: TicketAssignedGroupsResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: TICKET_ASSIGNED_GROUP_SET,\n\t\titems\n\t}\n}\n","import { TicketConfigClient, TicketCategoryResponse, UpdateTicketCategoryRequest, InsertTicketCategoryRequest, UpdateOrderRequest } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport store from 'base/reducer/store';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\nexport const getTicketCategoryAction = (id: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst ticketConfigClient = new TicketConfigClient();\n\treturn ticketConfigClient.getCategory(tenantId, id);\n}\n\nexport const getAllTicketCategoriesAction = (parentId: number | undefined, level: number | undefined) => {\n\tconst tenantId = getTenantId()!;\n\tconst ticketConfigClient = new TicketConfigClient();\n\treturn ticketConfigClient.getAllCategories(tenantId, parentId, level);\n}\n\nexport const createTicketCategoryAction = (model: InsertTicketCategoryRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst ticketConfigClient = new TicketConfigClient();\n\treturn ticketConfigClient.createCategory(tenantId, model);\n}\n\nexport const updateTicketCategoryAction = (model: UpdateTicketCategoryRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst ticketConfigClient = new TicketConfigClient();\n\treturn ticketConfigClient.updateCategory(tenantId, model);\n}\n\nexport const deleteTicketCategoryAction = (id: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst ticketConfigClient = new TicketConfigClient();\n\treturn ticketConfigClient.deleteCategory(tenantId, id);\n}\n\nexport const reorderTicketCategoryAction = (model: UpdateOrderRequest[]) => {\n\tconst tenantId = getTenantId()!;\n\tconst ticketConfigClient = new TicketConfigClient();\n\treturn ticketConfigClient.updateTicketCategoryOrders(tenantId, model);\n}\n\nexport const persistTicketCategoryAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTicketCategory.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setTicketCategoryFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getAllTicketCategoriesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setTicketCategoryAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setTicketCategoryFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TICKET_CATEGORY_FETCHING = 'TICKET_CATEGORY_FETCHING';\nexport const TICKET_CATEGORY_SET = 'TICKET_CATEGORY_SET';\n\nconst setTicketCategoryFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TICKET_CATEGORY_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setTicketCategoryAction = (items: TicketCategoryResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: TICKET_CATEGORY_SET,\n\t\titems\n\t}\n}\n","import { TenantIsActiveDeltaRequest , TenantIsActiveResponse, TicketConfigClient } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport store from 'base/reducer/store';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\n\nexport const getTicketClosingIdsAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TicketConfigClient();\n\treturn client.getTicketClosingIds(tenantId);\n}\n\nexport const updateTicketClosingIdsAction = (ticketClosingIdsDelta: TenantIsActiveDeltaRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TicketConfigClient();\n\treturn client.updateTicketClosingIds(tenantId, ticketClosingIdsDelta);\n}\n\nexport const persistTicketClosingIdAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTicketClosingId.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getTicketClosingIdsAction);\n\tif (response.success) {\n\t\tstore.dispatch(setAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TICKET_CLOSING_ID_FETCHING = 'TICKET_CLOSING_ID_FETCHING';\nexport const TICKET_CLOSING_ID_SET = 'TICKET_CLOSING_ID_SET';\n\nconst setFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TICKET_CLOSING_ID_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setAction = (items: TenantIsActiveResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: TICKET_CLOSING_ID_SET,\n\t\titems\n\t}\n}\n","import { TenantIsActiveDeltaRequest , TenantIsActiveResponse, TicketConfigClient } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport store from 'base/reducer/store';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\n\nexport const getTicketEnvironmentsAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TicketConfigClient();\n\treturn client.getTicketEnvironments(tenantId);\n}\n\nexport const updateTicketEnvironmentsAction = (ticketEnvironmentsDelta: TenantIsActiveDeltaRequest ) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TicketConfigClient();\n\treturn client.updateTicketEnvironments(tenantId, ticketEnvironmentsDelta);\n}\n\nexport const persistTicketEnvironmentsAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTicketEnvironment.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setTicketEnvironmentsFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getTicketEnvironmentsAction);\n\tif (response.success) {\n\t\tstore.dispatch(setTicketEnvironmentsAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setTicketEnvironmentsFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TICKET_ENVIRONMENTS_FETCHING = 'TICKET_ENVIRONMENTS_FETCHING';\nexport const TICKET_ENVIRONMENTS_SET = 'TICKET_ENVIRONMENTS_SET';\n\nconst setTicketEnvironmentsFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TICKET_ENVIRONMENTS_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setTicketEnvironmentsAction = (items: TenantIsActiveResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: TICKET_ENVIRONMENTS_SET,\n\t\titems\n\t}\n}\n","import { TicketConfigClient, ImpactResponse } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport store from 'base/reducer/store';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\n\nexport const getTicketImpactsAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TicketConfigClient();\n\treturn client.getImpacts(tenantId);\n}\n\nexport const persistTicketImpactsAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTicketImpact.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setTicketImpactsFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getTicketImpactsAction);\n\tif (response.success) {\n\t\tstore.dispatch(setTicketImpactsAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setTicketImpactsFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TICKET_IMPACT_FETCHING = 'TICKET_IMPACT_FETCHING';\nexport const TICKET_IMPACT_SET = 'TICKET_IMPACT_SET';\n\nconst setTicketImpactsFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TICKET_IMPACT_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setTicketImpactsAction = (items: ImpactResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: TICKET_IMPACT_SET,\n\t\titems\n\t}\n}\n","import { TicketConfigClient, UrgencyResponse } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport store from 'base/reducer/store';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\n\nexport const getTicketUrgenciesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TicketConfigClient();\n\treturn client.getUrgencies(tenantId);\n}\n\nexport const persistTicketUrgencyAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTicketUrgency.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getTicketUrgenciesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TICKET_URGENCY_FETCHING = 'TICKET_URGENCY_FETCHING';\nexport const TICKET_URGENCY_SET = 'TICKET_URGENCY_SET';\n\nconst setFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TICKET_URGENCY_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setAction = (items: UrgencyResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: TICKET_URGENCY_SET,\n\t\titems\n\t}\n}\n","import { PriorityResponse, TicketConfigClient, TicketPriorityDescriptionRequest } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport store from 'base/reducer/store';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\nexport const getTicketPriorityDescsAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TicketConfigClient();\n\treturn client.getPriorityDescs(tenantId);\n}\n\nexport const updateTicketPriorityDescsAction = (priorityDescription: TicketPriorityDescriptionRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TicketConfigClient();\n\treturn client.updatePriorityDescs(tenantId, priorityDescription);\n}\n\nexport const getTicketPriorityAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TicketConfigClient();\n\treturn client.getPriorites(tenantId);\n}\n\nexport const persistTicketPriorityAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTicketPriority.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getTicketPriorityAction);\n\tif (response.success) {\n\t\tstore.dispatch(setAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TICKET_PRIORITY_FETCHING = 'TICKET_PRIORITY_FETCHING';\nexport const TICKET_PRIORITY_SET = 'TICKET_PRIORITY_SET';\n\nconst setFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TICKET_PRIORITY_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setAction = (items: PriorityResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: TICKET_PRIORITY_SET,\n\t\titems\n\t}\n}\n","import { TenantIsActiveDeltaRequest , TenantIsActiveResponse, TicketConfigClient } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport store from 'base/reducer/store';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\n\nexport const getTicketTypesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TicketConfigClient();\n\treturn client.getTicketTypes(tenantId);\n}\n\nexport const updateTicketTypesAction = (ticketTypesDelta: TenantIsActiveDeltaRequest ) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TicketConfigClient();\n\treturn client.updateTicketTypes(tenantId, ticketTypesDelta);\n}\n\nexport const persistTicketTypesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTicketType.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setTicketTypesFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getTicketTypesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setTicketTypesAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setTicketTypesFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TICKET_TYPES_FETCHING = 'TICKET_TYPES_FETCHING';\nexport const TICKET_TYPES_SET = 'TICKET_TYPES_SET';\n\nconst setTicketTypesFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TICKET_TYPES_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setTicketTypesAction = (items: TenantIsActiveResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: TICKET_TYPES_SET,\n\t\titems\n\t}\n}\n","import { CostExpenseTypeDeltaRequest, CostExpenseTypeResponse, TimeTravelConfigClient } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport store from 'base/reducer/store';\n\nexport const getExpenseTypesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TimeTravelConfigClient();\n\treturn client.getExpenseTypes(tenantId);\n}\n\nexport const updateExpenseTypesAction = (expenseTypesDelta: CostExpenseTypeDeltaRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TimeTravelConfigClient();\n\treturn client.updateExpenseTypes(tenantId, expenseTypesDelta);\n}\n\nexport const persistExpenseTypesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTimeTravelExpenseTypes.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setExpenseTypesFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getExpenseTypesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setExpenseTypesActionAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setExpenseTypesFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TIME_TRAVEL_EXPENSE_TYPES_FETCHING = 'TIME_TRAVEL_EXPENSE_TYPES_FETCHING';\nexport const TIME_TRAVEL_EXPENSE_TYPES_SET = 'TIME_TRAVEL_EXPENSE_TYPES_SET';\n\nconst setExpenseTypesFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TIME_TRAVEL_EXPENSE_TYPES_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setExpenseTypesActionAction = (items: CostExpenseTypeResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: TIME_TRAVEL_EXPENSE_TYPES_SET,\n\t\titems\n\t}\n}\n","import store from 'base/reducer/store';\nimport { FetchingActionType, PersistValueActionType } from 'features/Persist/actionTypes';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { TimeTravelConfigClient, TimeTravelConfigResponse, UpdateTimeTravelConfigRequest } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\n\nexport const getExpenseGeneralConfigAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TimeTravelConfigClient();\n\treturn client.getTravelConfig(tenantId);\n}\n\nexport const updateExpenseGeneralConfigAction = (updateRequest: UpdateTimeTravelConfigRequest ) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TimeTravelConfigClient();\n\treturn client.updateTravelConfig(tenantId, updateRequest);\n}\n\nexport const persistExpenseGeneralConfigurationAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedExpenseGeneralConfiguration.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setExpenseGeneralConfigurationFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getExpenseGeneralConfigAction);\n\tif (response.success) {\n\t\tstore.dispatch(setExpenseGeneralConfigurationAction(response.value || new TimeTravelConfigResponse()));\n\t} else {\n\t\tstore.dispatch(setExpenseGeneralConfigurationFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const EXPENSE_GENERAL_CONFIGURATION_FETCHING = 'EXPENSE_GENERAL_CONFIGURATION_FETCHING';\nexport const EXPENSE_GENERAL_CONFIGURATION_SET = 'EXPENSE_GENERAL_CONFIGURATION_SET';\n\nconst setExpenseGeneralConfigurationFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: EXPENSE_GENERAL_CONFIGURATION_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setExpenseGeneralConfigurationAction = (value: TimeTravelConfigResponse): PersistValueActionType => {\n\treturn {\n\t\ttype: EXPENSE_GENERAL_CONFIGURATION_SET,\n\t\tvalue\n\t}\n}\n","import { NonProjectCategoryDeltaRequest, NonProjectCategoryResponse, TimeTravelConfigClient } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport store from 'base/reducer/store';\n\nexport const getNonProjectCategoriesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TimeTravelConfigClient();\n\treturn client.getNonProjectCategories(tenantId);\n}\n\nexport const updateNonProjectCategoriesAction = (nonProjectCategoriesDelta: NonProjectCategoryDeltaRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TimeTravelConfigClient();\n\treturn client.updateNonProjectCategories(tenantId, nonProjectCategoriesDelta);\n}\n\nexport const persistNonProjectCategoriesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTimeTravelNonProjectCategories.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setNonProjectCategoriesFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getNonProjectCategoriesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setNonProjectCategoriesActionAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setNonProjectCategoriesFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TIME_TRAVEL_NON_PROJECT_CATEGORIES_FETCHING = 'TIME_TRAVEL_NON_PROJECT_CATEGORIES_FETCHING';\nexport const TIME_TRAVEL_NON_PROJECT_CATEGORIES_SET = 'TIME_TRAVEL_NON_PROJECT_CATEGORIES_SET';\n\nconst setNonProjectCategoriesFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TIME_TRAVEL_NON_PROJECT_CATEGORIES_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setNonProjectCategoriesActionAction = (items: NonProjectCategoryResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: TIME_TRAVEL_NON_PROJECT_CATEGORIES_SET,\n\t\titems\n\t}\n}\n","import store from 'base/reducer/store';\nimport { FetchingActionType, PersistValueActionType } from 'features/Persist/actionTypes';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { TimesheetsConfigResponse, TimeTravelConfigClient, UpdateTimesheetsConfigRequest } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\n\nexport const getTimesheetsGeneralConfigAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TimeTravelConfigClient();\n\treturn client.getTimesheetsConfig(tenantId);\n}\n\nexport const updateTimesheetsGeneralConfigAction = (updateRequest: UpdateTimesheetsConfigRequest ) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TimeTravelConfigClient();\n\treturn client.updateTimesheetsConfig(tenantId, updateRequest);\n}\n\n\nexport const persistTimesheetseneralConfigurationAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTimesheetsGeneralConfiguration.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setTimesheetsGeneralConfigurationFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getTimesheetsGeneralConfigAction);\n\tif (response.success) {\n\t\tstore.dispatch(setTimesheetsGeneralConfigurationAction(response.value || new TimesheetsConfigResponse()));\n\t} else {\n\t\tstore.dispatch(setTimesheetsGeneralConfigurationFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TIMESHEETS_GENERAL_CONFIGURATION_FETCHING = 'TIMESHEETS_GENERAL_CONFIGURATION_FETCHING';\nexport const TIMESHEETS_GENERAL_CONFIGURATION_SET = 'TIMESHEETS_GENERAL_CONFIGURATION_SET';\n\nconst setTimesheetsGeneralConfigurationFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TIMESHEETS_GENERAL_CONFIGURATION_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setTimesheetsGeneralConfigurationAction = (value: TimesheetsConfigResponse): PersistValueActionType => {\n\treturn {\n\t\ttype: TIMESHEETS_GENERAL_CONFIGURATION_SET,\n\t\tvalue\n\t}\n}\n","import { CostExpenseTypeDeltaRequest, CostExpenseTypeResponse, TimeTravelConfigClient } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport store from 'base/reducer/store';\n\nexport const getTravelCostTypesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TimeTravelConfigClient();\n\treturn client.getTravelCostTypes(tenantId);\n}\n\nexport const updateTravelCostTypesAction = (travelCostTypesDelta: CostExpenseTypeDeltaRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TimeTravelConfigClient();\n\treturn client.updateTravelCostTypes(tenantId, travelCostTypesDelta);\n}\n\nexport const persistTravelCostTypesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTravelCostTypes.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setTravelCostTypesFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getTravelCostTypesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setTravelCostTypesActionAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setTravelCostTypesFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TRAVEL_COST_TYPES_FETCHING = 'TRAVEL_COST_TYPES_FETCHING';\nexport const TRAVEL_COST_TYPES_SET = 'TRAVEL_COST_TYPES_SET';\n\nconst setTravelCostTypesFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TRAVEL_COST_TYPES_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setTravelCostTypesActionAction = (items: CostExpenseTypeResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: TRAVEL_COST_TYPES_SET,\n\t\titems\n\t}\n}\n","import store from 'base/reducer/store';\nimport { FetchingActionType, PersistValueActionType } from 'features/Persist/actionTypes';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { TimeTravelConfigClient, TimeTravelConfigResponse, UpdateTimeTravelConfigRequest } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\n\nexport const getVacationGeneralConfigAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TimeTravelConfigClient();\n\treturn client.getVacationConfig(tenantId);\n}\n\nexport const updateVacationGeneralConfigAction = (updateRequest: UpdateTimeTravelConfigRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TimeTravelConfigClient();\n\treturn client.updateVacationConfig(tenantId, updateRequest);\n}\n\n\nexport const persistVacationGeneralConfigurationAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedVacationGeneralConfiguration.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setVacationGeneralConfigurationFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getVacationGeneralConfigAction);\n\tif (response.success) {\n\t\tstore.dispatch(setVacationGeneralConfigurationAction(response.value || new TimeTravelConfigResponse()));\n\t} else {\n\t\tstore.dispatch(setVacationGeneralConfigurationFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const VACATION_GENERAL_CONFIGURATION_FETCHING = 'VACATION_GENERAL_CONFIGURATION_FETCHING';\nexport const VACATION_GENERAL_CONFIGURATION_SET = 'VACATION_GENERAL_CONFIGURATION_SET';\n\nconst setVacationGeneralConfigurationFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: VACATION_GENERAL_CONFIGURATION_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setVacationGeneralConfigurationAction = (value: TimeTravelConfigResponse): PersistValueActionType => {\n\treturn {\n\t\ttype: VACATION_GENERAL_CONFIGURATION_SET,\n\t\tvalue\n\t}\n}\n","import store from 'base/reducer/store';\nimport { TenantIsActiveResponse, ProjectConfigClient, TenantIsActiveDeltaRequest } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils'\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\n// api\n\nexport const getProjectCategoriesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectConfigClient();\n\treturn client.getProjectCategories(tenantId);\n}\n\nexport const updateProjectCategoriesAction = (projectCategoriesDelta: TenantIsActiveDeltaRequest ) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectConfigClient();\n\treturn client.updateProjectCategories(tenantId, projectCategoriesDelta);\n}\n\nexport const persistProjectCategoriesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedProjectCategory.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setProjectCategoryFetching(true));\n\n\tconst response = await tryCatchJsonByAction(getProjectCategoriesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setProjectCategoriesAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setProjectCategoryFetching(false));\n\t}\n}\n\n// redux\n\nexport const PROJECT_CATEGORIES_SET = 'PROJECT_CATEGORIES_SET';\nexport const PROJECT_CATEGORIES_FETCHING = 'PROJECT_CATEGORIES_FETCHING';\n\nexport const setProjectCategoryFetching = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: PROJECT_CATEGORIES_FETCHING,\n\t\tfetching\n\t}\n}\n\nexport const setProjectCategoriesAction = (items: TenantIsActiveResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: PROJECT_CATEGORIES_SET,\n\t\titems\n\t}\n}\n","import store from 'base/reducer/store';\nimport { TenantIsActiveResponse, TenantIsActiveDeltaRequest, ProjectConfigClient } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils'\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\n// api\n\nexport const getProjectTypesAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectConfigClient();\n\treturn client.getProjectTypes(tenantId);\n}\n\nexport const updateProjectTypesAction = (projectTypesDelta: TenantIsActiveDeltaRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectConfigClient();\n\treturn client.updateProjectTypes(tenantId, projectTypesDelta);\n}\n\nexport const persistProjectTypesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedProjectType.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setProjectTypesFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getProjectTypesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setProjectTypesAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setProjectTypesFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const PROJECT_TYPES_SET = 'PROJECT_TYPES_SET';\nexport const PROJECT_TYPES_FETCHING = 'PROJECT_TYPES_FETCHING';\n\nexport const setProjectTypesFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: PROJECT_TYPES_FETCHING,\n\t\tfetching\n\t}\n}\n\nexport const setProjectTypesAction = (items: TenantIsActiveResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: PROJECT_TYPES_SET,\n\t\titems\n\t}\n}\n","import store from 'base/reducer/store';\nimport { GenericFilterModelCollection, BusinessPartnerClient, BusinessPartnerInsertRequestModel, BusinessPartnerResponseModel, BusinessPartnerUpdateRequestModel, BusinessPartnerResponseModelSimpleResponseModel, ExportDataModel } from 'services/tenantManagementService'\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\nexport const getBusinessPartnersAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new BusinessPartnerClient();\n\treturn client.getAll(tenantId);\n}\n\nexport const getBusinessPartnersGenericAction = (genericFilter: GenericFilterModelCollection) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new BusinessPartnerClient();\n\treturn client.getAllGenericFilter(tenantId, genericFilter);\n}\n\nexport const getBusinessPartnerAction = (id: number) => {\n\tconst state = store.getState();\n\n\tif (state.persistedBusinessPartner.isInitialized && state.persistedBusinessPartner.itemsMap[id]) {\n\t\tconst response = new BusinessPartnerResponseModelSimpleResponseModel({\n\t\t\tsuccess: true,\n\t\t\tvalue: state.persistedBusinessPartner.itemsMap[id]\n\t\t});\n\t\treturn Promise.resolve(response);\n\t}\n\n\tconst tenantId = getTenantId()!;\n\tconst client = new BusinessPartnerClient();\n\treturn client.get(id, tenantId);\n}\n\nexport const createBusinessPartnerAction = (partner: BusinessPartnerInsertRequestModel ) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new BusinessPartnerClient();\n\treturn client.insert(tenantId, partner);\n}\n\nexport const updateBusinessPartnerAction = (partner: BusinessPartnerUpdateRequestModel ) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new BusinessPartnerClient();\n\treturn client.update(tenantId, partner);\n}\n\n// export const deleteBusinessPartnerAction = (id: number ) => {\n// \tconst tenantId = getTenantId();\n// \tconst client = new BusinessPartnerClient();\n// \treturn client.delete(tenantId, id);\n// }\n\nexport const exportAction = (exportDataModel: ExportDataModel) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new BusinessPartnerClient();\n\treturn client.export(tenantId, exportDataModel);\n}\n\nexport const persistBusinessPartnersAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedBusinessPartner.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setBusinessPartnersFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getBusinessPartnersAction);\n\tif (response.success) {\n\t\tstore.dispatch(setBusinessPartnersAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setBusinessPartnersFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const BUSINESS_PARTNERS_FETCHING = 'BUSINESS_PARTNERS_FETCHING';\nexport const BUSINESS_PARTNERS_SET = 'BUSINESS_PARTNERS_SET';\n\nconst setBusinessPartnersFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: BUSINESS_PARTNERS_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setBusinessPartnersAction = (items: BusinessPartnerResponseModel[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: BUSINESS_PARTNERS_SET,\n\t\titems\n\t}\n}\n","import { UserClient, InsertUserRequestModel, UpdateUserDataRequestModel, UserModel, ChangePasswordRequestModel, ExportDataModel, GenericFilterModelCollection, UpdateUserActivityRequestModel } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport store from 'base/reducer/store';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\n// async api calls\n\nexport const getAllUsersAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new UserClient();\n\treturn client.getAll(tenantId, undefined, undefined, undefined, undefined, undefined, undefined, undefined);\n}\n\nexport const getAllUsersGenericAction = (genericFilter: GenericFilterModelCollection) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new UserClient();\n\treturn client.getAllGenericFilter(tenantId, genericFilter);\n}\n\nexport const getUserAction = (id: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new UserClient();\n\treturn client.get(tenantId, id);\n}\n\nexport const createUserAction = (model: InsertUserRequestModel) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new UserClient();\n\treturn client.insert(tenantId, model);\n}\n\nexport const updateUserAction = (model: UpdateUserDataRequestModel) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new UserClient();\n\treturn client.update(tenantId, model)\n}\n\nexport const deleteUserAction = (id: number) => {\n\t// INFO: not possible for now, backend will not be implemented for this one\n\treturn Promise.resolve();\n}\n\nexport const changeMyPasswordAction = (model: ChangePasswordRequestModel) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new UserClient();\n\treturn client.updatePassword(tenantId, model);\n}\n\nexport const updateUserActivityAction = (model: UpdateUserActivityRequestModel) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new UserClient();\n\treturn client.updateActivity(tenantId, model);\n}\n\nexport const exportUsersAction = (exportDataModel: ExportDataModel) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new UserClient();\n\treturn client.export(tenantId, exportDataModel);\n}\n\nexport const persistUsersAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedUser.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setUsersFetchingAction(true));\n\tconst response = await tryCatchJsonByAction(getAllUsersAction);\n\tif (response.success && response.items) {\n\t\tstore.dispatch(setUsersAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setUsersFetchingAction(false));\n\t}\n}\n\n// persist users redux\n\nexport const USERS_FETCHING = 'USERS_FETCHING';\nexport const USERS_SET = 'USERS_SET';\n\nconst setUsersFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: USERS_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setUsersAction = (items: UserModel[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: USERS_SET,\n\t\titems\n\t}\n}\n","import store from 'base/reducer/store';\nimport { ProjectTeamMemberClient, InsertProjectTeamMemberRequest, UpdateProjectTeamMemberRequest, ProjectTeamMemberResponse, TokenTypeEnum, GenericFilterModelCollection, ExportDataModel } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { FetchingProjectItemsActionType, PersistProjectItemsActionType } from 'features/Persist/actionTypes';\n\n// async api calls\n\nexport const getAllTeamMembersAction = (projectId: number, roleType?: TokenTypeEnum, isActive?:boolean, offset?: number, limit?: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectTeamMemberClient();\n\treturn client.getAll(tenantId, projectId, roleType, isActive, offset, limit);\n}\n\nexport const getAllTeamMembersByProjectGenericFilteringAction = (projectId: number, model: GenericFilterModelCollection) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectTeamMemberClient();\n\treturn client.getAllByProjectGenericFiltering(tenantId, projectId, model);\n}\n\nexport const getTeamMemberAction = (projectId: number, id: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectTeamMemberClient();\n\n\treturn client.get(tenantId, projectId, id);\n}\n\nexport const createTeamMemberAction = (projectId: number, model: InsertProjectTeamMemberRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectTeamMemberClient();\n\treturn client.insert(tenantId, projectId, model);\n}\n\nexport const updateTeamMemberAction = (projectId: number, model: UpdateProjectTeamMemberRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectTeamMemberClient();\n\treturn client.update(tenantId, projectId, model)\n}\n\nexport const deleteTeamMemberAction = (projectId: number, id: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectTeamMemberClient();\n\n\treturn client.delete(tenantId, projectId, id);\n}\n\nexport const exportProjectTeamMembersByProjectAction = (projectId: number, filter: ExportDataModel) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectTeamMemberClient();\n\n\treturn client.export(tenantId, projectId, filter);\n}\n\nexport const persistTeamMembersAction = async (projectId: number) => {\n\tconst state = store.getState();\n\n\tif (state.persistedTeamMember.projectMap[projectId]?.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setTeamMembersFetchingAction(true, projectId));\n\n\tconst bindedAction = getAllTeamMembersAction.bind(null, projectId);\n\tconst response = await tryCatchJsonByAction(bindedAction);\n\n\tif (response.success && response.items) {\n\t\tstore.dispatch(setTeamMembersAction(projectId, response.items || []));\n\t} else {\n\t\tstore.dispatch(setTeamMembersFetchingAction(false, projectId));\n\t}\n}\n\n// persist team members redux\n\nexport const TEAM_MEMBERS_FETCHING = 'TEAM_MEMBERS_FETCHING';\nexport const TEAM_MEMBERS_SET = 'TEAM_MEMBERS_SET';\n\nconst setTeamMembersFetchingAction = (fetching: boolean, projectId: number): FetchingProjectItemsActionType => {\n\treturn {\n\t\ttype: TEAM_MEMBERS_FETCHING,\n\t\tfetching,\n\t\tprojectId\n\t}\n}\n\nconst setTeamMembersAction = (projectId: number, items: ProjectTeamMemberResponse[]): PersistProjectItemsActionType => {\n\treturn {\n\t\ttype: TEAM_MEMBERS_SET,\n\t\titems,\n\t\tprojectId\n\t}\n}\n","import store from 'base/reducer/store';\nimport { FetchingProjectItemsActionType, PersistProjectItemsActionType } from 'features/Persist/actionTypes';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { ProjectConfigDeltaRequest, ProjectRoleClient, ProjectIsActiveResponse } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\n\nexport const getProjectRolesAction = (projectId: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectRoleClient();\n\treturn client.getAllByProjectId(tenantId, projectId);\n}\n\nexport const updateProjectRolesAction = (projectId: number, model: ProjectConfigDeltaRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectRoleClient();\n\treturn client.update(tenantId, projectId, model);\n}\n\nexport const persistProjectRolesAction = async (projectId: number) => {\n\tconst state = store.getState();\n\n\tif (state.persistedProjectRole.projectMap[projectId]?.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setProjectRolesFetchingAction(true, projectId));\n\n\tconst bindedAction = getProjectRolesAction.bind(null, projectId);\n\tconst response = await tryCatchJsonByAction(bindedAction);\n\n\tif (response.success && response.items) {\n\t\tstore.dispatch(setProjectRolesAction(projectId, response.items || []));\n\t} else {\n\t\tstore.dispatch(setProjectRolesFetchingAction(false, projectId));\n\t}\n}\n\n// persist project roles redux\n\nexport const PROJECT_ROLES_FETCHING = 'PROJECT_ROLES_FETCHING';\nexport const PROJECT_ROLES_SET = 'PROJECT_ROLES_SET';\n\nconst setProjectRolesFetchingAction = (fetching: boolean, projectId: number): FetchingProjectItemsActionType => {\n\treturn {\n\t\ttype: PROJECT_ROLES_FETCHING,\n\t\tfetching,\n\t\tprojectId\n\t}\n}\n\nconst setProjectRolesAction = (projectId: number, items: ProjectIsActiveResponse[]): PersistProjectItemsActionType => {\n\treturn {\n\t\ttype: PROJECT_ROLES_SET,\n\t\titems,\n\t\tprojectId\n\t}\n}\n","import store from 'base/reducer/store';\nimport { FetchingProjectItemsActionType, PersistProjectItemsActionType } from 'features/Persist/actionTypes';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { ProjectConfigDeltaRequest, ProjectIsActiveResponse, ProjectTeamClient } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\n\nexport const getProjectTeamsAction = (projectId: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectTeamClient();\n\treturn client.getAllByProjectId(tenantId, projectId);\n}\n\nexport const updateProjectTeamsAction = (projectId: number, model: ProjectConfigDeltaRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectTeamClient();\n\treturn client.update(tenantId, projectId, model);\n}\n\nexport const persistProjectTeamsAction = async (projectId: number) => {\n\tconst state = store.getState();\n\n\tif (state.persistedProjectTeam.projectMap[projectId]?.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setProjectTeamsFetchingAction(true, projectId));\n\n\tconst bindedAction = getProjectTeamsAction.bind(null, projectId);\n\tconst response = await tryCatchJsonByAction(bindedAction);\n\n\tif (response.success && response.items) {\n\t\tstore.dispatch(setProjectTeamsAction(projectId, response.items || []));\n\t} else {\n\t\tstore.dispatch(setProjectTeamsFetchingAction(false, projectId));\n\t}\n}\n\n// persist project teams redux\n\nexport const PROJECT_TEAMS_FETCHING = 'PROJECT_TEAMS_FETCHING';\nexport const PROJECT_TEAMS_SET = 'PROJECT_TEAMS_SET';\n\nconst setProjectTeamsFetchingAction = (fetching: boolean, projectId: number): FetchingProjectItemsActionType => {\n\treturn {\n\t\ttype: PROJECT_TEAMS_FETCHING,\n\t\tfetching,\n\t\tprojectId\n\t}\n}\n\nconst setProjectTeamsAction = (projectId: number, items: ProjectIsActiveResponse[]): PersistProjectItemsActionType => {\n\treturn {\n\t\ttype: PROJECT_TEAMS_SET,\n\t\titems,\n\t\tprojectId\n\t}\n}\n","import store from \"base/reducer/store\";\nimport { FetchingProjectValueActionType, PersistProjectValueActionType } from \"features/Persist/actionTypes\";\nimport { getTenantId } from \"features/Tenant/tenantUtils\";\nimport { TimesheetRequiredFieldsClient, TimesheetRequiredFieldsRequest, TimesheetRequiredFieldsResponse } from \"services/tenantManagementService\";\nimport { tryCatchJsonByAction } from \"utils/fetchUtils\";\n\nexport const getTimesheetRequiredFieldsAction = (projectId: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TimesheetRequiredFieldsClient();\n\treturn client.get(tenantId, projectId);\n}\n\nexport const updateTimesheetRequiredFieldsAction = (projectId: number, model: TimesheetRequiredFieldsRequest | undefined) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TimesheetRequiredFieldsClient();\n\treturn client.update(tenantId, projectId, model);\n}\n\nexport const persistTimesheetRequiredFieldsAction = async (projectId: number) => {\n\tconst state = store.getState();\n\n\tif (state.persistedTimesheetRequiredFields.projectMap[projectId]?.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setTimesheetRequiredFieldsFetchingAction(true, projectId));\n\n\tconst bindedAction = getTimesheetRequiredFieldsAction.bind(null, projectId);\n\tconst response = await tryCatchJsonByAction(bindedAction);\n\n\tif (response.success) {\n\t\tstore.dispatch(setTimesheetRequiredFieldsAction(projectId, response.value || new TimesheetRequiredFieldsResponse()));\n\t} else {\n\t\tstore.dispatch(setTimesheetRequiredFieldsFetchingAction(false, projectId));\n\t}\n}\n\n// redux\nexport const TIMESHEET_REQUIRED_FIELDS_FETCHING = 'TIMESHEET_REQUIRED_FIELDS_FETCHING';\nexport const TIMESHEET_REQUIRED_FIELDS_SET = 'TIMESHEET_REQUIRED_FIELDS_SET';\n\nconst setTimesheetRequiredFieldsFetchingAction = (fetching: boolean, projectId: number): FetchingProjectValueActionType => {\n\treturn {\n\t\ttype: TIMESHEET_REQUIRED_FIELDS_FETCHING,\n\t\tfetching,\n\t\tprojectId\n\t}\n}\n\nconst setTimesheetRequiredFieldsAction = (projectId: number, value: TimesheetRequiredFieldsResponse): PersistProjectValueActionType => {\n\treturn {\n\t\ttype: TIMESHEET_REQUIRED_FIELDS_SET,\n\t\tvalue,\n\t\tprojectId\n\t}\n}\n","import store from 'base/reducer/store';\nimport { FetchingProjectValueActionType, PersistProjectValueActionType } from 'features/Persist/actionTypes';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { ScheduleConfigurationClient, ScheduleConfigurationRequest, ScheduleConfigurationResponse } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\n\nexport const getScheduleConfigurationAction = (projectId: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ScheduleConfigurationClient();\n\treturn client.get(tenantId, projectId);\n}\n\nexport const updateScheduleConfigurationAction = (projectId: number, model: ScheduleConfigurationRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ScheduleConfigurationClient();\n\treturn client.update(tenantId, projectId, model);\n}\n\nexport const persistScheduleConfigurationAction = async (projectId: number) => {\n\tconst state = store.getState();\n\n\tif (state.persistedScheduleConfiguration.projectMap[projectId]?.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setScheduleConfigurationFetchingAction(true, projectId));\n\n\tconst bindedAction = getScheduleConfigurationAction.bind(null, projectId);\n\tconst response = await tryCatchJsonByAction(bindedAction);\n\n\tif (response.success) {\n\t\tstore.dispatch(setScheduleConfigurationAction(projectId, response.value || new ScheduleConfigurationResponse()));\n\t} else {\n\t\tstore.dispatch(setScheduleConfigurationFetchingAction(false, projectId));\n\t}\n}\n\n// redux\n\nexport const SCHEDULE_CONFIGURATION_FETCHING = 'SCHEDULE_CONFIGURATION_FETCHING';\nexport const SCHEDULE_CONFIGURATION_SET = 'SCHEDULE_CONFIGURATION_SET';\n\nconst setScheduleConfigurationFetchingAction = (fetching: boolean, projectId: number): FetchingProjectValueActionType => {\n\treturn {\n\t\ttype: SCHEDULE_CONFIGURATION_FETCHING,\n\t\tfetching,\n\t\tprojectId\n\t}\n}\n\nconst setScheduleConfigurationAction = (projectId: number, value: ScheduleConfigurationResponse): PersistProjectValueActionType => {\n\treturn {\n\t\ttype: SCHEDULE_CONFIGURATION_SET,\n\t\tvalue,\n\t\tprojectId\n\t}\n}\n","import { ProjectConfigOrderDeltaRequest, ProjectIsActiveResponse, ScopeDepartmentClient } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport store from 'base/reducer/store';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport { FetchingProjectItemsActionType, PersistProjectItemsActionType } from 'features/Persist/actionTypes';\n\nexport const getDepartmentsAction = (projectId: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ScopeDepartmentClient();\n\treturn client.getAll(tenantId, projectId);\n}\n\nexport const updateDepartmentsAction = (projectId: number, delta: ProjectConfigOrderDeltaRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ScopeDepartmentClient();\n\treturn client.update(tenantId, projectId, delta);\n}\n\nexport const persistDepartmentsAction = async (projectId: number) => {\n\tconst state = store.getState();\n\n\tif (state.persistedProjectTeam.projectMap[projectId]?.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setDepartmentsFetchingAction(true, projectId));\n\n\tconst bindedAction = getDepartmentsAction.bind(null, projectId);\n\tconst response = await tryCatchJsonByAction(bindedAction);\n\n\tif (response.success && response.items) {\n\t\tstore.dispatch(setDepartmentsAction(projectId, response.items || []));\n\t} else {\n\t\tstore.dispatch(setDepartmentsFetchingAction(false, projectId));\n\t}\n}\n\n// persist departments redux\n\nexport const DEPARTMENTS_FETCHING = 'DEPARTMENTS_FETCHING';\nexport const DEPARTMENTS_SET = 'DEPARTMENTS_SET';\n\nconst setDepartmentsFetchingAction = (fetching: boolean, projectId: number): FetchingProjectItemsActionType => {\n\treturn {\n\t\ttype: DEPARTMENTS_FETCHING,\n\t\tfetching,\n\t\tprojectId\n\t}\n}\n\nconst setDepartmentsAction = (projectId: number, items: ProjectIsActiveResponse[]): PersistProjectItemsActionType => {\n\treturn {\n\t\ttype: DEPARTMENTS_SET,\n\t\titems,\n\t\tprojectId\n\t}\n}\n","import { ProjectConfigOrderDeltaRequest, ProjectIsActiveResponse, ScopeStepTypeClient } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport store from 'base/reducer/store';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport { FetchingProjectItemsActionType, PersistProjectItemsActionType } from 'features/Persist/actionTypes';\n\nexport const getStepTypesAction = (projectId: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ScopeStepTypeClient();\n\treturn client.getAll(tenantId, projectId);\n}\n\nexport const updateStepTypesAction = (projectId: number, delta: ProjectConfigOrderDeltaRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ScopeStepTypeClient();\n\treturn client.update(tenantId, projectId, delta);\n}\n\nexport const persistStepTypesAction = async (projectId: number) => {\n\tconst state = store.getState();\n\n\tif (state.persistedProjectTeam.projectMap[projectId]?.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setStepTypesFetchingAction(true, projectId));\n\n\tconst bindedAction = getStepTypesAction.bind(null, projectId);\n\tconst response = await tryCatchJsonByAction(bindedAction);\n\n\tif (response.success && response.items) {\n\t\tstore.dispatch(setStepTypesAction(projectId, response.items || []));\n\t} else {\n\t\tstore.dispatch(setStepTypesFetchingAction(false, projectId));\n\t}\n}\n\n// persist step types redux\n\nexport const STEP_TYPES_FETCHING = 'STEP_TYPES_FETCHING';\nexport const STEP_TYPES_SET = 'STEP_TYPES_SET';\n\nconst setStepTypesFetchingAction = (fetching: boolean, projectId: number): FetchingProjectItemsActionType => {\n\treturn {\n\t\ttype: STEP_TYPES_FETCHING,\n\t\tfetching,\n\t\tprojectId\n\t}\n}\n\nconst setStepTypesAction = (projectId: number, items: ProjectIsActiveResponse[]): PersistProjectItemsActionType => {\n\treturn {\n\t\ttype: STEP_TYPES_SET,\n\t\titems,\n\t\tprojectId\n\t}\n}\n","import { ProjectConfigOrderDeltaRequest, ProjectIsActiveResponse, ScopeUserRoleClient } from 'services/tenantManagementService';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport store from 'base/reducer/store';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport { FetchingProjectItemsActionType, PersistProjectItemsActionType } from 'features/Persist/actionTypes';\n\nexport const getUserRolesAction = (projectId: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ScopeUserRoleClient();\n\treturn client.getAll(tenantId, projectId);\n}\n\nexport const updateUserRolesAction = (projectId: number, delta: ProjectConfigOrderDeltaRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ScopeUserRoleClient();\n\treturn client.update(tenantId, projectId, delta);\n}\n\nexport const persistUserRolesAction = async (projectId: number) => {\n\tconst state = store.getState();\n\n\tif (state.persistedProjectTeam.projectMap[projectId]?.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setUserRolesFetchingAction(true, projectId));\n\n\tconst bindedAction = getUserRolesAction.bind(null, projectId);\n\tconst response = await tryCatchJsonByAction(bindedAction);\n\n\tif (response.success && response.items) {\n\t\tstore.dispatch(setUserRolesAction(projectId, response.items || []));\n\t} else {\n\t\tstore.dispatch(setUserRolesFetchingAction(false, projectId));\n\t}\n}\n\n// persist user roles redux\n\nexport const USER_ROLES_FETCHING = 'USER_ROLES_FETCHING';\nexport const USER_ROLES_SET = 'USER_ROLES_SET';\n\nconst setUserRolesFetchingAction = (fetching: boolean, projectId: number): FetchingProjectItemsActionType => {\n\treturn {\n\t\ttype: USER_ROLES_FETCHING,\n\t\tfetching,\n\t\tprojectId\n\t}\n}\n\nconst setUserRolesAction = (projectId: number, items: ProjectIsActiveResponse[]): PersistProjectItemsActionType => {\n\treturn {\n\t\ttype: USER_ROLES_SET,\n\t\titems,\n\t\tprojectId\n\t}\n}\n","import store from 'base/reducer/store';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { ApprovalTimeTravelDescriptiveRequest, ExportDataModel, GenericFilterModelCollection, InsertTravelRequestRequest, MonthEnum, TravelRequestClient, TravelRequestResponse, UpdateTravelRequestRequest } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\n\nexport const getTravelRequestAction = (id: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TravelRequestClient();\n\treturn client.get(tenantId, id);\n}\n\nexport const getAllMyTravelRequestsGenericAction = (years: number[], months: MonthEnum[], filter: GenericFilterModelCollection) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TravelRequestClient();\n\treturn client.getAllMyGeneric(tenantId, years, months, filter);\n}\n\nexport const getAllMyTravelRequestsGenericTotalsAction = (years: number[], months: MonthEnum[], filter: GenericFilterModelCollection) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TravelRequestClient();\n\treturn client.getAllMyGenericTotals(tenantId, years, months, filter);\n}\n\nexport const getAllMyTravelRequestsAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TravelRequestClient();\n\treturn client.getAllMy(tenantId);\n}\n\nexport const getAllTravelRequestsGenericAction = (years: number[], months: MonthEnum[], filter: GenericFilterModelCollection) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TravelRequestClient();\n\treturn client.getAllGeneric(tenantId, years, months, filter);\n}\n\nexport const getAllTravelRequestsGenericTotalsAction = (years: number[], months: MonthEnum[], filter: GenericFilterModelCollection) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TravelRequestClient();\n\treturn client.getAllGenericTotals(tenantId, years, months, filter);\n}\n\nexport const createTravelRequestAction = (model: InsertTravelRequestRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TravelRequestClient();\n\treturn client.create(tenantId, model);\n}\n\nexport const updateTravelRequestAction = (model: UpdateTravelRequestRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TravelRequestClient();\n\treturn client.update(tenantId, model);\n}\n\nexport const deleteTravelRequestAction = (id: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TravelRequestClient();\n\treturn client.delete(tenantId, id);\n}\n\nexport const releaseMyTravelRequestAction = (id: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TravelRequestClient();\n\treturn client.releaseMy(tenantId, id);\n}\n\nexport const approvalTravelRequestAction = (id: number, model: ApprovalTimeTravelDescriptiveRequest ) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TravelRequestClient();\n\treturn client.approval(tenantId, id, model);\n}\n\nexport const exportTravelRequestsAction = (years: number[], months: MonthEnum[], body: ExportDataModel) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TravelRequestClient();\n\treturn client.exportAll(tenantId, years, months, body);\n}\n\nexport const persistTravelRequestsAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTravelRequests.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setTravelRequestsFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getAllMyTravelRequestsAction);\n\tif (response.success) {\n\t\tstore.dispatch(setTravelRequestsAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setTravelRequestsFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TRAVEL_REQUESTS_FETCHING = 'TRAVEL_REQUESTS_FETCHING';\nexport const TRAVEL_REQUESTS_SET = 'TRAVEL_REQUESTS_SET';\n\nconst setTravelRequestsFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TRAVEL_REQUESTS_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setTravelRequestsAction = (items: TravelRequestResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: TRAVEL_REQUESTS_SET,\n\t\titems\n\t}\n}\n","import { CountryClient, IdNameSymbolResponse } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils'\nimport store from 'base/reducer/store';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\n// api\n\nexport const getCountriesAction = () => {\n\tconst client = new CountryClient();\n\treturn client.getCountries();\n}\n\nexport const persistCountriesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedCountry.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setCountriesFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getCountriesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setCountriesAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setCountriesFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const COUNTRIES_FETCHING = 'COUNTRIES_FETCHING';\nexport const COUNTRIES_SET = 'COUNTRIES_SET';\n\nconst setCountriesFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: COUNTRIES_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setCountriesAction = (items: IdNameSymbolResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: COUNTRIES_SET,\n\t\titems\n\t}\n}\n","export enum CrudEnum {\n\tCreate = 'create',\n\tRead = 'read',\n\tUpdate = 'update',\n\tDelete = 'delete'\n}\n\nexport enum CrudSubRoutesEnum {\n\tCreate = 'create',\n\tRead = 'read',\n\tUpdate = 'update'\n}\n","import path from 'path-browserify'\nimport { CrudSubRoutesEnum } from './CrudEnum';\nimport { defaultPaginationLimit, FilterSortPageType, FilterType, InteractionManagerTyped, SortType } from 'components/Table';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\nimport { RootState } from 'base/reducer/reducer';\nimport { setColumnsOrderAction, setColumnsWidthAction, setFiltersAction, setSortAction } from 'features/UserTableViewConfig/tableConfig/action';\nimport { ColumnsOrderType, ColumnsWidthType } from 'features/UserTableViewConfig/tableConfig/reducer';\n\ntype ReturnType = {\n\tinteractionManager: InteractionManagerTyped\n\tcolumnsOrder?: ColumnsOrderType\n\tcolumnsWidth?: ColumnsWidthType\n\tfilterSortPage: FilterSortPageType\n}\n\nconst getSort = (columnId: string | undefined, defaultSort: SortType, filterSortPage: FilterSortPageType) => {\n\tif (!columnId) {\n\t\treturn defaultSort;\n\t}\n\n\t// if some other column is sorted, just set new column and ascending\n\tif (columnId !== filterSortPage.sort?.columnId) {\n\t\treturn { columnId, isAsc: true };\n\t}\n\n\t// if clicked on the same column sort icon, change sorting to next one\n\n\tif (filterSortPage.sort.isAsc) {\n\t\t// ascending -> descending\n\t\treturn { columnId, isAsc: false };\n\t} else if (defaultSort.columnId !== columnId) {\n\t\t// descending -> no sort (only if it is not default column)\n\t\treturn defaultSort;\n\t} else {\n\t\t// no sort -> ascending\n\t\treturn { columnId, isAsc: true };\n\t}\n}\n\nexport const useTableInteractionManager = (tableId: string, defaultSortColumnId?: string, defaultSortIsAsc?: boolean, defaultNestedLimit?: number): ReturnType => {\n\tconst history = useHistory();\n\tconst tableConfig = useSelector((state: RootState) => state.persistedTablesConfig.value[tableId]);\n\n\tconst [selectedRow, setSelectedRow] = useState();\n\tconst [offset, setOffset] = useState(0);\n\tconst [nestedLimit, setNestedLimit] = useState(defaultNestedLimit);\n\n\tconst defaultSort = useMemo(\n\t\t(): SortType => ({\n\t\t\tcolumnId: defaultSortColumnId,\n\t\t\tisAsc: defaultSortIsAsc\n\t\t}),\n\t\t[defaultSortColumnId, defaultSortIsAsc]\n\t)\n\n\tconst filterSortPage = useMemo(\n\t\t() => ({\n\t\t\toffset,\n\t\t\tlimit: defaultPaginationLimit,\n\t\t\tnestedLimit,\n\t\t\tsort: tableConfig?.sort || defaultSort,\n\t\t\tfilters: tableConfig?.filters\n\t\t}),\n\t\t[offset, nestedLimit, tableConfig?.sort, tableConfig?.filters, defaultSort]\n\t)\n\n\tconst click = useCallback(\n\t\t(rowData: any) => {\n\t\t\tsetSelectedRow((state) => state !== rowData ? rowData : undefined);\n\t\t},\n\t\t[]\n\t);\n\n\tconst doubleClick = useCallback(\n\t\t(rowData: any) => {\n\t\t\t// INFO: Jedina tabela koja je specificna i nema svoj ID (konfiguracija joj je cudna jako) i za nju nismo podrzali double/middle click:\n\t\t\t// https://domain2020.mavles-staging.com/time_travel/approval/timesheets/read/2/20/2/1727733600000/1730329200000\n\t\t\thistory.push(path.join(history.location.pathname, CrudSubRoutesEnum.Read, String(rowData.id)));\n\t\t},\n\t\t[history]\n\t)\n\n\tconst middleClick = useCallback(\n\t\t(rowData: any) => {\n\t\t\twindow.open(path.join(history.location.pathname, CrudSubRoutesEnum.Read, String(rowData.id)), '_blank');\n\t\t},\n\t\t[history]\n\t)\n\n\tconst reorderColumn = useCallback(\n\t\tasync (columnsOrder: string[] | undefined) => {\n\t\t\tawait setColumnsOrderAction(tableId, columnsOrder);\n\t\t},\n\t\t[tableId]\n\t)\n\n\tconst resizeColumn = useCallback(\n\t\tasync (columnId: string, size: number | undefined) => {\n\t\t\tconst newColumnsWidth = { ...tableConfig?.columnsWidth }\n\t\t\tif (newColumnsWidth[columnId] === size) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (size) {\n\t\t\t\tnewColumnsWidth[columnId] = size;\n\t\t\t} else {\n\t\t\t\t// size is auto, so just remove it\n\t\t\t\tdelete newColumnsWidth[columnId];\n\t\t\t}\n\t\t\tawait setColumnsWidthAction(tableId, newColumnsWidth);\n\t\t},\n\t\t[tableId, tableConfig]\n\t)\n\n\tconst resetAllColumnWidths = useCallback(\n\t\tasync () => {\n\t\t\tawait setColumnsWidthAction(tableId, {});\n\t\t},\n\t\t[tableId]\n\t)\n\n\t// Three click sorting on the column: ascending, descending, and reset to default sort\n\tconst sort = useCallback(\n\t\t(columnId: string | undefined) => {\n\t\t\tconst newSort = getSort(columnId, defaultSort, filterSortPage);\n\t\t\tsetSortAction(tableId, newSort);\n\t\t},\n\t\t[defaultSort, filterSortPage, tableId]\n\t)\n\n\tconst filter = useCallback(\n\t\t(filters: FilterType[]) => {\n\t\t\tsetFiltersAction(tableId, filters);\n\t\t\tsetOffset(0);\n\t\t},\n\t\t[tableId]\n\t)\n\n\tconst changeOffset = useCallback(\n\t\t(newOffset: number) => {\n\t\t\tsetOffset(newOffset);\n\t\t\tsetNestedLimit(defaultNestedLimit);\n\t\t},\n\t\t[defaultNestedLimit]\n\t)\n\n\treturn useMemo(\n\t\t() => ({\n\t\t\tinteractionManager: {\n\t\t\t\tclick,\n\t\t\t\tdoubleClick,\n\t\t\t\tmiddleClick,\n\t\t\t\treorderColumn,\n\t\t\t\tresizeColumn,\n\t\t\t\tresetAllColumnWidths,\n\t\t\t\tsort,\n\t\t\t\tfilter,\n\t\t\t\tchangeOffset,\n\t\t\t\tchangeNestedLimit: setNestedLimit,\n\t\t\t\tselectedRow\n\t\t\t},\n\t\t\tcolumnsOrder: tableConfig?.columnsOrder,\n\t\t\tcolumnsWidth: tableConfig?.columnsWidth,\n\t\t\tfilterSortPage\n\t\t}),\n\t\t[click, doubleClick, middleClick, reorderColumn, resizeColumn, resetAllColumnWidths, sort, filter, changeOffset, setNestedLimit, selectedRow, tableConfig, filterSortPage]\n\t)\n}\n","import { CurrencyClient, IdNameSymbolResponse } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils'\nimport store from 'base/reducer/store';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\nexport const getCurrenciesAction = () => {\n\tconst client = new CurrencyClient();\n\treturn client.getCurrencies();\n}\n\nexport const persistCurrenciesAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedCurrency.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setCurrenciesFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getCurrenciesAction);\n\tif (response.success) {\n\t\tstore.dispatch(setCurrenciesAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setCurrenciesFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const CURRENCIES_SET = 'CURRENCIES_SET';\nexport const CURRENCIES_FETCHING = 'CURRENCIES_FETCHING';\n\nconst setCurrenciesFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: CURRENCIES_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setCurrenciesAction = (items: IdNameSymbolResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: CURRENCIES_SET,\n\t\titems\n\t}\n}\n","// redux\n\nimport store from 'base/reducer/store';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { DateTimePatternClient, DateTimePatternResponse } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\n\nexport const getDatePatternsAction = () => {\n\tconst client = new DateTimePatternClient();\n\treturn client.getDatePatterns();\n}\n\nexport const getTimePatternsAction = () => {\n\tconst client = new DateTimePatternClient();\n\treturn client.getTimePatterns();\n}\n\nexport const persistDatePatternsAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedDatePattern.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setDatePatternFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getDatePatternsAction);\n\tif (response.success) {\n\t\tstore.dispatch(setDatePatternAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setDatePatternFetchingAction(false));\n\t}\n}\n\nexport const persistTimePatternsAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTimePattern.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setTimePatternFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getTimePatternsAction);\n\tif (response.success) {\n\t\tstore.dispatch(setTimePatternAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setTimePatternFetchingAction(false));\n\t}\n}\n\nexport const DATE_PATTERN_FETCHING = 'DATE_PATTERN_FETCHING';\nexport const DATE_PATTERN_SET = 'DATE_PATTERN_SET';\n\nexport const TIME_PATTERN_FETCHING = 'TIME_PATTERN_FETCHING';\nexport const TIME_PATTERN_SET = 'TIME_PATTERN_SET';\n\nconst setDatePatternFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: DATE_PATTERN_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setDatePatternAction = (items: DateTimePatternResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: DATE_PATTERN_SET,\n\t\titems\n\t}\n}\n\nconst setTimePatternFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TIME_PATTERN_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setTimePatternAction = (items: DateTimePatternResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: TIME_PATTERN_SET,\n\t\titems\n\t}\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"errorBoundaryFallback_container__6jFII\",\"message\":\"errorBoundaryFallback_message__DtelH\"};","import { useEffect, useCallback } from 'react';\nimport { useHistory } from 'react-router';\nimport styles from './errorBoundaryFallback.module.scss'\nimport Button from 'components/Button';\nimport { ColumnContainer, RowContainer } from 'components/Layout';\n\nexport type ErrorBoundaryFallbackProps = {\n\t// props from Error Boundary\n\terror: Error;\n\tcomponentStack: string | null;\n\teventId: string | null;\n\tresetError(): void;\n\n\t// custom fallback props\n\tshowButtons?: boolean;\n}\n\nconst ErrorBoundaryFallback = ({ error, componentStack, eventId, resetError, showButtons = true }: ErrorBoundaryFallbackProps) => {\n\tconst history = useHistory();\n\n\tuseEffect(\n\t\t() => {\n\t\t\tif (history) {\n\t\t\t\tconst unregister = history.listen(resetError)\n\t\t\t\treturn unregister;\n\t\t\t}\n\t\t},\n\t\t[history, resetError]\n\t)\n\n\tconst goBackCallback = useCallback(\n\t\t() => history.length > 0 ? history.goBack() : undefined,\n\t\t[history]\n\t)\n\n\tconst goHomeCallback = useCallback(\n\t\t() => history.push('/'),\n\t\t[history]\n\t)\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t

\n\t\t\t\t\t\tSomething went wrong!\n\t\t\t\t\t

\n\t\t\t\t\n\t\t\t\t{\n\t\t\t\t\tshowButtons &&\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t
\n\t\t
\n\t)};\n\nexport default ErrorBoundaryFallback;\n","import { useMemo, useCallback } from 'react';\nimport { ErrorReportingErrorBoundary } from 'services/errorReportingService';\nimport ErrorBoundaryFallback from './ErrorBoundaryFallback';\n\ntype ErrorBoundaryProps = {\n\tchildren: any;\n\tfallback?: any;\n\tlocation?: string;\n\tfallbackProps?: any\n}\n\nconst ErrorBoundary = ({ children, fallback = ErrorBoundaryFallback, location, fallbackProps }: ErrorBoundaryProps) => {\n\n\tconst fallbackCallback = useCallback(\n\t\t(props: any) => {\n\t\t\tconst FC = fallback;\n\t\t\treturn (\n\t\t\t\t\n\t\t\t)\n\t\t},\n\t\t[fallback, fallbackProps]\n\t)\n\n\tconst beforeCaptureMemo = useMemo(\n\t\t() => {\n\t\t\tif (!location) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn (scope: any) => {\n\t\t\t\tscope.setTag('location', location);\n\t\t\t}\n\t\t},\n\t\t[location]\n\t)\n\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t)\n}\n\nexport default ErrorBoundary;\n","import { useState, useCallback, useMemo } from 'react';\nimport FileSaver from 'file-saver';\nimport { ExportModel } from 'features/Export/ExportForm';\nimport { ExportDataModel, FileResponse } from 'services/tenantManagementService';\nimport ExportToFile, { defaultExportTypeOptions } from './ExportToFile';\nimport { tryCatchExportFileByAction } from 'utils/exportUtils';\nimport { GenericColumnModel, FilterSortPageType } from 'components/Table';\nimport { BackendColumnFieldsMap, usePrepareExportModel } from 'features/TableColumns/prepareExportColumns';\nimport { RadioItemType } from 'components/Form';\n\nexport type ExportFormFlags = {\n\tforceApplyFilters?: boolean\n\tforceApplySort?: boolean\n\tforceUseOnlyVisible?: boolean\n\tforceExportOnlyCurrentPage?: boolean\n\thideApplyFilters?: boolean\n\thideApplySort?: boolean\n\thideUseOnlyVisible?: boolean\n\thideExportOnlyCurrentPage?: boolean\n}\n\ntype Props = ExportFormFlags & {\n\tvisibleColumns: GenericColumnModel[]\n\thiddenColumns: GenericColumnModel[]\n\tspecificBackendColumnFieldsMap?: BackendColumnFieldsMap\n\tfilterSortPage: FilterSortPageType\n\texportAction(exportDataModel: ExportDataModel, exportModel?: ExportModel): Promise\n\ttitle: string\n exportTypeOptions?: RadioItemType[]\n\tcreateExportModelFunction?: (visibleColumns: GenericColumnModel[], hiddenColumns: GenericColumnModel[], specificBackendColumnFieldsMap: BackendColumnFieldsMap, exportModel: ExportModel, filterSortPage: FilterSortPageType) => ExportDataModel\n}\n\nexport const Export = ({\n\tvisibleColumns,\n\thiddenColumns,\n\tspecificBackendColumnFieldsMap,\n\tfilterSortPage,\n\texportAction,\n\ttitle,\n\texportTypeOptions = defaultExportTypeOptions,\n\tforceApplyFilters,\n\tforceApplySort,\n\tforceUseOnlyVisible,\n\tforceExportOnlyCurrentPage,\n\thideApplyFilters,\n\thideApplySort,\n\thideUseOnlyVisible,\n\thideExportOnlyCurrentPage,\n\tcreateExportModelFunction\n}: Props) => {\n\tconst [loadingExport, setLoadingExport] = useState(false);\n\tconst prepareExportModel = usePrepareExportModel();\n\n\tconst createExportFunctionMemo = useMemo(\n\t\t() => createExportModelFunction || prepareExportModel,\n\t\t[createExportModelFunction, prepareExportModel]\n\t)\n\n\tconst exportCallback = useCallback(\n\t\tasync (exportModel: ExportModel) => {\n\t\t\tconst exportDataModel = createExportFunctionMemo(visibleColumns, hiddenColumns, specificBackendColumnFieldsMap || {}, exportModel, filterSortPage);\n\t\t\texportDataModel.title = title;\n\n\t\t\tsetLoadingExport(true);\n\n\t\t\tconst bindedAction = exportAction.bind(null, exportDataModel, exportModel);\n\t\t\tconst response = await tryCatchExportFileByAction(bindedAction);\n\t\t\tif (response.success && response.value) {\n\t\t\t\tFileSaver.saveAs(response.value.data, response.value.fileName);\n\t\t\t}\n\n\t\t\tsetLoadingExport(false);\n\t\t},\n\t\t[visibleColumns, hiddenColumns, exportAction, title, createExportFunctionMemo, specificBackendColumnFieldsMap, filterSortPage]\n\t)\n\n\treturn (\n\t\t\n\t)\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport { RadioItemType, CheckboxField, Form, RadioField } from 'components/Form';\nimport { SmartContainer, SmartItem } from 'components/SmartContainer/SmartContainer';\nimport { ExportDataFileTypeEnum } from 'services/tenantManagementService';\nimport { propertyOf } from 'utils/propertyOf';\n\nexport class ExportModel {\n\tapplyFilters: boolean = true\n\tapplySort: boolean = true\n\tuseOnlyVisible: boolean = true\n\texportOnlyCurrentPage: boolean = false\n\texportType: ExportDataFileTypeEnum = ExportDataFileTypeEnum.CSV\n\n\tconstructor(data?: ExportModel) {\n\t\tif (data) {\n\t\t\tthis.applyFilters = data.applyFilters;\n\t\t\tthis.useOnlyVisible = data.useOnlyVisible;\n\t\t\tthis.exportOnlyCurrentPage = data.exportOnlyCurrentPage;\n\t\t\tthis.applySort = data.applySort;\n\t\t\tthis.exportType = data.exportType;\n\t\t}\n\t}\n}\n\ntype Props = {\n\tsave: (exportModel: ExportModel) => void\n\tcancel: () => void\n\texportTypeOptions: RadioItemType[]\n\tforceApplyFilters?: boolean\n\tforceApplySort?: boolean\n\tforceUseOnlyVisible?: boolean\n\tforceExportOnlyCurrentPage?: boolean\n\thideApplyFilters?: boolean\n\thideApplySort?: boolean\n\thideUseOnlyVisible?: boolean\n\thideExportOnlyCurrentPage?: boolean\n}\n\nconst ExportForm = ({\n\tsave,\n\tcancel,\n\texportTypeOptions,\n\tforceApplyFilters,\n\tforceApplySort,\n\tforceUseOnlyVisible,\n\tforceExportOnlyCurrentPage,\n\thideApplyFilters,\n\thideApplySort,\n\thideUseOnlyVisible,\n\thideExportOnlyCurrentPage,\n}: Props) => {\n\tconst [values, setValues] = useState(new ExportModel());\n\n\tuseEffect(\n\t\t() => {\n\t\t\tsetValues(state => {\n\t\t\t\tconst result = new ExportModel(state);\n\t\t\t\tresult.exportType = exportTypeOptions[0].id as ExportDataFileTypeEnum;\n\t\t\t\tif (forceApplyFilters !== undefined) {\n\t\t\t\t\tresult.applyFilters = forceApplyFilters;\n\t\t\t\t}\n\t\t\t\tif (forceApplySort !== undefined) {\n\t\t\t\t\tresult.applySort = forceApplySort;\n\t\t\t\t}\n\t\t\t\tif (forceUseOnlyVisible !== undefined) {\n\t\t\t\t\tresult.useOnlyVisible = forceUseOnlyVisible;\n\t\t\t\t}\n\t\t\t\tif (forceExportOnlyCurrentPage !== undefined) {\n\t\t\t\t\tresult.exportOnlyCurrentPage = forceExportOnlyCurrentPage;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t})\n\t\t},\n\t\t[exportTypeOptions, forceApplyFilters, forceApplySort, forceUseOnlyVisible, forceExportOnlyCurrentPage]\n\t)\n\n\tconst submitCallback = useCallback(\n\t\tasync () => {\n\t\t\treturn save(values);\n\t\t},\n\t\t[save, values]\n\t)\n\n\tuseEffect(\n\t\t() => {\n\t\t\tif (values.exportOnlyCurrentPage) {\n\t\t\t\tsetValues((state: ExportModel) => {\n\t\t\t\t\tconst result = new ExportModel(state);\n\t\t\t\t\tresult.applyFilters = true;\n\t\t\t\t\tresult.applySort = true;\n\t\t\t\t\treturn result;\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\t[values.exportOnlyCurrentPage]\n\t)\n\n\treturn (\n\t\t (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t('exportType')}\n\t\t\t\t\t\t\titems={exportTypeOptions}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{!hideApplyFilters && (\n\t\t\t\t\t\t\t('applyFilters')}\n\t\t\t\t\t\t\t\tlabel='i18n.export.filter'\n\t\t\t\t\t\t\t\tdisabled={values.exportOnlyCurrentPage || forceApplyFilters !== undefined}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!hideApplySort && (\n\t\t\t\t\t\t\t('applySort')}\n\t\t\t\t\t\t\t\tlabel='i18n.export.sort'\n\t\t\t\t\t\t\t\tdisabled={values.exportOnlyCurrentPage || forceApplySort !== undefined}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!hideUseOnlyVisible && (\n\t\t\t\t\t\t\t('useOnlyVisible')}\n\t\t\t\t\t\t\t\tlabel='i18n.export.visible'\n\t\t\t\t\t\t\t\tdisabled={forceUseOnlyVisible !== undefined}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!hideExportOnlyCurrentPage && (\n\t\t\t\t\t\t\t('exportOnlyCurrentPage')}\n\t\t\t\t\t\t\t\tlabel='i18n.export.current'\n\t\t\t\t\t\t\t\tdisabled={forceExportOnlyCurrentPage !== undefined}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t/>\n\t)\n}\n\nexport default ExportForm;\n","import Button from 'components/Button';\nimport { Dialog } from 'components/Dialog';\nimport { useCallback, useState } from 'react';\nimport { ExportDataFileTypeEnum } from 'services/tenantManagementService';\nimport ExportForm, { ExportModel } from './ExportForm';\nimport { RadioItemType } from 'components/Form';\n\nexport const defaultExportTypeOptions = [\n\t{ id: ExportDataFileTypeEnum.PDF, text: `i18n.export.pdf` },\n\t{ id: ExportDataFileTypeEnum.XLSX, text: `i18n.export.xlsx` }\n]\n\ntype Props = {\n\tonExport: (exportModel: ExportModel) => void\n\tloading?: boolean\n\texportTypeOptions?: RadioItemType[]\n\tforceApplyFilters?: boolean\n\tforceApplySort?: boolean\n\tforceUseOnlyVisible?: boolean\n\tforceExportOnlyCurrentPage?: boolean\n\thideApplyFilters?: boolean\n\thideApplySort?: boolean\n\thideUseOnlyVisible?: boolean\n\thideExportOnlyCurrentPage?: boolean\n}\n\nconst ExportToFile = ({\n\tonExport,\n\tloading,\n\texportTypeOptions,\n\tforceApplyFilters,\n\tforceApplySort,\n\tforceUseOnlyVisible,\n\tforceExportOnlyCurrentPage,\n\thideApplyFilters,\n\thideApplySort,\n\thideUseOnlyVisible,\n\thideExportOnlyCurrentPage,\n}: Props) => {\n\tconst [isOpen, setIsOpen] = useState(false);\n\n\tconst exportTypeOptionsMemo =\n\t\t!exportTypeOptions || exportTypeOptions.length === 0\n\t\t\t? defaultExportTypeOptions\n\t\t\t: exportTypeOptions;\n\n\n\tconst exportCallback = useCallback(\n\t\t(exportModel: ExportModel) => {\n\t\t\tonExport(exportModel);\n\t\t\tsetIsOpen(false);\n\t\t},\n\t\t[onExport]\n\t)\n\n\tconst cancelCallback = useCallback(\n\t\t() => setIsOpen(false),\n\t\t[]\n\t)\n\n\tconst openModalCallback = useCallback(\n\t\t() => setIsOpen(true),\n\t\t[]\n\t)\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default ExportToFile;\n","export class PersistItemsReducer

{\n\t// if first fetch was finished and there are some data in reducer\n\tisInitialized: boolean = false;\n\t// is fetching in progress\n\tfetching: boolean = false;\n\n\titems: P[] = [];\n\n\titemsMap: { [id: number]: P | undefined } = {};\n}\n\nexport class PersistActiveItemsReducer

extends PersistItemsReducer

{\n\t// items array with isActive = true\n\tactiveItems: P[] = [];\n\n\t// itemsMap with isActive = true\n\tactiveItemsMap: { [id: number]: P | undefined } = {};\n}\n\nexport class PersistValueReducer

{\n\t// if first fetch was finished and there are some data in reducer\n\tisInitialized: boolean = false;\n\t// is fetching in progress\n\tfetching: boolean = false;\n\n\tvalue: P = {} as P;\n}\n\nexport class PersistProjectItemsReducer

{\n\tprojectMap: {\n\t\t[id: number]: PersistItemsReducer

| undefined\n\t} = {};\n}\n\nexport class PersistProjectValueReducer

{\n\tprojectMap: {\n\t\t[id: number]: PersistValueReducer

| undefined\n\t} = {};\n}\n","import { ProjectClient, InsertProjectRequest, UpdateProjectRequest, ProjectIdRequest, UpdateProjectDataRequest, ExportDataModel, GenericFilterModelCollection, ProjectResponse, UpdateProjectInformationRequest } from 'services/tenantManagementService'\nimport { getTenantId } from 'features/Tenant/tenantUtils';\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\n\nimport store from 'base/reducer/store';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\n\nexport const getProjectsAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectClient();\n\treturn client.getAll(tenantId);\n}\n\nexport const getProjectsGenericAction = (genericFilter: GenericFilterModelCollection) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectClient();\n\treturn client.getAllGenericFilter(tenantId, genericFilter);\n}\n\nexport const getProjectsForOrgUnitManagerUsersAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectClient();\n\treturn client.getAllForOrgUnitManagerUsers(tenantId);\n}\n\nexport const getProjectsForOrgUnitManagerAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectClient();\n\treturn client.getAllForOrgUnitManager(tenantId);\n}\n\nexport const getProjectAction = (id: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectClient();\n\treturn client.get(tenantId, id);\n}\n\nexport const createProjectAction = (project: InsertProjectRequest ) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectClient();\n\treturn client.create(tenantId, project);\n}\n\nexport const updateProjectAction = (project: UpdateProjectRequest ) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectClient();\n\treturn client.update(tenantId, project);\n}\n\nexport const deleteProjectAction = (id: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectClient();\n\treturn client.delete(tenantId, id);\n}\n\nexport const updateProjectDataAction = (project: UpdateProjectDataRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectClient();\n\treturn client.updateProjectData(tenantId, project);\n}\n\nexport const getProjectInformationAction = (projectId: number) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectClient();\n\treturn client.getProjectInformation(tenantId, projectId);\n}\n\nexport const updateProjectInformationAction = (projectId: number, projectInformations: UpdateProjectInformationRequest) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectClient();\n\treturn client.updateProjectInformation(tenantId, projectId, projectInformations);\n}\n\nexport const archiveProjectAction = (id: number) => {\n\tconst model = new ProjectIdRequest({ projectId: id });\n\tconst tenantId = getTenantId()!;\n\n\tconst client = new ProjectClient();\n\treturn client.achive(tenantId, model);\n}\n\nexport const restoreProjectAction = (id: number) => {\n\tconst model = new ProjectIdRequest({ projectId: id });\n\tconst tenantId = getTenantId()!;\n\n\tconst client = new ProjectClient();\n\treturn client.restore(tenantId, model);\n}\n\nexport const isUserProjectManagerAction = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectClient();\n\treturn client.isUserPM(tenantId);\n}\n\nexport const exportAction = (exportDataModel: ExportDataModel) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new ProjectClient();\n\treturn client.export(tenantId, exportDataModel);\n}\n\nexport const persistProjectsAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedProject.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setProjectsFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getProjectsAction);\n\tif (response.success) {\n\t\tstore.dispatch(setProjectsAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setProjectsFetchingAction(false));\n\t}\n}\n\nexport const persistOrganizationalUnitManagerProjectsAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedOrganizationalUnitManagerProject.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setOrganizationalManagerProjectsFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(getProjectsForOrgUnitManagerAction);\n\tif (response.success) {\n\t\tstore.dispatch(setOrganizationalUnitProjectsAction(response.items || []));\n\t} else {\n\t\tstore.dispatch(setOrganizationalManagerProjectsFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const PROJECTS_FETCHING = 'PROJECTS_FETCHING';\nexport const PROJECTS_SET = 'PROJECTS_SET';\n\nconst setProjectsFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: PROJECTS_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setProjectsAction = (items: ProjectResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: PROJECTS_SET,\n\t\titems\n\t}\n}\n\nexport const ORGANIZATIONAL_UNIT_MANAGER_PROJECTS_FETCHING = 'ORGANIZATIONAL_UNIT_MANAGER_PROJECTS_FETCHING';\nexport const ORGANIZATIONAL_UNIT_MANAGER_PROJECTS_SET = 'ORGANIZATIONAL_UNIT_MANAGER_PROJECTS_SET';\n\nconst setOrganizationalManagerProjectsFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: ORGANIZATIONAL_UNIT_MANAGER_PROJECTS_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setOrganizationalUnitProjectsAction = (items: ProjectResponse[]): PersistItemsActionType => {\n\treturn {\n\t\ttype: ORGANIZATIONAL_UNIT_MANAGER_PROJECTS_SET,\n\t\titems\n\t}\n}\n","import { ActiveModule, ModuleActivityEnum } from 'services/tenantManagementService';\n\nexport const isFieldDisabled = (id: ModuleActivityEnum, values: ActiveModule[]) => {\n\tif (id === ModuleActivityEnum.Project) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const findActiveModule = (moduleEnum: ModuleActivityEnum, values: ActiveModule[] | undefined) => {\n\treturn values?.find(v => v.id === moduleEnum);\n}\n","import { FormContext, IFormContext, ValidatorFunctionType, CheckboxField, ErrorsType } from 'components/Form';\nimport { useCallback, memo, useMemo } from 'react';\nimport { ModuleActivityEnum } from 'services/tenantManagementService';\n\nconst getI18nKeyFromModuleActivityEnum = (moduleEnum: ModuleActivityEnum) => {\n\tswitch (moduleEnum) {\n\t\tcase ModuleActivityEnum.Project:\n\t\t\treturn 'i18n.p.myProjects.maintainProject.projectData.module.project';\n\t\tcase ModuleActivityEnum.Ticket:\n\t\t\treturn 'i18n.p.myProjects.maintainProject.projectData.module.ticket';\n\t\tcase ModuleActivityEnum.Time:\n\t\t\treturn 'i18n.p.myProjects.maintainProject.projectData.module.timeTravel';\n\t\tcase ModuleActivityEnum.Risk:\n\t\t\treturn 'i18n.p.myProjects.maintainProject.projectData.module.risk';\n\t\tcase ModuleActivityEnum.Communication:\n\t\t\treturn 'i18n.p.myProjects.maintainProject.projectData.module.communication';\n\t\tcase ModuleActivityEnum.Schedule:\n\t\t\treturn 'i18n.p.myProjects.maintainProject.projectData.module.schedule';\n\t\tcase ModuleActivityEnum.Scope:\n\t\t\treturn 'i18n.p.myProjects.maintainProject.projectData.module.scope';\n\t\tcase ModuleActivityEnum.Testing:\n\t\t\treturn 'i18n.p.myProjects.maintainProject.projectData.module.testing';\n\t\tcase ModuleActivityEnum.Training:\n\t\t\treturn 'i18n.p.myProjects.maintainProject.projectData.module.training';\n\t\tcase ModuleActivityEnum.Finance:\n\t\t\treturn 'i18n.p.myProjects.maintainProject.projectData.module.finance';\n\t\tcase ModuleActivityEnum.Reporting:\n\t\t\treturn 'i18n.p.myProjects.maintainProject.projectData.module.reporting';\n\t}\n}\n\ntype Props = {\n\tindex: number\n\tvalues: any\n\terrorsMap: ErrorsType\n\tdisabled?: boolean\n\tonFieldChange(index: number, id: string, value: any): void\n\tregisterValidators(index: number, id: string, validatorFunctions: Array): void\n\tvalidateField(index: number, id: string, value?: any): void\n}\n\nexport const ProjectActiveModuleCheckbox = ({ index, disabled, values, registerValidators, errorsMap = {}, onFieldChange, validateField }: Props) => {\n\tconst registerValidatorsCallback = useCallback(\n\t\t(id: string, validatorFunctions: Array) => registerValidators(index, id, validatorFunctions),\n\t\t[index, registerValidators]\n\t)\n\n\tconst onFieldChangeCallback = useCallback(\n\t\t(id: string, value: any) => {\n\t\t\tonFieldChange(index, id, value);\n\t\t},\n\t\t[index, onFieldChange]\n\t)\n\n\tconst validateFieldCallback = useCallback(\n\t\t(id: string, value?: any) => {\n\t\t\tvalidateField(index, id, value);\n\t\t},\n\t\t[index, validateField]\n\t)\n\n\tconst context: IFormContext = useMemo(\n\t\t() => {\n\t\t\treturn {\n\t\t\t\tvalues,\n\t\t\t\terrorsMap,\n\t\t\t\tdisabled,\n\t\t\t\tonFieldChange: onFieldChangeCallback,\n\t\t\t\tvalidateField: validateFieldCallback,\n\t\t\t\tregisterValidators: registerValidatorsCallback\n\t\t\t}\n\t\t},\n\t\t[values, errorsMap, disabled, validateFieldCallback, onFieldChangeCallback, registerValidatorsCallback]\n\t)\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default memo(ProjectActiveModuleCheckbox);\n","import React, { useCallback, memo, useMemo } from 'react';\nimport { ModuleActivityEnum } from 'services/tenantManagementService';\nimport ProjectActiveModuleCheckbox from './ProjectActiveModuleCheckbox';\nimport { ProjectActiveModulesCommonProps } from './ProjectActiveModulesField';\nimport { isFieldDisabled } from './projectActiveModulesHelper';\nimport { Translation } from 'components/Translations/Translation';\n\n// INFO: remove implemented modules when all modules are finished\nconst implementedModules = [\n\tModuleActivityEnum.Project,\n\tModuleActivityEnum.Ticket,\n\tModuleActivityEnum.Scope,\n\tModuleActivityEnum.Testing,\n\tModuleActivityEnum.Training,\n\tModuleActivityEnum.Time,\n\tModuleActivityEnum.Risk,\n\tModuleActivityEnum.Finance,\n\tModuleActivityEnum.Communication,\n\tModuleActivityEnum.Schedule\n]\n\nexport function ProjectActiveModules(props: ProjectActiveModulesCommonProps) {\n\tconst {\n\t\tvalue = [], onChange,\n\t\terrors = [], registerValidators, validateField,\n\t\tdisabled\n\t} = props;\n\n const changeCallback = useCallback(\n (index: number, id: string, newValue: any) => {\n\t\t\tonChange && onChange(index, id, newValue);\n\t\t},\n [onChange]\n\t)\n\n\tconst rowsContent = useMemo(\n\t\t() => {\n\t\t\treturn value.map((rowValues, index) => {\n\t\t\t\tif (!implementedModules.includes(rowValues.id)) {\n\t\t\t\t\treturn \n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t})\n\t\t},\n\t\t[value, errors, disabled, changeCallback, registerValidators, validateField]\n\t)\n\n\treturn (\n\t\t<>\n\t\t\t

\n\t\t\t\t\n\t\t\t
\n\t\t\t
{rowsContent}
\n\t\t\n\t);\n};\n\nexport default memo(ProjectActiveModules);\n","import { ErrorsType, FieldProps, FormContext, IFormContext, ValidatorFunctionType } from 'components/Form';\nimport { ADD_VALIDATOR_TYPE, useRegisteredValidatorsReducer } from 'components/Form/useRegisteredValidatorsReducer';\nimport { useCallback, useContext, useEffect } from 'react';\nimport { ActiveModule, ModuleActivityEnum } from 'services/tenantManagementService';\nimport ProjectActiveModules from './ProjectActiveModules';\n\nexport type ProjectActiveModulesCommonProps = /*ControlsCommonProps &*/ {\n\tvalue?: ActiveModule[]\n\tonChange?(index: number, id: string, value: any): void\n\tdisabled?: boolean\n\terrors: ErrorsType[]\n\tregisterValidators(index: number, id: string, validatorFunctions: ValidatorFunctionType[]): void\n\tvalidateField(index: number, id: string, value?: any): void\n}\n\nexport const ProjectActiveModulesField = ({ id, validator, disabled, inline, ...rest }: FieldProps) => {\n\tconst [registeredValidators, dispatchRegisteredValidators] = useRegisteredValidatorsReducer();\n\tconst context = useContext(FormContext);\n\tconst registerValidatorsInContext = context.registerValidators; // eslint is complaining (in useEffect dependencies) when using context.registerValidators\n\n\tconst validateFieldCallback = useCallback(\n\t\t(id: string, rowValues: any) => {\n\t\t\tconst currentValue = rowValues[id];\n\n\t\t\tfor (const validator of registeredValidators[id] || []) {\n\t\t\t\tconst newError = validator(currentValue, rowValues, id);\n\t\t\t\tif (newError) {\n\t\t\t\t\treturn newError;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t},\n\t\t[registeredValidators]\n\t)\n\n\tconst validateCallback = useCallback(\n\t\t(values: ActiveModule[]) => {\n\t\t\tconst newValues = values || context.values[id] || [];\n\t\t\tconst errors: ErrorsType[] = [];\n\n\t\t\tfor (let i = 0; i < newValues.length; i++) {\n\t\t\t\tfor (const fieldName of Object.keys(registeredValidators)) {\n\t\t\t\t\tconst fieldError = validateFieldCallback(fieldName, newValues[i]);\n\t\t\t\t\tif (fieldError) {\n\t\t\t\t\t\tif (!errors[i]) {\n\t\t\t\t\t\t\terrors[i] = {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\terrors[i][fieldName] = fieldError;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn errors.length === 0 ? undefined : errors;\n\t\t},\n\t\t[id, context.values, registeredValidators, validateFieldCallback]\n\t)\n\n\t// register validators in FormContext, so Form has access to it\n\tuseEffect(\n\t\t() => {\n\t\t\tlet validatorsToRegister: ValidatorFunctionType[] = []\n\t\t\tvalidator && validatorsToRegister.push(validator);\n\t\t\tvalidatorsToRegister.push(validateCallback);\n\n\t\t\tregisterValidatorsInContext && registerValidatorsInContext(id, validatorsToRegister);\n\t\t\treturn () => {\n\t\t\t\tregisterValidatorsInContext && registerValidatorsInContext(id, []);\n\t\t\t}\n\t\t},\n\t\t[id, validator, registerValidatorsInContext, validateCallback]\n\t)\n\n\tconst registerValidatorsCallback = useCallback(\n\t\t(index: number, id: string, validatorFunctions: Array) => {\n\n\t\t\tif (index !== 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdispatchRegisteredValidators({\n\t\t\t\ttype: ADD_VALIDATOR_TYPE,\n\t\t\t\tid,\n\t\t\t\tvalidatorFunctions\n\t\t\t})\n\t\t},\n\t\t[dispatchRegisteredValidators]\n\t);\n\n\tconst rowHasErrorsCallback = useCallback(\n\t\t(rowErrors: any = {}) => {\n\t\t\tlet haveError: boolean = false;\n\t\t\tObject.keys(rowErrors).map((key: string) => {\n\t\t\t\tif (key && rowErrors[key].length > 0) {\n\t\t\t\t\thaveError = true;\n\t\t\t\t}\n\t\t\t\treturn null; // just for eslint\n\t\t\t});\n\t\t\treturn haveError;\n\t\t},\n\t\t[]\n\t)\n\n\tconst activeModulesHasErrorsCallback = useCallback(\n\t\t(activeModulesErrors: any[]) => {\n\t\t\tfor (const rowErrors of activeModulesErrors) {\n\t\t\t\tif (rowErrors && rowHasErrorsCallback(rowErrors)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\t[rowHasErrorsCallback]\n\t)\n\n\tconst onBlurCallback = useCallback(\n\t\t(index: number, fieldName: string, rowValues?: any) => {\n\t\t\tlet errors: ErrorsType[] | undefined = (context.errorsMap[id] as ErrorsType[]) || [];\n\t\t\tconst fieldError = validateFieldCallback(fieldName, rowValues || context.values[id][index]);\n\t\t\tif (fieldError) {\n\t\t\t\tif (!errors[index]) {\n\t\t\t\t\terrors[index] = {};\n\t\t\t\t}\n\n\t\t\t\terrors[index][fieldName] = fieldError;\n\t\t\t} else {\n\t\t\t\tif (errors[index]) {\n\t\t\t\t\tdelete errors[index][fieldName];\n\t\t\t\t}\n\n\t\t\t\tconst tableHasErrors = activeModulesHasErrorsCallback(errors);\n\t\t\t\tif (!tableHasErrors) {\n\t\t\t\t\terrors = undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcontext.setFieldError && context.setFieldError(id, errors);\n\t\t},\n\t\t[id, context, validateFieldCallback, activeModulesHasErrorsCallback]\n\t)\n\n\tconst onChangeCallback = useCallback(\n\t\t(index: number, fieldName: string, newValue: any) => {\n\t\t\tconst values = [...context.values[id]];\n\t\t\tvalues[index] = new ActiveModule({\n\t\t\t\t...values[index]\n\t\t\t});\n\n\t\t\tvalues[index][fieldName] = newValue;\n\n\t\t\tconst moduleId = values[index].id\n\n\t\t\t// dependent modules\n\t\t\tif (moduleId === ModuleActivityEnum.Scope && !newValue) {\n\t\t\t\tvalues.forEach((v, i) => {\n\t\t\t\t\tif((v.id === ModuleActivityEnum.Testing || v.id === ModuleActivityEnum.Training) && v.isActive) {\n\t\t\t\t\t\tvalues[i][fieldName] = false;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif ((moduleId === ModuleActivityEnum.Testing || moduleId === ModuleActivityEnum.Training) && newValue) {\n\t\t\t\tvalues.forEach((v, i) => {\n\t\t\t\t\tif((v.id === ModuleActivityEnum.Scope) && !v.isActive) {\n\t\t\t\t\t\tvalues[i][fieldName] = true;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tcontext.setFieldValue && context.setFieldValue(id, values);\n\t\t\tonBlurCallback(index, fieldName, values[index]);\n\t\t},\n\t\t[id, context, onBlurCallback]\n\t)\n\n\treturn (\n\t\t\n\t)\n}\n","import { useEffect, useMemo, useState } from \"react\";\nimport { ModuleActivityEnum, ProjectResponse, ProjectStatusEnum, ProjectStatusResponse, TokenTypeEnum } from \"services/tenantManagementService\";\nimport { isStatusBySemantic } from \"features/StatusResponse/statusResponse\";\nimport { useSelector } from \"react-redux\";\nimport { RootState } from \"base/reducer/reducer\";\nimport { getIsUserManagerAtAnyOrganizationalUnit, getUserInfo } from \"utils/storageUtils\";\nimport { EntityPrefixEnum, emptyArray, getFormatedId } from \"utils/commonHelper\";\nimport { PersistItemsReducer } from \"features/Persist/reducerTypes\";\nimport { tryCatchJsonByAction } from \"utils/fetchUtils\";\nimport { getProjectsForOrgUnitManagerUsersAction } from \"./action\";\nimport { isUserPmorSubstitutePm } from \"utils/userRoleHelper\";\nimport { findActiveModule } from \"./ProjectActiveModules\";\n\nexport type ProjectOrCategoryType = {\n\tprojectOrCategoryId: number\n\tisProjectConnected: boolean\n}\n\nexport type IProjectOrCategory = ProjectOrCategoryType & {\n\tid: string\n\tlabel: string\n\tisReadOnly: boolean\n}\n\nexport enum UserRolePermissionEnum {\n\tPmOrSpm = 'pm_or_spm',\n\tOrganizationalUnitManager = 'org_unit_manager'\n}\n\n// used just to preserve same reference because of React hooks\nexport const pmOrSpmPermission = [UserRolePermissionEnum.PmOrSpm]\nexport const pmOrSpmOrOumPermission = [UserRolePermissionEnum.PmOrSpm, UserRolePermissionEnum.OrganizationalUnitManager]\nexport const OumPermission = [UserRolePermissionEnum.OrganizationalUnitManager]\n\nexport type FilterProjectsFunc = (projects: ProjectResponse[]) => ProjectResponse[]\n\nexport const isTeamMemberPermittedOnProject = (moduleEnum: ModuleActivityEnum, teamMemberPermission: string, project: ProjectResponse) => {\n\tswitch (moduleEnum) {\n\t\tcase ModuleActivityEnum.Ticket:\n\t\t\treturn project.permissions?.ticketPermission && project.permissions?.ticketPermission[teamMemberPermission];\n\t\tcase ModuleActivityEnum.Time:\n\t\t\treturn project.permissions?.timeTravelPermission && project.permissions?.timeTravelPermission[teamMemberPermission];\n\t\tcase ModuleActivityEnum.Scope:\n\t\t\treturn project.permissions?.scopePermission && project.permissions?.scopePermission[teamMemberPermission];\n\t\tcase ModuleActivityEnum.Testing:\n\t\t\treturn project.permissions?.testingPermission && project.permissions?.testingPermission[teamMemberPermission];\n\t\tcase ModuleActivityEnum.Training:\n\t\t\treturn project.permissions?.trainingPermission && project.permissions?.trainingPermission[teamMemberPermission];\n\t\tcase ModuleActivityEnum.Schedule:\n\t\t\treturn project.permissions?.schedulePermission && project.permissions?.schedulePermission[teamMemberPermission];\n\t\tcase ModuleActivityEnum.Risk:\n\t\t\treturn project.permissions?.riskPermission && project.permissions?.riskPermission[teamMemberPermission];\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\nconst filterProjectsByStatuses = (projects: ProjectResponse[], statuses: ProjectStatusEnum[], persistedProjectStatus: PersistItemsReducer) => {\n\treturn projects.filter(project => {\n\t\tfor (let status of statuses) {\n\t\t\tconst isStatus = isStatusBySemantic(status, project.statusId, persistedProjectStatus.itemsMap);\n\t\t\tif (isStatus) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})\n}\n\nconst filterProjectsByUserRolesOrPermissions = (\n\tprojects: ProjectResponse[],\n\tmoduleEnum: ModuleActivityEnum,\n\tteamMemberPermission: string | undefined,\n\tuserRolePermission: UserRolePermissionEnum[] | undefined\n) => {\n\tif (!teamMemberPermission && !userRolePermission) {\n\t\treturn projects;\n\t}\n\n\tconst filteredProjects = projects.filter((project) => {\n\t\tlet isTeamMemberPermitted = false;\n\n\t\tif (teamMemberPermission) {\n\t\t\tisTeamMemberPermitted = isTeamMemberPermittedOnProject(moduleEnum, teamMemberPermission, project);\n\t\t}\n\n\t\tlet isUserRolePermitted = false;\n\t\tif (userRolePermission?.includes(UserRolePermissionEnum.PmOrSpm)) {\n\t\t\tisUserRolePermitted = isUserPmorSubstitutePm(project.roleId);\n\t\t}\n\n\t\tif (userRolePermission?.includes(UserRolePermissionEnum.OrganizationalUnitManager) && !isUserRolePermitted) {\n\t\t\tisUserRolePermitted = project.isOrganizationalUnitManager;\n\t\t}\n\n\t\treturn isUserRolePermitted || isTeamMemberPermitted;\n\t})\n\n\treturn filteredProjects;\n}\n\nconst filterProjectsBySelectedOrganizationalUnits = (projects: ProjectResponse[], organizationalUnitIds: number[] | undefined) => {\n\tif (!organizationalUnitIds?.length){\n\t\treturn projects;\n\t}\n\n\treturn projects.filter((project) => organizationalUnitIds.includes(project.organizationalUnitId!));\n}\n\nconst fetchProjectsForTimeAndTravelProjectDashboard = async () => {\n\tconst response = await tryCatchJsonByAction(getProjectsForOrgUnitManagerUsersAction);\n\tif (response.success) {\n\t\treturn response.items || emptyArray;\n\t}\n\n\treturn emptyArray;\n}\n\n// organizational unit managers have additional projects because of those users that belong to their organizational unit or bellow\n// backend takes care of additional logic, but we need to fetch those projects separately and then merge them with regular ones\nconst getAdditionalProjects = async (\n\tpersistedOrganizationalUnitManagerProject: PersistItemsReducer,\n\tisTimeAndTravelProjectDashboard: boolean | undefined,\n\tisProjectDashboard: boolean | undefined,\n\tspecificProjectsFilter: FilterProjectsFunc | undefined\n) => {\n\tif (!isProjectDashboard) {\n\t\treturn [];\n\t}\n\n\tconst userInfo = getUserInfo();\n\tif (userInfo.roleId === TokenTypeEnum.SiteAdmin) {\n\t\t// SiteAdmin already gets all projects thru persistedProject, so there are no additional ones\n\t\treturn [];\n\t}\n\n\tconst isOrganizationalUnitManager = getIsUserManagerAtAnyOrganizationalUnit();\n\tif (!isOrganizationalUnitManager) {\n\t\t// only organizational unit managers have additional projects\n\t\treturn [];\n\t}\n\n\tlet projects: ProjectResponse[] = [];\n\tif (isTimeAndTravelProjectDashboard) {\n\t\tprojects = await fetchProjectsForTimeAndTravelProjectDashboard();\n\t} else {\n\t\tprojects = persistedOrganizationalUnitManagerProject.items;\n\t}\n\n\tif (specificProjectsFilter) {\n\t\treturn specificProjectsFilter(projects);\n\t}\n\n\treturn projects;\n}\n\nconst getFilteredProjects = (\n\tprojects: ProjectResponse[],\n\tpersistedProjectStatus: PersistItemsReducer,\n\tmoduleEnum: ModuleActivityEnum,\n\tspecificProjectsFilter?: FilterProjectsFunc,\n\tteamMemberPermission?: string,\n\tuserRolePermission?: UserRolePermissionEnum[] | undefined,\n\tshowCompleted?: boolean\n) => {\n\tconst projectsFilteredByModule = projects.filter((project) => {\n\t\tconst module = findActiveModule(moduleEnum, project.activeModules);\n\t\treturn module?.isActive;\n\t});\n\n\tif (specificProjectsFilter) {\n\t\treturn specificProjectsFilter(projectsFilteredByModule);\n\t}\n\n\t// filter by statuses\n\tconst statuses = getStatuses(showCompleted);\n\tconst projectsFilteredByModuleAndStatus = filterProjectsByStatuses(\n\t\tprojectsFilteredByModule,\n\t\tstatuses,\n\t\tpersistedProjectStatus\n\t)\n\n\tconst userInfo = getUserInfo();\n\tif (userInfo.roleId === TokenTypeEnum.SiteAdmin) {\n\t\treturn projectsFilteredByModuleAndStatus;\n\t}\n\n\tconst filteredProjects = filterProjectsByUserRolesOrPermissions(\n\t\tprojectsFilteredByModuleAndStatus,\n\t\tmoduleEnum,\n\t\tteamMemberPermission,\n\t\tuserRolePermission\n\t)\n\n\treturn filteredProjects;\n}\n\nconst getStatuses = (showCompleted?: boolean) => {\n\tlet statuses: ProjectStatusEnum[] = [ProjectStatusEnum.Released];\n\tif (showCompleted) {\n\t\tstatuses.push(ProjectStatusEnum.Completed);\n\t}\n\treturn statuses;\n}\n\nexport type UseProjectsAndCategoriesOptions = {\n\t/** Needs to be true if used inside of Time and Travel Project Dashboard, because it has some specific logic for projects fetching */\n\tisTimeAndTravelProjectDashboard?: boolean\n\t/** Needs to be true if used inside of any Project Dashboard, because it has some specific logic for projects fetching and permissions */\n\tisProjectDashboard?: boolean\n\t/** Show completed projects (by default, only Released projects are shown). If isProjectDashboard = true, this flag is automatically set to true */\n\tshowCompleted?: boolean\n\t/** Current module, so projects can be filtered by module */\n\tmoduleEnum: ModuleActivityEnum //\n\t/** Used to filter projects by project permissions (if user is team member on that project) on that module */\n\tteamMemberPermission?: string //\n\t/** Used to filter projects by user roles on project, if undefined all roles are allowed */\n\tuserRolePermission?: UserRolePermissionEnum[] //\n\t/** If there is some specific logic for filtering, this method is called after projects are filtered by moduleEnum, and all other filters are ignored */\n\tspecificProjectsFilter?: FilterProjectsFunc //\n\t/** Ids of selected organizational unit with all childrens, used for additional filtering projects whare project is part of organizational unit */\n\torganizationalUnitIds?: number[]\n}\n\nexport const useProjects = (options: UseProjectsAndCategoriesOptions) => {\n\tconst {\n\t\tisTimeAndTravelProjectDashboard,\n\t\tmoduleEnum,\n\t\tspecificProjectsFilter,\n\t\tteamMemberPermission,\n\t\tuserRolePermission,\n\t\torganizationalUnitIds\n\t} = options;\n\tconst isProjectDashboard = options.isProjectDashboard || isTimeAndTravelProjectDashboard;\n\tconst showCompleted = options.showCompleted || isProjectDashboard;\n\n\tconst persistedProject = useSelector((state: RootState) => state.persistedProject);\n\tconst persistedOrganizationalUnitManagerProject = useSelector((state: RootState) => state.persistedOrganizationalUnitManagerProject);\n\tconst persistedProjectStatus = useSelector((state: RootState) => state.persistedProjectStatus);\n\n\tconst [additionalProjects, setAdditionalProjects] = useState(emptyArray)\n\tconst [loading, setLoading] = useState(true);\n\n\t// get projects based on options (isTimeAndTravelProjectDashboard, isDashboard)\n\tuseEffect(\n\t\t() => {\n\t\t\tconst fetchData = async () => {\n\t\t\t\tif (persistedOrganizationalUnitManagerProject.isInitialized) {\n\t\t\t\t\tsetLoading(true);\n\t\t\t\t\tconst projects = await getAdditionalProjects(\n\t\t\t\t\t\tpersistedOrganizationalUnitManagerProject,\n\t\t\t\t\t\tisTimeAndTravelProjectDashboard,\n\t\t\t\t\t\tisProjectDashboard,\n\t\t\t\t\t\tspecificProjectsFilter\n\t\t\t\t\t);\n\t\t\t\t\tsetAdditionalProjects(projects);\n\t\t\t\t\tsetLoading(false);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfetchData();\n\t\t},\n\t\t[isTimeAndTravelProjectDashboard, isProjectDashboard, persistedOrganizationalUnitManagerProject, specificProjectsFilter]\n\t)\n\n\t// filter persistedProject\n\tconst projects = useMemo(\n\t\t() => {\n\t\t\tif (loading || !persistedProjectStatus.isInitialized) {\n\t\t\t\treturn emptyArray;\n\t\t\t}\n\n\t\t\tconst filteredProjects = getFilteredProjects(\n\t\t\t\tpersistedProject.items,\n\t\t\t\tpersistedProjectStatus,\n\t\t\t\tmoduleEnum,\n\t\t\t\tspecificProjectsFilter,\n\t\t\t\tteamMemberPermission,\n\t\t\t\tuserRolePermission,\n\t\t\t\tshowCompleted\n\t\t\t)\n\n\t\t\tlet mergedProjects: ProjectResponse[] = [...filteredProjects];\n\n\t\t\tfor (let additionalProject of additionalProjects) {\n\t\t\t\tconst notFound = !mergedProjects.find((item) => item.id === additionalProject.id);\n\t\t\t\tif (notFound) {\n\t\t\t\t\tmergedProjects.push(additionalProject)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (organizationalUnitIds?.length !== 0) {\n\t\t\t\tconst filteredProjectsByOrgUnits = filterProjectsBySelectedOrganizationalUnits(\n\t\t\t\t\tmergedProjects,\n\t\t\t\t\torganizationalUnitIds\n\t\t\t\t);\n\n\t\t\t\tmergedProjects = filteredProjectsByOrgUnits;\n\t\t\t}\n\n\t\t\treturn mergedProjects;\n\t\t},\n\t\t[loading, persistedProjectStatus, additionalProjects, persistedProject, moduleEnum, specificProjectsFilter, teamMemberPermission, userRolePermission, showCompleted, organizationalUnitIds]\n\t)\n\n\treturn {\n\t\tprojects,\n\t\tloadingProjects: loading\n\t}\n}\n\nconst useCategories = (options: UseProjectsAndCategoriesOptions) => {\n\tconst { isProjectDashboard } = options;\n\tconst userInfo = getUserInfo();\n\tconst isOrganizationalUnitManager = getIsUserManagerAtAnyOrganizationalUnit();\n\tconst persistedTimeTravelNonProjectCategories = useSelector((state: RootState) => state.persistedTimeTravelNonProjectCategories);\n\n\tif (userInfo.isGuest ||\n\t\t(isProjectDashboard && !isOrganizationalUnitManager && !(userInfo.roleId === TokenTypeEnum.SiteAdmin))\n\t) {\n\t\treturn {\n\t\t\tcategories: emptyArray,\n\t\t\tloadingCategories: false\n\t\t}\n\t}\n\n\treturn {\n\t\tcategories: persistedTimeTravelNonProjectCategories.activeItems,\n\t\tloadingCategories: persistedTimeTravelNonProjectCategories.fetching\n\t}\n}\n\nexport const useProjectsAndCategories = (options: UseProjectsAndCategoriesOptions) => {\n\tconst { projects, loadingProjects } = useProjects(options);\n\tconst { categories, loadingCategories } = useCategories(options);\n\n\tconst projectsOrCategories: IProjectOrCategory[] = useMemo(\n\t\t() => {\n\t\t\tif (loadingProjects || loadingCategories) {\n\t\t\t\treturn emptyArray;\n\t\t\t}\n\n\t\t\tconst items: IProjectOrCategory[] = [];\n\n\t\t\tfor (let project of projects) {\n\t\t\t\titems.push({\n\t\t\t\t\tid: `project_${project.id}`,\n\t\t\t\t\tlabel: `${getFormatedId(EntityPrefixEnum.PROJECT, project.id)} - ${project.name}`,\n\t\t\t\t\tisProjectConnected: true,\n\t\t\t\t\tprojectOrCategoryId: project.id,\n\t\t\t\t\tisReadOnly: false\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tfor (let category of categories) {\n\t\t\t\titems.push({\n\t\t\t\t\tid: `category_${category.id}`,\n\t\t\t\t\tlabel: category.name,\n\t\t\t\t\tisProjectConnected: false,\n\t\t\t\t\tprojectOrCategoryId: category.id,\n\t\t\t\t\tisReadOnly: category.isReadOnly\n\t\t\t\t})\n\t\t\t}\n\n\t\t\treturn items;\n\t\t},\n\t\t[loadingProjects, projects, loadingCategories, categories]\n\t)\n\n\treturn {\n\t\tprojectsOrCategories,\n\t\tloadingProjectsAndCategories: loadingProjects || loadingCategories\n\t}\n}\n\nexport const useProjectsForTableFilterCallback = (moduleEnum: ModuleActivityEnum) => {\n\treturn useProjects({\n\t\tmoduleEnum,\n\t\tshowCompleted: true\n\t})\n}\n\nexport const useProjectsAndCategoriesForTableFilterCallback = (moduleEnum: ModuleActivityEnum, specificProjectsFilter?: FilterProjectsFunc) => {\n\treturn useProjectsAndCategories({\n\t\tmoduleEnum,\n\t\tspecificProjectsFilter,\n\t\tshowCompleted: true\n\t})\n}\n","import { useCallback, useMemo } from \"react\"\nimport { SmartFormGroup } from \"components/SmartContainer/SmartContainer\"\nimport { MultiSelect } from 'components/Form';\nimport { IProjectOrCategory, UseProjectsAndCategoriesOptions, useProjectsAndCategories } from \"../projectHooks\"\nimport { ProjectOrCategoryType } from \"../projectHooks\"\n\ntype Props = UseProjectsAndCategoriesOptions & {\n\tvalue?: ProjectOrCategoryType[]\n\tonChange?: (projectOrCategory: ProjectOrCategoryType[] | undefined) => void\n\tdisabled?: boolean\n}\n\nexport const ProjectOrCategoryMultiSelect = ({\n\tvalue,\n\tonChange,\n\tdisabled,\n\t...options\n}: Props) => {\n\tconst { projectsOrCategories, loadingProjectsAndCategories } = useProjectsAndCategories(options)\n\n\tconst ids = useMemo(\n\t\t() => {\n\t\t\tif (!value) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet selectedIds: string[] = [];\n\n\t\t\tfor (const { projectOrCategoryId, isProjectConnected } of value) {\n\t\t\t\tconst projectOrCategory = projectsOrCategories.find((item) => item.projectOrCategoryId === projectOrCategoryId && item.isProjectConnected === isProjectConnected);\n\n\t\t\t\tif (projectOrCategory) {\n\t\t\t\t\tselectedIds.push(projectOrCategory.id);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn selectedIds;\n\t\t},\n\t\t[projectsOrCategories, value]\n\t);\n\n\tconst onChangeCallback = useCallback(\n\t\t(value: string[]) => {\n\t\t\tconst projectOrCategory = projectsOrCategories.filter((item) => value.includes(item.id));\n\n\t\t\tif (!projectOrCategory) {\n\t\t\t\tonChange && onChange(undefined);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonChange && onChange(projectOrCategory);\n\t\t},\n\t\t[onChange, projectsOrCategories]\n\t)\n\n\treturn (\n\t\t\n\t\t\t item.id}\n\t\t\t\tgetItemText={(item: IProjectOrCategory) => item.label}\n\t\t\t\tloading={loadingProjectsAndCategories}\n\t\t\t\tdisabled={disabled}\n\t\t\t/>\n\t\t\n\t)\n}\n","import { AutoComplete, FieldMessage } from \"components/Form\"\nimport { SmartFormGroup } from \"components/SmartContainer/SmartContainer\"\nimport { IProjectOrCategory, ProjectOrCategoryType, UseProjectsAndCategoriesOptions, useProjectsAndCategories } from \"../projectHooks\"\nimport { useCallback, useMemo } from \"react\"\n\ntype Props = UseProjectsAndCategoriesOptions & {\n\tvalue?: ProjectOrCategoryType\n\tonChange?: (projectOrCategory: ProjectOrCategoryType | undefined) => void\n\tdisabled?: boolean\n\tloading?: boolean\n\thasError?: boolean // only for show message if select is required, but no value in select\n\tisRequired?: boolean\n}\n\nexport const ProjectOrCategorySelect = ({\n\tvalue,\n\tonChange,\n\tdisabled,\n\tloading,\n\thasError,\n\tisRequired,\n\t...options\n}: Props) => {\n\tconst { projectsOrCategories, loadingProjectsAndCategories } = useProjectsAndCategories(options)\n\n\tconst id = useMemo(\n\t\t() => {\n\t\t\tif (!value) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst projectOrCategoryOption = projectsOrCategories.find((item) => item.projectOrCategoryId === value.projectOrCategoryId && item.isProjectConnected === value.isProjectConnected)!;\n\n\t\t\treturn projectOrCategoryOption?.id;\n\t\t},\n\t\t[projectsOrCategories, value]\n\t);\n\n\tconst onChangeCallback = useCallback(\n\t\t(value: string) => {\n\t\t\tconst projectOrCategoryOption = projectsOrCategories.find((item) => item.id === value);\n\n\t\t\tif (!projectOrCategoryOption) {\n\t\t\t\tonChange && onChange(undefined);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonChange && onChange({\n\t\t\t\tprojectOrCategoryId: projectOrCategoryOption.projectOrCategoryId,\n\t\t\t\tisProjectConnected: projectOrCategoryOption.isProjectConnected\n\t\t\t})\n\t\t},\n\t\t[onChange, projectsOrCategories]\n\t)\n\n\treturn (\n\t\t\n\t\t\t<>\n\t\t\t\t item.id}\n\t\t\t\t\tgetItemText={(item: IProjectOrCategory) => item.label}\n\t\t\t\t\tloading={loading || loadingProjectsAndCategories}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t/>\n\t\t\t\t{(hasError && isRequired) && }\n\t\t\t\n\t\t\n\t)\n}\n","import { AutoComplete } from \"components/Form\"\nimport { ProjectResponse } from \"services/tenantManagementService\"\nimport { EntityPrefixEnum, getFormatedId } from \"utils/commonHelper\"\nimport { SmartFormGroup } from \"components/SmartContainer/SmartContainer\"\nimport { UseProjectsAndCategoriesOptions, useProjects } from \"../projectHooks\"\n\ntype Props = UseProjectsAndCategoriesOptions & {\n\tvalue: string | number | undefined\n\tonChange?: (projectId: number) => void\n\tdisabled?: boolean\n}\n\nexport const ProjectSelect = ({\n\tvalue,\n\tonChange,\n\tdisabled,\n\t...options\n}: Props) => {\n\tconst { projects, loadingProjects } = useProjects(options)\n\n\treturn (\n\t\t\n\t\t\t item.id}\n\t\t\t\tgetItemText={(item: ProjectResponse) => `${getFormatedId(EntityPrefixEnum.PROJECT, item.id)} - ${item.name}`}\n\t\t\t\tloading={loadingProjects}\n\t\t\t\tdisabled={disabled}\n\t\t\t/>\n\t\t\n\t)\n}\n","import { MultiSelectField, UpdateDependantsFunctionType } from \"components/Form\"\nimport { ProjectResponse } from \"services/tenantManagementService\"\nimport { UseProjectsAndCategoriesOptions, useProjects } from \"../projectHooks\"\nimport { EntityPrefixEnum, getFormatedId } from \"utils/commonHelper\"\n\ntype Props = UseProjectsAndCategoriesOptions & {\n\tid: string\n\tisRequired?: boolean\n\tdisabled?: boolean\n\tupdateDependants?: UpdateDependantsFunctionType\n}\n\nexport const ProjectMultiSelectField = ({\n\tid,\n\tisRequired,\n\tdisabled,\n\tupdateDependants,\n\t...options\n }: Props) => {\n\tconst { projects, loadingProjects } = useProjects(options);\n\n\treturn (\n\t\t item.id}\n\t\t\tgetItemText={(item: ProjectResponse) => `${getFormatedId(EntityPrefixEnum.PROJECT, item.id)} - ${item.name}`}\n\t\t\tupdateDependants={updateDependants}\n\t\t\tloading={loadingProjects}\n\t\t\tisRequired={isRequired}\n\t\t\tdisabled={disabled}\n\t\t/>\n\t)\n}\n","import { AutoCompleteField, UpdateDependantsFunctionType } from \"components/Form\"\nimport { ProjectResponse } from \"services/tenantManagementService\"\nimport { UseProjectsAndCategoriesOptions, useProjects } from \"../projectHooks\"\nimport { EntityPrefixEnum, getFormatedId } from \"utils/commonHelper\"\nimport { useSelector } from \"react-redux\"\nimport { RootState } from \"base/reducer/reducer\"\n\ntype Props = UseProjectsAndCategoriesOptions & {\n\tid: string\n\tisRequired?: boolean\n\tdisabled?: boolean\n\tinitialProjectId?: number // if selected project changed status in meantime, it may be skipped by getProjectsForSelect filter, but we need to display it in Select\n\tupdateDependants?: UpdateDependantsFunctionType\n}\n\nexport const ProjectSelectField = ({\n\tid,\n\tisRequired,\n\tdisabled,\n\tinitialProjectId,\n\tupdateDependants,\n\t...options\n }: Props) => {\n\tconst persistedProject = useSelector((state: RootState) => state.persistedProject);\n\tconst { projects, loadingProjects } = useProjects(options);\n\n\tconst projectsWithInitial = [...projects];\n\t// TODO: ovo mozda treba u svim Project selektima primeniti isto i za kategorije ako vise nije aktivna\n\tif (initialProjectId) {\n\t\tconst project = persistedProject.itemsMap[initialProjectId];\n\t\tif (project) {\n\t\t\tif (!projectsWithInitial.find(item => item.id === project.id)) {\n\t\t\t\tprojectsWithInitial.push(project);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn (\n\t\t item.id}\n\t\t\tgetItemText={(item: ProjectResponse) => `${getFormatedId(EntityPrefixEnum.PROJECT, item.id)} - ${item.name}`}\n\t\t\tupdateDependants={updateDependants}\n\t\t\tloading={loadingProjects}\n\t\t\tisRequired={isRequired}\n\t\t\tdisabled={disabled}\n\t\t/>\n\t)\n}\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useParams, useHistory, useRouteMatch } from 'react-router-dom';\nimport { ModuleActivityEnum, ProjectStatusEnum } from 'services/tenantManagementService';\nimport { SmartContainer, SmartItem } from 'components/SmartContainer/SmartContainer';\nimport { RootState } from 'base/reducer/reducer';\nimport { ColumnContainer } from 'components/Layout';\nimport { Subtract } from 'utility-types';\nimport { ProjectOrCategorySelect } from '../controls/ProjectOrCategorySelect';\nimport { isStatusBySemantic } from 'features/StatusResponse/statusResponse';\nimport { ProjectOrCategoryType } from '../projectHooks';\n\nexport type ProjectOrCategoryComponentProps = {\n\tprojectOrCategory: ProjectOrCategoryType\n\tdisabledEdit?: boolean\n}\n\nexport const ProjectOrCategoryParamName = 'projectOrCategoryId';\nexport const IsProjectConnectedParamName = 'isProjectConnected';\n\nexport type ProjectOrCategoryPickerParams = {\n\t[ProjectOrCategoryParamName]?: string\n\t[IsProjectConnectedParamName]?: string\n}\n\nexport function WithProjectOrCategoryPicker

(\n\tComponent: React.ComponentType

,\n\tmoduleEnum: ModuleActivityEnum,\n\tuseMargin: boolean = false\n) {\n\n\tconst HighOrderComponent = (props: Subtract) => {\n\t\tconst history = useHistory();\n\t\tconst routematch = useRouteMatch();\n\t\tconst { projectOrCategoryId: urlIdString, isProjectConnected: urlIsProjectConnected }: ProjectOrCategoryPickerParams = useParams();\n\t\tconst urlId = urlIdString ? parseInt(urlIdString) : undefined;\n\t\tconst persistedDefaultProject = useSelector((state: RootState) => state.persistedDefaultProject);\n\t\tconst persistedProjectStatus = useSelector((state: RootState) => state.persistedProjectStatus);\n\t\tconst persistedProject = useSelector((state: RootState) => state.persistedProject);\n\n\t\t// initial state should be the one from URL, and later on, state from URL should be ignored\n\t\tlet initialProjectOrCategory: ProjectOrCategoryType | undefined;\n\t\tif (urlId && urlIsProjectConnected) {\n\t\t\tinitialProjectOrCategory = {\n\t\t\t\tprojectOrCategoryId: urlId,\n\t\t\t\tisProjectConnected: urlIsProjectConnected === 'true'\n\t\t\t}\n\t\t}\n\t\tconst [selectedProjectOrCategory, setSelectedProjectOrCategory] = useState(initialProjectOrCategory);\n\n\t\tuseEffect(\n\t\t\t() => {\n\t\t\t\t// if there is no initial state from URL, nor selected projectOrCategory, set default project as initial state (if it exists)\n\t\t\t\tif (!selectedProjectOrCategory && persistedDefaultProject.value.projectId) {\n\t\t\t\t\tsetSelectedProjectOrCategory({\n\t\t\t\t\t\tprojectOrCategoryId: persistedDefaultProject.value.projectId,\n\t\t\t\t\t\tisProjectConnected: true\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t},\n\t\t\t[selectedProjectOrCategory, persistedDefaultProject]\n\t\t)\n\n\t\tconst url = useMemo(\n\t\t\t() => {\n\t\t\t\tif (selectedProjectOrCategory && urlId !== selectedProjectOrCategory.projectOrCategoryId) {\n\t\t\t\t\treturn routematch.path.split(`/:${ProjectOrCategoryParamName}`)[0] + '/' + selectedProjectOrCategory.projectOrCategoryId + '/' + selectedProjectOrCategory.isProjectConnected;\n\t\t\t\t}\n\t\t\t},\n\t\t\t[routematch.path, selectedProjectOrCategory, urlId]\n\t\t)\n\n\t\tuseEffect(\n\t\t\t() => {\n\t\t\t\tif (url) {\n\t\t\t\t\thistory.replace(url);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[history, url]\n\t\t)\n\n\t\tconst WrapperComponent = useMemo(\n\t\t\t() => useMargin ? ColumnContainer : React.Fragment,\n\t\t\t[]\n\t\t)\n\n\t\tconst selectedProjectStatusId = useMemo(\n\t\t\t() => {\n\t\t\t\tif (selectedProjectOrCategory?.isProjectConnected === true) {\n\t\t\t\t\treturn persistedProject.itemsMap[selectedProjectOrCategory.projectOrCategoryId]?.statusId;\n\t\t\t\t}\n\t\t\t},\n\t\t\t[selectedProjectOrCategory, persistedProject.itemsMap]\n\t\t)\n\n\t\tconst componentPropsMemo = useMemo(\n\t\t\t() => {\n\t\t\t\treturn {\n\t\t\t\t\t...props,\n\t\t\t\t\tprojectOrCategory: selectedProjectOrCategory,\n\t\t\t\t\tdisabledEdit: !isStatusBySemantic(ProjectStatusEnum.Released, selectedProjectStatusId, persistedProjectStatus.itemsMap) && !(selectedProjectOrCategory?.projectOrCategoryId && selectedProjectOrCategory.isProjectConnected === false)\n\t\t\t\t} as P\n\t\t\t},\n\t\t\t[selectedProjectOrCategory, selectedProjectStatusId, persistedProjectStatus, props]\n\t\t)\n\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{selectedProjectOrCategory && }\n\t\t\t\n\t\t)\n\t}\n\n\treturn HighOrderComponent;\n}\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useParams, useHistory, useRouteMatch } from 'react-router-dom';\nimport { ModuleActivityEnum, ProjectResponse, ProjectStatusEnum } from 'services/tenantManagementService';\nimport { SmartContainer, SmartItem } from 'components/SmartContainer/SmartContainer';\nimport { RootState } from 'base/reducer/reducer';\nimport { ColumnContainer } from 'components/Layout';\nimport { isStatusBySemantic } from 'features/StatusResponse/statusResponse';\nimport { Subtract } from 'utility-types';\nimport { ProjectSelect } from '../controls/ProjectSelect';\nimport { UserRolePermissionEnum } from '../projectHooks';\n\nexport type ComponentProps = {\n\tproject: ProjectResponse\n\tdisabledEdit?: boolean\n}\n\nexport const ProjectParamName = 'projectId';\n\nexport type ProjectPickerParams = {\n\t[ProjectParamName]?: string\n}\n\nexport function WithProjectPicker

(\n\tComponent: React.ComponentType

,\n\tmoduleEnum: ModuleActivityEnum,\n\tuseMargin?: boolean,\n\tteamMemberPermission?: string,\n\tuserRolePermission?: UserRolePermissionEnum[]) {\n\n\tconst HighOrderComponent = (props: Subtract) => {\n\t\tconst history = useHistory();\n\t\tconst routematch = useRouteMatch();\n\t\tconst { projectId: urlProjectIdString }: ProjectPickerParams = useParams();\n\t\tconst urlProjectId = urlProjectIdString ? parseInt(urlProjectIdString) : undefined;\n\t\tconst persistedProjectStatus = useSelector((state: RootState) => state.persistedProjectStatus);\n\t\tconst persistedProject = useSelector((state: RootState) => state.persistedProject);\n\t\tconst persistedDefaultProject = useSelector((state: RootState) => state.persistedDefaultProject);\n\n\t\t// initial state should be the one from URL, and later on, state from URL should be ignored\n\t\tconst [selectedProjectId, setSelectedProjectId] = useState(urlProjectId);\n\n\t\tuseEffect(\n\t\t\t() => {\n\t\t\t\t// if there is no initial state from URL, nor selected state, set default project as initial state (if it exists)\n\t\t\t\tif (!selectedProjectId && persistedDefaultProject.value.projectId) {\n\t\t\t\t\tsetSelectedProjectId(persistedDefaultProject.value.projectId)\n\t\t\t\t}\n\t\t\t},\n\t\t\t[selectedProjectId, persistedDefaultProject]\n\t\t)\n\n\t\tconst url = useMemo(\n\t\t\t() => {\n\t\t\t\tif (urlProjectId !== selectedProjectId) {\n\t\t\t\t\treturn routematch.path.split(`/:${ProjectParamName}`)[0] + '/' + selectedProjectId;\n\t\t\t\t}\n\t\t\t},\n\t\t\t[routematch.path, selectedProjectId, urlProjectId]\n\t\t)\n\n\t\tuseEffect(\n\t\t\t() => {\n\t\t\t\tif (url) {\n\t\t\t\t\thistory.replace(url);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[history, url]\n\t\t)\n\n\t\tconst selectedProject = useMemo(\n\t\t\t() => {\n\t\t\t\tif (selectedProjectId) {\n\t\t\t\t\treturn persistedProject.itemsMap[selectedProjectId];\n\t\t\t\t}\n\n\t\t\t\treturn undefined;\n\t\t\t},\n\t\t\t[selectedProjectId, persistedProject]\n\t\t)\n\n\t\tconst WrapperComponent = useMemo(\n\t\t\t() => useMargin ? ColumnContainer : React.Fragment,\n\t\t\t[]\n\t\t)\n\n\t\tconst componentPropsMemo = useMemo(\n\t\t\t() => {\n\t\t\t\treturn {\n\t\t\t\t\t...props,\n\t\t\t\t\tproject: selectedProject,\n\t\t\t\t\tdisabledEdit: !isStatusBySemantic(ProjectStatusEnum.Released, selectedProject?.statusId, persistedProjectStatus.itemsMap)\n\t\t\t\t} as P\n\t\t\t},\n\t\t\t[selectedProject, props, persistedProjectStatus.itemsMap]\n\t\t)\n\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{selectedProject && }\n\t\t\t\n\t\t)\n\t}\n\n\treturn HighOrderComponent;\n}\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { ModuleActivityEnum, NonProjectCategoryResponse, ProjectResponse } from 'services/tenantManagementService';\nimport { SmartContainer, SmartItem } from 'components/SmartContainer/SmartContainer';\nimport { RootState } from 'base/reducer/reducer';\nimport { ColumnContainer } from 'components/Layout';\nimport { Subtract } from 'utility-types';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { useProjectsAndCategories } from '../projectHooks';\nimport { ProjectOrCategoryMultiSelect } from '../controls/ProjectOrCategoryMultiSelect';\nimport { ProjectOrCategoryType } from '../projectHooks';\n\nexport type ProjectsOrCategoriesComponentProps = {\n\tprojects: ProjectResponse[]\n\tnonProjectCategories: NonProjectCategoryResponse[]\n}\n\nexport function WithProjectsOrCategoriesPicker

(\n\tComponent: React.ComponentType

,\n\tmoduleEnum: ModuleActivityEnum,\n\tuseMargin?: boolean\n) {\n\n\tconst HighOrderComponent = (props: Subtract) => {\n\t\tconst history = useHistory();\n\t\tconst { search } = useLocation();\n\t\tconst searchParams = new URLSearchParams(search);\n\t\tconst urlProjectIds = searchParams.get('projectIds')?.split(',').map(Number) || [];\n\t\tconst urlCategoryIds = searchParams.get('categoryIds')?.split(',').map(Number) || [];\n\t\tconst persistedProject = useSelector((state: RootState) => state.persistedProject);\n\t\tconst persistedTimeTravelNonProjectCategories = useSelector((state: RootState) => state.persistedTimeTravelNonProjectCategories);\n\n\t\tconst { projectsOrCategories } = useProjectsAndCategories({\n\t\t\tshowCompleted: true,\n\t\t\tmoduleEnum\n\t\t});\n\n\t\t// initial state should be the one from URL, and later on, state from URL should be ignored\n\t\tlet initialProjectsOrCategories: ProjectOrCategoryType[] = [];\n\t\tfor (let projectId of urlProjectIds) {\n\t\t\tinitialProjectsOrCategories.push({\n\t\t\t\tprojectOrCategoryId: projectId,\n\t\t\t\tisProjectConnected: true\n\t\t\t});\n\t\t}\n\n\t\tfor (let categoryId of urlCategoryIds) {\n\t\t\tinitialProjectsOrCategories.push({\n\t\t\t\tprojectOrCategoryId: categoryId,\n\t\t\t\tisProjectConnected: false\n\t\t\t});\n\t\t}\n\n\t\tconst [selectedProjectsOrCategories, setSelectedProjectsOrCategories] = useState(initialProjectsOrCategories);\n\t\tconst [firstLoading, setFirstLoading] = useState(true);\n\n\t\tuseEffect(\n\t\t\t() => {\n\t\t\t\t// if there is no initial state from URL, or selected projectsOrCategories, or is empty array,\n\t\t\t\t// set default projects and categories from hook as initial state (if it exists)\n\t\t\t\tif (firstLoading && (!selectedProjectsOrCategories || selectedProjectsOrCategories.length === 0) && projectsOrCategories.length) {\n\t\t\t\t\tsetSelectedProjectsOrCategories(projectsOrCategories);\n\t\t\t\t\tsetFirstLoading(false);\n\t\t\t\t} else if (firstLoading && (selectedProjectsOrCategories && selectedProjectsOrCategories.length > 0)) {\n\t\t\t\t\t// in case when we send a link with selected projects or categories,\n\t\t\t\t\t// the page is loaded and firstLoading is true, so we set it to false\n\t\t\t\t\tsetFirstLoading(false);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[selectedProjectsOrCategories, projectsOrCategories, firstLoading]\n\t\t)\n\n\t\tconst selectedProjectsOrCategoriesMemo = useMemo(\n\t\t\t() => {\n\t\t\t\tlet allSelectedProjects: ProjectResponse[] = [];\n\t\t\t\tlet allSelectedCategories: NonProjectCategoryResponse[] = [];\n\n\t\t\t\tif (selectedProjectsOrCategories) {\n\t\t\t\t\tconst selectedProjectIds = selectedProjectsOrCategories.filter(item => item.isProjectConnected === true).map(item => item.projectOrCategoryId);\n\t\t\t\t\tfor (let id of selectedProjectIds) {\n\t\t\t\t\t\tconst project = persistedProject.itemsMap[id];\n\n\t\t\t\t\t\tif (!project) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tallSelectedProjects.push(project);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst selectedCategoryIds = selectedProjectsOrCategories.filter(item => item.isProjectConnected === false).map(item => item.projectOrCategoryId);\n\t\t\t\t\tfor (let id of selectedCategoryIds) {\n\t\t\t\t\t\tconst category = persistedTimeTravelNonProjectCategories.itemsMap[id];\n\n\t\t\t\t\t\tif (!category) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tallSelectedCategories.push(category);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn { allSelectedProjects, allSelectedCategories};\n\n\t\t\t},\n\t\t\t[selectedProjectsOrCategories, persistedProject.itemsMap, persistedTimeTravelNonProjectCategories.itemsMap]\n\t\t)\n\n\t\tconst searchQuery = useMemo(\n\t\t\t() => {\n\t\t\t\tconst selectedProjectIds = selectedProjectsOrCategories?.filter(item => item.isProjectConnected === true).map(item => item.projectOrCategoryId) || [];\n\t\t\t\tconst selectedCategoryIds = selectedProjectsOrCategories?.filter(item => item.isProjectConnected === false).map(item => item.projectOrCategoryId) || [];\n\n\t\t\t\tif (selectedProjectIds.length && selectedCategoryIds.length) {\n\t\t\t\t\treturn '?projectIds=' + selectedProjectIds + '&categoryIds=' + selectedCategoryIds;\n\t\t\t\t} else if (selectedProjectIds.length) {\n\t\t\t\t\treturn '?projectIds=' + selectedProjectIds;\n\t\t\t\t} else if (selectedCategoryIds.length) {\n\t\t\t\t\treturn '?categoryIds=' + selectedCategoryIds;\n\t\t\t\t} else {\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\t\t\t},\n\t\t\t[selectedProjectsOrCategories]\n\t\t)\n\n\t\tuseEffect(\n\t\t\t() => {\n\t\t\t\thistory.replace({\n\t\t\t\t\tsearch: searchQuery\n\t\t\t\t});\n\t\t\t},\n\t\t\t[history, searchQuery, search]\n\t\t)\n\n\t\tconst WrapperComponent = useMemo(\n\t\t\t() => useMargin ? ColumnContainer : React.Fragment,\n\t\t\t[]\n\t\t)\n\n\t\tconst componentPropsMemo = useMemo(\n\t\t\t() => {\n\t\t\t\treturn {\n\t\t\t\t\t...props,\n\t\t\t\t\tprojects: selectedProjectsOrCategoriesMemo?.allSelectedProjects,\n\t\t\t\t\tnonProjectCategories: selectedProjectsOrCategoriesMemo?.allSelectedCategories\n\t\t\t\t} as P\n\t\t\t},\n\t\t\t[selectedProjectsOrCategoriesMemo, props]\n\t\t)\n\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{(selectedProjectsOrCategories && selectedProjectsOrCategories?.length > 0) && }\n\t\t\t\n\t\t)\n\t}\n\n\treturn HighOrderComponent;\n}\n","import { Subject } from 'rxjs'\n\nexport const projectsChangedTopic = new Subject();\n\nexport const publishProjectsChanged = () => projectsChangedTopic.next(undefined);\n","import { RootState } from 'base/reducer/reducer';\nimport { convertToMapItems } from 'components/Form/controls/MapPicker/MapPicker/helpers';\nimport { DateColumnModel, FormattedReferenceColumnModel, GenericColumnModel, MapOptionColumnModel, OptionColumnModel, StringColumnModel } from 'components/Table';\nimport { useGetStatusStyleCallback, useOrganizationalUnitCallback } from 'features/TableColumns/persistedHooks';\nimport { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { ProjectResponse } from 'services/tenantManagementService';\nimport { EntityPrefixEnum } from 'utils/commonHelper';\nimport { propertyOf } from 'utils/propertyOf';\n\nexport const defaultVisibleColumns = [\n\tpropertyOf('id'),\n\tpropertyOf('name'),\n\tpropertyOf('pmId'),\n\tpropertyOf('statusId'),\n\tpropertyOf('typeId'),\n\tpropertyOf('categoryId'),\n\tpropertyOf('organizationalUnitId'),\n]\n\nexport const defaultDefaultProjectVisibleColumns = [\n\t...defaultVisibleColumns,\n\t'defaultProject'\n]\n\nexport const useTableColumnsMemo = (defaultProjectId?: number): GenericColumnModel[] => {\n\tconst persistedUser = useSelector((state: RootState) => state.persistedUser);\n\tconst persistedProjectStatus = useSelector((state: RootState) => state.persistedProjectStatus);\n\tconst persistedProjectCategory = useSelector((state: RootState) => state.persistedProjectCategory);\n\tconst persistedProjectType = useSelector((state: RootState) => state.persistedProjectType);\n\tconst persistedOrganizationalUnit = useSelector((state: RootState) => state.persistedOrganizationalUnit);\n\n\tconst getOrganizationalUnit = useOrganizationalUnitCallback();\n\tconst getStatusStyle = useGetStatusStyleCallback(persistedProjectStatus);\n\n\tconst organizationalUnits = useMemo(\n\t\t() => convertToMapItems(persistedOrganizationalUnit.items || [], [], undefined),\n\t\t[persistedOrganizationalUnit]\n\t)\n\n\treturn useMemo(\n\t\t() => [\n\t\t\tnew FormattedReferenceColumnModel({\n\t\t\t\tid: propertyOf('id'),\n\t\t\t\ttitle: 'i18n.p.myProjects.column.projectId',\n\t\t\t\tentityPrefix: EntityPrefixEnum.PROJECT,\n\t\t\t\tgetStyle: (value: any) => value === defaultProjectId ? {\n\t\t\t\t\t\tcolor: 'var(--brand-color)',\n\t\t\t\t\t\tfontWeight: 'bold'\n\t\t\t\t\t} : {}\n\t\t\t}),\n\t\t\tnew StringColumnModel({\n\t\t\t\tid: propertyOf('name'),\n\t\t\t\ttitle: 'i18n.p.myProjects.column.name'\n\t\t\t}),\n\t\t\tnew OptionColumnModel({\n\t\t\t\tid: propertyOf('pmId'),\n\t\t\t\ttitle: 'i18n.p.myProjects.column.manager',\n\t\t\t\titems: persistedUser.items,\n\t\t\t\tgetItemId: (option) => option.id,\n\t\t\t\tgetItemText: (option) => `${option.firstName} ${option.lastName}`\n\t\t\t}),\n\t\t\tnew OptionColumnModel({\n\t\t\t\tid: propertyOf('statusId'),\n\t\t\t\ttitle: 'i18n.p.myProjects.column.status',\n\t\t\t\tgetStyle: (value: any) => getStatusStyle(value),\n\t\t\t\titems: persistedProjectStatus.items,\n\t\t\t\tgetItemId: (option) => option.id,\n\t\t\t\tgetItemText: (option) => option.name\n\t\t\t}),\n\t\t\tnew OptionColumnModel({\n\t\t\t\tid: propertyOf('typeId'),\n\t\t\t\ttitle: 'i18n.p.myProjects.column.type',\n\t\t\t\titems: persistedProjectType.items,\n\t\t\t\tgetItemId: (option) => option.id,\n\t\t\t\tgetItemText: (option) => option.name\n\t\t\t}),\n\t\t\tnew OptionColumnModel({\n\t\t\t\tid: propertyOf('categoryId'),\n\t\t\t\ttitle: 'i18n.p.myProjects.column.category',\n\t\t\t\titems: persistedProjectCategory.items,\n\t\t\t\tgetItemId: (option) => option.id,\n\t\t\t\tgetItemText: (option) => option.name\n\t\t\t}),\n\t\t\tnew StringColumnModel({\n\t\t\t\tid: propertyOf('description'),\n\t\t\t\ttitle: 'i18n.p.myProjects.column.description'\n\t\t\t}),\n\t\t\tnew MapOptionColumnModel({\n\t\t\t\tid: propertyOf('organizationalUnitId'),\n\t\t\t\ttitle: 'i18n.p.myProjects.column.orgUnit',\n\t\t\t\titems: organizationalUnits,\n\t\t\t\tgetItemId: (option) => option.id,\n\t\t\t\tgetItemText: (option) => getOrganizationalUnit(option.id, organizationalUnits)\n\t\t\t}),\n\t\t\tnew DateColumnModel({\n\t\t\t\tid: propertyOf('from'),\n\t\t\t\ttitle: 'i18n.p.myProjects.column.start'\n\t\t\t}),\n\t\t\tnew DateColumnModel({\n\t\t\t\tid: propertyOf('to'),\n\t\t\t\ttitle: 'i18n.p.myProjects.column.end'\n\t\t\t})\n\t\t],\n\t\t[persistedUser.items, persistedProjectStatus.items, persistedProjectType.items, persistedProjectCategory.items, organizationalUnits, defaultProjectId, getStatusStyle, getOrganizationalUnit]\n\t)\n}\n","import React, { useEffect, useMemo } from 'react';\nimport { ExportDataModel, ProjectResponse } from 'services/tenantManagementService';\nimport { getProjectsGenericAction, exportAction } from '../action';\nimport { projectsChangedTopic } from './projectsChanged';\nimport { defaultDefaultProjectVisibleColumns, defaultVisibleColumns, useTableColumnsMemo } from './tableColumns';\nimport { ColumnContainer } from 'components/Layout';\nimport { FilterSortPageType, GenericColumnModel, InteractionManager } from 'components/Table';\nimport { useTableInteractionManager } from 'features/Crud/useTableInteractionManager';\nimport { propertyOf } from 'utils/propertyOf';\nimport { usePrepareTableColumns } from 'features/TableColumns/usePrepareTableColumns';\nimport { RemoteTable } from 'components/Table';\nimport { useLoadTranslationEffect } from 'components/Translations/translationUtils';\nimport { TranslationKeyEnum } from 'components/Translations/TranslationsProvider';\n\ntype Props = {\n\ttableId: string\n\trenderTableButtons(\n\t\tvisibleColumns: GenericColumnModel[],\n\t\thiddenColumns: GenericColumnModel[],\n\t\tfilterSortPage: FilterSortPageType,\n\t\tinteractionManager: InteractionManager,\n\t\tmemoExportFunction : (exportDataModel: ExportDataModel) => any\n\t): React.ReactElement\n\tdefaultProjectId?: number\n\tonSelect(project?: ProjectResponse): void\n}\n\nexport const ProjectsTable = ({ tableId, renderTableButtons, defaultProjectId, onSelect }: Props) => {\n\tconst { interactionManager, columnsOrder, columnsWidth, filterSortPage } = useTableInteractionManager(\n\t\ttableId,\n\t\tpropertyOf('id'),\n\t\tfalse\n\t);\n\n\t// ProjectsTable uses projects.json translation.\n\t// This component is used in multiple modules, so we add it here if it is not loadded\n\tuseLoadTranslationEffect(TranslationKeyEnum.PROJECTS);\n\n\tconst selectedRow = interactionManager.selectedRow;\n\n\tconst tableColumns = useTableColumnsMemo(defaultProjectId);\n\tconst { visibleColumns, hiddenColumns } = usePrepareTableColumns(tableColumns, defaultProjectId ? defaultDefaultProjectVisibleColumns : defaultVisibleColumns, columnsOrder, columnsWidth);\n\n\tconst memoFetchFunction = useMemo(\n\t\t() => getProjectsGenericAction,\n\t\t[]\n\t)\n\n\tconst memoExportFunction = exportAction;\n\n\tconst tableButtonsContent = useMemo(\n\t\t() => renderTableButtons(visibleColumns, hiddenColumns, filterSortPage, interactionManager, memoExportFunction),\n\t\t[renderTableButtons, visibleColumns, hiddenColumns, filterSortPage, interactionManager, memoExportFunction]\n\t)\n\n\tuseEffect(\n\t\t() => {\n\t\t\tonSelect(selectedRow)\n\t\t},\n\t\t[onSelect, selectedRow]\n\t)\n\n\treturn (\n\t\t\n\t\t\t{tableButtonsContent}\n\t\t\t\n\t\t\n\t)\n}\n","\nimport { FetchingActionType, PersistItemsActionType } from 'features/Persist/actionTypes';\nimport { PersistItemsReducer } from 'features/Persist/reducerTypes';\nimport { ProjectResponse } from 'services/tenantManagementService';\nimport { propertyOf } from 'utils/propertyOf';\nimport { sortByString } from 'utils/stringUtil';\nimport { PROJECTS_SET, PROJECTS_FETCHING, ORGANIZATIONAL_UNIT_MANAGER_PROJECTS_FETCHING, ORGANIZATIONAL_UNIT_MANAGER_PROJECTS_SET } from './action';\n\nexport const projectReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase PROJECTS_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase PROJECTS_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: ProjectResponse } = items.reduce(\n (map: { [id: number]: ProjectResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems: sortByString(items, propertyOf('name')),\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nexport const organizationalUnitManagerProjectReducer = (state = new PersistItemsReducer(), action: PersistItemsActionType | FetchingActionType): PersistItemsReducer => {\n\tswitch (action.type) {\n\t\tcase ORGANIZATIONAL_UNIT_MANAGER_PROJECTS_FETCHING:\n\t\t\tconst { fetching } = action as FetchingActionType;\n\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tfetching\n\t\t\t}\n\t\tcase ORGANIZATIONAL_UNIT_MANAGER_PROJECTS_SET:\n\t\t\tconst { items } = action as PersistItemsActionType;\n\n\t\t\tconst itemsMap: { [id: number]: ProjectResponse } = items.reduce(\n (map: { [id: number]: ProjectResponse }, item) => {\n\t\t\t\t\tmap[item.id] = item;\n\t\t\t\t\treturn map;\n\t\t\t\t},\n {}\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\titems: sortByString(items, propertyOf('name')),\n\t\t\t\titemsMap,\n\t\t\t\tfetching: false,\n\t\t\t\tisInitialized: true\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { ActionType } from 'features/Persist/actionTypes';\nimport { Route } from './reducer';\n\nexport type RoutesActionType = ActionType & {\n\troutes: Route[];\n};\n\nexport const ROUTES_SET = 'ROUTES_SET';\n\nexport const setCurrentRoutesAction = (routes: Route[]) => {\n\treturn {\n\t\ttype: ROUTES_SET,\n\t\troutes\n\t}\n}\n","import { RoutesActionType, ROUTES_SET } from \"./action\";\nimport { combineReducers } from 'redux';\nimport { IconType } from 'components/icons/icons';\n\nexport type Route = {\n\tid: string\n\turl: string\n\ttext: string\n\tIcon?: IconType\n\tchildren?: Route[]\n}\n\nconst initialState: Route[] = [];\n\nconst currentRoutesReducer = (state = initialState, action: RoutesActionType) => {\n\tswitch (action.type) {\n\t\tcase ROUTES_SET:\n\t\t\treturn action.routes;\n\t\tdefault:\n\t\t\treturn state;\n\t}\n}\n\nexport const routesReducer = combineReducers({\n\tcurrentRoutes: currentRoutesReducer\n})\n","export class ItemType {\n id!: number\n name!: string\n\tsemantics!: any\n}\n\nexport const getItemBySemantic =

(semanticEnum: any, items: P[]) => {\n\tfor (const item of items) {\n\t\tif (item.semantics === semanticEnum) {\n\t\t\treturn item;\n\t\t}\n\t}\n\n\treturn;\n}\n\nexport const getNameBySemantic =

(semanticEnum: any, items: P[]) => {\n\tconst status = getItemBySemantic(semanticEnum, items);\n\treturn status && status.name;\n}\n","import { getItemBySemantic } from 'features/Semantics/semanticsHelper';\nimport { BaseResponseModel } from \"services/tenantManagementService\";\n\nexport class StatusResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n isReadonly!: boolean;\n color!: string;\n isInitial!: boolean;\n\tnextStates?: number[] | undefined;\n\tsemantics: any\n\n constructor(data?: StatusResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this as any)[property] = (data as any)[property];\n }\n }\n\t}\n}\n\nexport class StatusResponseItemsResponseModel extends BaseResponseModel {\n items?: StatusResponse[] | undefined;\n}\n\nexport const getInitialStatus =

(statuses: P[]) => {\n\tfor (const status of statuses) {\n\t\tif (status.isInitial) {\n\t\t\treturn status;\n\t\t}\n\t}\n}\n\nexport const getNextStatuses =

(id: number, statuses: P[]) => {\n\tif (!id) {\n\t\treturn [];\n\t}\n\t// find status model by id\n\tconst status = statuses.find((item) => item.id === id);\n\n\tif (!status) {\n\t\treturn [];\n\t}\n\n\tconst nextStates = status.nextStates;\n\n\tif (nextStates && nextStates.length === 0) {\n\t\t// no next statuses\n\t\treturn [status];\n\t} else if (!nextStates) {\n\t\t// all statuses are next statuses\n\t\treturn statuses;\n\t} else {\n\t\t// there are next statuses\n\t\tconst nextStatuses: P[] = [status];\n\t\tfor (const nextStateId of nextStates) {\n\t\t\tconst nextStatus = statuses.find((item) => item.id === nextStateId);\n\t\t\tnextStatus && nextStatuses.push(nextStatus);\n\t\t}\n\t\treturn nextStatuses;\n\t}\n}\n\nexport const getStatusBySemantic =

(semanticEnum: any, statuses: P[]) => {\n\treturn getItemBySemantic(semanticEnum, statuses);\n}\n\nexport const isNextStatus =

(semanticEnum: any, previousStatusId: number | undefined, statusesMap: { [id: string]: P | undefined }) => {\n\tif (!semanticEnum || !previousStatusId) {\n\t\treturn false;\n\t}\n\n\tconst previousStatus = statusesMap[previousStatusId];\n\n\tif (!previousStatus) {\n\t\treturn false;\n\t}\n\n\tfor (const nextState of previousStatus.nextStates || []) {\n\t\tconst nextStatus = statusesMap[nextState];\n\t\tif (nextStatus && nextStatus.semantics === semanticEnum) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nexport const isStatusBySemantic =

(semanticEnum: any, statusId: number | string | undefined, statusesMap: { [id: string]: P | undefined}) => {\n\tif (!semanticEnum || !statusId) {\n\t\treturn false;\n\t}\n\n\tconst status = statusesMap[statusId];\n\n\tif (!status) {\n\t\treturn false;\n\t}\n\n\treturn status.semantics === semanticEnum;\n}\n","import { useCallback, useMemo } from 'react';\nimport { PersistActiveItemsReducer, PersistItemsReducer, PersistProjectItemsReducer, PersistValueReducer } from 'features/Persist/reducerTypes';\nimport { IdNameSymbolResponse, ProjectResponse, ProjectTeamMemberResponse, TenantResponseModel, UserModel } from 'services/tenantManagementService';\nimport { StatusResponse } from 'features/StatusResponse/statusResponse';\nimport { colorToHex } from 'utils/colorHelper';\nimport { EntityPrefixEnum, getFormatedId } from 'utils/commonHelper';\nimport { formatCurrencyUtil } from 'utils/currencyUtils';\nimport { useSelector } from 'react-redux';\nimport { RootState } from 'base/reducer/reducer';\nimport { MapItem, convertToAbsoluteName, getSelectedItem } from 'components/Form/controls/MapPicker/MapPicker/helpers';\nimport { removeUndefinedItemsFromArray } from 'utils/arrayUtil';\n\ntype IdToName = {\n\tid: number\n\tname: string\n}\n\nconst useIdToNameCallback = (persistedModel: PersistItemsReducer | undefined) => {\n\treturn useCallback(\n\t\t(id: number | undefined) => {\n\t\t\tconst item = id && persistedModel?.itemsMap[id];\n\t\t\treturn item ? item.name : '';\n\t\t},\n\t\t[persistedModel]\n\t)\n}\n\nexport const useProjectIsActiveNameCallback = useIdToNameCallback;\nexport const useTenantIsActiveCallback = useIdToNameCallback;\nexport const useStatusCallback = useIdToNameCallback;\nexport const usePartnerCallback = useIdToNameCallback;\n\nexport const useUsernameCallback = (persistedModel: PersistActiveItemsReducer) => {\n\treturn useCallback(\n\t\t(id: number | undefined) => {\n\t\t\tconst user = id && persistedModel.itemsMap[id];\n\t\t\treturn user ? user.username : '';\n\t\t},\n\t\t[persistedModel]\n\t)\n}\n\nexport const useUserFullNameCallback = (persistedModel: PersistActiveItemsReducer) => {\n\treturn useCallback(\n\t\t(id: number | undefined) => {\n\t\t\tconst user = id && persistedModel.itemsMap[id];\n\t\t\treturn user ? `${user.firstName} ${user.lastName}` : '';\n\t\t},\n\t\t[persistedModel]\n\t)\n}\n\nexport const useOrganizationalUnitCallback = () => {\n\treturn useCallback(\n\t\t(id: number | undefined, options: MapItem[] = []) => {\n\t\t\tconst selectedOption = getSelectedItem(id, options);\n\t\t\tif (selectedOption) {\n\t\t\t\treturn convertToAbsoluteName(selectedOption, options);\n\t\t\t}\n\n\t\t\treturn '';\n\t\t},\n\t\t[]\n\t)\n}\n\nconst useUserIdCallback = (persistedModel: PersistProjectItemsReducer) => {\n\treturn useCallback(\n\t\t(id: number, projectId: number) => {\n\t\t\tconst member = persistedModel.projectMap[projectId]?.itemsMap[id];\n\t\t\treturn member && member.userId;\n\t\t},\n\t\t[persistedModel]\n\t)\n}\n\nexport const useStatusColorCallback =

(persistedModel: PersistItemsReducer

) => {\n\treturn useCallback(\n\t\t(id: number) => {\n\t\t\tconst status = persistedModel.itemsMap[id];\n\t\t\treturn status && status.color;\n\t\t},\n\t\t[persistedModel]\n\t)\n}\n\nexport const useGetStatusStyleCallback =

(persistedModel: PersistItemsReducer

) => {\n\treturn useCallback(\n\t\t(id: number | undefined) => {\n\t\t\tif (id === undefined) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst status = persistedModel.itemsMap[id];\n\t\t\tconst color = status?.color;\n\t\t\tif (!color) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst hexColor = colorToHex(color)!;\n\t\t\treturn {\n\t\t\t\tcolor: hexColor,\n\t\t\t\tfontWeight: 'bold'\n\t\t\t}\n\t\t},\n\t\t[persistedModel]\n\t)\n}\n\n// pdf export library is implemented in a way it doesn't see our redux Provider, so this method is added in those cases\nexport const useFormattedCurrencyValueWithArgsCallback = (persistedCurrency: PersistItemsReducer, persistedTenant: PersistValueReducer) => {\n\treturn useCallback(\n\t\t(value: number | undefined, showCurrencySymbol?: boolean) => {\n\t\t\tconst currencyId = persistedTenant.value.currencyId;\n\t\t\tconst idName = persistedCurrency.itemsMap[currencyId];\n\t\t\tconst symbol = showCurrencySymbol && idName && idName.symbol;\n\t\t\tconst formattedValue = formatCurrencyUtil(value) || '';\n\n\t\t\tif (value !== undefined && symbol) {\n\t\t\t\treturn `${formattedValue} ${symbol}`\n\t\t\t} else if (value !== undefined) {\n\t\t\t\treturn formattedValue;\n\t\t\t} else {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t},\n\t\t[persistedCurrency, persistedTenant]\n\t)\n}\n\nexport const useFormattedCurrencyValueCallback = () => {\n\tconst persistedCurrency = useSelector((state: RootState) => state.persistedCurrency);\n\tconst persistedTenant = useSelector((state: RootState) => state.persistedTenant);\n\n\treturn useFormattedCurrencyValueWithArgsCallback(persistedCurrency, persistedTenant)\n}\n\nexport const useFormattedCurrencyValueByIdCallback = () => {\n\tconst persistedCurrency = useSelector((state: RootState) => state.persistedCurrency);\n\n\treturn useCallback(\n\t\t(value: number | undefined, currencyId: number | undefined) => {\n\t\t\tconst idName = currencyId ? persistedCurrency.itemsMap[currencyId] : undefined;\n\t\t\tconst symbol = idName && idName.symbol;\n\t\t\tconst formattedValue = formatCurrencyUtil(value);\n\n\t\t\tif (value !== undefined && symbol) {\n\t\t\t\treturn formattedValue;\n\t\t\t} else if (value !== undefined) {\n\t\t\t\treturn formattedValue;\n\t\t\t} else {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t},\n\t\t[persistedCurrency]\n\t)\n}\n\nexport const useActiveTeamMembersMemo = (persistedTeamMember: PersistProjectItemsReducer, persistedUser: PersistActiveItemsReducer, projectId: number, userId?: number, userIds?: number[]) => {\n\tconst getUserId = useUserIdCallback(persistedTeamMember);\n\n\treturn useMemo(\n\t\t() => {\n\t\t\tconst activeTeamMemberUsers = persistedTeamMember.projectMap[projectId]?.items.filter(tm => tm.isActive).map(tm => persistedUser.activeItemsMap[getUserId(tm.id, projectId)!]) || [];\n\t\t\tconst filteredActiveTeamMemberUsers = removeUndefinedItemsFromArray(activeTeamMemberUsers);\n\n\t\t\t// user can be blocked in meantime, so we need to find it and display it in Select\n\t\t\tif (userId) {\n\t\t\t\tconst user = persistedUser.itemsMap[userId];\n\t\t\t\tif (user) {\n\t\t\t\t\tif (!filteredActiveTeamMemberUsers.find(item => item.id === user.id)) {\n\t\t\t\t\t\tfilteredActiveTeamMemberUsers.push(user);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// users can be blocked...\n\t\t\tif (userIds && userIds.length > 0) {\n\t\t\t\tfor (const userId of userIds) {\n\t\t\t\t\tconst user = persistedUser.itemsMap[userId];\n\t\t\t\t\tif (user) {\n\t\t\t\t\t\tif (!filteredActiveTeamMemberUsers.find(item => item.id === user.id)) {\n\t\t\t\t\t\t\tfilteredActiveTeamMemberUsers.push(user);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn filteredActiveTeamMemberUsers;\n\t\t},\n\t\t[persistedTeamMember.projectMap, getUserId, persistedUser, projectId, userId, userIds]\n\t)\n}\n\nexport const useFormattedProjectIdNameCallback = (persistedProject: PersistItemsReducer) => {\n\treturn useCallback(\n\t\t(id: number) => {\n\t\t\tconst project = persistedProject.itemsMap[id];\n\t\t\treturn project ?\n\t\t\t\t`${getFormatedId(EntityPrefixEnum.PROJECT, id)} - ${project.name}` :\n\t\t\t\tgetFormatedId(EntityPrefixEnum.PROJECT, id);\n\t\t},\n\t\t[persistedProject]\n\t)\n}\n","import { GenericColumnModel, CurrencyColumnModel, DateColumnModel, FilterSortPageType, FormattedReferenceColumnModel, NumberColumnModel, DateTimeColumnModel, TimeColumnModel } from \"components/Table\";\nimport { prepareFiltersModel } from \"components/Table/RemoteTable/prepareFiltersModel\";\nimport { exportedTranslationsState } from \"components/Translations/TranslationsProvider\";\nimport { isNotTranslated } from \"components/Translations/translationUtils\";\nimport { ExportModel } from \"features/Export/ExportForm\";\nimport { useCallback } from 'react';\nimport { ExportDataDecoraterPropertyModel, ExportDataModel, ExportDataPropertyModel } from \"services/tenantManagementService\";\nimport { Subtract } from \"utility-types\";\nimport { useGetDatePatternString, useGetDateTimePatternString, useGetTimePatternString } from 'utils/dateTimeUtils';\nimport { capitalizeFirstLetter } from \"utils/stringUtil\";\n\nexport type BackendColumnFields = {\n\t// filter\n\tdbFilterFieldPath?: string // DB field or path such as Status.Name for filtering\n\t// patch request\n\tpatchRequestColumnId?: string // when sending patch request to update some cell, we need database column id\n\t// export\n\tdbExportFieldPath?: string | null // Db field or path such as Status.Name for export\n\tformat?: string // for backend to format dates, FormattedReference, etc.\n\tdisplayNames?: string[] // for columns with decorator on server: userId -> username\n\tdecoraterProperties?: ExportDataDecoraterPropertyModel[] // for columns with decorator on server: userId -> username\n}\n\nexport type BackendColumnFieldsMap = {\n\t[columnId: string]: BackendColumnFields | undefined\n}\n\ntype ExportColumnsType = Subtract & {\n\tvisible: boolean\n\ttitle: string\n}\n\n// apply default values to backend export fields if they are not defined\nconst applyDefaults = (column: GenericColumnModel, specificBackendColumnFields: BackendColumnFields | undefined, datePattern: string, timePattern: string, dateTimePattern: string) => {\n\tconst backendFields = { ...specificBackendColumnFields };\n\n\t// now lets add some default values where needed\n\n\tif (backendFields.dbExportFieldPath === undefined) {\n\t\tbackendFields.dbExportFieldPath = capitalizeFirstLetter(column.id);\n\t}\n\n\tif (column instanceof DateColumnModel) {\n\t\tbackendFields.format = backendFields.format || `{0:${datePattern}}`; // for backend\n\t}\n\n\tif (column instanceof TimeColumnModel) {\n\t\t// duration format as number by default\n\t\tbackendFields.format = backendFields.format || column.isDuration ? `{0:0.00}` : `{0:${timePattern}}`; // for backend\n\t}\n\n\tif (column instanceof DateTimeColumnModel) {\n\t\tbackendFields.format = backendFields.format || `{0:${dateTimePattern}}`; // for backend\n\t}\n\n\tif (column instanceof NumberColumnModel) {\n\t\tbackendFields.format = backendFields.format || '{0:0.00}'; // for backend\n\t}\n\n\tif (column instanceof FormattedReferenceColumnModel) {\n\t\tbackendFields.format = backendFields.format || `${column.entityPrefix}{0:D8}`\n\t}\n\n\tif (column instanceof CurrencyColumnModel) {\n\t\t// Svetlana je trazila da format ne sadrzi valutu\n\t\t// column.format = `{0:0.00} ${persistedCurrency.itemsMap[persistedTenant.value.currencyId]?.symbol}`;\n\t\tbackendFields.format = backendFields.format || '{0:0.00}';\n\t}\n\n\treturn backendFields;\n}\n\nconst usePrepareExportColumns = () => {\n\tconst datePattern = useGetDatePatternString();\n\tconst timePattern = useGetTimePatternString();\n\tconst dateTimePattern = useGetDateTimePatternString();\n\n\treturn useCallback(\n\t\t(\n\t\t\tvisibleColumns: GenericColumnModel[],\n\t\t\thiddenColumns: GenericColumnModel[],\n\t\t\tspecificBackendColumnFieldsMap: BackendColumnFieldsMap\n\t\t) => {\n\t\t\tconst allTableColumns = [...visibleColumns, ...hiddenColumns];\n\t\t\tconst exportColumns: ExportColumnsType[] = [];\n\n\t\t\tfor (const tableColumn of allTableColumns) {\n\t\t\t\tconst backendFields = applyDefaults(tableColumn, specificBackendColumnFieldsMap[tableColumn.id], datePattern, timePattern, dateTimePattern);\n\n\t\t\t\tconst exportColumn: ExportColumnsType = {\n\t\t\t\t\tvisible: visibleColumns.includes(tableColumn),\n\t\t\t\t\ttitle: tableColumn.title,\n\t\t\t\t\t...backendFields\n\t\t\t\t}\n\n\t\t\t\texportColumns.push(exportColumn);\n\t\t\t}\n\n\t\t\treturn exportColumns;\n\t\t},\n\t\t[datePattern, dateTimePattern, timePattern]\n\t)\n\n}\n\nconst createPropertiesForExportModel = (exportColumns: ExportColumnsType[], exportModel: ExportModel) => {\n\tlet columnsForExport = exportColumns.filter(col => col.dbExportFieldPath);\n\n\tif (exportModel.useOnlyVisible) {\n\t\t// because of undefined\n\t\tcolumnsForExport = columnsForExport.filter(col => !!col.visible)\n\t}\n\n\tconst translations = exportedTranslationsState.translations;\n\n\tconst properties = columnsForExport.map((column) => {\n\t\tconst displayName = isNotTranslated(column.title) ? translations[column.title] : column.title;\n\t\tconst displayNames = column.displayNames?.map((item) => isNotTranslated(item) ? translations[item] : item);\n\t\tconst decoraterProperties = column.decoraterProperties?.map((item) => {\n\t\t\titem.name = isNotTranslated(item.name) ? translations[item.name] : item.name\n\t\t\treturn item;\n\t\t});\n\n\t\treturn new ExportDataPropertyModel({\n\t\t\tname: column.dbExportFieldPath!,\n\t\t\tdisplayName,\n\t\t\tformat: column.format,\n\t\t\tdisplayNames,\n\t\t\tdecoraterProperties\n\t\t})\n\t})\n\n\treturn properties;\n}\n\nexport const usePrepareExportModel = () => {\n\tconst prepareExportColumns = usePrepareExportColumns();\n\n\treturn useCallback(\n\t\t(\n\t\t\tvisibleColumns: GenericColumnModel[],\n\t\t\thiddenColumns: GenericColumnModel[],\n\t\t\tspecificBackendColumnFieldsMap: BackendColumnFieldsMap,\n\t\t\texportModel: ExportModel,\n\t\t\tfilterSortPage: FilterSortPageType\n\t\t) => {\n\t\t\tconst exportColumns = prepareExportColumns(visibleColumns, hiddenColumns, specificBackendColumnFieldsMap);\n\t\t\tconst properties = createPropertiesForExportModel(exportColumns, exportModel);\n\n\t\t\tconst exportDataModel = new ExportDataModel({\n\t\t\t\tfileType: exportModel.exportType,\n\t\t\t\t// TODO: How to know C# time zone time?\n\t\t\t\ttimeZone: 'Central Europe Standard Time',\n\t\t\t\t//timeZoneOffsetInMunutes: -new Date().getTimezoneOffset(),\n\t\t\t\tproperties,\n\t\t\t\toffset: 0,\n\t\t\t\tlimit: 0\n\t\t\t});\n\n\t\t\tconst filtersModel = prepareFiltersModel(filterSortPage, specificBackendColumnFieldsMap);\n\n\t\t\tif (exportModel.applyFilters) {\n\t\t\t\texportDataModel.filters = filtersModel.filters;\n\t\t\t}\n\n\t\t\tif (exportModel.applySort) {\n\t\t\t\texportDataModel.sorts = filtersModel.sorts\n\t\t\t}\n\n\t\t\tif (exportModel.exportOnlyCurrentPage) {\n\t\t\t\texportDataModel.offset = filtersModel.offset;\n\t\t\t\texportDataModel.limit = filtersModel.limit;\n\t\t\t}\n\t\t\treturn exportDataModel;\n\t\t},\n\t\t[prepareExportColumns]\n\t)\n}\n\nexport const useCreatePropertiesForExportModelForProjectReport = () => {\n\tconst prepareExportColumns = usePrepareExportColumns();\n\n\treturn useCallback(\n\t\t(\n\t\t\tvisibleColumns: GenericColumnModel[],\n\t\t\thiddenColumns: GenericColumnModel[],\n\t\t\tspecificBackendColumnFieldsMap: BackendColumnFieldsMap,\n\t\t\texportModel: ExportModel\n\t\t) => {\n\t\t\tconst exportColumns = prepareExportColumns(visibleColumns, hiddenColumns, specificBackendColumnFieldsMap);\n\t\t\tconst properties = createPropertiesForExportModel(exportColumns, exportModel);\n\n\t\t\treturn properties;\n\t\t},\n\t\t[prepareExportColumns]\n\t)\n}\n","import { AttachmentColumnModel, BooleanColumnModel, CurrencyColumnModel, DateColumnModel, DateTimeColumnModel, DurationColumnModel, FormattedReferenceColumnModel, LinkColumnModel, MapOptionColumnModel, NumberColumnModel, OptionColumnModel, OptionsColumnModel, SemaphoreColumnModel, StringColumnModel, TimeColumnModel } from \"components/Table\";\nimport { ColumnsOrderType, ColumnsWidthType } from \"features/UserTableViewConfig/tableConfig/reducer\";\nimport { GenericColumnModel } from \"components/Table\";\nimport { useMemo } from \"react\";\n\nexport const cloneColumnModel = (column: GenericColumnModel): GenericColumnModel => {\n\tif (column instanceof FormattedReferenceColumnModel) {\n\t\treturn new FormattedReferenceColumnModel(column);\n\t} else if (column instanceof SemaphoreColumnModel) {\n\t\treturn new SemaphoreColumnModel(column);\n\t} else if (column instanceof DateColumnModel) {\n\t\treturn new DateColumnModel(column);\n\t} else if (column instanceof DateTimeColumnModel) {\n\t\treturn new DateTimeColumnModel(column);\n\t} else if (column instanceof CurrencyColumnModel) {\n\t\treturn new CurrencyColumnModel(column);\n\t} else if (column instanceof OptionsColumnModel) {\n\t\treturn new OptionsColumnModel(column);\n\t} else if (column instanceof OptionColumnModel) {\n\t\treturn new OptionColumnModel(column);\n\t} else if (column instanceof MapOptionColumnModel) {\n\t\treturn new MapOptionColumnModel(column);\n\t} else if (column instanceof LinkColumnModel) {\n\t\treturn new LinkColumnModel(column);\n\t} else if (column instanceof AttachmentColumnModel) {\n\t\treturn new AttachmentColumnModel(column);\n\t} else if (column instanceof TimeColumnModel) {\n\t\treturn new TimeColumnModel(column);\n\t} else if (column instanceof DurationColumnModel) {\n\t\treturn new DurationColumnModel(column);\n\t} else if (column instanceof BooleanColumnModel) {\n\t\treturn new BooleanColumnModel(column);\n\t} else if (column instanceof NumberColumnModel) {\n\t\treturn new NumberColumnModel(column);\n\t} else if (column instanceof StringColumnModel) {\n\t\treturn new StringColumnModel(column);\n\t}\n\n\t// it should never come here\n\treturn new GenericColumnModel(column);\n}\n\nconst applyDefaults = (columns: GenericColumnModel[]) => {\n\tfor (let column of columns) {\n\t\tif (column instanceof CurrencyColumnModel) {\n\t\t\tcolumn.align = column.align || 'right';\n\t\t}\n\t}\n}\n\nconst applyColumnsWidth = (columns: GenericColumnModel[], columnsWidth: ColumnsWidthType) => {\n\tfor (let column of columns) {\n\t\tcolumn.width = columnsWidth[column.id] || column.width;\n\t}\n};\n\nconst toVisibleHiddenColumns = (tableColumns: GenericColumnModel[], visibleColumnsOrder: string[]) => {\n\tconst visibleColumns: GenericColumnModel[] = [];\n\tfor (let columnId of visibleColumnsOrder) {\n\t\tconst column = tableColumns.find((item) => item.id === columnId);\n\t\tif (column) {\n\t\t\tvisibleColumns.push(column);\n\t\t}\n\t}\n\n\tconst hiddenColumns: GenericColumnModel[] = [];\n\tfor (let tableColumn of tableColumns) {\n\t\tif (!visibleColumnsOrder.includes(tableColumn.id)) {\n\t\t\thiddenColumns.push(tableColumn);\n\t\t}\n\t}\n\n\treturn { visibleColumns, hiddenColumns };\n}\n\nexport const usePrepareTableColumns = (\n\ttableColumns: GenericColumnModel[],\n\tdefaultVisibleColumns: string[],\n\tcolumnsOrder: ColumnsOrderType | undefined,\n\tcolumnsWidth: ColumnsWidthType | undefined\n) => {\n\treturn useMemo(\n\t\t() => {\n\t\t\t// TODO:code_improvement we clone all columns which may lead to some performance issues,\n\t\t\t// so check how are renders behaving on table initialization and interactions\n\t\t\tconst clonedColumns: GenericColumnModel[] = [];\n\t\t\tfor (let tableColumn of tableColumns) {\n\t\t\t\tclonedColumns.push(cloneColumnModel(tableColumn));\n\t\t\t}\n\t\t\tconst visibleColumnsOrder = columnsOrder || defaultVisibleColumns;\n\t\t\tconst { visibleColumns, hiddenColumns } = toVisibleHiddenColumns(clonedColumns, visibleColumnsOrder);\n\t\t\tapplyColumnsWidth(visibleColumns, columnsWidth || {});\n\t\t\tapplyDefaults(visibleColumns);\n\n\t\t\treturn { visibleColumns, hiddenColumns };\n\t\t},\n\t\t[tableColumns, defaultVisibleColumns, columnsOrder, columnsWidth]\n\t)\n}\n","import store from 'base/reducer/store';\nimport { FetchingActionType, PersistValueActionType } from 'features/Persist/actionTypes';\nimport { TenantClient, TenantResponseModel } from 'services/tenantManagementService';\nimport { tryCatchJsonByAction } from 'utils/fetchUtils';\nimport { getTenantId } from './tenantUtils';\n\n// api\n\nconst fetchTenant = () => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new TenantClient();\n\treturn client.getTenant(tenantId);\n}\n\nexport const persistTenantAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTenant.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setTenantFetchingAction(true));\n\n\tconst response = await tryCatchJsonByAction(fetchTenant);\n\tif (response.success) {\n\t\tstore.dispatch(setTenantAction(response.value || new TenantResponseModel()));\n\t} else {\n\t\tstore.dispatch(setTenantFetchingAction(false));\n\t}\n}\n\n// redux\n\nexport const TENANT_FETCHING = 'TENANT_FETCHING';\nexport const TENANT_SET = 'TENANT_SET';\n\nconst setTenantFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TENANT_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setTenantAction = (value: TenantResponseModel): PersistValueActionType => {\n\treturn {\n\t\ttype: TENANT_SET,\n\t\tvalue\n\t}\n}\n","import { envSettings } from \"settings/envSettings\";\n\nconst IS_TENANT_INITIALIZED = 'is_tenant_initialized';\nconst TENANT_ID = 'tenant_id';\nconst SUBDOMAIN = 'subdomain'\n\nexport const getIsTenantInitialized = () : boolean => {\n\treturn localStorage.getItem(IS_TENANT_INITIALIZED) === 'true';\n}\n\nexport const setIsTenantInitialized = (isTenantInitialized: boolean) => {\n\tlocalStorage.setItem(IS_TENANT_INITIALIZED, isTenantInitialized.toString());\n}\n\nexport const getTenantId = () : number | undefined => {\n\tconst tenantStringId = localStorage.getItem(TENANT_ID);\n\tif (tenantStringId === null) {\n\t\treturn;\n\t}\n\n\treturn parseInt(tenantStringId);\n}\n\nexport const setTenantId = (tenantId: number) => {\n\tlocalStorage.setItem(TENANT_ID, tenantId.toString());\n}\n\nexport const getSubdomainFromUrl = () => {\n\tconst hostName = window.location.hostname;\n\tif (hostName !== 'localhost' && hostName !== '127.0.0.1') {\n\t\treturn hostName.slice(0, hostName.length - envSettings.siteDomain.length);\n\t}\n\n\t// localhost\n\treturn envSettings.myTestDomain;\n}\n\nexport const getSubdomainFromStorage = () => {\n\treturn localStorage.getItem(SUBDOMAIN);\n}\n\nexport const setSubdomainToStorage = () => {\n\tconst subdomain = getSubdomainFromUrl();\n\tlocalStorage.setItem(SUBDOMAIN, subdomain);\n}\n","import { ActionType } from 'features/Persist/actionTypes';\nimport { ThemeEnum } from './reducer'\n\nexport type ThemeAction = ActionType & {\n\ttheme: ThemeEnum\n}\n\nexport const THEME_SET = 'THEME_SET';\n\nexport const setThemeAction = (theme: ThemeEnum) => {\n\treturn {\n\t\ttype: THEME_SET,\n\t\ttheme\n\t}\n}\n","import { ThemeEnum } from \"./reducer\";\n\nconst THEME = 'theme';\n\nexport const getThemeLocalStorage = (): ThemeEnum | undefined => {\n\tconst value = localStorage.getItem(THEME);\n\n\tif (value) {\n\t\treturn value as ThemeEnum;\n\t}\n\n\treturn undefined;\n}\n\nexport const setThemeLocalStorage = (theme: ThemeEnum) => {\n\tlocalStorage.setItem(THEME, theme);\n}\n","import { ThemeAction, THEME_SET } from './action';\nimport { getThemeLocalStorage } from './localStorage';\n\nexport enum ThemeEnum {\n\tLight = 'light',\n\tDark = 'dark'\n}\n\nconst initialTheme = getThemeLocalStorage() || ThemeEnum.Dark;\n\nexport const themeReducer = (state = initialTheme, action: ThemeAction) => {\n\tswitch (action.type) {\n\t\tcase THEME_SET:\n\t\t\treturn action.theme;\n\t\tdefault:\n\t\t\treturn state;\n\t}\n\n}\n","import { is, color } from \"@amcharts/amcharts4/core\";\n\nexport const successColor = '#0f996d';\nexport const errorColor = '#f44336';\nexport const warningColor = '#ff9800'\n// sve u svemu treba napraviti vise paleta\n// posto perPriorityDataMemo recimo ima smisla da bude crvena ka narandzastoj ka zutoj\n\nexport const colorsPallete = [\n\t\"#3d8eef\",\n\tsuccessColor,\n\t\"#bdcf32\",\n\t\"#ede15b\", // yellow\n\twarningColor, // \"#edbf33\",\n\t\"#b33dc6\",\n\t\"#ef9b20\",\n\t\"#f46a9b\",\n\terrorColor\n]\n\nexport const colorsPalleteFire = [\n\terrorColor,\n\t'#ff7c1f', // '#ff5a00',\n\t'#ffab1a', // '#ff9a00',\n\t'#ffce00', // '#ffce00',\n\t'#ffe808'\n]\n\nconst amchartCustomTheme = function (object) {\n\tif (is(object, \"ColorSet\")) {\n object.list = [\n\t\t\tcolor(\"#3d8eef\"),\n\t\t\tcolor(\"#0f996d\"),\n\t\t\tcolor(\"#bdcf32\"),\n\t\t\tcolor(\"#ede15b\"),\n\t\t\tcolor(\"#ff9800\"), // #edbf33\n\t\t\tcolor(\"#b33dc6\"),\n\t\t\tcolor(\"#ef9b20\"),\n\t\t\tcolor(\"#f46a9b\"),\n\t\t\tcolor(\"#f44336\") // #ea5545\n ];\n object.reuse = true;\n object.stepOptions = {\n lightness: 0.1,\n hue: 0\n };\n object.passOptions = {};\n }\n}\n\nexport default amchartCustomTheme;\n","const TOKEN = 'token';\n\nexport const setToken = (token: string) => {\n\tlocalStorage.setItem(TOKEN, token);\n}\n\nexport const getToken = () : string | null => {\n\treturn localStorage.getItem(TOKEN);\n}\n","import { getTenantId } from \"features/Tenant/tenantUtils\";\nimport { UserTableViewConfigClient, InsertUpdateUserTableViewConfigRequest } from \"services/tenantManagementService\";\n\nexport const getUserTableViewConfigAction = (viewType: string) => {\n\tconst tenantId = getTenantId()!;\n\tconst client = new UserTableViewConfigClient();\n\treturn client.get(tenantId, viewType)\n}\n\nexport const updateUserTableViewConfigAction = (viewType: string, content: any) => {\n\tconst data = new InsertUpdateUserTableViewConfigRequest();\n\tdata.viewType = viewType;\n\tdata.content = content;\n\n\tconst tenantId = getTenantId()!;\n\tconst client = new UserTableViewConfigClient();\n\treturn client.create(tenantId, data)\n}\n","import { ActionType, FetchingActionType } from \"features/Persist/actionTypes\"\nimport { ColumnsOrderType, ColumnsWidthType, TablesConfig } from \"./reducer\"\nimport { getUserTableViewConfigAction, updateUserTableViewConfigAction } from \"../action\"\nimport store from \"base/reducer/store\"\nimport { tryCatchJsonByAction } from \"utils/fetchUtils\"\nimport { FilterType, SortType } from \"components/Table\"\n\nexport const SET_COLUMNS_ORDER_TABLE_CONFIG = 'SET_COLUMNS_ORDER_TABLE_CONFIG'\nexport const SET_COLUMNS_WIDTH_TABLE_CONFIG = 'SET_COLUMNS_WIDTH_TABLE_CONFIG'\nexport const SET_FILTERS_TABLE_CONFIG = 'SET_FILTERS_TABLE_CONFIG'\nexport const SET_SORT_TABLE_CONFIG = 'SET_SORT_TABLE_CONFIG'\n\nexport type TablesConfigActionType = ActionType & {\n\ttablesConfig: TablesConfig\n}\n\nexport type ColumnsOrderActionType = ActionType & {\n\ttableId: string\n\tcolumnsOrder: ColumnsOrderType\n}\n\nexport type ColumnsWidthActionType = ActionType & {\n\ttableId: string\n\tcolumnsWidth: ColumnsWidthType\n}\n\nexport type FiltersActionType = ActionType & {\n\ttableId: string\n\tfilters: FilterType[]\n}\n\nexport type SortActionType = ActionType & {\n\ttableId: string\n\tsort: SortType\n}\n\nconst viewType = 'TableConfig';\n\nconst getTableConfigAction = () => {\n\treturn getUserTableViewConfigAction(viewType);\n}\n\nconst updateTableConfigAction = () => {\n\tconst state = store.getState();\n\tconst tableConfig = state.persistedTablesConfig.value;\n\n\treturn updateUserTableViewConfigAction(viewType, tableConfig);\n}\n\nexport const persistTableConfigAction = async () => {\n\tconst state = store.getState();\n\n\tif (state.persistedTablesConfig.fetching) {\n\t\treturn;\n\t}\n\n\tstore.dispatch(setTableConfigFetchingAction(true));\n\tconst response = await tryCatchJsonByAction(getTableConfigAction);\n\tif (response.success && response.value) {\n\t\tstore.dispatch(setTablesConfigAction(response.value.content));\n\t} else {\n\t\tstore.dispatch(setTableConfigFetchingAction(false));\n\t}\n}\n\n// persist configure view redux\nexport const TABLE_CONFIG_FETCHING = 'TABLE_CONFIG_FETCHING'\nexport const SET_TABLE_CONFIG = 'SET_TABLE_CONFIG'\n\nconst setTableConfigFetchingAction = (fetching: boolean): FetchingActionType => {\n\treturn {\n\t\ttype: TABLE_CONFIG_FETCHING,\n\t\tfetching\n\t}\n}\n\nconst setTablesConfigAction = (tablesConfig: TablesConfig): TablesConfigActionType => {\n\treturn {\n\t\ttype: SET_TABLE_CONFIG,\n\t\ttablesConfig\n\t}\n}\n\n// public methods\n\nexport const setColumnsOrderAction = async (tableId: string, columnsOrder: ColumnsOrderType | undefined) => {\n\tstore.dispatch({\n\t\ttype: SET_COLUMNS_ORDER_TABLE_CONFIG,\n\t\ttableId,\n\t\tcolumnsOrder,\n\t} as ColumnsOrderActionType);\n\n\treturn await updateTableConfigAction();\n}\n\nexport const setColumnsWidthAction = async (tableId: string, columnsWidth: ColumnsWidthType) => {\n\tstore.dispatch({\n\t\ttype: SET_COLUMNS_WIDTH_TABLE_CONFIG,\n\t\ttableId,\n\t\tcolumnsWidth,\n\t} as ColumnsWidthActionType);\n\n\treturn await updateTableConfigAction();\n}\n\nexport const setFiltersAction = async (tableId: string, filters: FilterType[]) => {\n\tstore.dispatch({\n\t\ttype: SET_FILTERS_TABLE_CONFIG,\n\t\ttableId,\n\t\tfilters\n\t} as FiltersActionType);\n\n\treturn await updateTableConfigAction();\n}\n\nexport const setSortAction = async (tableId: string, sort: SortType) => {\n\tstore.dispatch({\n\t\ttype: SET_SORT_TABLE_CONFIG,\n\t\ttableId,\n\t\tsort\n\t} as SortActionType);\n\n\treturn await updateTableConfigAction();\n}\n","import type {\n Client,\n Event,\n EventHint,\n Integration,\n IntegrationClass,\n IntegrationFn,\n IntegrationFnResult,\n Options,\n} from '@sentry/types';\nimport { arrayify, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { addGlobalEventProcessor } from './eventProcessors';\nimport { getClient } from './exports';\nimport { getCurrentHub } from './hub';\n\ndeclare module '@sentry/types' {\n interface Integration {\n isDefaultInstance?: boolean;\n }\n}\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n [key: string]: Integration;\n};\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preseve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n const integrationsByName: { [key: string]: Integration } = {};\n\n integrations.forEach(currentInstance => {\n const { name } = currentInstance;\n\n const existingInstance = integrationsByName[name];\n\n // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n // default instance to overwrite an existing user instance\n if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n return;\n }\n\n integrationsByName[name] = currentInstance;\n });\n\n return Object.keys(integrationsByName).map(k => integrationsByName[k]);\n}\n\n/** Gets integrations to install */\nexport function getIntegrationsToSetup(options: Pick): Integration[] {\n const defaultIntegrations = options.defaultIntegrations || [];\n const userIntegrations = options.integrations;\n\n // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n defaultIntegrations.forEach(integration => {\n integration.isDefaultInstance = true;\n });\n\n let integrations: Integration[];\n\n if (Array.isArray(userIntegrations)) {\n integrations = [...defaultIntegrations, ...userIntegrations];\n } else if (typeof userIntegrations === 'function') {\n integrations = arrayify(userIntegrations(defaultIntegrations));\n } else {\n integrations = defaultIntegrations;\n }\n\n const finalIntegrations = filterDuplicates(integrations);\n\n // The `Debug` integration prints copies of the `event` and `hint` which will be passed to `beforeSend` or\n // `beforeSendTransaction`. It therefore has to run after all other integrations, so that the changes of all event\n // processors will be reflected in the printed values. For lack of a more elegant way to guarantee that, we therefore\n // locate it and, assuming it exists, pop it out of its current spot and shove it onto the end of the array.\n const debugIndex = findIndex(finalIntegrations, integration => integration.name === 'Debug');\n if (debugIndex !== -1) {\n const [debugInstance] = finalIntegrations.splice(debugIndex, 1);\n finalIntegrations.push(debugInstance);\n }\n\n return finalIntegrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(client: Client, integrations: Integration[]): IntegrationIndex {\n const integrationIndex: IntegrationIndex = {};\n\n integrations.forEach(integration => {\n // guard against empty provided integrations\n if (integration) {\n setupIntegration(client, integration, integrationIndex);\n }\n });\n\n return integrationIndex;\n}\n\n/**\n * Execute the `afterAllSetup` hooks of the given integrations.\n */\nexport function afterSetupIntegrations(client: Client, integrations: Integration[]): void {\n for (const integration of integrations) {\n // guard against empty provided integrations\n if (integration && integration.afterAllSetup) {\n integration.afterAllSetup(client);\n }\n }\n}\n\n/** Setup a single integration. */\nexport function setupIntegration(client: Client, integration: Integration, integrationIndex: IntegrationIndex): void {\n if (integrationIndex[integration.name]) {\n DEBUG_BUILD && logger.log(`Integration skipped because it was already installed: ${integration.name}`);\n return;\n }\n integrationIndex[integration.name] = integration;\n\n // `setupOnce` is only called the first time\n if (installedIntegrations.indexOf(integration.name) === -1) {\n // eslint-disable-next-line deprecation/deprecation\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n }\n\n // `setup` is run for each client\n if (integration.setup && typeof integration.setup === 'function') {\n integration.setup(client);\n }\n\n if (client.on && typeof integration.preprocessEvent === 'function') {\n const callback = integration.preprocessEvent.bind(integration) as typeof integration.preprocessEvent;\n client.on('preprocessEvent', (event, hint) => callback(event, hint, client));\n }\n\n if (client.addEventProcessor && typeof integration.processEvent === 'function') {\n const callback = integration.processEvent.bind(integration) as typeof integration.processEvent;\n\n const processor = Object.assign((event: Event, hint: EventHint) => callback(event, hint, client), {\n id: integration.name,\n });\n\n client.addEventProcessor(processor);\n }\n\n DEBUG_BUILD && logger.log(`Integration installed: ${integration.name}`);\n}\n\n/** Add an integration to the current hub's client. */\nexport function addIntegration(integration: Integration): void {\n const client = getClient();\n\n if (!client || !client.addIntegration) {\n DEBUG_BUILD && logger.warn(`Cannot add integration \"${integration.name}\" because no SDK Client is available.`);\n return;\n }\n\n client.addIntegration(integration);\n}\n\n// Polyfill for Array.findIndex(), which is not supported in ES5\nfunction findIndex(arr: T[], callback: (item: T) => boolean): number {\n for (let i = 0; i < arr.length; i++) {\n if (callback(arr[i]) === true) {\n return i;\n }\n }\n\n return -1;\n}\n\n/**\n * Convert a new integration function to the legacy class syntax.\n * In v8, we can remove this and instead export the integration functions directly.\n *\n * @deprecated This will be removed in v8!\n */\nexport function convertIntegrationFnToClass(\n name: string,\n fn: Fn,\n): IntegrationClass {\n return Object.assign(\n function ConvertedIntegration(...args: Parameters): Integration {\n return fn(...args);\n },\n { id: name },\n ) as unknown as IntegrationClass;\n}\n\n/**\n * Define an integration function that can be used to create an integration instance.\n * Note that this by design hides the implementation details of the integration, as they are considered internal.\n */\nexport function defineIntegration(fn: Fn): (...args: Parameters) => IntegrationFnResult {\n return fn;\n}\n","import type { Client, Event, EventHint, Integration, IntegrationClass, IntegrationFn, StackFrame } from '@sentry/types';\nimport { getEventDescription, logger, stringMatchesSomePattern } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [\n /^Script error\\.?$/,\n /^Javascript error: Script error\\.? on line 0$/,\n /^ResizeObserver loop completed with undelivered notifications.$/,\n /^Cannot redefine property: googletag$/,\n];\n\nconst DEFAULT_IGNORE_TRANSACTIONS = [\n /^.*\\/healthcheck$/,\n /^.*\\/healthy$/,\n /^.*\\/live$/,\n /^.*\\/ready$/,\n /^.*\\/heartbeat$/,\n /^.*\\/health$/,\n /^.*\\/healthz$/,\n];\n\n/** Options for the InboundFilters integration */\nexport interface InboundFiltersOptions {\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreTransactions: Array;\n ignoreInternal: boolean;\n disableErrorDefaults: boolean;\n disableTransactionDefaults: boolean;\n}\n\nconst INTEGRATION_NAME = 'InboundFilters';\nconst _inboundFiltersIntegration = ((options: Partial = {}) => {\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n processEvent(event, _hint, client) {\n const clientOptions = client.getOptions();\n const mergedOptions = _mergeOptions(options, clientOptions);\n return _shouldDropEvent(event, mergedOptions) ? null : event;\n },\n };\n}) satisfies IntegrationFn;\n\nexport const inboundFiltersIntegration = defineIntegration(_inboundFiltersIntegration);\n\n/**\n * Inbound filters configurable by the user.\n * @deprecated Use `inboundFiltersIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const InboundFilters = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n inboundFiltersIntegration,\n) as IntegrationClass void }> & {\n new (\n options?: Partial<{\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreTransactions: Array;\n ignoreInternal: boolean;\n disableErrorDefaults: boolean;\n disableTransactionDefaults: boolean;\n }>,\n ): Integration;\n};\n\nfunction _mergeOptions(\n internalOptions: Partial = {},\n clientOptions: Partial = {},\n): Partial {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n ],\n ignoreTransactions: [\n ...(internalOptions.ignoreTransactions || []),\n ...(clientOptions.ignoreTransactions || []),\n ...(internalOptions.disableTransactionDefaults ? [] : DEFAULT_IGNORE_TRANSACTIONS),\n ],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\nfunction _shouldDropEvent(event: Event, options: Partial): boolean {\n if (options.ignoreInternal && _isSentryError(event)) {\n DEBUG_BUILD &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array): boolean {\n // If event.type, this is not an error\n if (event.type || !ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event: Event, ignoreTransactions?: Array): boolean {\n if (event.type !== 'transaction' || !ignoreTransactions || !ignoreTransactions.length) {\n return false;\n }\n\n const name = event.transaction;\n return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getPossibleEventMessages(event: Event): string[] {\n const possibleMessages: string[] = [];\n\n if (event.message) {\n possibleMessages.push(event.message);\n }\n\n let lastException;\n try {\n // @ts-expect-error Try catching to save bundle size\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n lastException = event.exception.values[event.exception.values.length - 1];\n } catch (e) {\n // try catching to save bundle size checking existence of variables\n }\n\n if (lastException) {\n if (lastException.value) {\n possibleMessages.push(lastException.value);\n if (lastException.type) {\n possibleMessages.push(`${lastException.type}: ${lastException.value}`);\n }\n }\n }\n\n if (DEBUG_BUILD && possibleMessages.length === 0) {\n logger.error(`Could not extract message for event ${getEventDescription(event)}`);\n }\n\n return possibleMessages;\n}\n\nfunction _isSentryError(event: Event): boolean {\n try {\n // @ts-expect-error can't be a sentry error if undefined\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event: Event): string | null {\n try {\n let frames;\n try {\n // @ts-expect-error we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n DEBUG_BUILD && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n","import type { Client, Integration, IntegrationClass, IntegrationFn, WrappedFunction } from '@sentry/types';\nimport { getOriginalFunction } from '@sentry/utils';\nimport { getClient } from '../exports';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration';\n\nlet originalFunctionToString: () => void;\n\nconst INTEGRATION_NAME = 'FunctionToString';\n\nconst SETUP_CLIENTS = new WeakMap();\n\nconst _functionToStringIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // intrinsics (like Function.prototype) might be immutable in some environments\n // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function (this: WrappedFunction, ...args: any[]): string {\n const originalFunction = getOriginalFunction(this);\n const context =\n SETUP_CLIENTS.has(getClient() as Client) && originalFunction !== undefined ? originalFunction : this;\n return originalFunctionToString.apply(context, args);\n };\n } catch {\n // ignore errors here, just don't patch this\n }\n },\n setup(client) {\n SETUP_CLIENTS.set(client, true);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * ```js\n * Sentry.init({\n * integrations: [\n * functionToStringIntegration(),\n * ],\n * });\n * ```\n */\nexport const functionToStringIntegration = defineIntegration(_functionToStringIntegration);\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * @deprecated Use `functionToStringIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const FunctionToString = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n functionToStringIntegration,\n) as IntegrationClass void }>;\n\n// eslint-disable-next-line deprecation/deprecation\nexport type FunctionToString = typeof FunctionToString;\n","import type { Client, ClientOptions } from '@sentry/types';\nimport { consoleSandbox, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { getCurrentScope } from './exports';\nimport { getCurrentHub } from './hub';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass = new (options: O) => F;\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(\n clientClass: ClientClass,\n options: O,\n): void {\n if (options.debug === true) {\n if (DEBUG_BUILD) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n });\n }\n }\n const scope = getCurrentScope();\n scope.update(options.initialScope);\n\n const client = new clientClass(options);\n setCurrentClient(client);\n initializeClient(client);\n}\n\n/**\n * Make the given client the current client.\n */\nexport function setCurrentClient(client: Client): void {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const top = hub.getStackTop();\n top.client = client;\n top.scope.setClient(client);\n}\n\n/**\n * Initialize the client for the current scope.\n * Make sure to call this after `setCurrentClient()`.\n */\nfunction initializeClient(client: Client): void {\n if (client.init) {\n client.init();\n // TODO v8: Remove this fallback\n // eslint-disable-next-line deprecation/deprecation\n } else if (client.setupIntegrations) {\n // eslint-disable-next-line deprecation/deprecation\n client.setupIntegrations();\n }\n}\n","import type { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { consoleSandbox, logger } from './logger';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol?: string): protocol is DsnProtocol {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents or undefined if @param str is not a valid DSN string\n */\nexport function dsnFromString(str: string): DsnComponents | undefined {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n // This should be logged to the console\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.error(`Invalid Sentry Dsn: ${str}`);\n });\n return undefined;\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() as string;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn: DsnComponents): boolean {\n if (!DEBUG_BUILD) {\n return true;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents: ReadonlyArray = ['protocol', 'publicKey', 'host', 'projectId'];\n const hasMissingRequiredComponent = requiredComponents.find(component => {\n if (!dsn[component]) {\n logger.error(`Invalid Sentry Dsn: ${component} missing`);\n return true;\n }\n return false;\n });\n\n if (hasMissingRequiredComponent) {\n return false;\n }\n\n if (!projectId.match(/^\\d+$/)) {\n logger.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n return false;\n }\n\n if (!isValidProtocol(protocol)) {\n logger.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n return false;\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n logger.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n return false;\n }\n\n return true;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nexport function makeDsn(from: DsnLike): DsnComponents | undefined {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n if (!components || !validateDsn(components)) {\n return undefined;\n }\n return components;\n}\n","import type { ClientOptions, DsnComponents, DsnLike, SdkInfo } from '@sentry/types';\nimport { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn: DsnComponents): string {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn: DsnComponents, sdkInfo: SdkInfo | undefined): string {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(\n dsn: DsnComponents,\n // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n // options: ClientOptions = {} as ClientOptions,\n tunnelOrOptions: string | ClientOptions = {} as ClientOptions,\n): string {\n // TODO (v8): Use this code instead\n // const { tunnel, _metadata = {} } = options;\n // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n const tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n const sdkInfo =\n typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(\n dsnLike: DsnLike,\n dialogOptions: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n user?: { name?: string; email?: string };\n },\n): string {\n const dsn = makeDsn(dsnLike);\n if (!dsn) {\n return '';\n }\n\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'onClose') {\n continue;\n }\n\n if (key === 'user') {\n const user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n","import { DEBUG_BUILD } from './debug-build';\nimport { logger } from './logger';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\ndeclare const EdgeRuntime: string | undefined;\n\nexport { supportsHistory } from './vendor/supportsHistory';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError(): boolean {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-expect-error It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException(): boolean {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch(): boolean {\n if (!('fetch' in WINDOW)) {\n return false;\n }\n\n try {\n new Headers();\n new Request('http://www.example.com');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFetch(func: Function): boolean {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch(): boolean {\n if (typeof EdgeRuntime === 'string') {\n return true;\n }\n\n if (!supportsFetch()) {\n return false;\n }\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(WINDOW.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = WINDOW.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement as unknown) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n DEBUG_BUILD &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver(): boolean {\n return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy(): boolean {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n","// Based on https://github.com/angular/angular.js/pull/13945/files\n// The MIT License\n\n// Copyright (c) 2010-2016 Google, Inc. http://angularjs.org\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport { getGlobalObject } from '../worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chromeVar = (WINDOW as any).chrome;\n const isChromePackagedApp = chromeVar && chromeVar.app && chromeVar.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n","// TODO(v8): Move everything in this file into the browser package. Nothing here is generic and we run risk of leaking browser types into non-browser packages.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataHistory } from '@sentry/types';\n\nimport { fill } from '../object';\nimport { supportsHistory } from '../supports';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\nlet lastHref: string | undefined;\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addHistoryInstrumentationHandler(handler: (data: HandlerDataHistory) => void): void {\n const type = 'history';\n addHandler(type, handler);\n maybeInstrument(type, instrumentHistory);\n}\n\nfunction instrumentHistory(): void {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = WINDOW.onpopstate;\n WINDOW.onpopstate = function (this: WindowEventHandlers, ...args: any[]): any {\n const to = WINDOW.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n const handlerData: HandlerDataHistory = { from, to };\n triggerHandlers('history', handlerData);\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n return function (this: History, ...args: any[]): void {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n const handlerData: HandlerDataHistory = { from, to };\n triggerHandlers('history', handlerData);\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(WINDOW.history, 'pushState', historyReplacementFunction);\n fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n","import type {\n Attachment,\n AttachmentItem,\n BaseEnvelopeHeaders,\n BaseEnvelopeItemHeaders,\n DataCategory,\n DsnComponents,\n Envelope,\n EnvelopeItemType,\n Event,\n EventEnvelopeHeaders,\n SdkInfo,\n SdkMetadata,\n TextEncoderInternal,\n} from '@sentry/types';\n\nimport { dsnToString } from './dsn';\nimport { normalize } from './normalize';\nimport { dropUndefinedKeys } from './object';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function createEnvelope(headers: E[0], items: E[1] = []): E {\n return [headers, items] as E;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function addItemToEnvelope(envelope: E, newItem: E[1][number]): E {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] as unknown as E;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n *\n * If the callback returns true, the rest of the items will be skipped.\n */\nexport function forEachEnvelopeItem(\n envelope: Envelope,\n callback: (envelopeItem: E[1][number], envelopeItemType: E[1][number][0]['type']) => boolean | void,\n): boolean {\n const envelopeItems = envelope[1];\n\n for (const envelopeItem of envelopeItems) {\n const envelopeItemType = envelopeItem[0].type;\n const result = callback(envelopeItem, envelopeItemType);\n\n if (result) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Returns true if the envelope contains any of the given envelope item types\n */\nexport function envelopeContainsItemType(envelope: Envelope, types: EnvelopeItemType[]): boolean {\n return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8.\n */\nfunction encodeUTF8(input: string, textEncoder?: TextEncoderInternal): Uint8Array {\n const utf8 = textEncoder || new TextEncoder();\n return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nexport function serializeEnvelope(envelope: Envelope, textEncoder?: TextEncoderInternal): string | Uint8Array {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts: string | Uint8Array[] = JSON.stringify(envHeaders);\n\n function append(next: string | Uint8Array): void {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n }\n }\n\n for (const item of items) {\n const [itemHeaders, payload] = item;\n\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n if (typeof payload === 'string' || payload instanceof Uint8Array) {\n append(payload);\n } else {\n let stringifiedPayload: string;\n try {\n stringifiedPayload = JSON.stringify(payload);\n } catch (e) {\n // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.strinify()` still\n // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n // performance impact but in this case a performance hit is better than throwing.\n stringifiedPayload = JSON.stringify(normalize(payload));\n }\n append(stringifiedPayload);\n }\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers: Uint8Array[]): Uint8Array {\n const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\nexport interface TextDecoderInternal {\n decode(input?: Uint8Array): string;\n}\n\n/**\n * Parses an envelope\n */\nexport function parseEnvelope(\n env: string | Uint8Array,\n textEncoder: TextEncoderInternal,\n textDecoder: TextDecoderInternal,\n): Envelope {\n let buffer = typeof env === 'string' ? textEncoder.encode(env) : env;\n\n function readBinary(length: number): Uint8Array {\n const bin = buffer.subarray(0, length);\n // Replace the buffer with the remaining data excluding trailing newline\n buffer = buffer.subarray(length + 1);\n return bin;\n }\n\n function readJson(): T {\n let i = buffer.indexOf(0xa);\n // If we couldn't find a newline, we must have found the end of the buffer\n if (i < 0) {\n i = buffer.length;\n }\n\n return JSON.parse(textDecoder.decode(readBinary(i))) as T;\n }\n\n const envelopeHeader = readJson();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items: [any, any][] = [];\n\n while (buffer.length) {\n const itemHeader = readJson();\n const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined;\n\n items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]);\n }\n\n return [envelopeHeader, items];\n}\n\n/**\n * Creates attachment envelope items\n */\nexport function createAttachmentEnvelopeItem(\n attachment: Attachment,\n textEncoder?: TextEncoderInternal,\n): AttachmentItem {\n const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n return [\n dropUndefinedKeys({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP: Record = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n profile: 'profile',\n replay_event: 'replay',\n replay_recording: 'replay',\n check_in: 'monitor',\n feedback: 'feedback',\n span: 'span',\n statsd: 'metric_bucket',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nexport function envelopeItemTypeToDataCategory(type: EnvelopeItemType): DataCategory {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\n/** Extracts the minimal SDK info from the metadata or an events */\nexport function getSdkMetadataForEnvelopeHeader(metadataOrEvent?: SdkMetadata | Event): SdkInfo | undefined {\n if (!metadataOrEvent || !metadataOrEvent.sdk) {\n return;\n }\n const { name, version } = metadataOrEvent.sdk;\n return { name, version };\n}\n\n/**\n * Creates event envelope headers, based on event, sdk info and tunnel\n * Note: This function was extracted from the core package to make it available in Replay\n */\nexport function createEventEnvelopeHeaders(\n event: Event,\n sdkInfo: SdkInfo | undefined,\n tunnel: string | undefined,\n dsn?: DsnComponents,\n): EventEnvelopeHeaders {\n const dynamicSamplingContext = event.sdkProcessingMetadata && event.sdkProcessingMetadata.dynamicSamplingContext;\n return {\n event_id: event.event_id as string,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n ...(dynamicSamplingContext && {\n trace: dropUndefinedKeys({ ...dynamicSamplingContext }),\n }),\n };\n}\n","import type { ConsoleLevel } from '@sentry/types';\n\n/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n /** Display name of this error instance. */\n public name: string;\n\n public logLevel: ConsoleLevel;\n\n public constructor(public message: string, logLevel: ConsoleLevel = 'warn') {\n super(message);\n\n this.name = new.target.prototype.constructor.name;\n // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n // instances of `SentryError` fail `obj instanceof SentryError` checks.\n Object.setPrototypeOf(this, new.target.prototype);\n this.logLevel = logLevel;\n }\n}\n","import type { DsnComponents, MetricBucketItem, SdkMetadata, StatsdEnvelope, StatsdItem } from '@sentry/types';\nimport { createEnvelope, dsnToString } from '@sentry/utils';\nimport { serializeMetricBuckets } from './utils';\n\n/**\n * Create envelope from a metric aggregate.\n */\nexport function createMetricEnvelope(\n metricBucketItems: Array,\n dsn?: DsnComponents,\n metadata?: SdkMetadata,\n tunnel?: string,\n): StatsdEnvelope {\n const headers: StatsdEnvelope[0] = {\n sent_at: new Date().toISOString(),\n };\n\n if (metadata && metadata.sdk) {\n headers.sdk = {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n };\n }\n\n if (!!tunnel && dsn) {\n headers.dsn = dsnToString(dsn);\n }\n\n const item = createMetricEnvelopeItem(metricBucketItems);\n return createEnvelope(headers, [item]);\n}\n\nfunction createMetricEnvelopeItem(metricBucketItems: MetricBucketItem[]): StatsdItem {\n const payload = serializeMetricBuckets(metricBucketItems);\n const metricHeaders: StatsdItem[0] = {\n type: 'statsd',\n length: payload.length,\n };\n return [metricHeaders, payload];\n}\n","import type { MeasurementUnit, MetricBucketItem, Primitive } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\nimport type { MetricType } from './types';\n\n/**\n * Generate bucket key from metric properties.\n */\nexport function getBucketKey(\n metricType: MetricType,\n name: string,\n unit: MeasurementUnit,\n tags: Record,\n): string {\n const stringifiedTags = Object.entries(dropUndefinedKeys(tags)).sort((a, b) => a[0].localeCompare(b[0]));\n return `${metricType}${name}${unit}${stringifiedTags}`;\n}\n\n/* eslint-disable no-bitwise */\n/**\n * Simple hash function for strings.\n */\nexport function simpleHash(s: string): number {\n let rv = 0;\n for (let i = 0; i < s.length; i++) {\n const c = s.charCodeAt(i);\n rv = (rv << 5) - rv + c;\n rv &= rv;\n }\n return rv >>> 0;\n}\n/* eslint-enable no-bitwise */\n\n/**\n * Serialize metrics buckets into a string based on statsd format.\n *\n * Example of format:\n * metric.name@second:1:1.2|d|#a:value,b:anothervalue|T12345677\n * Segments:\n * name: metric.name\n * unit: second\n * value: [1, 1.2]\n * type of metric: d (distribution)\n * tags: { a: value, b: anothervalue }\n * timestamp: 12345677\n */\nexport function serializeMetricBuckets(metricBucketItems: MetricBucketItem[]): string {\n let out = '';\n for (const item of metricBucketItems) {\n const tagEntries = Object.entries(item.tags);\n const maybeTags = tagEntries.length > 0 ? `|#${tagEntries.map(([key, value]) => `${key}:${value}`).join(',')}` : '';\n out += `${item.name}@${item.unit}:${item.metric}|${item.metricType}${maybeTags}|T${item.timestamp}\\n`;\n }\n return out;\n}\n\n/** Sanitizes units */\nexport function sanitizeUnit(unit: string): string {\n return unit.replace(/[^\\w]+/gi, '_');\n}\n\n/** Sanitizes metric keys */\nexport function sanitizeMetricKey(key: string): string {\n return key.replace(/[^\\w\\-.]+/gi, '_');\n}\n\nfunction sanitizeTagKey(key: string): string {\n return key.replace(/[^\\w\\-./]+/gi, '');\n}\n\nconst tagValueReplacements: [string, string][] = [\n ['\\n', '\\\\n'],\n ['\\r', '\\\\r'],\n ['\\t', '\\\\t'],\n ['\\\\', '\\\\\\\\'],\n ['|', '\\\\u{7c}'],\n [',', '\\\\u{2c}'],\n];\n\nfunction getCharOrReplacement(input: string): string {\n for (const [search, replacement] of tagValueReplacements) {\n if (input === search) {\n return replacement;\n }\n }\n\n return input;\n}\n\nfunction sanitizeTagValue(value: string): string {\n return [...value].reduce((acc, char) => acc + getCharOrReplacement(char), '');\n}\n\n/**\n * Sanitizes tags.\n */\nexport function sanitizeTags(unsanitizedTags: Record): Record {\n const tags: Record = {};\n for (const key in unsanitizedTags) {\n if (Object.prototype.hasOwnProperty.call(unsanitizedTags, key)) {\n const sanitizedKey = sanitizeTagKey(key);\n tags[sanitizedKey] = sanitizeTagValue(String(unsanitizedTags[key]));\n }\n }\n return tags;\n}\n","/* eslint-disable max-lines */\nimport type {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n ClientOptions,\n DataCategory,\n DsnComponents,\n DynamicSamplingContext,\n Envelope,\n ErrorEvent,\n Event,\n EventDropReason,\n EventHint,\n EventProcessor,\n FeedbackEvent,\n Integration,\n IntegrationClass,\n MetricBucketItem,\n MetricsAggregator,\n Outcome,\n ParameterizedString,\n SdkMetadata,\n Session,\n SessionAggregates,\n Severity,\n SeverityLevel,\n StartSpanOptions,\n Transaction,\n TransactionEvent,\n Transport,\n TransportMakeRequestResponse,\n} from '@sentry/types';\nimport {\n SentryError,\n SyncPromise,\n addItemToEnvelope,\n checkOrSetAlreadyCaught,\n createAttachmentEnvelopeItem,\n isParameterizedString,\n isPlainObject,\n isPrimitive,\n isThenable,\n logger,\n makeDsn,\n rejectedSyncPromise,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api';\nimport { DEBUG_BUILD } from './debug-build';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope';\nimport { getClient } from './exports';\nimport { getIsolationScope } from './hub';\nimport type { IntegrationIndex } from './integration';\nimport { afterSetupIntegrations } from './integration';\nimport { setupIntegration, setupIntegrations } from './integration';\nimport { createMetricEnvelope } from './metrics/envelope';\nimport type { Scope } from './scope';\nimport { updateSession } from './session';\nimport { getDynamicSamplingContextFromClient } from './tracing/dynamicSamplingContext';\nimport { prepareEvent } from './utils/prepareEvent';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class BaseClient implements Client {\n /**\n * A reference to a metrics aggregator\n *\n * @experimental Note this is alpha API. It may experience breaking changes in the future.\n */\n public metricsAggregator?: MetricsAggregator;\n\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: DsnComponents;\n\n protected readonly _transport?: Transport;\n\n /** Array of set up integrations. */\n protected _integrations: IntegrationIndex;\n\n /** Indicates whether this client's integrations have been set up. */\n protected _integrationsInitialized: boolean;\n\n /** Number of calls being processed */\n protected _numProcessing: number;\n\n protected _eventProcessors: EventProcessor[];\n\n /** Holds flushable */\n private _outcomes: { [key: string]: number };\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n private _hooks: Record;\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n protected constructor(options: O) {\n this._options = options;\n this._integrations = {};\n this._integrationsInitialized = false;\n this._numProcessing = 0;\n this._outcomes = {};\n this._hooks = {};\n this._eventProcessors = [];\n\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n } else {\n DEBUG_BUILD && logger.warn('No DSN provided, client will not send events.');\n }\n\n if (this._dsn) {\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n this._transport = options.transport({\n tunnel: this._options.tunnel,\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this.eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(\n message: ParameterizedString,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n scope?: Scope,\n ): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n\n const eventMessage = isParameterizedString(message) ? message : String(message);\n\n const promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(eventMessage, level, hint)\n : this.eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n const capturedSpanScope: Scope | undefined = sdkProcessingMetadata.capturedSpanScope;\n\n this._process(\n this._captureEvent(event, hint, capturedSpanScope || scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(session: Session): void {\n if (!(typeof session.release === 'string')) {\n DEBUG_BUILD && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n public getDsn(): DsnComponents | undefined {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * @see SdkMetadata in @sentry/types\n *\n * @return The metadata of the SDK\n */\n public getSdkMetadata(): SdkMetadata | undefined {\n return this._options._metadata;\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport | undefined {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n public flush(timeout?: number): PromiseLike {\n const transport = this._transport;\n if (transport) {\n if (this.metricsAggregator) {\n this.metricsAggregator.flush();\n }\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n if (this.metricsAggregator) {\n this.metricsAggregator.close();\n }\n return result;\n });\n }\n\n /** Get all installed event processors. */\n public getEventProcessors(): EventProcessor[] {\n return this._eventProcessors;\n }\n\n /** @inheritDoc */\n public addEventProcessor(eventProcessor: EventProcessor): void {\n this._eventProcessors.push(eventProcessor);\n }\n\n /**\n * This is an internal function to setup all integrations that should run on the client.\n * @deprecated Use `client.init()` instead.\n */\n public setupIntegrations(forceInitialize?: boolean): void {\n if ((forceInitialize && !this._integrationsInitialized) || (this._isEnabled() && !this._integrationsInitialized)) {\n this._setupIntegrations();\n }\n }\n\n /** @inheritdoc */\n public init(): void {\n if (this._isEnabled()) {\n this._setupIntegrations();\n }\n }\n\n /**\n * Gets an installed integration by its `id`.\n *\n * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n * @deprecated Use `getIntegrationByName()` instead.\n */\n public getIntegrationById(integrationId: string): Integration | undefined {\n return this.getIntegrationByName(integrationId);\n }\n\n /**\n * Gets an installed integration by its name.\n *\n * @returns The installed integration or `undefined` if no integration with that `name` was installed.\n */\n public getIntegrationByName(integrationName: string): T | undefined {\n return this._integrations[integrationName] as T | undefined;\n }\n\n /**\n * Returns the client's instance of the given integration class, it any.\n * @deprecated Use `getIntegrationByName()` instead.\n */\n public getIntegration(integration: IntegrationClass): T | null {\n try {\n return (this._integrations[integration.id] as T) || null;\n } catch (_oO) {\n DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public addIntegration(integration: Integration): void {\n const isAlreadyInstalled = this._integrations[integration.name];\n\n // This hook takes care of only installing if not already installed\n setupIntegration(this, integration, this._integrations);\n // Here we need to check manually to make sure to not run this multiple times\n if (!isAlreadyInstalled) {\n afterSetupIntegrations(this, [integration]);\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event, hint: EventHint = {}): void {\n this.emit('beforeSendEvent', event, hint);\n\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(\n env,\n createAttachmentEnvelopeItem(\n attachment,\n this._options.transportOptions && this._options.transportOptions.textEncoder,\n ),\n );\n }\n\n const promise = this._sendEnvelope(env);\n if (promise) {\n promise.then(sendResponse => this.emit('afterSendEvent', event, sendResponse), null);\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session | SessionAggregates): void {\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(env);\n }\n\n /**\n * @inheritDoc\n */\n public recordDroppedEvent(reason: EventDropReason, category: DataCategory, eventOrCount?: Event | number): void {\n if (this._options.sendClientReports) {\n // TODO v9: We do not need the `event` passed as third argument anymore, and can possibly remove this overload\n // If event is passed as third argument, we assume this is a count of 1\n const count = typeof eventOrCount === 'number' ? eventOrCount : 1;\n\n // We want to track each category (error, transaction, session, replay_event) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n const key = `${reason}:${category}`;\n DEBUG_BUILD && logger.log(`Recording outcome: \"${key}\"${count > 1 ? ` (${count} times)` : ''}`);\n this._outcomes[key] = (this._outcomes[key] || 0) + count;\n }\n }\n\n /**\n * @inheritDoc\n */\n public captureAggregateMetrics(metricBucketItems: Array): void {\n DEBUG_BUILD && logger.log(`Flushing aggregated metrics, number of metrics: ${metricBucketItems.length}`);\n const metricsEnvelope = createMetricEnvelope(\n metricBucketItems,\n this._dsn,\n this._options._metadata,\n this._options.tunnel,\n );\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(metricsEnvelope);\n }\n\n // Keep on() & emit() signatures in sync with types' client.ts interface\n /* eslint-disable @typescript-eslint/unified-signatures */\n\n /** @inheritdoc */\n public on(hook: 'startTransaction', callback: (transaction: Transaction) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'finishTransaction', callback: (transaction: Transaction) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'beforeEnvelope', callback: (envelope: Envelope) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'beforeSendEvent', callback: (event: Event, hint?: EventHint) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'preprocessEvent', callback: (event: Event, hint?: EventHint) => void): void;\n\n /** @inheritdoc */\n public on(\n hook: 'afterSendEvent',\n callback: (event: Event, sendResponse: TransportMakeRequestResponse | void) => void,\n ): void;\n\n /** @inheritdoc */\n public on(hook: 'beforeAddBreadcrumb', callback: (breadcrumb: Breadcrumb, hint?: BreadcrumbHint) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'createDsc', callback: (dsc: DynamicSamplingContext) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'otelSpanEnd', callback: (otelSpan: unknown, mutableOptions: { drop: boolean }) => void): void;\n\n /** @inheritdoc */\n public on(\n hook: 'beforeSendFeedback',\n callback: (feedback: FeedbackEvent, options?: { includeReplay: boolean }) => void,\n ): void;\n\n /** @inheritdoc */\n public on(hook: 'startPageLoadSpan', callback: (options: StartSpanOptions) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'startNavigationSpan', callback: (options: StartSpanOptions) => void): void;\n\n /** @inheritdoc */\n public on(hook: string, callback: unknown): void {\n if (!this._hooks[hook]) {\n this._hooks[hook] = [];\n }\n\n // @ts-expect-error We assue the types are correct\n this._hooks[hook].push(callback);\n }\n\n /** @inheritdoc */\n public emit(hook: 'startTransaction', transaction: Transaction): void;\n\n /** @inheritdoc */\n public emit(hook: 'finishTransaction', transaction: Transaction): void;\n\n /** @inheritdoc */\n public emit(hook: 'beforeEnvelope', envelope: Envelope): void;\n\n /** @inheritdoc */\n public emit(hook: 'beforeSendEvent', event: Event, hint?: EventHint): void;\n\n /** @inheritdoc */\n public emit(hook: 'preprocessEvent', event: Event, hint?: EventHint): void;\n\n /** @inheritdoc */\n public emit(hook: 'afterSendEvent', event: Event, sendResponse: TransportMakeRequestResponse | void): void;\n\n /** @inheritdoc */\n public emit(hook: 'beforeAddBreadcrumb', breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void;\n\n /** @inheritdoc */\n public emit(hook: 'createDsc', dsc: DynamicSamplingContext): void;\n\n /** @inheritdoc */\n public emit(hook: 'otelSpanEnd', otelSpan: unknown, mutableOptions: { drop: boolean }): void;\n\n /** @inheritdoc */\n public emit(hook: 'beforeSendFeedback', feedback: FeedbackEvent, options?: { includeReplay: boolean }): void;\n\n /** @inheritdoc */\n public emit(hook: 'startPageLoadSpan', options: StartSpanOptions): void;\n\n /** @inheritdoc */\n public emit(hook: 'startNavigationSpan', options: StartSpanOptions): void;\n\n /** @inheritdoc */\n public emit(hook: string, ...rest: unknown[]): void {\n if (this._hooks[hook]) {\n this._hooks[hook].forEach(callback => callback(...rest));\n }\n }\n\n /* eslint-enable @typescript-eslint/unified-signatures */\n\n /** Setup integrations for this client. */\n protected _setupIntegrations(): void {\n const { integrations } = this._options;\n this._integrations = setupIntegrations(this, integrations);\n afterSetupIntegrations(this, integrations);\n\n // TODO v8: We don't need this flag anymore\n this._integrationsInitialized = true;\n }\n\n /** Updates existing session based on the provided event */\n protected _updateSessionFromEvent(session: Session, event: Event): void {\n let crashed = false;\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n protected _isClientDoneProcessing(timeout?: number): PromiseLike {\n return new SyncPromise(resolve => {\n let ticked: number = 0;\n const tick: number = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a transport is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._transport !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n protected _prepareEvent(\n event: Event,\n hint: EventHint,\n scope?: Scope,\n isolationScope = getIsolationScope(),\n ): PromiseLike {\n const options = this.getOptions();\n const integrations = Object.keys(this._integrations);\n if (!hint.integrations && integrations.length > 0) {\n hint.integrations = integrations;\n }\n\n this.emit('preprocessEvent', event, hint);\n\n return prepareEvent(options, event, hint, scope, this, isolationScope).then(evt => {\n if (evt === null) {\n return evt;\n }\n\n const propagationContext = {\n ...isolationScope.getPropagationContext(),\n ...(scope ? scope.getPropagationContext() : undefined),\n };\n\n const trace = evt.contexts && evt.contexts.trace;\n if (!trace && propagationContext) {\n const { traceId: trace_id, spanId, parentSpanId, dsc } = propagationContext;\n evt.contexts = {\n trace: {\n trace_id,\n span_id: spanId,\n parent_span_id: parentSpanId,\n },\n ...evt.contexts,\n };\n\n const dynamicSamplingContext = dsc ? dsc : getDynamicSamplingContextFromClient(trace_id, this, scope);\n\n evt.sdkProcessingMetadata = {\n dynamicSamplingContext,\n ...evt.sdkProcessingMetadata,\n };\n }\n return evt;\n });\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n protected _captureEvent(event: Event, hint: EventHint = {}, scope?: Scope): PromiseLike {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if (DEBUG_BUILD) {\n // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n // control flow, log just the message (no stack) as a log-level log.\n const sentryError = reason as SentryError;\n if (sentryError.logLevel === 'log') {\n logger.log(sentryError.message);\n } else {\n logger.warn(sentryError);\n }\n }\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n protected _processEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n const options = this.getOptions();\n const { sampleRate } = options;\n\n const isTransaction = isTransactionEvent(event);\n const isError = isErrorEvent(event);\n const eventType = event.type || 'error';\n const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (isError && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n this.recordDroppedEvent('sample_rate', 'error', event);\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n 'log',\n ),\n );\n }\n\n const dataCategory: DataCategory = eventType === 'replay_event' ? 'replay' : eventType;\n\n const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n const capturedSpanIsolationScope: Scope | undefined = sdkProcessingMetadata.capturedSpanIsolationScope;\n\n return this._prepareEvent(event, hint, scope, capturedSpanIsolationScope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', dataCategory, event);\n throw new SentryError('An event processor returned `null`, will not send event.', 'log');\n }\n\n const isInternalException = hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n if (isInternalException) {\n return prepared;\n }\n\n const result = processBeforeSend(options, prepared, hint);\n return _validateBeforeSendResult(result, beforeSendLabel);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', dataCategory, event);\n if (isTransaction) {\n const spans = event.spans || [];\n // the transaction itself counts as one span, plus all the child spans that are added\n const spanCount = 1 + spans.length;\n this.recordDroppedEvent('before_send', 'span', spanCount);\n }\n throw new SentryError(`${beforeSendLabel} returned \\`null\\`, will not send event.`, 'log');\n }\n\n const session = scope && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n if (isTransaction) {\n const spanCountBefore =\n (processedEvent.sdkProcessingMetadata && processedEvent.sdkProcessingMetadata.spanCountBeforeProcessing) ||\n 0;\n const spanCountAfter = processedEvent.spans ? processedEvent.spans.length : 0;\n\n const droppedSpanCount = spanCountBefore - spanCountAfter;\n if (droppedSpanCount > 0) {\n this.recordDroppedEvent('before_send', 'span', droppedSpanCount);\n }\n }\n\n // None of the Sentry built event processor will update transaction name,\n // so if the transaction name has been changed by an event processor, we know\n // it has to come from custom event processor added by a user\n const transactionInfo = processedEvent.transaction_info;\n if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n const source = 'custom';\n processedEvent.transaction_info = {\n ...transactionInfo,\n source,\n };\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n protected _process(promise: PromiseLike): void {\n this._numProcessing++;\n void promise.then(\n value => {\n this._numProcessing--;\n return value;\n },\n reason => {\n this._numProcessing--;\n return reason;\n },\n );\n }\n\n /**\n * @inheritdoc\n */\n protected _sendEnvelope(envelope: Envelope): PromiseLike | void {\n this.emit('beforeEnvelope', envelope);\n\n if (this._isEnabled() && this._transport) {\n return this._transport.send(envelope).then(null, reason => {\n DEBUG_BUILD && logger.error('Error while sending event:', reason);\n });\n } else {\n DEBUG_BUILD && logger.error('Transport disabled');\n }\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n protected _clearOutcomes(): Outcome[] {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.keys(outcomes).map(key => {\n const [reason, category] = key.split(':') as [EventDropReason, DataCategory];\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n });\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public abstract eventFromException(_exception: any, _hint?: EventHint): PromiseLike;\n\n /**\n * @inheritDoc\n */\n public abstract eventFromMessage(\n _message: ParameterizedString,\n // eslint-disable-next-line deprecation/deprecation\n _level?: Severity | SeverityLevel,\n _hint?: EventHint,\n ): PromiseLike;\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n beforeSendResult: PromiseLike | Event | null,\n beforeSendLabel: string,\n): PromiseLike | Event | null {\n const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(\n event => {\n if (!isPlainObject(event) && event !== null) {\n throw new SentryError(invalidValueError);\n }\n return event;\n },\n e => {\n throw new SentryError(`${beforeSendLabel} rejected with ${e}`);\n },\n );\n } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n throw new SentryError(invalidValueError);\n }\n return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n options: ClientOptions,\n event: Event,\n hint: EventHint,\n): PromiseLike | Event | null {\n const { beforeSend, beforeSendTransaction } = options;\n\n if (isErrorEvent(event) && beforeSend) {\n return beforeSend(event, hint);\n }\n\n if (isTransactionEvent(event) && beforeSendTransaction) {\n if (event.spans) {\n // We store the # of spans before processing in SDK metadata,\n // so we can compare it afterwards to determine how many spans were dropped\n const spanCountBefore = event.spans.length;\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n spanCountBeforeProcessing: spanCountBefore,\n };\n }\n return beforeSendTransaction(event, hint);\n }\n\n return event;\n}\n\nfunction isErrorEvent(event: Event): event is ErrorEvent {\n return event.type === undefined;\n}\n\nfunction isTransactionEvent(event: Event): event is TransactionEvent {\n return event.type === 'transaction';\n}\n\n/**\n * Add an event processor to the current client.\n * This event processor will run for all events processed by this client.\n */\nexport function addEventProcessor(callback: EventProcessor): void {\n const client = getClient();\n\n if (!client || !client.addEventProcessor) {\n return;\n }\n\n client.addEventProcessor(callback);\n}\n","import type { Options } from '@sentry/types';\nimport { SDK_VERSION } from '../version';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n *\n * Note: This function is identical to `buildMetadata` in Remix and NextJS and SvelteKit.\n * We don't extract it for bundle size reasons.\n * @see https://github.com/getsentry/sentry-javascript/pull/7404\n * @see https://github.com/getsentry/sentry-javascript/pull/4196\n *\n * If you make changes to this function consider updating the others as well.\n *\n * @param options SDK options object that gets mutated\n * @param names list of package names\n */\nexport function applySdkMetadata(options: Options, name: string, names = [name], source = 'npm'): void {\n const metadata = options._metadata || {};\n\n if (!metadata.sdk) {\n metadata.sdk = {\n name: `sentry.javascript.${name}`,\n packages: names.map(name => ({\n name: `${source}:@sentry/${name}`,\n version: SDK_VERSION,\n })),\n version: SDK_VERSION,\n };\n }\n\n options._metadata = metadata;\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import { getClient } from '@sentry/core';\nimport type {\n Event,\n EventHint,\n Exception,\n ParameterizedString,\n Severity,\n SeverityLevel,\n StackFrame,\n StackParser,\n} from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n extractExceptionKeysForMessage,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isParameterizedString,\n isPlainObject,\n normalizeToSize,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nexport function exceptionFromError(stackParser: StackParser, ex: Error): Exception {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception: Exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(\n stackParser: StackParser,\n exception: Record,\n syntheticException?: Error,\n isUnhandledRejection?: boolean,\n): Event {\n const client = getClient();\n const normalizeDepth = client && client.getOptions().normalizeDepth;\n\n const event: Event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception, normalizeDepth),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception as { values: Exception[] }).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromError(stackParser: StackParser, ex: Error): Event {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nexport function parseStackFrames(\n stackParser: StackParser,\n ex: Error & { framesToPop?: number; stacktrace?: string },\n): StackFrame[] {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return stackParser(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex: Error & { framesToPop?: number }): number {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: Error & { message: { error?: Error } }): string {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(\n stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n stackParser: StackParser,\n message: ParameterizedString,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n stackParser: StackParser,\n exception: unknown,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n isUnhandledRejection?: boolean,\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n return eventFromError(stackParser, errorEvent.error as Error);\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception) || isDOMException(exception as DOMException)) {\n const domException = exception as DOMException;\n\n if ('stack' in (exception as Error)) {\n event = eventFromError(stackParser, exception as Error);\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n // eslint-disable-next-line deprecation/deprecation\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception as Record;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception as string, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromString(\n stackParser: StackParser,\n message: ParameterizedString,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n): Event {\n const event: Event = {};\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: message, stacktrace: { frames } }],\n };\n }\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n\nfunction getNonErrorObjectExceptionValue(\n exception: Record,\n { isUnhandledRejection }: { isUnhandledRejection?: boolean },\n): string {\n const keys = extractExceptionKeysForMessage(exception);\n const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';\n\n // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n // We still want to try to get a decent message for these cases\n if (isErrorEvent(exception)) {\n return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n }\n\n if (isEvent(exception)) {\n const className = getObjectClassName(exception);\n return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n }\n\n return `Object captured as ${captureType} with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj: unknown): string | undefined | void {\n try {\n const prototype: Prototype | null = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch (e) {\n // ignore errors here\n }\n}\n","import type { browserTracingIntegration } from '@sentry-internal/tracing';\nimport { BrowserTracing } from '@sentry-internal/tracing';\nimport { captureException, withScope } from '@sentry/core';\nimport type { DsnLike, Integration, Mechanism, WrappedFunction } from '@sentry/types';\nimport {\n GLOBAL_OBJ,\n addExceptionMechanism,\n addExceptionTypeValue,\n addNonEnumerableProperty,\n getOriginalFunction,\n markFunctionWrapped,\n} from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n // onerror should trigger before setTimeout\n ignoreOnError++;\n setTimeout(() => {\n ignoreOnError--;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n fn: WrappedFunction,\n options: {\n mechanism?: Mechanism;\n } = {},\n before?: WrappedFunction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n if (typeof wrapper === 'function') {\n return wrapper;\n } else {\n // If we find that the `__sentry_wrapped__` function is not a function at the time of accessing it, it means\n // that something messed with it. In that case we want to return the originally passed function.\n return fn;\n }\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n /* eslint-disable prefer-rest-params */\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n const sentryWrapped: WrappedFunction = function (this: unknown): void {\n const args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get(): string {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n *\n * @deprecated This type will be removed in the next major version of the Sentry SDK. `showReportDialog` will still be around, however the `eventId` option will now be required.\n */\nexport interface ReportDialogOptions {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(this: void): void;\n /** Callback after reportDialog closed */\n onClose?(this: void): void;\n}\n\n/**\n * This is a slim shim of `browserTracingIntegration` for the CDN bundles.\n * Since the actual functional integration uses a different code from `BrowserTracing`,\n * we want to avoid shipping both of them in the CDN bundles, as that would blow up the size.\n * Instead, we provide a functional integration with the same API, but the old implementation.\n * This means that it's not possible to register custom routing instrumentation, but that's OK for now.\n * We also don't expose the utilities for this anyhow in the CDN bundles.\n * For users that need custom routing in CDN bundles, they have to continue using `new BrowserTracing()` until v8.\n */\nexport function bundleBrowserTracingIntegration(\n options: Parameters[0] = {},\n): Integration {\n // Migrate some options from the old integration to the new one\n // eslint-disable-next-line deprecation/deprecation\n const opts: ConstructorParameters[0] = options;\n\n if (typeof options.markBackgroundSpan === 'boolean') {\n opts.markBackgroundTransactions = options.markBackgroundSpan;\n }\n\n if (typeof options.instrumentPageLoad === 'boolean') {\n opts.startTransactionOnPageLoad = options.instrumentPageLoad;\n }\n\n if (typeof options.instrumentNavigation === 'boolean') {\n opts.startTransactionOnLocationChange = options.instrumentNavigation;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return new BrowserTracing(opts);\n}\n","import type { Scope } from '@sentry/core';\nimport { applySdkMetadata } from '@sentry/core';\nimport { BaseClient } from '@sentry/core';\nimport type {\n BrowserClientProfilingOptions,\n BrowserClientReplayOptions,\n ClientOptions,\n Event,\n EventHint,\n Options,\n ParameterizedString,\n Severity,\n SeverityLevel,\n UserFeedback,\n} from '@sentry/types';\nimport { createClientReportEnvelope, dsnToString, getSDKSource, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { WINDOW } from './helpers';\nimport type { BrowserTransportOptions } from './transports/types';\nimport { createUserFeedbackEnvelope } from './userfeedback';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\nexport type BrowserOptions = Options &\n BrowserClientReplayOptions &\n BrowserClientProfilingOptions;\n\n/**\n * Configuration options for the Sentry Browser SDK Client class\n * @see BrowserClient for more information.\n */\nexport type BrowserClientOptions = ClientOptions &\n BrowserClientReplayOptions &\n BrowserClientProfilingOptions;\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BrowserClientOptions) {\n const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n applySdkMetadata(options, 'browser', ['browser'], sdkSource);\n\n super(options);\n\n if (options.sendClientReports && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n if (WINDOW.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: unknown, hint?: EventHint): PromiseLike {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(\n message: ParameterizedString,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n ): PromiseLike {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * Sends user feedback to Sentry.\n */\n public captureUserFeedback(feedback: UserFeedback): void {\n if (!this._isEnabled()) {\n DEBUG_BUILD && logger.warn('SDK not enabled, will not capture user feedback.');\n return;\n }\n\n const envelope = createUserFeedbackEnvelope(feedback, {\n metadata: this.getSdkMetadata(),\n dsn: this.getDsn(),\n tunnel: this.getOptions().tunnel,\n });\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(envelope);\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n private _flushOutcomes(): void {\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n DEBUG_BUILD && logger.log('No outcomes to send');\n return;\n }\n\n // This is really the only place where we want to check for a DSN and only send outcomes then\n if (!this._dsn) {\n DEBUG_BUILD && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n DEBUG_BUILD && logger.log('Sending outcomes:', outcomes);\n\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(envelope);\n }\n}\n","import type { DsnComponents, EventEnvelope, SdkMetadata, UserFeedback, UserFeedbackItem } from '@sentry/types';\nimport { createEnvelope, dsnToString } from '@sentry/utils';\n\n/**\n * Creates an envelope from a user feedback.\n */\nexport function createUserFeedbackEnvelope(\n feedback: UserFeedback,\n {\n metadata,\n tunnel,\n dsn,\n }: {\n metadata: SdkMetadata | undefined;\n tunnel: string | undefined;\n dsn: DsnComponents | undefined;\n },\n): EventEnvelope {\n const headers: EventEnvelope[0] = {\n event_id: feedback.event_id,\n sent_at: new Date().toISOString(),\n ...(metadata &&\n metadata.sdk && {\n sdk: {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n },\n }),\n ...(!!tunnel && !!dsn && { dsn: dsnToString(dsn) }),\n };\n const item = createUserFeedbackEnvelopeItem(feedback);\n\n return createEnvelope(headers, [item]);\n}\n\nfunction createUserFeedbackEnvelopeItem(feedback: UserFeedback): UserFeedbackItem {\n const feedbackHeaders: UserFeedbackItem[0] = {\n type: 'user_report',\n };\n return [feedbackHeaders, feedback];\n}\n","import type { ClientReport, ClientReportEnvelope, ClientReportItem } from '@sentry/types';\n\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nexport function createClientReportEnvelope(\n discarded_events: ClientReport['discarded_events'],\n dsn?: string,\n timestamp?: number,\n): ClientReportEnvelope {\n const clientReportItem: ClientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { ConsoleLevel, HandlerDataConsole } from '@sentry/types';\n\nimport { CONSOLE_LEVELS, originalConsoleMethods } from '../logger';\nimport { fill } from '../object';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\n/**\n * Add an instrumentation handler for when a console.xxx method is called.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addConsoleInstrumentationHandler(handler: (data: HandlerDataConsole) => void): void {\n const type = 'console';\n addHandler(type, handler);\n maybeInstrument(type, instrumentConsole);\n}\n\nfunction instrumentConsole(): void {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level: ConsoleLevel): void {\n if (!(level in GLOBAL_OBJ.console)) {\n return;\n }\n\n fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod: () => any): Function {\n originalConsoleMethods[level] = originalConsoleMethod;\n\n return function (...args: any[]): void {\n const handlerData: HandlerDataConsole = { args, level };\n triggerHandlers('console', handlerData);\n\n const log = originalConsoleMethods[level];\n log && log.apply(GLOBAL_OBJ.console, args);\n };\n });\n });\n}\n","// TODO(v8): Move everything in this file into the browser package. Nothing here is generic and we run risk of leaking browser types into non-browser packages.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataDom } from '@sentry/types';\n\nimport { uuid4 } from '../misc';\nimport { addNonEnumerableProperty, fill } from '../object';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\ntype SentryWrappedTarget = HTMLElement & { _sentryId?: string };\n\ntype AddEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n) => void;\ntype RemoveEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n) => void;\n\ntype InstrumentedElement = Element & {\n __sentry_instrumentation_handlers__?: {\n [key in 'click' | 'keypress']?: {\n handler?: Function;\n /** The number of custom listeners attached to this element */\n refCount: number;\n };\n };\n};\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\nconst DEBOUNCE_DURATION = 1000;\n\nlet debounceTimerID: number | undefined;\nlet lastCapturedEventType: string | undefined;\nlet lastCapturedEventTargetId: string | undefined;\n\n/**\n * Add an instrumentation handler for when a click or a keypress happens.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addClickKeypressInstrumentationHandler(handler: (data: HandlerDataDom) => void): void {\n const type = 'dom';\n addHandler(type, handler);\n maybeInstrument(type, instrumentDOM);\n}\n\n/** Exported for tests only. */\nexport function instrumentDOM(): void {\n if (!WINDOW.document) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n WINDOW.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target: string) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = (WINDOW as any)[target] && (WINDOW as any)[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener: AddEventListener): AddEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): AddEventListener {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n const handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount++;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener: RemoveEventListener): RemoveEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = el.__sentry_instrumentation_handlers__ || {};\n const handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount--;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\n/**\n * Check whether the event is similar to the last captured one. For example, two click events on the same button.\n */\nfunction isSimilarToLastCapturedEvent(event: Event): boolean {\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (event.type !== lastCapturedEventType) {\n return false;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (!event.target || (event.target as SentryWrappedTarget)._sentryId !== lastCapturedEventTargetId) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return true;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(eventType: string, target: SentryWrappedTarget | null): boolean {\n // We are only interested in filtering `keypress` events for now.\n if (eventType !== 'keypress') {\n return false;\n }\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n */\nfunction makeDOMEventHandler(\n handler: (data: HandlerDataDom) => void,\n globalListener: boolean = false,\n): (event: Event) => void {\n return (event: Event & { _sentryCaptured?: true }): void => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || event['_sentryCaptured']) {\n return;\n }\n\n const target = getEventTarget(event);\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event.type, target)) {\n return;\n }\n\n // Mark event as \"seen\"\n addNonEnumerableProperty(event, '_sentryCaptured', true);\n\n if (target && !target._sentryId) {\n // Add UUID to event target so we can identify if\n addNonEnumerableProperty(target, '_sentryId', uuid4());\n }\n\n const name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no last captured event, it means that we can safely capture the new event and store it for future comparisons.\n // If there is a last captured event, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n if (!isSimilarToLastCapturedEvent(event)) {\n const handlerData: HandlerDataDom = { event, name, global: globalListener };\n handler(handlerData);\n lastCapturedEventType = event.type;\n lastCapturedEventTargetId = target ? target._sentryId : undefined;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = WINDOW.setTimeout(() => {\n lastCapturedEventTargetId = undefined;\n lastCapturedEventType = undefined;\n }, DEBOUNCE_DURATION);\n };\n}\n\nfunction getEventTarget(event: Event): SentryWrappedTarget | null {\n try {\n return event.target as SentryWrappedTarget | null;\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n return null;\n }\n}\n","// TODO(v8): Move everything in this file into the browser package. Nothing here is generic and we run risk of leaking browser types into non-browser packages.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataXhr, SentryWrappedXMLHttpRequest, WrappedFunction } from '@sentry/types';\n\nimport { isString } from '../is';\nimport { fill } from '../object';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\nexport const SENTRY_XHR_DATA_KEY = '__sentry_xhr_v3__';\n\n/**\n * Add an instrumentation handler for when an XHR request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addXhrInstrumentationHandler(handler: (data: HandlerDataXhr) => void): void {\n const type = 'xhr';\n addHandler(type, handler);\n maybeInstrument(type, instrumentXHR);\n}\n\n/** Exported only for tests. */\nexport function instrumentXHR(): void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (!(WINDOW as any).XMLHttpRequest) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen: () => void): () => void {\n return function (this: XMLHttpRequest & SentryWrappedXMLHttpRequest, ...args: any[]): void {\n const startTimestamp = Date.now();\n\n // open() should always be called with two or more arguments\n // But to be on the safe side, we actually validate this and bail out if we don't have a method & url\n const method = isString(args[0]) ? args[0].toUpperCase() : undefined;\n const url = parseUrl(args[1]);\n\n if (!method || !url) {\n return originalOpen.apply(this, args);\n }\n\n this[SENTRY_XHR_DATA_KEY] = {\n method,\n url,\n request_headers: {},\n };\n\n // if Sentry key appears in URL, don't capture it as a request\n if (method === 'POST' && url.match(/sentry_key/)) {\n this.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler: () => void = () => {\n // For whatever reason, this is not the same instance here as from the outer method\n const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n if (!xhrInfo) {\n return;\n }\n\n if (this.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = this.status;\n } catch (e) {\n /* do nothing */\n }\n\n const handlerData: HandlerDataXhr = {\n args: [method, url],\n endTimestamp: Date.now(),\n startTimestamp,\n xhr: this,\n };\n triggerHandlers('xhr', handlerData);\n }\n };\n\n if ('onreadystatechange' in this && typeof this.onreadystatechange === 'function') {\n fill(this, 'onreadystatechange', function (original: WrappedFunction): Function {\n return function (this: SentryWrappedXMLHttpRequest, ...readyStateArgs: any[]): void {\n onreadystatechangeHandler();\n return original.apply(this, readyStateArgs);\n };\n });\n } else {\n this.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n // Intercepting `setRequestHeader` to access the request headers of XHR instance.\n // This will only work for user/library defined headers, not for the default/browser-assigned headers.\n // Request cookies are also unavailable for XHR, as `Cookie` header can't be defined by `setRequestHeader`.\n fill(this, 'setRequestHeader', function (original: WrappedFunction): Function {\n return function (this: SentryWrappedXMLHttpRequest, ...setRequestHeaderArgs: unknown[]): void {\n const [header, value] = setRequestHeaderArgs;\n\n const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n if (xhrInfo && isString(header) && isString(value)) {\n xhrInfo.request_headers[header.toLowerCase()] = value;\n }\n\n return original.apply(this, setRequestHeaderArgs);\n };\n });\n\n return originalOpen.apply(this, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend: () => void): () => void {\n return function (this: XMLHttpRequest & SentryWrappedXMLHttpRequest, ...args: any[]): void {\n const sentryXhrData = this[SENTRY_XHR_DATA_KEY];\n\n if (!sentryXhrData) {\n return originalSend.apply(this, args);\n }\n\n if (args[0] !== undefined) {\n sentryXhrData.body = args[0];\n }\n\n const handlerData: HandlerDataXhr = {\n args: [sentryXhrData.method, sentryXhrData.url],\n startTimestamp: Date.now(),\n xhr: this,\n };\n triggerHandlers('xhr', handlerData);\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nfunction parseUrl(url: string | unknown): string | undefined {\n if (isString(url)) {\n return url;\n }\n\n try {\n // url can be a string or URL\n // but since URL is not available in IE11, we do not check for it,\n // but simply assume it is an URL and return `toString()` from it (which returns the full URL)\n // If that fails, we just return undefined\n return (url as URL).toString();\n } catch {} // eslint-disable-line no-empty\n\n return undefined;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataFetch } from '@sentry/types';\n\nimport { fill } from '../object';\nimport { supportsNativeFetch } from '../supports';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\ntype FetchResource = string | { toString(): string } | { url: string };\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addFetchInstrumentationHandler(handler: (data: HandlerDataFetch) => void): void {\n const type = 'fetch';\n addHandler(type, handler);\n maybeInstrument(type, instrumentFetch);\n}\n\nfunction instrumentFetch(): void {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(GLOBAL_OBJ, 'fetch', function (originalFetch: () => void): () => void {\n return function (...args: any[]): void {\n const { method, url } = parseFetchArgs(args);\n\n const handlerData: HandlerDataFetch = {\n args,\n fetchData: {\n method,\n url,\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(GLOBAL_OBJ, args).then(\n (response: Response) => {\n const finishedHandlerData: HandlerDataFetch = {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n };\n\n triggerHandlers('fetch', finishedHandlerData);\n return response;\n },\n (error: Error) => {\n const erroredHandlerData: HandlerDataFetch = {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n };\n\n triggerHandlers('fetch', erroredHandlerData);\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\nfunction hasProp(obj: unknown, prop: T): obj is Record {\n return !!obj && typeof obj === 'object' && !!(obj as Record)[prop];\n}\n\nfunction getUrlFromResource(resource: FetchResource): string {\n if (typeof resource === 'string') {\n return resource;\n }\n\n if (!resource) {\n return '';\n }\n\n if (hasProp(resource, 'url')) {\n return resource.url;\n }\n\n if (resource.toString) {\n return resource.toString();\n }\n\n return '';\n}\n\n/**\n * Parses the fetch arguments to find the used Http method and the url of the request.\n * Exported for tests only.\n */\nexport function parseFetchArgs(fetchArgs: unknown[]): { method: string; url: string } {\n if (fetchArgs.length === 0) {\n return { method: 'GET', url: '' };\n }\n\n if (fetchArgs.length === 2) {\n const [url, options] = fetchArgs as [FetchResource, object];\n\n return {\n url: getUrlFromResource(url),\n method: hasProp(options, 'method') ? String(options.method).toUpperCase() : 'GET',\n };\n }\n\n const arg = fetchArgs[0];\n return {\n url: getUrlFromResource(arg as FetchResource),\n method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET',\n };\n}\n","/* eslint-disable deprecation/deprecation */\nimport type { Severity, SeverityLevel } from '@sentry/types';\n\n// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nexport const validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a member of the deprecated {@link Severity} enum.\n *\n * @deprecated `severityFromString` is deprecated. Please use `severityLevelFromString` instead.\n *\n * @param level String representation of Severity\n * @returns Severity\n */\nexport function severityFromString(level: Severity | SeverityLevel | string): Severity {\n return severityLevelFromString(level) as Severity;\n}\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nexport function severityLevelFromString(level: SeverityLevel | string): SeverityLevel {\n return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') as SeverityLevel;\n}\n","type PartialURL = {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n search?: string;\n hash?: string;\n};\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url: string): PartialURL {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n search: query,\n hash: fragment,\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Returns number of URL segments of a passed string URL.\n */\nexport function getNumberOfUrlSegments(url: string): number {\n // split at '/' or at '\\/' to split regex urls correctly\n return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span description\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nexport function getSanitizedUrlString(url: PartialURL): string {\n const { protocol, host, path } = url;\n\n const filteredHost =\n (host &&\n host\n // Always filter out authority\n .replace(/^.*@/, '[filtered]:[filtered]@')\n // Don't show standard :80 (http) and :443 (https) ports to reduce the noise\n // TODO: Use new URL global if it exists\n .replace(/(:80)$/, '')\n .replace(/(:443)$/, '')) ||\n '';\n\n return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`;\n}\n","/* eslint-disable max-lines */\nimport { addBreadcrumb, convertIntegrationFnToClass, defineIntegration, getClient } from '@sentry/core';\nimport type {\n Client,\n Event as SentryEvent,\n HandlerDataConsole,\n HandlerDataDom,\n HandlerDataFetch,\n HandlerDataHistory,\n HandlerDataXhr,\n Integration,\n IntegrationClass,\n IntegrationFn,\n} from '@sentry/types';\nimport type {\n Breadcrumb,\n FetchBreadcrumbData,\n FetchBreadcrumbHint,\n XhrBreadcrumbData,\n XhrBreadcrumbHint,\n} from '@sentry/types/build/types/breadcrumb';\nimport {\n SENTRY_XHR_DATA_KEY,\n addClickKeypressInstrumentationHandler,\n addConsoleInstrumentationHandler,\n addFetchInstrumentationHandler,\n addHistoryInstrumentationHandler,\n addXhrInstrumentationHandler,\n getComponentName,\n getEventDescription,\n htmlTreeAsString,\n logger,\n parseUrl,\n safeJoin,\n severityLevelFromString,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\n\ninterface BreadcrumbsOptions {\n console: boolean;\n dom:\n | boolean\n | {\n serializeAttribute?: string | string[];\n maxStringLength?: number;\n };\n fetch: boolean;\n history: boolean;\n sentry: boolean;\n xhr: boolean;\n}\n\n/** maxStringLength gets capped to prevent 100 breadcrumbs exceeding 1MB event payload size */\nconst MAX_ALLOWED_STRING_LENGTH = 1024;\n\nconst INTEGRATION_NAME = 'Breadcrumbs';\n\nconst _breadcrumbsIntegration = ((options: Partial = {}) => {\n const _options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n setup(client) {\n if (_options.console) {\n addConsoleInstrumentationHandler(_getConsoleBreadcrumbHandler(client));\n }\n if (_options.dom) {\n addClickKeypressInstrumentationHandler(_getDomBreadcrumbHandler(client, _options.dom));\n }\n if (_options.xhr) {\n addXhrInstrumentationHandler(_getXhrBreadcrumbHandler(client));\n }\n if (_options.fetch) {\n addFetchInstrumentationHandler(_getFetchBreadcrumbHandler(client));\n }\n if (_options.history) {\n addHistoryInstrumentationHandler(_getHistoryBreadcrumbHandler(client));\n }\n if (_options.sentry && client.on) {\n client.on('beforeSendEvent', _getSentryBreadcrumbHandler(client));\n }\n },\n };\n}) satisfies IntegrationFn;\n\nexport const breadcrumbsIntegration = defineIntegration(_breadcrumbsIntegration);\n\n/**\n * Default Breadcrumbs instrumentations\n *\n * @deprecated Use `breadcrumbsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const Breadcrumbs = convertIntegrationFnToClass(INTEGRATION_NAME, breadcrumbsIntegration) as IntegrationClass<\n Integration & { setup: (client: Client) => void }\n> & {\n new (\n options?: Partial<{\n console: boolean;\n dom:\n | boolean\n | {\n serializeAttribute?: string | string[];\n maxStringLength?: number;\n };\n fetch: boolean;\n history: boolean;\n sentry: boolean;\n xhr: boolean;\n }>,\n ): Integration;\n};\n\n/**\n * Adds a breadcrumb for Sentry events or transactions if this option is enabled.\n */\nfunction _getSentryBreadcrumbHandler(client: Client): (event: SentryEvent) => void {\n return function addSentryBreadcrumb(event: SentryEvent): void {\n if (getClient() !== client) {\n return;\n }\n\n addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n };\n}\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\nfunction _getDomBreadcrumbHandler(\n client: Client,\n dom: BreadcrumbsOptions['dom'],\n): (handlerData: HandlerDataDom) => void {\n return function _innerDomBreadcrumb(handlerData: HandlerDataDom): void {\n if (getClient() !== client) {\n return;\n }\n\n let target;\n let componentName;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n let maxStringLength =\n typeof dom === 'object' && typeof dom.maxStringLength === 'number' ? dom.maxStringLength : undefined;\n if (maxStringLength && maxStringLength > MAX_ALLOWED_STRING_LENGTH) {\n DEBUG_BUILD &&\n logger.warn(\n `\\`dom.maxStringLength\\` cannot exceed ${MAX_ALLOWED_STRING_LENGTH}, but a value of ${maxStringLength} was configured. Sentry will use ${MAX_ALLOWED_STRING_LENGTH} instead.`,\n );\n maxStringLength = MAX_ALLOWED_STRING_LENGTH;\n }\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n const event = handlerData.event as Event | Node;\n const element = _isEvent(event) ? event.target : event;\n\n target = htmlTreeAsString(element, { keyAttrs, maxStringLength });\n componentName = getComponentName(element);\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n const breadcrumb: Breadcrumb = {\n category: `ui.${handlerData.name}`,\n message: target,\n };\n\n if (componentName) {\n breadcrumb.data = { 'ui.component_name': componentName };\n }\n\n addBreadcrumb(breadcrumb, {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n });\n };\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _getConsoleBreadcrumbHandler(client: Client): (handlerData: HandlerDataConsole) => void {\n return function _consoleBreadcrumb(handlerData: HandlerDataConsole): void {\n if (getClient() !== client) {\n return;\n }\n\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n };\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _getXhrBreadcrumbHandler(client: Client): (handlerData: HandlerDataXhr) => void {\n return function _xhrBreadcrumb(handlerData: HandlerDataXhr): void {\n if (getClient() !== client) {\n return;\n }\n\n const { startTimestamp, endTimestamp } = handlerData;\n\n const sentryXhrData = handlerData.xhr[SENTRY_XHR_DATA_KEY];\n\n // We only capture complete, non-sentry requests\n if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n return;\n }\n\n const { method, url, status_code, body } = sentryXhrData;\n\n const data: XhrBreadcrumbData = {\n method,\n url,\n status_code,\n };\n\n const hint: XhrBreadcrumbHint = {\n xhr: handlerData.xhr,\n input: body,\n startTimestamp,\n endTimestamp,\n };\n\n addBreadcrumb(\n {\n category: 'xhr',\n data,\n type: 'http',\n },\n hint,\n );\n };\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _getFetchBreadcrumbHandler(client: Client): (handlerData: HandlerDataFetch) => void {\n return function _fetchBreadcrumb(handlerData: HandlerDataFetch): void {\n if (getClient() !== client) {\n return;\n }\n\n const { startTimestamp, endTimestamp } = handlerData;\n\n // We only capture complete fetch requests\n if (!endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n const data: FetchBreadcrumbData = handlerData.fetchData;\n const hint: FetchBreadcrumbHint = {\n data: handlerData.error,\n input: handlerData.args,\n startTimestamp,\n endTimestamp,\n };\n\n addBreadcrumb(\n {\n category: 'fetch',\n data,\n level: 'error',\n type: 'http',\n },\n hint,\n );\n } else {\n const response = handlerData.response as Response | undefined;\n const data: FetchBreadcrumbData = {\n ...handlerData.fetchData,\n status_code: response && response.status,\n };\n const hint: FetchBreadcrumbHint = {\n input: handlerData.args,\n response,\n startTimestamp,\n endTimestamp,\n };\n addBreadcrumb(\n {\n category: 'fetch',\n data,\n type: 'http',\n },\n hint,\n );\n }\n };\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _getHistoryBreadcrumbHandler(client: Client): (handlerData: HandlerDataHistory) => void {\n return function _historyBreadcrumb(handlerData: HandlerDataHistory): void {\n if (getClient() !== client) {\n return;\n }\n\n let from: string | undefined = handlerData.from;\n let to: string | undefined = handlerData.to;\n const parsedLoc = parseUrl(WINDOW.location.href);\n let parsedFrom = from ? parseUrl(from) : undefined;\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom || !parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n };\n}\n\nfunction _isEvent(event: unknown): event is Event {\n return !!event && !!(event as Record).target;\n}\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Event, Exception, Integration, IntegrationClass, IntegrationFn, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\n\nconst INTEGRATION_NAME = 'Dedupe';\n\nconst _dedupeIntegration = (() => {\n let previousEvent: Event | undefined;\n\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n processEvent(currentEvent) {\n // We want to ignore any non-error type events, e.g. transactions or replays\n // These should never be deduped, and also not be compared against as _previousEvent.\n if (currentEvent.type) {\n return currentEvent;\n }\n\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, previousEvent)) {\n DEBUG_BUILD && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n return (previousEvent = currentEvent);\n },\n };\n}) satisfies IntegrationFn;\n\nexport const dedupeIntegration = defineIntegration(_dedupeIntegration);\n\n/**\n * Deduplication filter.\n * @deprecated Use `dedupeIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const Dedupe = convertIntegrationFnToClass(INTEGRATION_NAME, dedupeIntegration) as IntegrationClass<\n Integration & { processEvent: (event: Event) => Event }\n>;\n\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-expect-error Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { captureEvent, convertIntegrationFnToClass, defineIntegration, getClient } from '@sentry/core';\nimport type {\n Client,\n Event,\n Integration,\n IntegrationClass,\n IntegrationFn,\n Primitive,\n StackParser,\n} from '@sentry/types';\nimport {\n addGlobalErrorInstrumentationHandler,\n addGlobalUnhandledRejectionInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport type { BrowserClient } from '../client';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\ntype GlobalHandlersIntegrationsOptionKeys = 'onerror' | 'onunhandledrejection';\n\ntype GlobalHandlersIntegrations = Record;\n\nconst INTEGRATION_NAME = 'GlobalHandlers';\n\nconst _globalHandlersIntegration = ((options: Partial = {}) => {\n const _options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n Error.stackTraceLimit = 50;\n },\n setup(client) {\n if (_options.onerror) {\n _installGlobalOnErrorHandler(client);\n globalHandlerLog('onerror');\n }\n if (_options.onunhandledrejection) {\n _installGlobalOnUnhandledRejectionHandler(client);\n globalHandlerLog('onunhandledrejection');\n }\n },\n };\n}) satisfies IntegrationFn;\n\nexport const globalHandlersIntegration = defineIntegration(_globalHandlersIntegration);\n\n/**\n * Global handlers.\n * @deprecated Use `globalHandlersIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const GlobalHandlers = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n globalHandlersIntegration,\n) as IntegrationClass void }> & {\n new (options?: Partial): Integration;\n};\n\nfunction _installGlobalOnErrorHandler(client: Client): void {\n addGlobalErrorInstrumentationHandler(data => {\n const { stackParser, attachStacktrace } = getOptions();\n\n if (getClient() !== client || shouldIgnoreOnError()) {\n return;\n }\n\n const { msg, url, line, column, error } = data;\n\n const event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n captureEvent(event, {\n originalException: error,\n mechanism: {\n handled: false,\n type: 'onerror',\n },\n });\n });\n}\n\nfunction _installGlobalOnUnhandledRejectionHandler(client: Client): void {\n addGlobalUnhandledRejectionInstrumentationHandler(e => {\n const { stackParser, attachStacktrace } = getOptions();\n\n if (getClient() !== client || shouldIgnoreOnError()) {\n return;\n }\n\n const error = _getUnhandledRejectionError(e as unknown);\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n captureEvent(event, {\n originalException: error,\n mechanism: {\n handled: false,\n type: 'onunhandledrejection',\n },\n });\n });\n}\n\nfunction _getUnhandledRejectionError(error: unknown): unknown {\n if (isPrimitive(error)) {\n return error;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const e = error as any;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n return e.reason;\n }\n\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n return e.detail.reason;\n }\n } catch {} // eslint-disable-line no-empty\n\n return error;\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason: Primitive): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name = 'Error';\n\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n // event.exception\n const e = (event.exception = event.exception || {});\n // event.exception.values\n const ev = (e.values = e.values || []);\n // event.exception.values[0]\n const ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type: string): void {\n DEBUG_BUILD && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction getOptions(): { stackParser: StackParser; attachStacktrace?: boolean } {\n const client = getClient();\n const options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return options;\n}\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Event, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\n\nimport { WINDOW } from '../helpers';\n\nconst INTEGRATION_NAME = 'HttpContext';\n\nconst _httpContextIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n preprocessEvent(event) {\n // if none of the information we want exists, don't bother\n if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n return;\n }\n\n // grab as much info as exists and add it to the event\n const url = (event.request && event.request.url) || (WINDOW.location && WINDOW.location.href);\n const { referrer } = WINDOW.document || {};\n const { userAgent } = WINDOW.navigator || {};\n\n const headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n const request = { ...event.request, ...(url && { url }), headers };\n\n event.request = request;\n },\n };\n}) satisfies IntegrationFn;\n\nexport const httpContextIntegration = defineIntegration(_httpContextIntegration);\n\n/**\n * HttpContext integration collects information about HTTP request headers.\n * @deprecated Use `httpContextIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const HttpContext = convertIntegrationFnToClass(INTEGRATION_NAME, httpContextIntegration) as IntegrationClass<\n Integration & { preprocessEvent: (event: Event) => void }\n>;\n","import type { Event, EventHint, Exception, ExtendedError, StackParser } from '@sentry/types';\n\nimport { isInstanceOf } from './is';\nimport { truncate } from './string';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nexport function applyAggregateErrorsToEvent(\n exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n parser: StackParser,\n maxValueLimit: number = 250,\n key: string,\n limit: number,\n event: Event,\n hint?: EventHint,\n): void {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return;\n }\n\n // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n const originalException: Exception | undefined =\n event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n // We only create exception grouping if there is an exception in the event.\n if (originalException) {\n event.exception.values = truncateAggregateExceptions(\n aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n hint.originalException as ExtendedError,\n key,\n event.exception.values,\n originalException,\n 0,\n ),\n maxValueLimit,\n );\n }\n}\n\nfunction aggregateExceptionsFromError(\n exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n parser: StackParser,\n limit: number,\n error: ExtendedError,\n key: string,\n prevExceptions: Exception[],\n exception: Exception,\n exceptionId: number,\n): Exception[] {\n if (prevExceptions.length >= limit + 1) {\n return prevExceptions;\n }\n\n let newExceptions = [...prevExceptions];\n\n // Recursively call this function in order to walk down a chain of errors\n if (isInstanceOf(error[key], Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId);\n const newException = exceptionFromErrorImplementation(parser, error[key]);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error[key],\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n\n // This will create exception grouping for AggregateErrors\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n if (Array.isArray(error.errors)) {\n error.errors.forEach((childError, i) => {\n if (isInstanceOf(childError, Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId);\n const newException = exceptionFromErrorImplementation(parser, childError);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n childError,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n });\n }\n\n return newExceptions;\n}\n\nfunction applyExceptionGroupFieldsForParentException(exception: Exception, exceptionId: number): void {\n // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n exception.mechanism = {\n ...exception.mechanism,\n ...(exception.type === 'AggregateError' && { is_exception_group: true }),\n exception_id: exceptionId,\n };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n exception: Exception,\n source: string,\n exceptionId: number,\n parentId: number | undefined,\n): void {\n // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n exception.mechanism = {\n ...exception.mechanism,\n type: 'chained',\n source,\n exception_id: exceptionId,\n parent_id: parentId,\n };\n}\n\n/**\n * Truncate the message (exception.value) of all exceptions in the event.\n * Because this event processor is ran after `applyClientOptions`,\n * we need to truncate the message of the added exceptions here.\n */\nfunction truncateAggregateExceptions(exceptions: Exception[], maxValueLength: number): Exception[] {\n return exceptions.map(exception => {\n if (exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n return exception;\n });\n}\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Client, Event, EventHint, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\nimport { applyAggregateErrorsToEvent } from '@sentry/utils';\nimport { exceptionFromError } from '../eventbuilder';\n\ninterface LinkedErrorsOptions {\n key?: string;\n limit?: number;\n}\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options: LinkedErrorsOptions = {}) => {\n const limit = options.limit || DEFAULT_LIMIT;\n const key = options.key || DEFAULT_KEY;\n\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n preprocessEvent(event, hint, client) {\n const options = client.getOptions();\n\n applyAggregateErrorsToEvent(\n // This differs from the LinkedErrors integration in core by using a different exceptionFromError function\n exceptionFromError,\n options.stackParser,\n options.maxValueLength,\n key,\n limit,\n event,\n hint,\n );\n },\n };\n}) satisfies IntegrationFn;\n\nexport const linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n\n/**\n * Aggregrate linked errors in an event.\n * @deprecated Use `linkedErrorsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const LinkedErrors = convertIntegrationFnToClass(INTEGRATION_NAME, linkedErrorsIntegration) as IntegrationClass<\n Integration & { preprocessEvent: (event: Event, hint: EventHint, client: Client) => void }\n> & { new (options?: { key?: string; limit?: number }): Integration };\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Integration, IntegrationClass, IntegrationFn, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\n\nimport { WINDOW, wrap } from '../helpers';\n\nconst DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'BroadcastChannel',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'SharedWorker',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\nconst INTEGRATION_NAME = 'TryCatch';\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\ninterface TryCatchOptions {\n setTimeout: boolean;\n setInterval: boolean;\n requestAnimationFrame: boolean;\n XMLHttpRequest: boolean;\n eventTarget: boolean | string[];\n}\n\nconst _browserApiErrorsIntegration = ((options: Partial = {}) => {\n const _options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n // TODO: This currently only works for the first client this is setup\n // We may want to adjust this to check for client etc.\n setupOnce() {\n if (_options.setTimeout) {\n fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n }\n\n if (_options.setInterval) {\n fill(WINDOW, 'setInterval', _wrapTimeFunction);\n }\n\n if (_options.requestAnimationFrame) {\n fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (_options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = _options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n },\n };\n}) satisfies IntegrationFn;\n\nexport const browserApiErrorsIntegration = defineIntegration(_browserApiErrorsIntegration);\n\n/**\n * Wrap timer functions and event targets to catch errors and provide better meta data.\n * @deprecated Use `browserApiErrorsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const TryCatch = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n browserApiErrorsIntegration,\n) as IntegrationClass & {\n new (options?: {\n setTimeout: boolean;\n setInterval: boolean;\n requestAnimationFrame: boolean;\n XMLHttpRequest: boolean;\n eventTarget: boolean | string[];\n }): Integration;\n};\n\nfunction _wrapTimeFunction(original: () => void): () => number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, ...args: any[]): number {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: false,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original: any): (callback: () => void) => any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, callback: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: false,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\nfunction _wrapXHR(originalSend: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: XMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original: WrappedFunction): () => any {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: false,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\nfunction _wrapEventTarget(target: string): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObject = WINDOW as { [key: string]: any };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = globalObject[target] && globalObject[target].prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original: VoidFunction,): (\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n try {\n if (typeof fn.handleEvent === 'function') {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: false,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn as any as WrappedFunction, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: false,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener: () => void,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n const wrappedEventHandler = fn as unknown as WrappedFunction;\n try {\n const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n","// This was originally forked from https://github.com/csnover/TraceKit, and was largely\n// re - written as part of raven - js.\n//\n// This code was later copied to the JavaScript mono - repo and further modified and\n// refactored over the years.\n\n// Copyright (c) 2013 Onur Can Cakmak onur.cakmak@gmail.com and all TraceKit contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this\n// software and associated documentation files(the 'Software'), to deal in the Software\n// without restriction, including without limitation the rights to use, copy, modify,\n// merge, publish, distribute, sublicense, and / or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to the following\n// conditions:\n//\n// The above copyright notice and this permission notice shall be included in all copies\n// or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n// PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport type { StackFrame, StackLineParser, StackLineParserFn } from '@sentry/types';\nimport { createStackParser } from '@sentry/utils';\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n const frame: StackFrame = {\n filename,\n function: func,\n in_app: true, // All browser frames are considered in_app\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n// We cannot call this variable `chrome` because it can conflict with global `chrome` variable in certain environments\n// See: https://github.com/getsentry/sentry-javascript/issues/6880\nconst chromeStackParserFn: StackLineParserFn = line => {\n const parts = chromeRegex.exec(line);\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1]; // url\n parts[3] = subMatch[2]; // line\n parts[4] = subMatch[3]; // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nexport const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chromeStackParserFn];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko: StackLineParserFn = line => {\n const parts = geckoREgex.exec(line);\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nexport const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs: StackLineParserFn = line => {\n const parts = winjsRegex.exec(line);\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nexport const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10: StackLineParserFn = line => {\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nexport const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11: StackLineParserFn = line => {\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nexport const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11];\n\nexport const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nexport const defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n","import { SentryError } from './error';\nimport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer {\n // exposes the internal array so tests can assert on the state of it.\n // XXX: this really should not be public api.\n $: Array>;\n add(taskProducer: () => PromiseLike): PromiseLike;\n drain(timeout?: number): PromiseLike;\n}\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nexport function makePromiseBuffer(limit?: number): PromiseBuffer {\n const buffer: Array> = [];\n\n function isReady(): boolean {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n function remove(task: PromiseLike): PromiseLike {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer: () => PromiseLike): PromiseLike {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was reached.'));\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout?: number): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void resolvedSyncPromise(item).then(() => {\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n","import type { DataCategory, TransportMakeRequestResponse } from '@sentry/types';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\nexport type RateLimits = Record;\n\nexport const DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nexport function parseRetryAfterHeader(header: string, now: number = Date.now()): number {\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that the given category is disabled until for rate limiting.\n * In case no category-specific limit is set but a general rate limit across all categories is active,\n * that time is returned.\n *\n * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.\n */\nexport function disabledUntil(limits: RateLimits, dataCategory: DataCategory): number {\n return limits[dataCategory] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, dataCategory: DataCategory, now: number = Date.now()): boolean {\n return disabledUntil(limits, dataCategory) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nexport function updateRateLimits(\n limits: RateLimits,\n { statusCode, headers }: TransportMakeRequestResponse,\n now: number = Date.now(),\n): RateLimits {\n const updatedRateLimits: RateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n const rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n const retryAfterHeader = headers && headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n *

,
,..\n * where each
is of the form\n * : : : : \n * where\n * is a delay in seconds\n * is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * ;;...\n * is what's being limited (org, project, or key) - ignored by SDK\n * is an arbitrary string like \"org_quota\" - ignored by SDK\n * Semicolon-separated list of metric namespace identifiers. Defines which namespace(s) will be affected.\n * Only present if rate limit applies to the metric_bucket data category.\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories, , , namespaces] = limit.split(':', 5);\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n if (category === 'metric_bucket') {\n // namespaces will be present when category === 'metric_bucket'\n if (!namespaces || namespaces.split(';').includes('custom')) {\n updatedRateLimits[category] = now + delay;\n }\n } else {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n","import type {\n Envelope,\n EnvelopeItem,\n EnvelopeItemType,\n Event,\n EventDropReason,\n EventItem,\n InternalBaseTransportOptions,\n Transport,\n TransportMakeRequestResponse,\n TransportRequestExecutor,\n} from '@sentry/types';\nimport type { PromiseBuffer, RateLimits } from '@sentry/utils';\nimport {\n SentryError,\n createEnvelope,\n envelopeItemTypeToDataCategory,\n forEachEnvelopeItem,\n isRateLimited,\n logger,\n makePromiseBuffer,\n resolvedSyncPromise,\n serializeEnvelope,\n updateRateLimits,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n options: InternalBaseTransportOptions,\n makeRequest: TransportRequestExecutor,\n buffer: PromiseBuffer = makePromiseBuffer(\n options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n ),\n): Transport {\n let rateLimits: RateLimits = {};\n const flush = (timeout?: number): PromiseLike => buffer.drain(timeout);\n\n function send(envelope: Envelope): PromiseLike {\n const filteredEnvelopeItems: EnvelopeItem[] = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const dataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, dataCategory)) {\n const event: Event | undefined = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent('ratelimit_backoff', dataCategory, event);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return resolvedSyncPromise();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const filteredEnvelope: Envelope = createEnvelope(envelope[0], filteredEnvelopeItems as any);\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason: EventDropReason): void => {\n forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n const event: Event | undefined = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type), event);\n });\n };\n\n const requestTask = (): PromiseLike =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n DEBUG_BUILD && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n return response;\n },\n error => {\n recordEnvelopeLoss('network_error');\n throw error;\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n DEBUG_BUILD && logger.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return resolvedSyncPromise();\n } else {\n throw error;\n }\n },\n );\n }\n\n // We use this to identifify if the transport is the base transport\n // TODO (v8): Remove this again as we'll no longer need it\n send.__sentry__baseTransport__ = true;\n\n return {\n send,\n flush,\n };\n}\n\nfunction getEventForEnvelopeItem(item: Envelope[1][number], type: EnvelopeItemType): Event | undefined {\n if (type !== 'event' && type !== 'transaction') {\n return undefined;\n }\n\n return Array.isArray(item) ? (item as EventItem)[1] : undefined;\n}\n","import { isNativeFetch, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\n\nlet cachedFetchImpl: FetchImpl | undefined = undefined;\n\nexport type FetchImpl = typeof fetch;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nexport function getNativeFetchImplementation(): FetchImpl {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n\n /* eslint-disable @typescript-eslint/unbound-method */\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(WINDOW.fetch)) {\n return (cachedFetchImpl = WINDOW.fetch.bind(WINDOW));\n }\n\n const document = WINDOW.document;\n let fetchImpl = WINDOW.fetch;\n // eslint-disable-next-line deprecation/deprecation\n if (document && typeof document.createElement === 'function') {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n DEBUG_BUILD && logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(WINDOW));\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/** Clears cached fetch impl */\nexport function clearCachedFetchImplementation(): void {\n cachedFetchImpl = undefined;\n}\n","import { createTransport } from '@sentry/core';\nimport type { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { rejectedSyncPromise } from '@sentry/utils';\n\nimport type { BrowserTransportOptions } from './types';\nimport type { FetchImpl } from './utils';\nimport { clearCachedFetchImplementation, getNativeFetchImplementation } from './utils';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nexport function makeFetchTransport(\n options: BrowserTransportOptions,\n nativeFetch: FetchImpl = getNativeFetchImplementation(),\n): Transport {\n let pendingBodySize = 0;\n let pendingCount = 0;\n\n function makeRequest(request: TransportRequest): PromiseLike {\n const requestSize = request.body.length;\n pendingBodySize += requestSize;\n pendingCount++;\n\n const requestOptions: RequestInit = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n headers: options.headers,\n // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n // frequently sending events right before the user is switching pages (eg. whenfinishing navigation transactions).\n // Gotchas:\n // - `keepalive` isn't supported by Firefox\n // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch):\n // If the sum of contentLength and inflightKeepaliveBytes is greater than 64 kibibytes, then return a network error.\n // We will therefore only activate the flag when we're below that limit.\n // There is also a limit of requests that can be open at the same time, so we also limit this to 15\n // See https://github.com/getsentry/sentry-javascript/pull/7553 for details\n keepalive: pendingBodySize <= 60_000 && pendingCount < 15,\n ...options.fetchOptions,\n };\n\n try {\n return nativeFetch(options.url, requestOptions).then(response => {\n pendingBodySize -= requestSize;\n pendingCount--;\n return {\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n };\n });\n } catch (e) {\n clearCachedFetchImplementation();\n pendingBodySize -= requestSize;\n pendingCount--;\n return rejectedSyncPromise(e);\n }\n }\n\n return createTransport(options, makeRequest);\n}\n","import { createTransport } from '@sentry/core';\nimport type { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n\nimport type { BrowserTransportOptions } from './types';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nconst XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nexport function makeXHRTransport(options: BrowserTransportOptions): Transport {\n function makeRequest(request: TransportRequest): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onerror = reject;\n\n xhr.onreadystatechange = (): void => {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n resolve({\n statusCode: xhr.status,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n });\n }\n };\n\n xhr.open('POST', options.url);\n\n for (const header in options.headers) {\n if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n xhr.setRequestHeader(header, options.headers[header]);\n }\n }\n\n xhr.send(request.body);\n });\n }\n\n return createTransport(options, makeRequest);\n}\n","import type { Hub } from '@sentry/core';\nimport { functionToStringIntegration, inboundFiltersIntegration } from '@sentry/core';\nimport {\n captureSession,\n getClient,\n getCurrentHub,\n getIntegrationsToSetup,\n getReportDialogEndpoint,\n initAndBind,\n startSession,\n} from '@sentry/core';\nimport type { Integration, Options, UserFeedback } from '@sentry/types';\nimport {\n addHistoryInstrumentationHandler,\n logger,\n stackParserFromStackParserOptions,\n supportsFetch,\n} from '@sentry/utils';\n\nimport type { BrowserClientOptions, BrowserOptions } from './client';\nimport { BrowserClient } from './client';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { ReportDialogOptions } from './helpers';\nimport { WINDOW, wrap as internalWrap } from './helpers';\nimport { breadcrumbsIntegration } from './integrations/breadcrumbs';\nimport { dedupeIntegration } from './integrations/dedupe';\nimport { globalHandlersIntegration } from './integrations/globalhandlers';\nimport { httpContextIntegration } from './integrations/httpcontext';\nimport { linkedErrorsIntegration } from './integrations/linkederrors';\nimport { browserApiErrorsIntegration } from './integrations/trycatch';\nimport { defaultStackParser } from './stack-parsers';\nimport { makeFetchTransport, makeXHRTransport } from './transports';\n\n/** @deprecated Use `getDefaultIntegrations(options)` instead. */\nexport const defaultIntegrations = [\n inboundFiltersIntegration(),\n functionToStringIntegration(),\n browserApiErrorsIntegration(),\n breadcrumbsIntegration(),\n globalHandlersIntegration(),\n linkedErrorsIntegration(),\n dedupeIntegration(),\n httpContextIntegration(),\n];\n\n/** Get the default integrations for the browser SDK. */\nexport function getDefaultIntegrations(_options: Options): Integration[] {\n // We return a copy of the defaultIntegrations here to avoid mutating this\n return [\n // eslint-disable-next-line deprecation/deprecation\n ...defaultIntegrations,\n ];\n}\n\n/**\n * A magic string that build tooling can leverage in order to inject a release value into the SDK.\n */\ndeclare const __SENTRY_RELEASE__: string | undefined;\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options: BrowserOptions = {}): void {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = getDefaultIntegrations(options);\n }\n if (options.release === undefined) {\n // This allows build tooling to find-and-replace __SENTRY_RELEASE__ to inject a release value\n if (typeof __SENTRY_RELEASE__ === 'string') {\n options.release = __SENTRY_RELEASE__;\n }\n\n // This supports the variable that sentry-webpack-plugin injects\n if (WINDOW.SENTRY_RELEASE && WINDOW.SENTRY_RELEASE.id) {\n options.release = WINDOW.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n\n const clientOptions: BrowserClientOptions = {\n ...options,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n };\n\n initAndBind(BrowserClient, clientOptions);\n\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n\ntype NewReportDialogOptions = ReportDialogOptions & { eventId: string }; // eslint-disable-line\n\ninterface ShowReportDialogFunction {\n /**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\n (options: NewReportDialogOptions): void;\n\n /**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n *\n * @deprecated Please always pass an `options` argument with `eventId`. The `hub` argument will not be used in the next version of the SDK.\n */\n // eslint-disable-next-line deprecation/deprecation\n (options?: ReportDialogOptions, hub?: Hub): void;\n}\n\nexport const showReportDialog: ShowReportDialogFunction = (\n // eslint-disable-next-line deprecation/deprecation\n options: ReportDialogOptions = {},\n // eslint-disable-next-line deprecation/deprecation\n hub: Hub = getCurrentHub(),\n) => {\n // doesn't work without a document (React Native)\n if (!WINDOW.document) {\n DEBUG_BUILD && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const { client, scope } = hub.getStackTop();\n const dsn = options.dsn || (client && client.getDsn());\n if (!dsn) {\n DEBUG_BUILD && logger.error('DSN not configured for showReportDialog call');\n return;\n }\n\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n if (!options.eventId) {\n // eslint-disable-next-line deprecation/deprecation\n options.eventId = hub.lastEventId();\n }\n\n const script = WINDOW.document.createElement('script');\n script.async = true;\n script.crossOrigin = 'anonymous';\n script.src = getReportDialogEndpoint(dsn, options);\n\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n\n const { onClose } = options;\n if (onClose) {\n const reportDialogClosedMessageHandler = (event: MessageEvent): void => {\n if (event.data === '__sentry_reportdialog_closed__') {\n try {\n onClose();\n } finally {\n WINDOW.removeEventListener('message', reportDialogClosedMessageHandler);\n }\n }\n };\n WINDOW.addEventListener('message', reportDialogClosedMessageHandler);\n }\n\n const injectionPoint = WINDOW.document.head || WINDOW.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n DEBUG_BUILD && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\n};\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad(): void {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback: () => void): void {\n callback();\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @deprecated This function will be removed in v8.\n * It is not part of Sentry's official API and it's easily replaceable by using a try/catch block\n * and calling Sentry.captureException.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// TODO(v8): Remove this function\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrap(fn: (...args: any) => any): any {\n return internalWrap(fn)();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking(): void {\n if (typeof WINDOW.document === 'undefined') {\n DEBUG_BUILD && logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSession({ ignoreDuration: true });\n captureSession();\n\n // We want to create a session for every navigation as well\n addHistoryInstrumentationHandler(({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (from !== undefined && from !== to) {\n startSession({ ignoreDuration: true });\n captureSession();\n }\n });\n}\n\n/**\n * Captures user feedback and sends it to Sentry.\n */\nexport function captureUserFeedback(feedback: UserFeedback): void {\n const client = getClient();\n if (client) {\n client.captureUserFeedback(feedback);\n }\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import type { ReportDialogOptions, Scope } from '@sentry/browser';\nimport { captureException, getClient, showReportDialog, withScope } from '@sentry/browser';\nimport { isError, logger } from '@sentry/utils';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\n\nimport { DEBUG_BUILD } from './debug-build';\n\nexport function isAtLeastReact17(version: string): boolean {\n const major = version.match(/^([^.]+)/);\n return major !== null && parseInt(major[0]) >= 17;\n}\n\nexport const UNKNOWN_COMPONENT = 'unknown';\n\nexport type FallbackRender = (errorData: {\n error: Error;\n componentStack: string;\n eventId: string;\n resetError(): void;\n}) => React.ReactElement;\n\nexport type ErrorBoundaryProps = {\n children?: React.ReactNode | (() => React.ReactNode);\n /** If a Sentry report dialog should be rendered on error */\n showDialog?: boolean | undefined;\n /**\n * Options to be passed into the Sentry report dialog.\n * No-op if {@link showDialog} is false.\n */\n // eslint-disable-next-line deprecation/deprecation\n dialogOptions?: Omit | undefined;\n /**\n * A fallback component that gets rendered when the error boundary encounters an error.\n *\n * Can either provide a React Component, or a function that returns React Component as\n * a valid fallback prop. If a function is provided, the function will be called with\n * the error, the component stack, and an function that resets the error boundary on error.\n *\n */\n fallback?: React.ReactElement | FallbackRender | undefined;\n /** Called when the error boundary encounters an error */\n onError?: ((error: Error, componentStack: string, eventId: string) => void) | undefined;\n /** Called on componentDidMount() */\n onMount?: (() => void) | undefined;\n /** Called if resetError() is called from the fallback render props function */\n onReset?: ((error: Error | null, componentStack: string | null, eventId: string | null) => void) | undefined;\n /** Called on componentWillUnmount() */\n onUnmount?: ((error: Error | null, componentStack: string | null, eventId: string | null) => void) | undefined;\n /** Called before the error is captured by Sentry, allows for you to add tags or context using the scope */\n beforeCapture?: ((scope: Scope, error: Error | null, componentStack: string | null) => void) | undefined;\n};\n\ntype ErrorBoundaryState =\n | {\n componentStack: null;\n error: null;\n eventId: null;\n }\n | {\n componentStack: React.ErrorInfo['componentStack'];\n error: Error;\n eventId: string;\n };\n\nconst INITIAL_STATE = {\n componentStack: null,\n error: null,\n eventId: null,\n};\n\nfunction setCause(error: Error & { cause?: Error }, cause: Error): void {\n const seenErrors = new WeakMap();\n\n function recurse(error: Error & { cause?: Error }, cause: Error): void {\n // If we've already seen the error, there is a recursive loop somewhere in the error's\n // cause chain. Let's just bail out then to prevent a stack overflow.\n if (seenErrors.has(error)) {\n return;\n }\n if (error.cause) {\n seenErrors.set(error, true);\n return recurse(error.cause, cause);\n }\n error.cause = cause;\n }\n\n recurse(error, cause);\n}\n\n/**\n * A ErrorBoundary component that logs errors to Sentry. Requires React >= 16.\n * NOTE: If you are a Sentry user, and you are seeing this stack frame, it means the\n * Sentry React SDK ErrorBoundary caught an error invoking your application code. This\n * is expected behavior and NOT indicative of a bug with the Sentry React SDK.\n */\nclass ErrorBoundary extends React.Component {\n public state: ErrorBoundaryState;\n\n private readonly _openFallbackReportDialog: boolean;\n\n private _lastEventId?: string;\n\n public constructor(props: ErrorBoundaryProps) {\n super(props);\n\n this.state = INITIAL_STATE;\n this._openFallbackReportDialog = true;\n\n const client = getClient();\n if (client && client.on && props.showDialog) {\n this._openFallbackReportDialog = false;\n client.on('afterSendEvent', event => {\n if (!event.type && event.event_id === this._lastEventId) {\n // eslint-disable-next-line deprecation/deprecation\n showReportDialog({ ...props.dialogOptions, eventId: this._lastEventId });\n }\n });\n }\n }\n\n public componentDidCatch(error: Error & { cause?: Error }, { componentStack }: React.ErrorInfo): void {\n const { beforeCapture, onError, showDialog, dialogOptions } = this.props;\n withScope(scope => {\n // If on React version >= 17, create stack trace from componentStack param and links\n // to to the original error using `error.cause` otherwise relies on error param for stacktrace.\n // Linking errors requires the `LinkedErrors` integration be enabled.\n // See: https://reactjs.org/blog/2020/08/10/react-v17-rc.html#native-component-stacks\n //\n // Although `componentDidCatch` is typed to accept an `Error` object, it can also be invoked\n // with non-error objects. This is why we need to check if the error is an error-like object.\n // See: https://github.com/getsentry/sentry-javascript/issues/6167\n if (isAtLeastReact17(React.version) && isError(error)) {\n const errorBoundaryError = new Error(error.message);\n errorBoundaryError.name = `React ErrorBoundary ${error.name}`;\n errorBoundaryError.stack = componentStack;\n\n // Using the `LinkedErrors` integration to link the errors together.\n setCause(error, errorBoundaryError);\n }\n\n if (beforeCapture) {\n beforeCapture(scope, error, componentStack);\n }\n\n const eventId = captureException(error, {\n captureContext: {\n contexts: { react: { componentStack } },\n },\n // If users provide a fallback component we can assume they are handling the error.\n // Therefore, we set the mechanism depending on the presence of the fallback prop.\n mechanism: { handled: !!this.props.fallback },\n });\n\n if (onError) {\n onError(error, componentStack, eventId);\n }\n if (showDialog) {\n this._lastEventId = eventId;\n if (this._openFallbackReportDialog) {\n showReportDialog({ ...dialogOptions, eventId });\n }\n }\n\n // componentDidCatch is used over getDerivedStateFromError\n // so that componentStack is accessible through state.\n this.setState({ error, componentStack, eventId });\n });\n }\n\n public componentDidMount(): void {\n const { onMount } = this.props;\n if (onMount) {\n onMount();\n }\n }\n\n public componentWillUnmount(): void {\n const { error, componentStack, eventId } = this.state;\n const { onUnmount } = this.props;\n if (onUnmount) {\n onUnmount(error, componentStack, eventId);\n }\n }\n\n public resetErrorBoundary: () => void = () => {\n const { onReset } = this.props;\n const { error, componentStack, eventId } = this.state;\n if (onReset) {\n onReset(error, componentStack, eventId);\n }\n this.setState(INITIAL_STATE);\n };\n\n public render(): React.ReactNode {\n const { fallback, children } = this.props;\n const state = this.state;\n\n if (state.error) {\n let element: React.ReactElement | undefined = undefined;\n if (typeof fallback === 'function') {\n element = fallback({\n error: state.error,\n componentStack: state.componentStack,\n resetError: this.resetErrorBoundary,\n eventId: state.eventId,\n });\n } else {\n element = fallback;\n }\n\n if (React.isValidElement(element)) {\n return element;\n }\n\n if (fallback) {\n DEBUG_BUILD && logger.warn('fallback did not produce a valid ReactElement');\n }\n\n // Fail gracefully if no fallback provided or is not valid\n return null;\n }\n\n if (typeof children === 'function') {\n return (children as () => React.ReactNode)();\n }\n return children;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction withErrorBoundary

>(\n WrappedComponent: React.ComponentType

,\n errorBoundaryOptions: ErrorBoundaryProps,\n): React.FC

{\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const componentDisplayName = WrappedComponent.displayName || WrappedComponent.name || UNKNOWN_COMPONENT;\n\n const Wrapped: React.FC

= (props: P) => (\n \n \n \n );\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n Wrapped.displayName = `errorBoundary(${componentDisplayName})`;\n\n // Copy over static methods from Wrapped component to Profiler HOC\n // See: https://reactjs.org/docs/higher-order-components.html#static-methods-must-be-copied-over\n hoistNonReactStatics(Wrapped, WrappedComponent);\n return Wrapped;\n}\n\nexport { ErrorBoundary, withErrorBoundary };\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ &\n // document is not available in all browser environments (webworkers). We make it optional so you have to explicitly check for it\n Omit &\n Partial>;\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Metric, ReportCallback } from '../types';\n\nexport const bindReporter = (\n callback: ReportCallback,\n metric: Metric,\n reportAllChanges?: boolean,\n): ((forceReport?: boolean) => void) => {\n let prevValue: number;\n let delta: number;\n return (forceReport?: boolean) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (delta || prevValue === undefined) {\n prevValue = metric.value;\n metric.delta = delta;\n callback(metric);\n }\n }\n }\n };\n};\n","/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport type { NavigationTimingPolyfillEntry } from '../types';\n\nconst getNavigationEntryFromPerformanceTiming = (): NavigationTimingPolyfillEntry => {\n // eslint-disable-next-line deprecation/deprecation\n const timing = WINDOW.performance.timing;\n // eslint-disable-next-line deprecation/deprecation\n const type = WINDOW.performance.navigation.type;\n\n const navigationEntry: { [key: string]: number | string } = {\n entryType: 'navigation',\n startTime: 0,\n type: type == 2 ? 'back_forward' : type === 1 ? 'reload' : 'navigate',\n };\n\n for (const key in timing) {\n if (key !== 'navigationStart' && key !== 'toJSON') {\n // eslint-disable-next-line deprecation/deprecation\n navigationEntry[key] = Math.max((timing[key as keyof PerformanceTiming] as number) - timing.navigationStart, 0);\n }\n }\n return navigationEntry as unknown as NavigationTimingPolyfillEntry;\n};\n\nexport const getNavigationEntry = (): PerformanceNavigationTiming | NavigationTimingPolyfillEntry | undefined => {\n if (WINDOW.__WEB_VITALS_POLYFILL__) {\n return (\n WINDOW.performance &&\n ((performance.getEntriesByType && performance.getEntriesByType('navigation')[0]) ||\n getNavigationEntryFromPerformanceTiming())\n );\n } else {\n return WINDOW.performance && performance.getEntriesByType && performance.getEntriesByType('navigation')[0];\n }\n};\n","/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getNavigationEntry } from './getNavigationEntry';\n\nexport const getActivationStart = (): number => {\n const navEntry = getNavigationEntry();\n return (navEntry && navEntry.activationStart) || 0;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport type { Metric } from '../types';\nimport { generateUniqueID } from './generateUniqueID';\nimport { getActivationStart } from './getActivationStart';\nimport { getNavigationEntry } from './getNavigationEntry';\n\nexport const initMetric = (name: Metric['name'], value?: number): Metric => {\n const navEntry = getNavigationEntry();\n let navigationType: Metric['navigationType'] = 'navigate';\n\n if (navEntry) {\n if ((WINDOW.document && WINDOW.document.prerendering) || getActivationStart() > 0) {\n navigationType = 'prerender';\n } else {\n navigationType = navEntry.type.replace(/_/g, '-') as Metric['navigationType'];\n }\n }\n\n return {\n name,\n value: typeof value === 'undefined' ? -1 : value,\n rating: 'good', // Will be updated if the value changes.\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n navigationType,\n };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nexport const generateUniqueID = (): string => {\n return `v3-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { FirstInputPolyfillEntry, NavigationTimingPolyfillEntry, PerformancePaintTiming } from '../types';\n\nexport interface PerformanceEntryHandler {\n (entry: PerformanceEntry): void;\n}\n\ninterface PerformanceEntryMap {\n event: PerformanceEventTiming[];\n paint: PerformancePaintTiming[];\n 'layout-shift': LayoutShift[];\n 'largest-contentful-paint': LargestContentfulPaint[];\n 'first-input': PerformanceEventTiming[] | FirstInputPolyfillEntry[];\n navigation: PerformanceNavigationTiming[] | NavigationTimingPolyfillEntry[];\n resource: PerformanceResourceTiming[];\n longtask: PerformanceEntry[];\n}\n\n/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nexport const observe = (\n type: K,\n callback: (entries: PerformanceEntryMap[K]) => void,\n opts?: PerformanceObserverInit,\n): PerformanceObserver | undefined => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n const po = new PerformanceObserver(list => {\n callback(list.getEntries() as PerformanceEntryMap[K]);\n });\n po.observe(\n Object.assign(\n {\n type,\n buffered: true,\n },\n opts || {},\n ) as PerformanceObserverInit,\n );\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\n\nexport interface OnHiddenCallback {\n (event: Event): void;\n}\n\nexport const onHidden = (cb: OnHiddenCallback, once?: boolean): void => {\n const onHiddenOrPageHide = (event: Event): void => {\n if (event.type === 'pagehide' || WINDOW.document!.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n\n if (WINDOW.document) {\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n }\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport { onHidden } from './onHidden';\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = (): void => {\n // If the document is hidden and not prerendering, assume it was always\n // hidden and the page was loaded in the background.\n if (WINDOW.document && WINDOW.document.visibilityState) {\n firstHiddenTime = WINDOW.document.visibilityState === 'hidden' && !WINDOW.document.prerendering ? 0 : Infinity;\n }\n};\n\nconst trackChanges = (): void => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nexport const getVisibilityWatcher = (): {\n readonly firstHiddenTime: number;\n} => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n","/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Metric } from '../../types';\nimport { observe } from '../observe';\n\ndeclare global {\n interface Performance {\n interactionCount: number;\n }\n}\n\nlet interactionCountEstimate = 0;\nlet minKnownInteractionId = Infinity;\nlet maxKnownInteractionId = 0;\n\nconst updateEstimate = (entries: Metric['entries']): void => {\n (entries as PerformanceEventTiming[]).forEach(e => {\n if (e.interactionId) {\n minKnownInteractionId = Math.min(minKnownInteractionId, e.interactionId);\n maxKnownInteractionId = Math.max(maxKnownInteractionId, e.interactionId);\n\n interactionCountEstimate = maxKnownInteractionId ? (maxKnownInteractionId - minKnownInteractionId) / 7 + 1 : 0;\n }\n });\n};\n\nlet po: PerformanceObserver | undefined;\n\n/**\n * Returns the `interactionCount` value using the native API (if available)\n * or the polyfill estimate in this module.\n */\nexport const getInteractionCount = (): number => {\n return po ? interactionCountEstimate : performance.interactionCount || 0;\n};\n\n/**\n * Feature detects native support or initializes the polyfill if needed.\n */\nexport const initInteractionCountPolyfill = (): void => {\n if ('interactionCount' in performance || po) return;\n\n po = observe('event', updateEstimate, {\n type: 'event',\n buffered: true,\n durationThreshold: 0,\n } as PerformanceObserverInit);\n};\n","/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { getInteractionCount, initInteractionCountPolyfill } from './lib/polyfills/interactionCountPolyfill';\nimport type { ReportCallback, ReportOpts } from './types';\nimport type { INPMetric } from './types/inp';\n\ninterface Interaction {\n id: number;\n latency: number;\n entries: PerformanceEventTiming[];\n}\n\n/**\n * Returns the interaction count since the last bfcache restore (or for the\n * full page lifecycle if there were no bfcache restores).\n */\nconst getInteractionCountForNavigation = (): number => {\n return getInteractionCount();\n};\n\n// To prevent unnecessary memory usage on pages with lots of interactions,\n// store at most 10 of the longest interactions to consider as INP candidates.\nconst MAX_INTERACTIONS_TO_CONSIDER = 10;\n\n// A list of longest interactions on the page (by latency) sorted so the\n// longest one is first. The list is as most MAX_INTERACTIONS_TO_CONSIDER long.\nconst longestInteractionList: Interaction[] = [];\n\n// A mapping of longest interactions by their interaction ID.\n// This is used for faster lookup.\nconst longestInteractionMap: { [interactionId: string]: Interaction } = {};\n\n/**\n * Takes a performance entry and adds it to the list of worst interactions\n * if its duration is long enough to make it among the worst. If the\n * entry is part of an existing interaction, it is merged and the latency\n * and entries list is updated as needed.\n */\nconst processEntry = (entry: PerformanceEventTiming): void => {\n // The least-long of the 10 longest interactions.\n const minLongestInteraction = longestInteractionList[longestInteractionList.length - 1];\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const existingInteraction = longestInteractionMap[entry.interactionId!];\n\n // Only process the entry if it's possibly one of the ten longest,\n // or if it's part of an existing interaction.\n if (\n existingInteraction ||\n longestInteractionList.length < MAX_INTERACTIONS_TO_CONSIDER ||\n entry.duration > minLongestInteraction.latency\n ) {\n // If the interaction already exists, update it. Otherwise create one.\n if (existingInteraction) {\n existingInteraction.entries.push(entry);\n existingInteraction.latency = Math.max(existingInteraction.latency, entry.duration);\n } else {\n const interaction = {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n id: entry.interactionId!,\n latency: entry.duration,\n entries: [entry],\n };\n longestInteractionMap[interaction.id] = interaction;\n longestInteractionList.push(interaction);\n }\n\n // Sort the entries by latency (descending) and keep only the top ten.\n longestInteractionList.sort((a, b) => b.latency - a.latency);\n longestInteractionList.splice(MAX_INTERACTIONS_TO_CONSIDER).forEach(i => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete longestInteractionMap[i.id];\n });\n }\n};\n\n/**\n * Returns the estimated p98 longest interaction based on the stored\n * interaction candidates and the interaction count for the current page.\n */\nconst estimateP98LongestInteraction = (): Interaction => {\n const candidateInteractionIndex = Math.min(\n longestInteractionList.length - 1,\n Math.floor(getInteractionCountForNavigation() / 50),\n );\n\n return longestInteractionList[candidateInteractionIndex];\n};\n\n/**\n * Calculates the [INP](https://web.dev/responsiveness/) value for the current\n * page and calls the `callback` function once the value is ready, along with\n * the `event` performance entries reported for that interaction. The reported\n * value is a `DOMHighResTimeStamp`.\n *\n * A custom `durationThreshold` configuration option can optionally be passed to\n * control what `event-timing` entries are considered for INP reporting. The\n * default threshold is `40`, which means INP scores of less than 40 are\n * reported as 0. Note that this will not affect your 75th percentile INP value\n * unless that value is also less than 40 (well below the recommended\n * [good](https://web.dev/inp/#what-is-a-good-inp-score) threshold).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** INP should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nexport const onINP = (onReport: ReportCallback, opts?: ReportOpts): void => {\n // Set defaults\n // eslint-disable-next-line no-param-reassign\n opts = opts || {};\n\n // https://web.dev/inp/#what's-a-%22good%22-inp-value\n // const thresholds = [200, 500];\n\n // TODO(philipwalton): remove once the polyfill is no longer needed.\n initInteractionCountPolyfill();\n\n const metric = initMetric('INP');\n // eslint-disable-next-line prefer-const\n let report: ReturnType;\n\n const handleEntries = (entries: INPMetric['entries']): void => {\n entries.forEach(entry => {\n if (entry.interactionId) {\n processEntry(entry);\n }\n\n // Entries of type `first-input` don't currently have an `interactionId`,\n // so to consider them in INP we have to first check that an existing\n // entry doesn't match the `duration` and `startTime`.\n // Note that this logic assumes that `event` entries are dispatched\n // before `first-input` entries. This is true in Chrome but it is not\n // true in Firefox; however, Firefox doesn't support interactionId, so\n // it's not an issue at the moment.\n // TODO(philipwalton): remove once crbug.com/1325826 is fixed.\n if (entry.entryType === 'first-input') {\n const noMatchingEntry = !longestInteractionList.some(interaction => {\n return interaction.entries.some(prevEntry => {\n return entry.duration === prevEntry.duration && entry.startTime === prevEntry.startTime;\n });\n });\n if (noMatchingEntry) {\n processEntry(entry);\n }\n }\n });\n\n const inp = estimateP98LongestInteraction();\n\n if (inp && inp.latency !== metric.value) {\n metric.value = inp.latency;\n metric.entries = inp.entries;\n report();\n }\n };\n\n const po = observe('event', handleEntries, {\n // Event Timing entries have their durations rounded to the nearest 8ms,\n // so a duration of 40ms would be any event that spans 2.5 or more frames\n // at 60Hz. This threshold is chosen to strike a balance between usefulness\n // and performance. Running this callback for any interaction that spans\n // just one or two frames is likely not worth the insight that could be\n // gained.\n durationThreshold: opts.durationThreshold || 40,\n } as PerformanceObserverInit);\n\n report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n if (po) {\n // Also observe entries of type `first-input`. This is useful in cases\n // where the first interaction is less than the `durationThreshold`.\n po.observe({ type: 'first-input', buffered: true });\n\n onHidden(() => {\n handleEntries(po.takeRecords() as INPMetric['entries']);\n\n // If the interaction count shows that there were interactions but\n // none were captured by the PerformanceObserver, report a latency of 0.\n if (metric.value < 0 && getInteractionCountForNavigation() > 0) {\n metric.value = 0;\n metric.entries = [];\n }\n\n report(true);\n });\n }\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../types';\nimport { bindReporter } from './lib/bindReporter';\nimport { getActivationStart } from './lib/getActivationStart';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport type { LCPMetric, ReportCallback, StopListening } from './types';\n\nconst reportedMetricIDs: Record = {};\n\n/**\n * Calculates the [LCP](https://web.dev/lcp/) value for the current page and\n * calls the `callback` function once the value is ready (along with the\n * relevant `largest-contentful-paint` performance entry used to determine the\n * value). The reported value is a `DOMHighResTimeStamp`.\n */\nexport const onLCP = (onReport: ReportCallback): StopListening | undefined => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('LCP');\n let report: ReturnType;\n\n const handleEntries = (entries: LCPMetric['entries']): void => {\n const lastEntry = entries[entries.length - 1] as LargestContentfulPaint;\n if (lastEntry) {\n // The startTime attribute returns the value of the renderTime if it is\n // not 0, and the value of the loadTime otherwise. The activationStart\n // reference is used because LCP should be relative to page activation\n // rather than navigation start if the page was prerendered.\n const value = Math.max(lastEntry.startTime - getActivationStart(), 0);\n\n // Only report if the page wasn't hidden prior to LCP.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries = [lastEntry];\n report();\n }\n }\n };\n\n const po = observe('largest-contentful-paint', handleEntries);\n\n if (po) {\n report = bindReporter(onReport, metric);\n\n const stopListening = (): void => {\n if (!reportedMetricIDs[metric.id]) {\n handleEntries(po.takeRecords() as LCPMetric['entries']);\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n if (WINDOW.document) {\n addEventListener(type, stopListening, { once: true, capture: true });\n }\n });\n\n onHidden(stopListening, true);\n\n return stopListening;\n }\n\n return;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../types';\nimport { bindReporter } from './lib/bindReporter';\nimport { getActivationStart } from './lib/getActivationStart';\nimport { getNavigationEntry } from './lib/getNavigationEntry';\nimport { initMetric } from './lib/initMetric';\nimport type { ReportCallback, ReportOpts } from './types';\nimport type { TTFBMetric } from './types/ttfb';\n\n/**\n * Runs in the next task after the page is done loading and/or prerendering.\n * @param callback\n */\nconst whenReady = (callback: () => void): void => {\n if (!WINDOW.document) {\n return;\n }\n\n if (WINDOW.document.prerendering) {\n addEventListener('prerenderingchange', () => whenReady(callback), true);\n } else if (WINDOW.document.readyState !== 'complete') {\n addEventListener('load', () => whenReady(callback), true);\n } else {\n // Queue a task so the callback runs after `loadEventEnd`.\n setTimeout(callback, 0);\n }\n};\n\n/**\n * Calculates the [TTFB](https://web.dev/time-to-first-byte/) value for the\n * current page and calls the `callback` function once the page has loaded,\n * along with the relevant `navigation` performance entry used to determine the\n * value. The reported value is a `DOMHighResTimeStamp`.\n *\n * Note, this function waits until after the page is loaded to call `callback`\n * in order to ensure all properties of the `navigation` entry are populated.\n * This is useful if you want to report on other metrics exposed by the\n * [Navigation Timing API](https://w3c.github.io/navigation-timing/). For\n * example, the TTFB metric starts from the page's [time\n * origin](https://www.w3.org/TR/hr-time-2/#sec-time-origin), which means it\n * includes time spent on DNS lookup, connection negotiation, network latency,\n * and server processing time.\n */\nexport const onTTFB = (onReport: ReportCallback, opts?: ReportOpts): void => {\n // Set defaults\n // eslint-disable-next-line no-param-reassign\n opts = opts || {};\n\n // https://web.dev/ttfb/#what-is-a-good-ttfb-score\n // const thresholds = [800, 1800];\n\n const metric = initMetric('TTFB');\n const report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n whenReady(() => {\n const navEntry = getNavigationEntry() as TTFBMetric['entries'][number];\n\n if (navEntry) {\n // The activationStart reference is used because TTFB should be\n // relative to page activation rather than navigation start if the\n // page was prerendered. But in cases where `activationStart` occurs\n // after the first byte is received, this time should be clamped at 0.\n metric.value = Math.max(navEntry.responseStart - getActivationStart(), 0);\n\n // In some cases the value reported is negative or is larger\n // than the current page time. Ignore these cases:\n // https://github.com/GoogleChrome/web-vitals/issues/137\n // https://github.com/GoogleChrome/web-vitals/issues/162\n if (metric.value < 0 || metric.value > performance.now()) return;\n\n metric.entries = [navEntry];\n\n report(true);\n }\n });\n};\n","import { getFunctionName, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport { onCLS } from './web-vitals/getCLS';\nimport { onFID } from './web-vitals/getFID';\nimport { onINP } from './web-vitals/getINP';\nimport { onLCP } from './web-vitals/getLCP';\nimport { observe } from './web-vitals/lib/observe';\nimport { onTTFB } from './web-vitals/onTTFB';\n\ntype InstrumentHandlerTypePerformanceObserver =\n | 'longtask'\n | 'event'\n | 'navigation'\n | 'paint'\n | 'resource'\n | 'first-input';\n\ntype InstrumentHandlerTypeMetric = 'cls' | 'lcp' | 'fid' | 'ttfb' | 'inp';\n\n// We provide this here manually instead of relying on a global, as this is not available in non-browser environements\n// And we do not want to expose such types\ninterface PerformanceEntry {\n readonly duration: number;\n readonly entryType: string;\n readonly name: string;\n readonly startTime: number;\n toJSON(): Record;\n}\ninterface PerformanceEventTiming extends PerformanceEntry {\n processingStart: number;\n processingEnd: number;\n duration: number;\n cancelable?: boolean;\n target?: unknown | null;\n interactionId?: number;\n}\n\ninterface Metric {\n /**\n * The name of the metric (in acronym form).\n */\n name: 'CLS' | 'FCP' | 'FID' | 'INP' | 'LCP' | 'TTFB';\n\n /**\n * The current value of the metric.\n */\n value: number;\n\n /**\n * The rating as to whether the metric value is within the \"good\",\n * \"needs improvement\", or \"poor\" thresholds of the metric.\n */\n rating: 'good' | 'needs-improvement' | 'poor';\n\n /**\n * The delta between the current value and the last-reported value.\n * On the first report, `delta` and `value` will always be the same.\n */\n delta: number;\n\n /**\n * A unique ID representing this particular metric instance. This ID can\n * be used by an analytics tool to dedupe multiple values sent for the same\n * metric instance, or to group multiple deltas together and calculate a\n * total. It can also be used to differentiate multiple different metric\n * instances sent from the same page, which can happen if the page is\n * restored from the back/forward cache (in that case new metrics object\n * get created).\n */\n id: string;\n\n /**\n * Any performance entries relevant to the metric value calculation.\n * The array may also be empty if the metric value was not based on any\n * entries (e.g. a CLS value of 0 given no layout shifts).\n */\n entries: PerformanceEntry[];\n\n /**\n * The type of navigation\n *\n * Navigation Timing API (or `undefined` if the browser doesn't\n * support that API). For pages that are restored from the bfcache, this\n * value will be 'back-forward-cache'.\n */\n navigationType: 'navigate' | 'reload' | 'back-forward' | 'back-forward-cache' | 'prerender';\n}\n\ntype InstrumentHandlerType = InstrumentHandlerTypeMetric | InstrumentHandlerTypePerformanceObserver;\n\ntype StopListening = undefined | void | (() => void);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype InstrumentHandlerCallback = (data: any) => void;\n\ntype CleanupHandlerCallback = () => void;\n\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\nlet _previousCls: Metric | undefined;\nlet _previousFid: Metric | undefined;\nlet _previousLcp: Metric | undefined;\nlet _previousTtfb: Metric | undefined;\nlet _previousInp: Metric | undefined;\n\n/**\n * Add a callback that will be triggered when a CLS metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n *\n * Pass `stopOnCallback = true` to stop listening for CLS when the cleanup callback is called.\n * This will lead to the CLS being finalized and frozen.\n */\nexport function addClsInstrumentationHandler(\n callback: (data: { metric: Metric }) => void,\n stopOnCallback = false,\n): CleanupHandlerCallback {\n return addMetricObserver('cls', callback, instrumentCls, _previousCls, stopOnCallback);\n}\n\n/**\n * Add a callback that will be triggered when a LCP metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n *\n * Pass `stopOnCallback = true` to stop listening for LCP when the cleanup callback is called.\n * This will lead to the LCP being finalized and frozen.\n */\nexport function addLcpInstrumentationHandler(\n callback: (data: { metric: Metric }) => void,\n stopOnCallback = false,\n): CleanupHandlerCallback {\n return addMetricObserver('lcp', callback, instrumentLcp, _previousLcp, stopOnCallback);\n}\n\n/**\n * Add a callback that will be triggered when a FID metric is available.\n */\nexport function addTtfbInstrumentationHandler(callback: (data: { metric: Metric }) => void): CleanupHandlerCallback {\n return addMetricObserver('ttfb', callback, instrumentTtfb, _previousTtfb);\n}\n\n/**\n * Add a callback that will be triggered when a FID metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nexport function addFidInstrumentationHandler(callback: (data: { metric: Metric }) => void): CleanupHandlerCallback {\n return addMetricObserver('fid', callback, instrumentFid, _previousFid);\n}\n\n/**\n * Add a callback that will be triggered when a INP metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nexport function addInpInstrumentationHandler(\n callback: (data: { metric: Omit & { entries: PerformanceEventTiming[] } }) => void,\n): CleanupHandlerCallback {\n return addMetricObserver('inp', callback, instrumentInp, _previousInp);\n}\n\nexport function addPerformanceInstrumentationHandler(\n type: 'event' | 'first-input',\n callback: (data: { entries: ((PerformanceEntry & { target?: unknown | null }) | PerformanceEventTiming)[] }) => void,\n): CleanupHandlerCallback;\nexport function addPerformanceInstrumentationHandler(\n type: InstrumentHandlerTypePerformanceObserver,\n callback: (data: { entries: PerformanceEntry[] }) => void,\n): CleanupHandlerCallback;\n\n/**\n * Add a callback that will be triggered when a performance observer is triggered,\n * and receives the entries of the observer.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nexport function addPerformanceInstrumentationHandler(\n type: InstrumentHandlerTypePerformanceObserver,\n callback: (data: { entries: PerformanceEntry[] }) => void,\n): CleanupHandlerCallback {\n addHandler(type, callback);\n\n if (!instrumented[type]) {\n instrumentPerformanceObserver(type);\n instrumented[type] = true;\n }\n\n return getCleanupCallback(type, callback);\n}\n\n/** Trigger all handlers of a given type. */\nfunction triggerHandlers(type: InstrumentHandlerType, data: unknown): void {\n const typeHandlers = handlers[type];\n\n if (!typeHandlers || !typeHandlers.length) {\n return;\n }\n\n for (const handler of typeHandlers) {\n try {\n handler(data);\n } catch (e) {\n DEBUG_BUILD &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\nfunction instrumentCls(): StopListening {\n return onCLS(\n metric => {\n triggerHandlers('cls', {\n metric,\n });\n _previousCls = metric;\n },\n { reportAllChanges: true },\n );\n}\n\nfunction instrumentFid(): void {\n return onFID(metric => {\n triggerHandlers('fid', {\n metric,\n });\n _previousFid = metric;\n });\n}\n\nfunction instrumentLcp(): StopListening {\n return onLCP(metric => {\n triggerHandlers('lcp', {\n metric,\n });\n _previousLcp = metric;\n });\n}\n\nfunction instrumentTtfb(): StopListening {\n return onTTFB(metric => {\n triggerHandlers('ttfb', {\n metric,\n });\n _previousTtfb = metric;\n });\n}\n\nfunction instrumentInp(): void {\n return onINP(metric => {\n triggerHandlers('inp', {\n metric,\n });\n _previousInp = metric;\n });\n}\n\nfunction addMetricObserver(\n type: InstrumentHandlerTypeMetric,\n callback: InstrumentHandlerCallback,\n instrumentFn: () => StopListening,\n previousValue: Metric | undefined,\n stopOnCallback = false,\n): CleanupHandlerCallback {\n addHandler(type, callback);\n\n let stopListening: StopListening | undefined;\n\n if (!instrumented[type]) {\n stopListening = instrumentFn();\n instrumented[type] = true;\n }\n\n if (previousValue) {\n callback({ metric: previousValue });\n }\n\n return getCleanupCallback(type, callback, stopOnCallback ? stopListening : undefined);\n}\n\nfunction instrumentPerformanceObserver(type: InstrumentHandlerTypePerformanceObserver): void {\n const options: PerformanceObserverInit = {};\n\n // Special per-type options we want to use\n if (type === 'event') {\n options.durationThreshold = 0;\n }\n\n observe(\n type,\n entries => {\n triggerHandlers(type, { entries });\n },\n options,\n );\n}\n\nfunction addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void {\n handlers[type] = handlers[type] || [];\n (handlers[type] as InstrumentHandlerCallback[]).push(handler);\n}\n\n// Get a callback which can be called to remove the instrumentation handler\nfunction getCleanupCallback(\n type: InstrumentHandlerType,\n callback: InstrumentHandlerCallback,\n stopListening: StopListening,\n): CleanupHandlerCallback {\n return () => {\n if (stopListening) {\n stopListening();\n }\n\n const typeHandlers = handlers[type];\n\n if (!typeHandlers) {\n return;\n }\n\n const index = typeHandlers.indexOf(callback);\n if (index !== -1) {\n typeHandlers.splice(index, 1);\n }\n };\n}\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport type { CLSMetric, ReportCallback, StopListening } from './types';\n\n/**\n * Calculates the [CLS](https://web.dev/cls/) value for the current page and\n * calls the `callback` function once the value is ready to be reported, along\n * with all `layout-shift` performance entries that were used in the metric\n * value calculation. The reported value is a `double` (corresponding to a\n * [layout shift score](https://web.dev/cls/#layout-shift-score)).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** CLS should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nexport const onCLS = (\n onReport: ReportCallback,\n options: { reportAllChanges?: boolean } = {},\n): StopListening | undefined => {\n const metric = initMetric('CLS', 0);\n let report: ReturnType;\n\n let sessionValue = 0;\n let sessionEntries: PerformanceEntry[] = [];\n\n // const handleEntries = (entries: Metric['entries']) => {\n const handleEntries = (entries: LayoutShift[]): void => {\n entries.forEach(entry => {\n // Only count layout shifts without recent user input.\n if (!entry.hadRecentInput) {\n const firstSessionEntry = sessionEntries[0];\n const lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (\n sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000\n ) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n });\n };\n\n const po = observe('layout-shift', handleEntries);\n if (po) {\n report = bindReporter(onReport, metric, options.reportAllChanges);\n\n const stopListening = (): void => {\n handleEntries(po.takeRecords() as CLSMetric['entries']);\n report(true);\n };\n\n onHidden(stopListening);\n\n return stopListening;\n }\n\n return;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport type { FIDMetric, PerformanceEventTiming, ReportCallback } from './types';\n\n/**\n * Calculates the [FID](https://web.dev/fid/) value for the current page and\n * calls the `callback` function once the value is ready, along with the\n * relevant `first-input` performance entry used to determine the value. The\n * reported value is a `DOMHighResTimeStamp`.\n *\n * _**Important:** since FID is only reported after the user interacts with the\n * page, it's possible that it will not be reported for some page loads._\n */\nexport const onFID = (onReport: ReportCallback): void => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('FID');\n // eslint-disable-next-line prefer-const\n let report: ReturnType;\n\n const handleEntry = (entry: PerformanceEventTiming): void => {\n // Only report if the page wasn't hidden prior to the first input.\n if (entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n const handleEntries = (entries: FIDMetric['entries']): void => {\n (entries as PerformanceEventTiming[]).forEach(handleEntry);\n };\n\n const po = observe('first-input', handleEntries);\n report = bindReporter(onReport, metric);\n\n if (po) {\n onHidden(() => {\n handleEntries(po.takeRecords() as FIDMetric['entries']);\n po.disconnect();\n }, true);\n }\n};\n","import type { DsnComponents, SpanEnvelope, SpanItem } from '@sentry/types';\nimport type { Span } from '@sentry/types';\nimport { createEnvelope, dsnToString } from '@sentry/utils';\n\n/**\n * Create envelope from Span item.\n */\nexport function createSpanEnvelope(spans: Span[], dsn?: DsnComponents): SpanEnvelope {\n const headers: SpanEnvelope[0] = {\n sent_at: new Date().toISOString(),\n };\n\n if (dsn) {\n headers.dsn = dsnToString(dsn);\n }\n\n const items = spans.map(createSpanItem);\n return createEnvelope(headers, items);\n}\n\nfunction createSpanItem(span: Span): SpanItem {\n const spanHeaders: SpanItem[0] = {\n type: 'span',\n };\n return [spanHeaders, span];\n}\n","import type { Transaction } from '@sentry/core';\nimport type { Span, SpanContext } from '@sentry/types';\n\n/**\n * Checks if a given value is a valid measurement value.\n */\nexport function isMeasurementValue(value: unknown): value is number {\n return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n *\n * Note: this will not be possible anymore in v8,\n * unless we do some special handling for browser here...\n */\nexport function _startChild(transaction: Transaction, { startTimestamp, ...ctx }: SpanContext): Span {\n // eslint-disable-next-line deprecation/deprecation\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n // eslint-disable-next-line deprecation/deprecation\n transaction.startTimestamp = startTimestamp;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return transaction.startChild({\n startTimestamp,\n ...ctx,\n });\n}\n","/* eslint-disable max-lines */\nimport type { IdleTransaction, Transaction } from '@sentry/core';\nimport {\n Span,\n getActiveTransaction,\n getClient,\n hasTracingEnabled,\n isValidSampleRate,\n setMeasurement,\n} from '@sentry/core';\nimport type { ClientOptions, Measurements, SpanContext, TransactionContext } from '@sentry/types';\nimport { browserPerformanceTimeOrigin, getComponentName, htmlTreeAsString, logger, parseUrl } from '@sentry/utils';\n\nimport { spanToJSON } from '@sentry/core';\nimport { DEBUG_BUILD } from '../../common/debug-build';\nimport {\n addClsInstrumentationHandler,\n addFidInstrumentationHandler,\n addInpInstrumentationHandler,\n addLcpInstrumentationHandler,\n addPerformanceInstrumentationHandler,\n addTtfbInstrumentationHandler,\n} from '../instrument';\nimport { WINDOW } from '../types';\nimport { getVisibilityWatcher } from '../web-vitals/lib/getVisibilityWatcher';\nimport type {\n InteractionRouteNameMapping,\n NavigatorDeviceMemory,\n NavigatorNetworkInformation,\n} from '../web-vitals/types';\nimport { _startChild, isMeasurementValue } from './utils';\n\nimport { createSpanEnvelope } from '@sentry/core';\nimport { getNavigationEntry } from '../web-vitals/lib/getNavigationEntry';\n\nconst MAX_INT_AS_BYTES = 2147483647;\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nfunction msToSec(time: number): number {\n return time / 1000;\n}\n\nfunction getBrowserPerformanceAPI(): Performance | undefined {\n // @ts-expect-error we want to make sure all of these are available, even if TS is sure they are\n return WINDOW && WINDOW.addEventListener && WINDOW.performance;\n}\n\nlet _performanceCursor: number = 0;\n\nlet _measurements: Measurements = {};\nlet _lcpEntry: LargestContentfulPaint | undefined;\nlet _clsEntry: LayoutShift | undefined;\n\n/**\n * Start tracking web vitals.\n * The callback returned by this function can be used to stop tracking & ensure all measurements are final & captured.\n *\n * @returns A function that forces web vitals collection\n */\nexport function startTrackingWebVitals(): () => void {\n const performance = getBrowserPerformanceAPI();\n if (performance && browserPerformanceTimeOrigin) {\n // @ts-expect-error we want to make sure all of these are available, even if TS is sure they are\n if (performance.mark) {\n WINDOW.performance.mark('sentry-tracing-init');\n }\n const fidCallback = _trackFID();\n const clsCallback = _trackCLS();\n const lcpCallback = _trackLCP();\n const ttfbCallback = _trackTtfb();\n\n return (): void => {\n fidCallback();\n clsCallback();\n lcpCallback();\n ttfbCallback();\n };\n }\n\n return () => undefined;\n}\n\n/**\n * Start tracking long tasks.\n */\nexport function startTrackingLongTasks(): void {\n addPerformanceInstrumentationHandler('longtask', ({ entries }) => {\n for (const entry of entries) {\n // eslint-disable-next-line deprecation/deprecation\n const transaction = getActiveTransaction() as IdleTransaction | undefined;\n if (!transaction) {\n return;\n }\n const startTime = msToSec((browserPerformanceTimeOrigin as number) + entry.startTime);\n const duration = msToSec(entry.duration);\n\n // eslint-disable-next-line deprecation/deprecation\n transaction.startChild({\n description: 'Main UI thread blocked',\n op: 'ui.long-task',\n origin: 'auto.ui.browser.metrics',\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n });\n }\n });\n}\n\n/**\n * Start tracking interaction events.\n */\nexport function startTrackingInteractions(): void {\n addPerformanceInstrumentationHandler('event', ({ entries }) => {\n for (const entry of entries) {\n // eslint-disable-next-line deprecation/deprecation\n const transaction = getActiveTransaction() as IdleTransaction | undefined;\n if (!transaction) {\n return;\n }\n\n if (entry.name === 'click') {\n const startTime = msToSec((browserPerformanceTimeOrigin as number) + entry.startTime);\n const duration = msToSec(entry.duration);\n\n const span: SpanContext = {\n description: htmlTreeAsString(entry.target),\n op: `ui.interaction.${entry.name}`,\n origin: 'auto.ui.browser.metrics',\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n };\n\n const componentName = getComponentName(entry.target);\n if (componentName) {\n span.attributes = { 'ui.component_name': componentName };\n }\n\n // eslint-disable-next-line deprecation/deprecation\n transaction.startChild(span);\n }\n }\n });\n}\n\n/**\n * Start tracking INP webvital events.\n */\nexport function startTrackingINP(\n interactionIdtoRouteNameMapping: InteractionRouteNameMapping,\n interactionsSampleRate: number,\n): () => void {\n const performance = getBrowserPerformanceAPI();\n if (performance && browserPerformanceTimeOrigin) {\n const inpCallback = _trackINP(interactionIdtoRouteNameMapping, interactionsSampleRate);\n\n return (): void => {\n inpCallback();\n };\n }\n\n return () => undefined;\n}\n\n/** Starts tracking the Cumulative Layout Shift on the current page. */\nfunction _trackCLS(): () => void {\n return addClsInstrumentationHandler(({ metric }) => {\n const entry = metric.entries[metric.entries.length - 1];\n if (!entry) {\n return;\n }\n\n DEBUG_BUILD && logger.log('[Measurements] Adding CLS');\n _measurements['cls'] = { value: metric.value, unit: '' };\n _clsEntry = entry as LayoutShift;\n }, true);\n}\n\n/** Starts tracking the Largest Contentful Paint on the current page. */\nfunction _trackLCP(): () => void {\n return addLcpInstrumentationHandler(({ metric }) => {\n const entry = metric.entries[metric.entries.length - 1];\n if (!entry) {\n return;\n }\n\n DEBUG_BUILD && logger.log('[Measurements] Adding LCP');\n _measurements['lcp'] = { value: metric.value, unit: 'millisecond' };\n _lcpEntry = entry as LargestContentfulPaint;\n }, true);\n}\n\n/** Starts tracking the First Input Delay on the current page. */\nfunction _trackFID(): () => void {\n return addFidInstrumentationHandler(({ metric }) => {\n const entry = metric.entries[metric.entries.length - 1];\n if (!entry) {\n return;\n }\n\n const timeOrigin = msToSec(browserPerformanceTimeOrigin as number);\n const startTime = msToSec(entry.startTime);\n DEBUG_BUILD && logger.log('[Measurements] Adding FID');\n _measurements['fid'] = { value: metric.value, unit: 'millisecond' };\n _measurements['mark.fid'] = { value: timeOrigin + startTime, unit: 'second' };\n });\n}\n\nfunction _trackTtfb(): () => void {\n return addTtfbInstrumentationHandler(({ metric }) => {\n const entry = metric.entries[metric.entries.length - 1];\n if (!entry) {\n return;\n }\n\n DEBUG_BUILD && logger.log('[Measurements] Adding TTFB');\n _measurements['ttfb'] = { value: metric.value, unit: 'millisecond' };\n });\n}\n\nconst INP_ENTRY_MAP: Record = {\n click: 'click',\n pointerdown: 'click',\n pointerup: 'click',\n mousedown: 'click',\n mouseup: 'click',\n touchstart: 'click',\n touchend: 'click',\n mouseover: 'hover',\n mouseout: 'hover',\n mouseenter: 'hover',\n mouseleave: 'hover',\n pointerover: 'hover',\n pointerout: 'hover',\n pointerenter: 'hover',\n pointerleave: 'hover',\n dragstart: 'drag',\n dragend: 'drag',\n drag: 'drag',\n dragenter: 'drag',\n dragleave: 'drag',\n dragover: 'drag',\n drop: 'drag',\n keydown: 'press',\n keyup: 'press',\n keypress: 'press',\n input: 'press',\n};\n\n/** Starts tracking the Interaction to Next Paint on the current page. */\nfunction _trackINP(\n interactionIdToRouteNameMapping: InteractionRouteNameMapping,\n interactionsSampleRate: number,\n): () => void {\n return addInpInstrumentationHandler(({ metric }) => {\n if (metric.value === undefined) {\n return;\n }\n const entry = metric.entries.find(\n entry => entry.duration === metric.value && INP_ENTRY_MAP[entry.name] !== undefined,\n );\n const client = getClient();\n if (!entry || !client) {\n return;\n }\n const interactionType = INP_ENTRY_MAP[entry.name];\n const options = client.getOptions();\n /** Build the INP span, create an envelope from the span, and then send the envelope */\n const startTime = msToSec((browserPerformanceTimeOrigin as number) + entry.startTime);\n const duration = msToSec(metric.value);\n const interaction =\n entry.interactionId !== undefined ? interactionIdToRouteNameMapping[entry.interactionId] : undefined;\n if (interaction === undefined) {\n return;\n }\n const { routeName, parentContext, activeTransaction, user, replayId } = interaction;\n const userDisplay = user !== undefined ? user.email || user.id || user.ip_address : undefined;\n // eslint-disable-next-line deprecation/deprecation\n const profileId = activeTransaction !== undefined ? activeTransaction.getProfileId() : undefined;\n const span = new Span({\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n op: `ui.interaction.${interactionType}`,\n name: htmlTreeAsString(entry.target),\n attributes: {\n release: options.release,\n environment: options.environment,\n transaction: routeName,\n ...(userDisplay !== undefined && userDisplay !== '' ? { user: userDisplay } : {}),\n ...(profileId !== undefined ? { profile_id: profileId } : {}),\n ...(replayId !== undefined ? { replay_id: replayId } : {}),\n },\n exclusiveTime: metric.value,\n measurements: {\n inp: { value: metric.value, unit: 'millisecond' },\n },\n });\n\n /** Check to see if the span should be sampled */\n const sampleRate = getSampleRate(parentContext, options, interactionsSampleRate);\n\n if (!sampleRate) {\n return;\n }\n\n if (Math.random() < (sampleRate as number | boolean)) {\n const envelope = span ? createSpanEnvelope([span], client.getDsn()) : undefined;\n const transport = client && client.getTransport();\n if (transport && envelope) {\n transport.send(envelope).then(null, reason => {\n DEBUG_BUILD && logger.error('Error while sending interaction:', reason);\n });\n }\n return;\n }\n });\n}\n\n/** Add performance related spans to a transaction */\nexport function addPerformanceEntries(transaction: Transaction): void {\n const performance = getBrowserPerformanceAPI();\n if (!performance || !WINDOW.performance.getEntries || !browserPerformanceTimeOrigin) {\n // Gatekeeper if performance API not available\n return;\n }\n\n DEBUG_BUILD && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n const timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n const performanceEntries = performance.getEntries();\n\n const { op, start_timestamp: transactionStartTime } = spanToJSON(transaction);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n performanceEntries.slice(_performanceCursor).forEach((entry: Record) => {\n const startTime = msToSec(entry.startTime);\n const duration = msToSec(entry.duration);\n\n // eslint-disable-next-line deprecation/deprecation\n if (transaction.op === 'navigation' && transactionStartTime && timeOrigin + startTime < transactionStartTime) {\n return;\n }\n\n switch (entry.entryType) {\n case 'navigation': {\n _addNavigationSpans(transaction, entry, timeOrigin);\n break;\n }\n case 'mark':\n case 'paint':\n case 'measure': {\n _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n\n // capture web vitals\n const firstHidden = getVisibilityWatcher();\n // Only report if the page wasn't hidden prior to the web vital.\n const shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n if (entry.name === 'first-paint' && shouldRecord) {\n DEBUG_BUILD && logger.log('[Measurements] Adding FP');\n _measurements['fp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n DEBUG_BUILD && logger.log('[Measurements] Adding FCP');\n _measurements['fcp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n break;\n }\n case 'resource': {\n _addResourceSpans(transaction, entry, entry.name as string, startTime, duration, timeOrigin);\n break;\n }\n default:\n // Ignore other entry types.\n }\n });\n\n _performanceCursor = Math.max(performanceEntries.length - 1, 0);\n\n _trackNavigator(transaction);\n\n // Measurements are only available for pageload transactions\n if (op === 'pageload') {\n _addTtfbRequestTimeToMeasurements(_measurements);\n\n ['fcp', 'fp', 'lcp'].forEach(name => {\n if (!_measurements[name] || !transactionStartTime || timeOrigin >= transactionStartTime) {\n return;\n }\n // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n // to be adjusted to be relative to transaction.startTimestamp.\n const oldValue = _measurements[name].value;\n const measurementTimestamp = timeOrigin + msToSec(oldValue);\n\n // normalizedValue should be in milliseconds\n const normalizedValue = Math.abs((measurementTimestamp - transactionStartTime) * 1000);\n const delta = normalizedValue - oldValue;\n\n DEBUG_BUILD && logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n _measurements[name].value = normalizedValue;\n });\n\n const fidMark = _measurements['mark.fid'];\n if (fidMark && _measurements['fid']) {\n // create span for FID\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: fidMark.value + msToSec(_measurements['fid'].value),\n op: 'ui.action',\n origin: 'auto.ui.browser.metrics',\n startTimestamp: fidMark.value,\n });\n\n // Delete mark.fid as we don't want it to be part of final payload\n delete _measurements['mark.fid'];\n }\n\n // If FCP is not recorded we should not record the cls value\n // according to the new definition of CLS.\n if (!('fcp' in _measurements)) {\n delete _measurements.cls;\n }\n\n Object.keys(_measurements).forEach(measurementName => {\n setMeasurement(measurementName, _measurements[measurementName].value, _measurements[measurementName].unit);\n });\n\n _tagMetricInfo(transaction);\n }\n\n _lcpEntry = undefined;\n _clsEntry = undefined;\n _measurements = {};\n}\n\n/** Create measure related spans */\nexport function _addMeasureSpans(\n transaction: Transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry: Record,\n startTime: number,\n duration: number,\n timeOrigin: number,\n): number {\n const measureStartTimestamp = timeOrigin + startTime;\n const measureEndTimestamp = measureStartTimestamp + duration;\n\n _startChild(transaction, {\n description: entry.name as string,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType as string,\n origin: 'auto.resource.browser.metrics',\n startTimestamp: measureStartTimestamp,\n });\n\n return measureStartTimestamp;\n}\n\n/** Instrument navigation entries */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addNavigationSpans(transaction: Transaction, entry: Record, timeOrigin: number): void {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n });\n _addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n _addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n _addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n _addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create performance navigation related spans */\nfunction _addPerformanceNavigationTiming(\n transaction: Transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry: Record,\n event: string,\n timeOrigin: number,\n description?: string,\n eventEnd?: string,\n): void {\n const end = eventEnd ? (entry[eventEnd] as number | undefined) : (entry[`${event}End`] as number | undefined);\n const start = entry[`${event}Start`] as number | undefined;\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\n origin: 'auto.browser.browser.metrics',\n description: description || event,\n startTimestamp: timeOrigin + msToSec(start),\n endTimestamp: timeOrigin + msToSec(end),\n });\n}\n\n/** Create request and response related spans */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addRequest(transaction: Transaction, entry: Record, timeOrigin: number): void {\n if (entry.responseEnd) {\n // It is possible that we are collecting these metrics when the page hasn't finished loading yet, for example when the HTML slowly streams in.\n // In this case, ie. when the document request hasn't finished yet, `entry.responseEnd` will be 0.\n // In order not to produce faulty spans, where the end timestamp is before the start timestamp, we will only collect\n // these spans when the responseEnd value is available. The backend (Relay) would drop the entire transaction if it contained faulty spans.\n _startChild(transaction, {\n op: 'browser',\n origin: 'auto.browser.browser.metrics',\n description: 'request',\n startTimestamp: timeOrigin + msToSec(entry.requestStart as number),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd as number),\n });\n\n _startChild(transaction, {\n op: 'browser',\n origin: 'auto.browser.browser.metrics',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart as number),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd as number),\n });\n }\n}\n\nexport interface ResourceEntry extends Record {\n initiatorType?: string;\n transferSize?: number;\n encodedBodySize?: number;\n decodedBodySize?: number;\n renderBlockingStatus?: string;\n}\n\n/** Create resource-related spans */\nexport function _addResourceSpans(\n transaction: Transaction,\n entry: ResourceEntry,\n resourceUrl: string,\n startTime: number,\n duration: number,\n timeOrigin: number,\n): void {\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n return;\n }\n\n const parsedUrl = parseUrl(resourceUrl);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data: Record = {};\n setResourceEntrySizeData(data, entry, 'transferSize', 'http.response_transfer_size');\n setResourceEntrySizeData(data, entry, 'encodedBodySize', 'http.response_content_length');\n setResourceEntrySizeData(data, entry, 'decodedBodySize', 'http.decoded_response_content_length');\n\n if ('renderBlockingStatus' in entry) {\n data['resource.render_blocking_status'] = entry.renderBlockingStatus;\n }\n if (parsedUrl.protocol) {\n data['url.scheme'] = parsedUrl.protocol.split(':').pop(); // the protocol returned by parseUrl includes a :, but OTEL spec does not, so we remove it.\n }\n\n if (parsedUrl.host) {\n data['server.address'] = parsedUrl.host;\n }\n\n data['url.same_origin'] = resourceUrl.includes(WINDOW.location.origin);\n\n const startTimestamp = timeOrigin + startTime;\n const endTimestamp = startTimestamp + duration;\n\n _startChild(transaction, {\n description: resourceUrl.replace(WINDOW.location.origin, ''),\n endTimestamp,\n op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource.other',\n origin: 'auto.resource.browser.metrics',\n startTimestamp,\n data,\n });\n}\n\n/**\n * Capture the information of the user agent.\n */\nfunction _trackNavigator(transaction: Transaction): void {\n const navigator = WINDOW.navigator as null | (Navigator & NavigatorNetworkInformation & NavigatorDeviceMemory);\n if (!navigator) {\n return;\n }\n\n // track network connectivity\n const connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n\n if (connection.type) {\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setTag('connectionType', connection.type);\n }\n\n if (isMeasurementValue(connection.rtt)) {\n _measurements['connection.rtt'] = { value: connection.rtt, unit: 'millisecond' };\n }\n }\n\n if (isMeasurementValue(navigator.deviceMemory)) {\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setTag('deviceMemory', `${navigator.deviceMemory} GB`);\n }\n\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction _tagMetricInfo(transaction: Transaction): void {\n if (_lcpEntry) {\n DEBUG_BUILD && logger.log('[Measurements] Adding LCP Data');\n\n // Capture Properties of the LCP element that contributes to the LCP.\n\n if (_lcpEntry.element) {\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setTag('lcp.element', htmlTreeAsString(_lcpEntry.element));\n }\n\n if (_lcpEntry.id) {\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setTag('lcp.id', _lcpEntry.id);\n }\n\n if (_lcpEntry.url) {\n // Trim URL to the first 200 characters.\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setTag('lcp.url', _lcpEntry.url.trim().slice(0, 200));\n }\n\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setTag('lcp.size', _lcpEntry.size);\n }\n\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (_clsEntry && _clsEntry.sources) {\n DEBUG_BUILD && logger.log('[Measurements] Adding CLS Data');\n _clsEntry.sources.forEach((source, index) =>\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n );\n }\n}\n\nfunction setResourceEntrySizeData(\n data: Record,\n entry: ResourceEntry,\n key: keyof Pick,\n dataKey: 'http.response_transfer_size' | 'http.response_content_length' | 'http.decoded_response_content_length',\n): void {\n const entryVal = entry[key];\n if (entryVal != null && entryVal < MAX_INT_AS_BYTES) {\n data[dataKey] = entryVal;\n }\n}\n\n/**\n * Add ttfb request time information to measurements.\n *\n * ttfb information is added via vendored web vitals library.\n */\nfunction _addTtfbRequestTimeToMeasurements(_measurements: Measurements): void {\n const navEntry = getNavigationEntry();\n if (!navEntry) {\n return;\n }\n\n const { responseStart, requestStart } = navEntry;\n\n if (requestStart <= responseStart) {\n DEBUG_BUILD && logger.log('[Measurements] Adding TTFB Request Time');\n _measurements['ttfb.requestTime'] = {\n value: responseStart - requestStart,\n unit: 'millisecond',\n };\n }\n}\n\n/** Taken from @sentry/core sampling.ts */\nfunction getSampleRate(\n transactionContext: TransactionContext | undefined,\n options: ClientOptions,\n interactionsSampleRate: number,\n): number | boolean {\n if (!hasTracingEnabled(options)) {\n return false;\n }\n let sampleRate;\n if (transactionContext !== undefined && typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler({\n transactionContext,\n name: transactionContext.name,\n parentSampled: transactionContext.parentSampled,\n attributes: {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.data,\n ...transactionContext.attributes,\n },\n location: WINDOW.location,\n });\n } else if (transactionContext !== undefined && transactionContext.sampled !== undefined) {\n sampleRate = transactionContext.sampled;\n } else if (typeof options.tracesSampleRate !== 'undefined') {\n sampleRate = options.tracesSampleRate;\n } else {\n sampleRate = 1;\n }\n if (!isValidSampleRate(sampleRate)) {\n DEBUG_BUILD && logger.warn('[Tracing] Discarding interaction span because of invalid sample rate.');\n return false;\n }\n if (sampleRate === true) {\n return interactionsSampleRate;\n } else if (sampleRate === false) {\n return 0;\n }\n return sampleRate * interactionsSampleRate;\n}\n","import type { MeasurementUnit } from '@sentry/types';\n\nimport { getActiveTransaction } from './utils';\n\n/**\n * Adds a measurement to the current active transaction.\n */\nexport function setMeasurement(name: string, value: number, unit: MeasurementUnit): void {\n // eslint-disable-next-line deprecation/deprecation\n const transaction = getActiveTransaction();\n if (transaction) {\n // eslint-disable-next-line deprecation/deprecation\n transaction.setMeasurement(name, value, unit);\n }\n}\n","import {\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n getClient,\n getCurrentScope,\n getDynamicSamplingContextFromClient,\n getDynamicSamplingContextFromSpan,\n getIsolationScope,\n hasTracingEnabled,\n setHttpStatus,\n spanToTraceHeader,\n startInactiveSpan,\n} from '@sentry/core';\nimport type { Client, HandlerDataFetch, Scope, Span, SpanOrigin } from '@sentry/types';\nimport {\n BAGGAGE_HEADER_NAME,\n dynamicSamplingContextToSentryBaggageHeader,\n generateSentryTraceHeader,\n isInstanceOf,\n parseUrl,\n} from '@sentry/utils';\n\ntype PolymorphicRequestHeaders =\n | Record\n | Array<[string, string]>\n // the below is not preicsely the Header type used in Request, but it'll pass duck-typing\n | {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n append: (key: string, value: string) => void;\n get: (key: string) => string | null | undefined;\n };\n\n/**\n * Create and track fetch request spans for usage in combination with `addInstrumentationHandler`.\n *\n * @returns Span if a span was created, otherwise void.\n */\nexport function instrumentFetchRequest(\n handlerData: HandlerDataFetch,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n spanOrigin: SpanOrigin = 'auto.http.browser',\n): Span | undefined {\n if (!hasTracingEnabled() || !handlerData.fetchData) {\n return undefined;\n }\n\n const shouldCreateSpanResult = shouldCreateSpan(handlerData.fetchData.url);\n\n if (handlerData.endTimestamp && shouldCreateSpanResult) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n endSpan(span, handlerData);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return undefined;\n }\n\n const scope = getCurrentScope();\n const client = getClient();\n\n const { method, url } = handlerData.fetchData;\n\n const fullUrl = getFullURL(url);\n const host = fullUrl ? parseUrl(fullUrl).host : undefined;\n\n const span = shouldCreateSpanResult\n ? startInactiveSpan({\n name: `${method} ${url}`,\n onlyIfParent: true,\n attributes: {\n url,\n type: 'fetch',\n 'http.method': method,\n 'http.url': fullUrl,\n 'server.address': host,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin,\n },\n op: 'http.client',\n })\n : undefined;\n\n if (span) {\n handlerData.fetchData.__span = span.spanContext().spanId;\n spans[span.spanContext().spanId] = span;\n }\n\n if (shouldAttachHeaders(handlerData.fetchData.url) && client) {\n const request: string | Request = handlerData.args[0];\n\n // In case the user hasn't set the second argument of a fetch call we default it to `{}`.\n handlerData.args[1] = handlerData.args[1] || {};\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const options: { [key: string]: any } = handlerData.args[1];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n options.headers = addTracingHeadersToFetchRequest(request, client, scope, options, span);\n }\n\n return span;\n}\n\n/**\n * Adds sentry-trace and baggage headers to the various forms of fetch headers\n */\nexport function addTracingHeadersToFetchRequest(\n request: string | unknown, // unknown is actually type Request but we can't export DOM types from this package,\n client: Client,\n scope: Scope,\n options: {\n headers?:\n | {\n [key: string]: string[] | string | undefined;\n }\n | PolymorphicRequestHeaders;\n },\n requestSpan?: Span,\n): PolymorphicRequestHeaders | undefined {\n // eslint-disable-next-line deprecation/deprecation\n const span = requestSpan || scope.getSpan();\n\n const isolationScope = getIsolationScope();\n\n const { traceId, spanId, sampled, dsc } = {\n ...isolationScope.getPropagationContext(),\n ...scope.getPropagationContext(),\n };\n\n const sentryTraceHeader = span ? spanToTraceHeader(span) : generateSentryTraceHeader(traceId, spanId, sampled);\n\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(\n dsc ||\n (span ? getDynamicSamplingContextFromSpan(span) : getDynamicSamplingContextFromClient(traceId, client, scope)),\n );\n\n const headers =\n options.headers ||\n (typeof Request !== 'undefined' && isInstanceOf(request, Request) ? (request as Request).headers : undefined);\n\n if (!headers) {\n return { 'sentry-trace': sentryTraceHeader, baggage: sentryBaggageHeader };\n } else if (typeof Headers !== 'undefined' && isInstanceOf(headers, Headers)) {\n const newHeaders = new Headers(headers as Headers);\n\n newHeaders.append('sentry-trace', sentryTraceHeader);\n\n if (sentryBaggageHeader) {\n // If the same header is appended multiple times the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.append(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n\n return newHeaders as PolymorphicRequestHeaders;\n } else if (Array.isArray(headers)) {\n const newHeaders = [...headers, ['sentry-trace', sentryTraceHeader]];\n\n if (sentryBaggageHeader) {\n // If there are multiple entries with the same key, the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.push([BAGGAGE_HEADER_NAME, sentryBaggageHeader]);\n }\n\n return newHeaders as PolymorphicRequestHeaders;\n } else {\n const existingBaggageHeader = 'baggage' in headers ? headers.baggage : undefined;\n const newBaggageHeaders: string[] = [];\n\n if (Array.isArray(existingBaggageHeader)) {\n newBaggageHeaders.push(...existingBaggageHeader);\n } else if (existingBaggageHeader) {\n newBaggageHeaders.push(existingBaggageHeader);\n }\n\n if (sentryBaggageHeader) {\n newBaggageHeaders.push(sentryBaggageHeader);\n }\n\n return {\n ...(headers as Exclude),\n 'sentry-trace': sentryTraceHeader,\n baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n };\n }\n}\n\nfunction getFullURL(url: string): string | undefined {\n try {\n const parsed = new URL(url);\n return parsed.href;\n } catch {\n return undefined;\n }\n}\n\nfunction endSpan(span: Span, handlerData: HandlerDataFetch): void {\n if (handlerData.response) {\n setHttpStatus(span, handlerData.response.status);\n\n const contentLength =\n handlerData.response && handlerData.response.headers && handlerData.response.headers.get('content-length');\n\n if (contentLength) {\n const contentLengthNum = parseInt(contentLength);\n if (contentLengthNum > 0) {\n span.setAttribute('http.response_content_length', contentLengthNum);\n }\n }\n } else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.end();\n}\n","/* eslint-disable max-lines */\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n getClient,\n getCurrentScope,\n getDynamicSamplingContextFromClient,\n getDynamicSamplingContextFromSpan,\n getIsolationScope,\n hasTracingEnabled,\n setHttpStatus,\n spanToJSON,\n spanToTraceHeader,\n startInactiveSpan,\n} from '@sentry/core';\nimport type { HandlerDataXhr, SentryWrappedXMLHttpRequest, Span } from '@sentry/types';\nimport {\n BAGGAGE_HEADER_NAME,\n SENTRY_XHR_DATA_KEY,\n addFetchInstrumentationHandler,\n addXhrInstrumentationHandler,\n browserPerformanceTimeOrigin,\n dynamicSamplingContextToSentryBaggageHeader,\n generateSentryTraceHeader,\n parseUrl,\n stringMatchesSomePattern,\n} from '@sentry/utils';\n\nimport { instrumentFetchRequest } from '../common/fetch';\nimport { addPerformanceInstrumentationHandler } from './instrument';\nimport { WINDOW } from './types';\n\nexport const DEFAULT_TRACE_PROPAGATION_TARGETS = ['localhost', /^\\/(?!\\/)/];\n\n/** Options for Request Instrumentation */\nexport interface RequestInstrumentationOptions {\n /**\n * @deprecated Will be removed in v8.\n * Use `shouldCreateSpanForRequest` to control span creation and `tracePropagationTargets` to control\n * trace header attachment.\n */\n tracingOrigins: Array;\n\n /**\n * List of strings and/or regexes used to determine which outgoing requests will have `sentry-trace` and `baggage`\n * headers attached.\n *\n * @deprecated Use the top-level `tracePropagationTargets` option in `Sentry.init` instead.\n * This option will be removed in v8.\n *\n * Default: ['localhost', /^\\//] @see {DEFAULT_TRACE_PROPAGATION_TARGETS}\n */\n tracePropagationTargets: Array;\n\n /**\n * Flag to disable patching all together for fetch requests.\n *\n * Default: true\n */\n traceFetch: boolean;\n\n /**\n * Flag to disable patching all together for xhr requests.\n *\n * Default: true\n */\n traceXHR: boolean;\n\n /**\n * If true, Sentry will capture http timings and add them to the corresponding http spans.\n *\n * Default: true\n */\n enableHTTPTimings: boolean;\n\n /**\n * This function will be called before creating a span for a request with the given url.\n * Return false if you don't want a span for the given url.\n *\n * Default: (url: string) => true\n */\n shouldCreateSpanForRequest?(this: void, url: string): boolean;\n}\n\nexport const defaultRequestInstrumentationOptions: RequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n enableHTTPTimings: true,\n // TODO (v8): Remove this property\n tracingOrigins: DEFAULT_TRACE_PROPAGATION_TARGETS,\n tracePropagationTargets: DEFAULT_TRACE_PROPAGATION_TARGETS,\n};\n\n/** Registers span creators for xhr and fetch requests */\nexport function instrumentOutgoingRequests(_options?: Partial): void {\n const {\n traceFetch,\n traceXHR,\n // eslint-disable-next-line deprecation/deprecation\n tracePropagationTargets,\n // eslint-disable-next-line deprecation/deprecation\n tracingOrigins,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n } = {\n traceFetch: defaultRequestInstrumentationOptions.traceFetch,\n traceXHR: defaultRequestInstrumentationOptions.traceXHR,\n ..._options,\n };\n\n const shouldCreateSpan =\n typeof shouldCreateSpanForRequest === 'function' ? shouldCreateSpanForRequest : (_: string) => true;\n\n // TODO(v8) Remove tracingOrigins here\n // The only reason we're passing it in here is because this instrumentOutgoingRequests function is publicly exported\n // and we don't want to break the API. We can remove it in v8.\n const shouldAttachHeadersWithTargets = (url: string): boolean =>\n shouldAttachHeaders(url, tracePropagationTargets || tracingOrigins);\n\n const spans: Record = {};\n\n if (traceFetch) {\n addFetchInstrumentationHandler(handlerData => {\n const createdSpan = instrumentFetchRequest(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n // We cannot use `window.location` in the generic fetch instrumentation,\n // but we need it for reliable `server.address` attribute.\n // so we extend this in here\n if (createdSpan) {\n const fullUrl = getFullURL(handlerData.fetchData.url);\n const host = fullUrl ? parseUrl(fullUrl).host : undefined;\n createdSpan.setAttributes({\n 'http.url': fullUrl,\n 'server.address': host,\n });\n }\n\n if (enableHTTPTimings && createdSpan) {\n addHTTPTimings(createdSpan);\n }\n });\n }\n\n if (traceXHR) {\n addXhrInstrumentationHandler(handlerData => {\n const createdSpan = xhrCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n if (enableHTTPTimings && createdSpan) {\n addHTTPTimings(createdSpan);\n }\n });\n }\n}\n\nfunction isPerformanceResourceTiming(entry: PerformanceEntry): entry is PerformanceResourceTiming {\n return (\n entry.entryType === 'resource' &&\n 'initiatorType' in entry &&\n typeof (entry as PerformanceResourceTiming).nextHopProtocol === 'string' &&\n (entry.initiatorType === 'fetch' || entry.initiatorType === 'xmlhttprequest')\n );\n}\n\n/**\n * Creates a temporary observer to listen to the next fetch/xhr resourcing timings,\n * so that when timings hit their per-browser limit they don't need to be removed.\n *\n * @param span A span that has yet to be finished, must contain `url` on data.\n */\nfunction addHTTPTimings(span: Span): void {\n const { url } = spanToJSON(span).data || {};\n\n if (!url || typeof url !== 'string') {\n return;\n }\n\n const cleanup = addPerformanceInstrumentationHandler('resource', ({ entries }) => {\n entries.forEach(entry => {\n if (isPerformanceResourceTiming(entry) && entry.name.endsWith(url)) {\n const spanData = resourceTimingEntryToSpanData(entry);\n spanData.forEach(data => span.setAttribute(...data));\n // In the next tick, clean this handler up\n // We have to wait here because otherwise this cleans itself up before it is fully done\n setTimeout(cleanup);\n }\n });\n });\n}\n\n/**\n * Converts ALPN protocol ids to name and version.\n *\n * (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids)\n * @param nextHopProtocol PerformanceResourceTiming.nextHopProtocol\n */\nexport function extractNetworkProtocol(nextHopProtocol: string): { name: string; version: string } {\n let name = 'unknown';\n let version = 'unknown';\n let _name = '';\n for (const char of nextHopProtocol) {\n // http/1.1 etc.\n if (char === '/') {\n [name, version] = nextHopProtocol.split('/');\n break;\n }\n // h2, h3 etc.\n if (!isNaN(Number(char))) {\n name = _name === 'h' ? 'http' : _name;\n version = nextHopProtocol.split(_name)[1];\n break;\n }\n _name += char;\n }\n if (_name === nextHopProtocol) {\n // webrtc, ftp, etc.\n name = _name;\n }\n return { name, version };\n}\n\nfunction getAbsoluteTime(time: number = 0): number {\n return ((browserPerformanceTimeOrigin || performance.timeOrigin) + time) / 1000;\n}\n\nfunction resourceTimingEntryToSpanData(resourceTiming: PerformanceResourceTiming): [string, string | number][] {\n const { name, version } = extractNetworkProtocol(resourceTiming.nextHopProtocol);\n\n const timingSpanData: [string, string | number][] = [];\n\n timingSpanData.push(['network.protocol.version', version], ['network.protocol.name', name]);\n\n if (!browserPerformanceTimeOrigin) {\n return timingSpanData;\n }\n return [\n ...timingSpanData,\n ['http.request.redirect_start', getAbsoluteTime(resourceTiming.redirectStart)],\n ['http.request.fetch_start', getAbsoluteTime(resourceTiming.fetchStart)],\n ['http.request.domain_lookup_start', getAbsoluteTime(resourceTiming.domainLookupStart)],\n ['http.request.domain_lookup_end', getAbsoluteTime(resourceTiming.domainLookupEnd)],\n ['http.request.connect_start', getAbsoluteTime(resourceTiming.connectStart)],\n ['http.request.secure_connection_start', getAbsoluteTime(resourceTiming.secureConnectionStart)],\n ['http.request.connection_end', getAbsoluteTime(resourceTiming.connectEnd)],\n ['http.request.request_start', getAbsoluteTime(resourceTiming.requestStart)],\n ['http.request.response_start', getAbsoluteTime(resourceTiming.responseStart)],\n ['http.request.response_end', getAbsoluteTime(resourceTiming.responseEnd)],\n ];\n}\n\n/**\n * A function that determines whether to attach tracing headers to a request.\n * This was extracted from `instrumentOutgoingRequests` to make it easier to test shouldAttachHeaders.\n * We only export this fuction for testing purposes.\n */\nexport function shouldAttachHeaders(url: string, tracePropagationTargets: (string | RegExp)[] | undefined): boolean {\n return stringMatchesSomePattern(url, tracePropagationTargets || DEFAULT_TRACE_PROPAGATION_TARGETS);\n}\n\n/**\n * Create and track xhr request spans\n *\n * @returns Span if a span was created, otherwise void.\n */\n// eslint-disable-next-line complexity\nexport function xhrCallback(\n handlerData: HandlerDataXhr,\n shouldCreateSpan: (url: string) => boolean,\n shouldAttachHeaders: (url: string) => boolean,\n spans: Record,\n): Span | undefined {\n const xhr = handlerData.xhr;\n const sentryXhrData = xhr && xhr[SENTRY_XHR_DATA_KEY];\n\n if (!hasTracingEnabled() || !xhr || xhr.__sentry_own_request__ || !sentryXhrData) {\n return undefined;\n }\n\n const shouldCreateSpanResult = shouldCreateSpan(sentryXhrData.url);\n\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp && shouldCreateSpanResult) {\n const spanId = xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span && sentryXhrData.status_code !== undefined) {\n setHttpStatus(span, sentryXhrData.status_code);\n span.end();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return undefined;\n }\n\n const scope = getCurrentScope();\n const isolationScope = getIsolationScope();\n\n const fullUrl = getFullURL(sentryXhrData.url);\n const host = fullUrl ? parseUrl(fullUrl).host : undefined;\n\n const span = shouldCreateSpanResult\n ? startInactiveSpan({\n name: `${sentryXhrData.method} ${sentryXhrData.url}`,\n onlyIfParent: true,\n attributes: {\n type: 'xhr',\n 'http.method': sentryXhrData.method,\n 'http.url': fullUrl,\n url: sentryXhrData.url,\n 'server.address': host,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.browser',\n },\n op: 'http.client',\n })\n : undefined;\n\n if (span) {\n xhr.__sentry_xhr_span_id__ = span.spanContext().spanId;\n spans[xhr.__sentry_xhr_span_id__] = span;\n }\n\n const client = getClient();\n\n if (xhr.setRequestHeader && shouldAttachHeaders(sentryXhrData.url) && client) {\n const { traceId, spanId, sampled, dsc } = {\n ...isolationScope.getPropagationContext(),\n ...scope.getPropagationContext(),\n };\n\n const sentryTraceHeader = span ? spanToTraceHeader(span) : generateSentryTraceHeader(traceId, spanId, sampled);\n\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(\n dsc ||\n (span ? getDynamicSamplingContextFromSpan(span) : getDynamicSamplingContextFromClient(traceId, client, scope)),\n );\n\n setHeaderOnXhr(xhr, sentryTraceHeader, sentryBaggageHeader);\n }\n\n return span;\n}\n\nfunction setHeaderOnXhr(\n xhr: SentryWrappedXMLHttpRequest,\n sentryTraceHeader: string,\n sentryBaggageHeader: string | undefined,\n): void {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n xhr.setRequestHeader!('sentry-trace', sentryTraceHeader);\n if (sentryBaggageHeader) {\n // From MDN: \"If this method is called several times with the same header, the values are merged into one single request header.\"\n // We can therefore simply set a baggage header without checking what was there before\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n xhr.setRequestHeader!(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n } catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n}\n\nfunction getFullURL(url: string): string | undefined {\n try {\n // By adding a base URL to new URL(), this will also work for relative urls\n // If `url` is a full URL, the base URL is ignored anyhow\n const parsed = new URL(url, WINDOW.location.origin);\n return parsed.href;\n } catch {\n return undefined;\n }\n}\n","/* eslint-disable max-lines */\nimport type { Hub, IdleTransaction } from '@sentry/core';\nimport { getClient, getCurrentScope } from '@sentry/core';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n TRACING_DEFAULTS,\n addTracingExtensions,\n getActiveTransaction,\n startIdleTransaction,\n} from '@sentry/core';\nimport type { EventProcessor, Integration, Transaction, TransactionContext, TransactionSource } from '@sentry/types';\nimport { getDomElement, logger, propagationContextFromHeaders } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport { registerBackgroundTabDetection } from './backgroundtab';\nimport { addPerformanceInstrumentationHandler } from './instrument';\nimport {\n addPerformanceEntries,\n startTrackingINP,\n startTrackingInteractions,\n startTrackingLongTasks,\n startTrackingWebVitals,\n} from './metrics';\nimport type { RequestInstrumentationOptions } from './request';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './request';\nimport { instrumentRoutingWithDefaults } from './router';\nimport { WINDOW } from './types';\nimport type { InteractionRouteNameMapping } from './web-vitals/types';\n\nexport const BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\nexport interface BrowserTracingOptions extends RequestInstrumentationOptions {\n /**\n * The time to wait in ms until the transaction will be finished during an idle state. An idle state is defined\n * by a moment where there are no in-progress spans.\n *\n * The transaction will use the end timestamp of the last finished span as the endtime for the transaction.\n * If there are still active spans when this the `idleTimeout` is set, the `idleTimeout` will get reset.\n * Time is in ms.\n *\n * Default: 1000\n */\n idleTimeout: number;\n\n /**\n * The max duration for a transaction. If a transaction duration hits the `finalTimeout` value, it\n * will be finished.\n * Time is in ms.\n *\n * Default: 30000\n */\n finalTimeout: number;\n\n /**\n * The heartbeat interval. If no new spans are started or open spans are finished within 3 heartbeats,\n * the transaction will be finished.\n * Time is in ms.\n *\n * Default: 5000\n */\n heartbeatInterval: number;\n\n /**\n * Flag to enable/disable creation of `navigation` transaction on history changes.\n *\n * Default: true\n */\n startTransactionOnLocationChange: boolean;\n\n /**\n * Flag to enable/disable creation of `pageload` transaction on first pageload.\n *\n * Default: true\n */\n startTransactionOnPageLoad: boolean;\n\n /**\n * Flag Transactions where tabs moved to background with \"cancelled\". Browser background tab timing is\n * not suited towards doing precise measurements of operations. By default, we recommend that this option\n * be enabled as background transactions can mess up your statistics in nondeterministic ways.\n *\n * Default: true\n */\n markBackgroundTransactions: boolean;\n\n /**\n * If true, Sentry will capture long tasks and add them to the corresponding transaction.\n *\n * Default: true\n */\n enableLongTask: boolean;\n\n /**\n * If true, Sentry will capture INP web vitals as standalone spans .\n *\n * Default: false\n */\n enableInp: boolean;\n\n /**\n * Sample rate to determine interaction span sampling.\n * interactionsSampleRate is applied on top of the global tracesSampleRate.\n * ie a tracesSampleRate of 0.1 and interactionsSampleRate of 0.5 will result in a 0.05 sample rate for interactions.\n *\n * Default: 1\n */\n interactionsSampleRate: number;\n\n /**\n * _metricOptions allows the user to send options to change how metrics are collected.\n *\n * _metricOptions is currently experimental.\n *\n * Default: undefined\n */\n _metricOptions?: Partial<{\n /**\n * @deprecated This property no longer has any effect and will be removed in v8.\n */\n _reportAllChanges: boolean;\n }>;\n\n /**\n * _experiments allows the user to send options to define how this integration works.\n * Note that the `enableLongTask` options is deprecated in favor of the option at the top level, and will be removed in v8.\n *\n * TODO (v8): Remove enableLongTask\n *\n * Default: undefined\n */\n _experiments: Partial<{\n enableLongTask: boolean;\n enableInteractions: boolean;\n // eslint-disable-next-line deprecation/deprecation\n onStartRouteTransaction: (t: Transaction | undefined, ctx: TransactionContext, getCurrentHub: () => Hub) => void;\n }>;\n\n /**\n * beforeNavigate is called before a pageload/navigation transaction is created and allows users to modify transaction\n * context data, or drop the transaction entirely (by setting `sampled = false` in the context).\n *\n * Note: For legacy reasons, transactions can also be dropped by returning `undefined`.\n *\n * @param context: The context data which will be passed to `startTransaction` by default\n *\n * @returns A (potentially) modified context object, with `sampled = false` if the transaction should be dropped.\n */\n beforeNavigate?(this: void, context: TransactionContext): TransactionContext | undefined;\n\n /**\n * Instrumentation that creates routing change transactions. By default creates\n * pageload and navigation transactions.\n */\n routingInstrumentation(\n this: void,\n customStartTransaction: (context: TransactionContext) => T | undefined,\n startTransactionOnPageLoad?: boolean,\n startTransactionOnLocationChange?: boolean,\n ): void;\n}\n\nconst DEFAULT_BROWSER_TRACING_OPTIONS: BrowserTracingOptions = {\n ...TRACING_DEFAULTS,\n markBackgroundTransactions: true,\n routingInstrumentation: instrumentRoutingWithDefaults,\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true,\n enableLongTask: true,\n enableInp: false,\n interactionsSampleRate: 1,\n _experiments: {},\n ...defaultRequestInstrumentationOptions,\n};\n\n/** We store up to 10 interaction candidates max to cap memory usage. This is the same cap as getINP from web-vitals */\nconst MAX_INTERACTIONS = 10;\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n *\n * @deprecated Use `browserTracingIntegration()` instead.\n */\nexport class BrowserTracing implements Integration {\n // This class currently doesn't have a static `id` field like the other integration classes, because it prevented\n // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects.\n // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all\n // integrations.\n\n /** Browser Tracing integration options */\n public options: BrowserTracingOptions;\n\n /**\n * @inheritDoc\n */\n public name: string;\n\n // eslint-disable-next-line deprecation/deprecation\n private _getCurrentHub?: () => Hub;\n\n private _collectWebVitals: () => void;\n\n private _hasSetTracePropagationTargets: boolean;\n private _interactionIdToRouteNameMapping: InteractionRouteNameMapping;\n private _latestRoute: {\n name: string | undefined;\n context: TransactionContext | undefined;\n };\n\n public constructor(_options?: Partial) {\n this.name = BROWSER_TRACING_INTEGRATION_ID;\n this._hasSetTracePropagationTargets = false;\n\n addTracingExtensions();\n\n if (DEBUG_BUILD) {\n this._hasSetTracePropagationTargets = !!(\n _options &&\n // eslint-disable-next-line deprecation/deprecation\n (_options.tracePropagationTargets || _options.tracingOrigins)\n );\n }\n\n this.options = {\n ...DEFAULT_BROWSER_TRACING_OPTIONS,\n ..._options,\n };\n\n // Special case: enableLongTask can be set in _experiments\n // TODO (v8): Remove this in v8\n if (this.options._experiments.enableLongTask !== undefined) {\n this.options.enableLongTask = this.options._experiments.enableLongTask;\n }\n\n // TODO (v8): remove this block after tracingOrigins is removed\n // Set tracePropagationTargets to tracingOrigins if specified by the user\n // In case both are specified, tracePropagationTargets takes precedence\n // eslint-disable-next-line deprecation/deprecation\n if (_options && !_options.tracePropagationTargets && _options.tracingOrigins) {\n // eslint-disable-next-line deprecation/deprecation\n this.options.tracePropagationTargets = _options.tracingOrigins;\n }\n\n this._collectWebVitals = startTrackingWebVitals();\n /** Stores a mapping of interactionIds from PerformanceEventTimings to the origin interaction path */\n this._interactionIdToRouteNameMapping = {};\n\n if (this.options.enableInp) {\n startTrackingINP(this._interactionIdToRouteNameMapping, this.options.interactionsSampleRate);\n }\n if (this.options.enableLongTask) {\n startTrackingLongTasks();\n }\n if (this.options._experiments.enableInteractions) {\n startTrackingInteractions();\n }\n\n this._latestRoute = {\n name: undefined,\n context: undefined,\n };\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line deprecation/deprecation\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n this._getCurrentHub = getCurrentHub;\n const hub = getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const client = hub.getClient();\n const clientOptions = client && client.getOptions();\n\n const {\n routingInstrumentation: instrumentRouting,\n startTransactionOnLocationChange,\n startTransactionOnPageLoad,\n markBackgroundTransactions,\n traceFetch,\n traceXHR,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n _experiments,\n } = this.options;\n\n const clientOptionsTracePropagationTargets = clientOptions && clientOptions.tracePropagationTargets;\n // There are three ways to configure tracePropagationTargets:\n // 1. via top level client option `tracePropagationTargets`\n // 2. via BrowserTracing option `tracePropagationTargets`\n // 3. via BrowserTracing option `tracingOrigins` (deprecated)\n //\n // To avoid confusion, favour top level client option `tracePropagationTargets`, and fallback to\n // BrowserTracing option `tracePropagationTargets` and then `tracingOrigins` (deprecated).\n // This is done as it minimizes bundle size (we don't have to have undefined checks).\n //\n // If both 1 and either one of 2 or 3 are set (from above), we log out a warning.\n // eslint-disable-next-line deprecation/deprecation\n const tracePropagationTargets = clientOptionsTracePropagationTargets || this.options.tracePropagationTargets;\n if (DEBUG_BUILD && this._hasSetTracePropagationTargets && clientOptionsTracePropagationTargets) {\n logger.warn(\n '[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used.',\n );\n }\n\n instrumentRouting(\n (context: TransactionContext) => {\n const transaction = this._createRouteTransaction(context);\n\n this.options._experiments.onStartRouteTransaction &&\n this.options._experiments.onStartRouteTransaction(transaction, context, getCurrentHub);\n\n return transaction;\n },\n startTransactionOnPageLoad,\n startTransactionOnLocationChange,\n );\n\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n\n if (_experiments.enableInteractions) {\n this._registerInteractionListener();\n }\n\n if (this.options.enableInp) {\n this._registerInpInteractionListener();\n }\n\n instrumentOutgoingRequests({\n traceFetch,\n traceXHR,\n tracePropagationTargets,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n });\n }\n\n /** Create routing idle transaction. */\n private _createRouteTransaction(context: TransactionContext): Transaction | undefined {\n if (!this._getCurrentHub) {\n DEBUG_BUILD &&\n logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n const hub = this._getCurrentHub();\n\n const { beforeNavigate, idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n\n const isPageloadTransaction = context.op === 'pageload';\n\n let expandedContext: TransactionContext;\n if (isPageloadTransaction) {\n const sentryTrace = isPageloadTransaction ? getMetaContent('sentry-trace') : '';\n const baggage = isPageloadTransaction ? getMetaContent('baggage') : undefined;\n const { traceId, dsc, parentSpanId, sampled } = propagationContextFromHeaders(sentryTrace, baggage);\n expandedContext = {\n traceId,\n parentSpanId,\n parentSampled: sampled,\n ...context,\n metadata: {\n // eslint-disable-next-line deprecation/deprecation\n ...context.metadata,\n dynamicSamplingContext: dsc,\n },\n trimEnd: true,\n };\n } else {\n expandedContext = {\n trimEnd: true,\n ...context,\n };\n }\n\n const modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n // from being sent to Sentry).\n const finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n // If `beforeNavigate` set a custom name, record that fact\n // eslint-disable-next-line deprecation/deprecation\n finalContext.metadata =\n finalContext.name !== expandedContext.name\n ? // eslint-disable-next-line deprecation/deprecation\n { ...finalContext.metadata, source: 'custom' }\n : // eslint-disable-next-line deprecation/deprecation\n finalContext.metadata;\n\n this._latestRoute.name = finalContext.name;\n this._latestRoute.context = finalContext;\n\n // eslint-disable-next-line deprecation/deprecation\n if (finalContext.sampled === false) {\n DEBUG_BUILD && logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n }\n\n DEBUG_BUILD && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n const { location } = WINDOW;\n\n const idleTransaction = startIdleTransaction(\n hub,\n finalContext,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n heartbeatInterval,\n isPageloadTransaction, // should wait for finish signal if it's a pageload transaction\n );\n\n if (isPageloadTransaction) {\n if (WINDOW.document) {\n WINDOW.document.addEventListener('readystatechange', () => {\n if (['interactive', 'complete'].includes(WINDOW.document!.readyState)) {\n idleTransaction.sendAutoFinishSignal();\n }\n });\n\n if (['interactive', 'complete'].includes(WINDOW.document.readyState)) {\n idleTransaction.sendAutoFinishSignal();\n }\n }\n }\n\n idleTransaction.registerBeforeFinishCallback(transaction => {\n this._collectWebVitals();\n addPerformanceEntries(transaction);\n });\n\n return idleTransaction as Transaction;\n }\n\n /** Start listener for interaction transactions */\n private _registerInteractionListener(): void {\n let inflightInteractionTransaction: IdleTransaction | undefined;\n const registerInteractionTransaction = (): void => {\n const { idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n const op = 'ui.action.click';\n\n // eslint-disable-next-line deprecation/deprecation\n const currentTransaction = getActiveTransaction();\n if (currentTransaction && currentTransaction.op && ['navigation', 'pageload'].includes(currentTransaction.op)) {\n DEBUG_BUILD &&\n logger.warn(\n `[Tracing] Did not create ${op} transaction because a pageload or navigation transaction is in progress.`,\n );\n return undefined;\n }\n\n if (inflightInteractionTransaction) {\n inflightInteractionTransaction.setFinishReason('interactionInterrupted');\n inflightInteractionTransaction.end();\n inflightInteractionTransaction = undefined;\n }\n\n if (!this._getCurrentHub) {\n DEBUG_BUILD && logger.warn(`[Tracing] Did not create ${op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n if (!this._latestRoute.name) {\n DEBUG_BUILD && logger.warn(`[Tracing] Did not create ${op} transaction because _latestRouteName is missing.`);\n return undefined;\n }\n\n const hub = this._getCurrentHub();\n const { location } = WINDOW;\n\n const context: TransactionContext = {\n name: this._latestRoute.name,\n op,\n trimEnd: true,\n data: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: this._latestRoute.context\n ? getSource(this._latestRoute.context)\n : undefined || 'url',\n },\n };\n\n inflightInteractionTransaction = startIdleTransaction(\n hub,\n context,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n heartbeatInterval,\n );\n };\n\n ['click'].forEach(type => {\n if (WINDOW.document) {\n addEventListener(type, registerInteractionTransaction, { once: false, capture: true });\n }\n });\n }\n\n /** Creates a listener on interaction entries, and maps interactionIds to the origin path of the interaction */\n private _registerInpInteractionListener(): void {\n const handleEntries = ({ entries }: { entries: PerformanceEntry[] }): void => {\n const client = getClient();\n // We need to get the replay, user, and activeTransaction from the current scope\n // so that we can associate replay id, profile id, and a user display to the span\n const replay =\n client !== undefined && client.getIntegrationByName !== undefined\n ? (client.getIntegrationByName('Replay') as Integration & { getReplayId: () => string })\n : undefined;\n const replayId = replay !== undefined ? replay.getReplayId() : undefined;\n // eslint-disable-next-line deprecation/deprecation\n const activeTransaction = getActiveTransaction();\n const currentScope = getCurrentScope();\n const user = currentScope !== undefined ? currentScope.getUser() : undefined;\n entries.forEach(entry => {\n if (isPerformanceEventTiming(entry)) {\n const interactionId = entry.interactionId;\n if (interactionId === undefined) {\n return;\n }\n const existingInteraction = this._interactionIdToRouteNameMapping[interactionId];\n const duration = entry.duration;\n const startTime = entry.startTime;\n const keys = Object.keys(this._interactionIdToRouteNameMapping);\n const minInteractionId =\n keys.length > 0\n ? keys.reduce((a, b) => {\n return this._interactionIdToRouteNameMapping[a].duration <\n this._interactionIdToRouteNameMapping[b].duration\n ? a\n : b;\n })\n : undefined;\n // For a first input event to be considered, we must check that an interaction event does not already exist with the same duration and start time.\n // This is also checked in the web-vitals library.\n if (entry.entryType === 'first-input') {\n const matchingEntry = keys\n .map(key => this._interactionIdToRouteNameMapping[key])\n .some(interaction => {\n return interaction.duration === duration && interaction.startTime === startTime;\n });\n if (matchingEntry) {\n return;\n }\n }\n // Interactions with an id of 0 and are not first-input are not valid.\n if (!interactionId) {\n return;\n }\n // If the interaction already exists, we want to use the duration of the longest entry, since that is what the INP metric uses.\n if (existingInteraction) {\n existingInteraction.duration = Math.max(existingInteraction.duration, duration);\n } else if (\n keys.length < MAX_INTERACTIONS ||\n minInteractionId === undefined ||\n duration > this._interactionIdToRouteNameMapping[minInteractionId].duration\n ) {\n // If the interaction does not exist, we want to add it to the mapping if there is space, or if the duration is longer than the shortest entry.\n const routeName = this._latestRoute.name;\n const parentContext = this._latestRoute.context;\n if (routeName && parentContext) {\n if (minInteractionId && Object.keys(this._interactionIdToRouteNameMapping).length >= MAX_INTERACTIONS) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._interactionIdToRouteNameMapping[minInteractionId];\n }\n this._interactionIdToRouteNameMapping[interactionId] = {\n routeName,\n duration,\n parentContext,\n user,\n activeTransaction,\n replayId,\n startTime,\n };\n }\n }\n }\n });\n };\n addPerformanceInstrumentationHandler('event', handleEntries);\n addPerformanceInstrumentationHandler('first-input', handleEntries);\n }\n}\n\n/** Returns the value of a meta tag */\nexport function getMetaContent(metaName: string): string | undefined {\n // Can't specify generic to `getDomElement` because tracing can be used\n // in a variety of environments, have to disable `no-unsafe-member-access`\n // as a result.\n const metaTag = getDomElement(`meta[name=${metaName}]`);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return metaTag ? metaTag.getAttribute('content') : undefined;\n}\n\nfunction getSource(context: TransactionContext): TransactionSource | undefined {\n const sourceFromAttributes = context.attributes && context.attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n // eslint-disable-next-line deprecation/deprecation\n const sourceFromData = context.data && context.data[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n // eslint-disable-next-line deprecation/deprecation\n const sourceFromMetadata = context.metadata && context.metadata.source;\n\n return sourceFromAttributes || sourceFromData || sourceFromMetadata;\n}\n\nfunction isPerformanceEventTiming(entry: PerformanceEntry): entry is PerformanceEventTiming {\n return 'duration' in entry;\n}\n","import type { Transaction, TransactionContext } from '@sentry/types';\nimport { addHistoryInstrumentationHandler, browserPerformanceTimeOrigin, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport { WINDOW } from './types';\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nexport function instrumentRoutingWithDefaults(\n customStartTransaction: (context: TransactionContext) => T | undefined,\n startTransactionOnPageLoad: boolean = true,\n startTransactionOnLocationChange: boolean = true,\n): void {\n if (!WINDOW || !WINDOW.location) {\n DEBUG_BUILD && logger.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n\n let startingUrl: string | undefined = WINDOW.location.href;\n\n let activeTransaction: T | undefined;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n // pageload should always start at timeOrigin (and needs to be in s, not ms)\n startTimestamp: browserPerformanceTimeOrigin ? browserPerformanceTimeOrigin / 1000 : undefined,\n op: 'pageload',\n origin: 'auto.pageload.browser',\n metadata: { source: 'url' },\n });\n }\n\n if (startTransactionOnLocationChange) {\n addHistoryInstrumentationHandler(({ to, from }) => {\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n\n if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n DEBUG_BUILD && logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n // If there's an open transaction on the scope, we need to finish it before creating an new one.\n activeTransaction.end();\n }\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n op: 'navigation',\n origin: 'auto.navigation.browser',\n metadata: { source: 'url' },\n });\n }\n });\n }\n}\n","// https://github.com/alangpierce/sucrase/tree/265887868966917f3b924ce38dfad01fbab1329f\n//\n// The MIT License (MIT)\n//\n// Copyright (c) 2012-2018 various contributors (see AUTHORS)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport type { GenericFunction } from './types';\n\n/**\n * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,\n * descriptors, and functions.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15\n *\n * @param ops Array result of expression conversion\n * @returns The value of the expression\n */\nexport function _optionalChain(ops: unknown[]): unknown {\n let lastAccessLHS: unknown = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i] as string;\n const fn = ops[i + 1] as (intermediateValue: unknown) => unknown;\n i += 2;\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it\n return;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = fn((...args: unknown[]) => (value as GenericFunction).call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n}\n\n// Sucrase version\n// function _optionalChain(ops) {\n// let lastAccessLHS = undefined;\n// let value = ops[0];\n// let i = 1;\n// while (i < ops.length) {\n// const op = ops[i];\n// const fn = ops[i + 1];\n// i += 2;\n// if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n// return undefined;\n// }\n// if (op === 'access' || op === 'optionalAccess') {\n// lastAccessLHS = value;\n// value = fn(value);\n// } else if (op === 'call' || op === 'optionalCall') {\n// value = fn((...args) => value.call(lastAccessLHS, ...args));\n// lastAccessLHS = undefined;\n// }\n// }\n// return value;\n// }\n","import type { Hub } from '@sentry/types';\n\n/**\n * Check if Sentry auto-instrumentation should be disabled.\n *\n * @param getCurrentHub A method to fetch the current hub\n * @returns boolean\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function shouldDisableAutoInstrumentation(getCurrentHub: () => Hub): boolean {\n // eslint-disable-next-line deprecation/deprecation\n const clientOptions = getCurrentHub().getClient()?.getOptions();\n const instrumenter = clientOptions?.instrumenter || 'sentry';\n\n return instrumenter !== 'sentry';\n}\n","import type { Hub } from '@sentry/core';\nimport type { EventProcessor } from '@sentry/types';\nimport { arrayify, fill, isThenable, loadModule, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../../common/debug-build';\nimport type { LazyLoadedIntegration } from './lazy';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils';\n\ninterface ApolloOptions {\n useNestjs?: boolean;\n}\n\ntype ApolloResolverGroup = {\n [key: string]: () => unknown;\n};\n\ntype ApolloModelResolvers = {\n [key: string]: ApolloResolverGroup;\n};\n\ntype GraphQLModule = {\n GraphQLFactory: {\n prototype: {\n create: (resolvers: ApolloModelResolvers[]) => unknown;\n };\n };\n};\n\ntype ApolloModule = {\n ApolloServerBase: {\n prototype: {\n constructSchema: (config: unknown) => unknown;\n };\n };\n};\n\n/** Tracing integration for Apollo */\nexport class Apollo implements LazyLoadedIntegration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Apollo';\n\n /**\n * @inheritDoc\n */\n public name: string;\n\n private readonly _useNest: boolean;\n\n private _module?: GraphQLModule & ApolloModule;\n\n /**\n * @inheritDoc\n */\n public constructor(\n options: ApolloOptions = {\n useNestjs: false,\n },\n ) {\n this.name = Apollo.id;\n this._useNest = !!options.useNestjs;\n }\n\n /** @inheritdoc */\n public loadDependency(): (GraphQLModule & ApolloModule) | undefined {\n if (this._useNest) {\n this._module = this._module || loadModule('@nestjs/graphql');\n } else {\n this._module = this._module || loadModule('apollo-server-core');\n }\n\n return this._module;\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line deprecation/deprecation\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n DEBUG_BUILD && logger.log('Apollo Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n if (this._useNest) {\n const pkg = this.loadDependency();\n\n if (!pkg) {\n DEBUG_BUILD && logger.error('Apollo-NestJS Integration was unable to require @nestjs/graphql package.');\n return;\n }\n\n /**\n * Iterate over resolvers of NestJS ResolversExplorerService before schemas are constructed.\n */\n fill(\n pkg.GraphQLFactory.prototype,\n 'mergeWithSchema',\n function (orig: (this: unknown, ...args: unknown[]) => unknown) {\n return function (\n this: { resolversExplorerService: { explore: () => ApolloModelResolvers[] } },\n ...args: unknown[]\n ) {\n fill(this.resolversExplorerService, 'explore', function (orig: () => ApolloModelResolvers[]) {\n return function (this: unknown) {\n const resolvers = arrayify(orig.call(this));\n\n const instrumentedResolvers = instrumentResolvers(resolvers, getCurrentHub);\n\n return instrumentedResolvers;\n };\n });\n\n return orig.call(this, ...args);\n };\n },\n );\n } else {\n const pkg = this.loadDependency();\n\n if (!pkg) {\n DEBUG_BUILD && logger.error('Apollo Integration was unable to require apollo-server-core package.');\n return;\n }\n\n /**\n * Iterate over resolvers of the ApolloServer instance before schemas are constructed.\n */\n fill(pkg.ApolloServerBase.prototype, 'constructSchema', function (orig: (config: unknown) => unknown) {\n return function (this: {\n config: { resolvers?: ApolloModelResolvers[]; schema?: unknown; modules?: unknown };\n }) {\n if (!this.config.resolvers) {\n if (DEBUG_BUILD) {\n if (this.config.schema) {\n logger.warn(\n 'Apollo integration is not able to trace `ApolloServer` instances constructed via `schema` property.' +\n 'If you are using NestJS with Apollo, please use `Sentry.Integrations.Apollo({ useNestjs: true })` instead.',\n );\n logger.warn();\n } else if (this.config.modules) {\n logger.warn(\n 'Apollo integration is not able to trace `ApolloServer` instances constructed via `modules` property.',\n );\n }\n\n logger.error('Skipping tracing as no resolvers found on the `ApolloServer` instance.');\n }\n\n return orig.call(this);\n }\n\n const resolvers = arrayify(this.config.resolvers);\n\n this.config.resolvers = instrumentResolvers(resolvers, getCurrentHub);\n\n return orig.call(this);\n };\n });\n }\n }\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction instrumentResolvers(resolvers: ApolloModelResolvers[], getCurrentHub: () => Hub): ApolloModelResolvers[] {\n return resolvers.map(model => {\n Object.keys(model).forEach(resolverGroupName => {\n Object.keys(model[resolverGroupName]).forEach(resolverName => {\n if (typeof model[resolverGroupName][resolverName] !== 'function') {\n return;\n }\n\n wrapResolver(model, resolverGroupName, resolverName, getCurrentHub);\n });\n });\n\n return model;\n });\n}\n\n/**\n * Wrap a single resolver which can be a parent of other resolvers and/or db operations.\n */\nfunction wrapResolver(\n model: ApolloModelResolvers,\n resolverGroupName: string,\n resolverName: string,\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub: () => Hub,\n): void {\n fill(model[resolverGroupName], resolverName, function (orig: () => unknown | Promise) {\n return function (this: unknown, ...args: unknown[]) {\n // eslint-disable-next-line deprecation/deprecation\n const scope = getCurrentHub().getScope();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n // eslint-disable-next-line deprecation/deprecation\n const span = parentSpan?.startChild({\n description: `${resolverGroupName}.${resolverName}`,\n op: 'graphql.resolve',\n origin: 'auto.graphql.apollo',\n });\n\n const rv = orig.call(this, ...args);\n\n if (isThenable(rv)) {\n return rv.then((res: unknown) => {\n span?.end();\n return res;\n });\n }\n\n span?.end();\n\n return rv;\n };\n });\n}\n","import type {\n Event,\n ExtractedNodeRequestData,\n PolymorphicRequest,\n Transaction,\n TransactionSource,\n WebFetchHeaders,\n WebFetchRequest,\n} from '@sentry/types';\n\nimport { parseCookie } from './cookie';\nimport { DEBUG_BUILD } from './debug-build';\nimport { isPlainObject, isString } from './is';\nimport { logger } from './logger';\nimport { normalize } from './normalize';\nimport { stripUrlQueryAndFragment } from './url';\n\nconst DEFAULT_INCLUDES = {\n ip: false,\n request: true,\n transaction: true,\n user: true,\n};\nconst DEFAULT_REQUEST_INCLUDES = ['cookies', 'data', 'headers', 'method', 'query_string', 'url'];\nexport const DEFAULT_USER_INCLUDES = ['id', 'username', 'email'];\n\ntype InjectedNodeDeps = {\n cookie: {\n parse: (cookieStr: string) => Record;\n };\n url: {\n parse: (urlStr: string) => {\n query: string | null;\n };\n };\n};\n\n/**\n * Options deciding what parts of the request to use when enhancing an event\n */\nexport type AddRequestDataToEventOptions = {\n /** Flags controlling whether each type of data should be added to the event */\n include?: {\n ip?: boolean;\n request?: boolean | Array<(typeof DEFAULT_REQUEST_INCLUDES)[number]>;\n transaction?: boolean | TransactionNamingScheme;\n user?: boolean | Array<(typeof DEFAULT_USER_INCLUDES)[number]>;\n };\n\n /** Injected platform-specific dependencies */\n deps?: {\n cookie: {\n parse: (cookieStr: string) => Record;\n };\n url: {\n parse: (urlStr: string) => {\n query: string | null;\n };\n };\n };\n};\n\nexport type TransactionNamingScheme = 'path' | 'methodPath' | 'handler';\n\n/**\n * Sets parameterized route as transaction name e.g.: `GET /users/:id`\n * Also adds more context data on the transaction from the request.\n *\n * @deprecated This utility will be removed in v8.\n */\nexport function addRequestDataToTransaction(\n transaction: Transaction | undefined,\n req: PolymorphicRequest,\n deps?: InjectedNodeDeps,\n): void {\n if (!transaction) return;\n // eslint-disable-next-line deprecation/deprecation\n if (!transaction.metadata.source || transaction.metadata.source === 'url') {\n // Attempt to grab a parameterized route off of the request\n const [name, source] = extractPathForTransaction(req, { path: true, method: true });\n transaction.updateName(name);\n // TODO: SEMANTIC_ATTRIBUTE_SENTRY_SOURCE is in core, align this once we merge utils & core\n // eslint-disable-next-line deprecation/deprecation\n transaction.setMetadata({ source });\n }\n transaction.setAttribute('url', req.originalUrl || req.url);\n if (req.baseUrl) {\n transaction.setAttribute('baseUrl', req.baseUrl);\n }\n // TODO: We need to rewrite this to a flat format?\n // eslint-disable-next-line deprecation/deprecation\n transaction.setData('query', extractQueryParams(req, deps));\n}\n\n/**\n * Extracts a complete and parameterized path from the request object and uses it to construct transaction name.\n * If the parameterized transaction name cannot be extracted, we fall back to the raw URL.\n *\n * Additionally, this function determines and returns the transaction name source\n *\n * eg. GET /mountpoint/user/:id\n *\n * @param req A request object\n * @param options What to include in the transaction name (method, path, or a custom route name to be\n * used instead of the request's route)\n *\n * @returns A tuple of the fully constructed transaction name [0] and its source [1] (can be either 'route' or 'url')\n */\nexport function extractPathForTransaction(\n req: PolymorphicRequest,\n options: { path?: boolean; method?: boolean; customRoute?: string } = {},\n): [string, TransactionSource] {\n const method = req.method && req.method.toUpperCase();\n\n let path = '';\n let source: TransactionSource = 'url';\n\n // Check to see if there's a parameterized route we can use (as there is in Express)\n if (options.customRoute || req.route) {\n path = options.customRoute || `${req.baseUrl || ''}${req.route && req.route.path}`;\n source = 'route';\n }\n\n // Otherwise, just take the original URL\n else if (req.originalUrl || req.url) {\n path = stripUrlQueryAndFragment(req.originalUrl || req.url || '');\n }\n\n let name = '';\n if (options.method && method) {\n name += method;\n }\n if (options.method && options.path) {\n name += ' ';\n }\n if (options.path && path) {\n name += path;\n }\n\n return [name, source];\n}\n\n/** JSDoc */\nfunction extractTransaction(req: PolymorphicRequest, type: boolean | TransactionNamingScheme): string {\n switch (type) {\n case 'path': {\n return extractPathForTransaction(req, { path: true })[0];\n }\n case 'handler': {\n return (req.route && req.route.stack && req.route.stack[0] && req.route.stack[0].name) || '';\n }\n case 'methodPath':\n default: {\n // if exist _reconstructedRoute return that path instead of route.path\n const customRoute = req._reconstructedRoute ? req._reconstructedRoute : undefined;\n return extractPathForTransaction(req, { path: true, method: true, customRoute })[0];\n }\n }\n}\n\n/** JSDoc */\nfunction extractUserData(\n user: {\n [key: string]: unknown;\n },\n keys: boolean | string[],\n): { [key: string]: unknown } {\n const extractedUser: { [key: string]: unknown } = {};\n const attributes = Array.isArray(keys) ? keys : DEFAULT_USER_INCLUDES;\n\n attributes.forEach(key => {\n if (user && key in user) {\n extractedUser[key] = user[key];\n }\n });\n\n return extractedUser;\n}\n\n/**\n * Normalize data from the request object, accounting for framework differences.\n *\n * @param req The request object from which to extract data\n * @param options.include An optional array of keys to include in the normalized data. Defaults to\n * DEFAULT_REQUEST_INCLUDES if not provided.\n * @param options.deps Injected, platform-specific dependencies\n * @returns An object containing normalized request data\n */\nexport function extractRequestData(\n req: PolymorphicRequest,\n options?: {\n include?: string[];\n deps?: InjectedNodeDeps;\n },\n): ExtractedNodeRequestData {\n const { include = DEFAULT_REQUEST_INCLUDES, deps } = options || {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const requestData: { [key: string]: any } = {};\n\n // headers:\n // node, express, koa, nextjs: req.headers\n const headers = (req.headers || {}) as {\n host?: string;\n cookie?: string;\n };\n // method:\n // node, express, koa, nextjs: req.method\n const method = req.method;\n // host:\n // express: req.hostname in > 4 and req.host in < 4\n // koa: req.host\n // node, nextjs: req.headers.host\n // Express 4 mistakenly strips off port number from req.host / req.hostname so we can't rely on them\n // See: https://github.com/expressjs/express/issues/3047#issuecomment-236653223\n // Also: https://github.com/getsentry/sentry-javascript/issues/1917\n const host = headers.host || req.hostname || req.host || '';\n // protocol:\n // node, nextjs: \n // express, koa: req.protocol\n const protocol = req.protocol === 'https' || (req.socket && req.socket.encrypted) ? 'https' : 'http';\n // url (including path and query string):\n // node, express: req.originalUrl\n // koa, nextjs: req.url\n const originalUrl = req.originalUrl || req.url || '';\n // absolute url\n const absoluteUrl = originalUrl.startsWith(protocol) ? originalUrl : `${protocol}://${host}${originalUrl}`;\n include.forEach(key => {\n switch (key) {\n case 'headers': {\n requestData.headers = headers;\n\n // Remove the Cookie header in case cookie data should not be included in the event\n if (!include.includes('cookies')) {\n delete (requestData.headers as { cookie?: string }).cookie;\n }\n\n break;\n }\n case 'method': {\n requestData.method = method;\n break;\n }\n case 'url': {\n requestData.url = absoluteUrl;\n break;\n }\n case 'cookies': {\n // cookies:\n // node, express, koa: req.headers.cookie\n // vercel, sails.js, express (w/ cookie middleware), nextjs: req.cookies\n requestData.cookies =\n // TODO (v8 / #5257): We're only sending the empty object for backwards compatibility, so the last bit can\n // come off in v8\n req.cookies || (headers.cookie && parseCookie(headers.cookie)) || {};\n break;\n }\n case 'query_string': {\n // query string:\n // node: req.url (raw)\n // express, koa, nextjs: req.query\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n requestData.query_string = extractQueryParams(req, deps);\n break;\n }\n case 'data': {\n if (method === 'GET' || method === 'HEAD') {\n break;\n }\n // body data:\n // express, koa, nextjs: req.body\n //\n // when using node by itself, you have to read the incoming stream(see\n // https://nodejs.dev/learn/get-http-request-body-data-using-nodejs); if a user is doing that, we can't know\n // where they're going to store the final result, so they'll have to capture this data themselves\n if (req.body !== undefined) {\n requestData.data = isString(req.body) ? req.body : JSON.stringify(normalize(req.body));\n }\n break;\n }\n default: {\n if ({}.hasOwnProperty.call(req, key)) {\n requestData[key] = (req as { [key: string]: unknown })[key];\n }\n }\n }\n });\n\n return requestData;\n}\n\n/**\n * Add data from the given request to the given event\n *\n * @param event The event to which the request data will be added\n * @param req Request object\n * @param options.include Flags to control what data is included\n * @param options.deps Injected platform-specific dependencies\n * @returns The mutated `Event` object\n */\nexport function addRequestDataToEvent(\n event: Event,\n req: PolymorphicRequest,\n options?: AddRequestDataToEventOptions,\n): Event {\n const include = {\n ...DEFAULT_INCLUDES,\n ...(options && options.include),\n };\n\n if (include.request) {\n const extractedRequestData = Array.isArray(include.request)\n ? extractRequestData(req, { include: include.request, deps: options && options.deps })\n : extractRequestData(req, { deps: options && options.deps });\n\n event.request = {\n ...event.request,\n ...extractedRequestData,\n };\n }\n\n if (include.user) {\n const extractedUser = req.user && isPlainObject(req.user) ? extractUserData(req.user, include.user) : {};\n\n if (Object.keys(extractedUser).length) {\n event.user = {\n ...event.user,\n ...extractedUser,\n };\n }\n }\n\n // client ip:\n // node, nextjs: req.socket.remoteAddress\n // express, koa: req.ip\n if (include.ip) {\n const ip = req.ip || (req.socket && req.socket.remoteAddress);\n if (ip) {\n event.user = {\n ...event.user,\n ip_address: ip,\n };\n }\n }\n\n if (include.transaction && !event.transaction) {\n // TODO do we even need this anymore?\n // TODO make this work for nextjs\n event.transaction = extractTransaction(req, include.transaction);\n }\n\n return event;\n}\n\nfunction extractQueryParams(\n req: PolymorphicRequest,\n deps?: InjectedNodeDeps,\n): string | Record | undefined {\n // url (including path and query string):\n // node, express: req.originalUrl\n // koa, nextjs: req.url\n let originalUrl = req.originalUrl || req.url || '';\n\n if (!originalUrl) {\n return;\n }\n\n // The `URL` constructor can't handle internal URLs of the form `/some/path/here`, so stick a dummy protocol and\n // hostname on the beginning. Since the point here is just to grab the query string, it doesn't matter what we use.\n if (originalUrl.startsWith('/')) {\n originalUrl = `http://dogs.are.great${originalUrl}`;\n }\n\n try {\n return (\n req.query ||\n (typeof URL !== 'undefined' && new URL(originalUrl).search.slice(1)) ||\n // In Node 8, `URL` isn't in the global scope, so we have to use the built-in module from Node\n (deps && deps.url && deps.url.parse(originalUrl).query) ||\n undefined\n );\n } catch {\n return undefined;\n }\n}\n\n/**\n * Transforms a `Headers` object that implements the `Web Fetch API` (https://developer.mozilla.org/en-US/docs/Web/API/Headers) into a simple key-value dict.\n * The header keys will be lower case: e.g. A \"Content-Type\" header will be stored as \"content-type\".\n */\n// TODO(v8): Make this function return undefined when the extraction fails.\nexport function winterCGHeadersToDict(winterCGHeaders: WebFetchHeaders): Record {\n const headers: Record = {};\n try {\n winterCGHeaders.forEach((value, key) => {\n if (typeof value === 'string') {\n // We check that value is a string even though it might be redundant to make sure prototype pollution is not possible.\n headers[key] = value;\n }\n });\n } catch (e) {\n DEBUG_BUILD &&\n logger.warn('Sentry failed extracting headers from a request object. If you see this, please file an issue.');\n }\n\n return headers;\n}\n\n/**\n * Converts a `Request` object that implements the `Web Fetch API` (https://developer.mozilla.org/en-US/docs/Web/API/Headers) into the format that the `RequestData` integration understands.\n */\nexport function winterCGRequestToRequestData(req: WebFetchRequest): PolymorphicRequest {\n const headers = winterCGHeadersToDict(req.headers);\n return {\n method: req.method,\n url: req.url,\n headers,\n };\n}\n","/* eslint-disable max-lines */\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, spanToJSON } from '@sentry/core';\nimport type { Hub, Integration, PolymorphicRequest, Transaction } from '@sentry/types';\nimport {\n GLOBAL_OBJ,\n extractPathForTransaction,\n getNumberOfUrlSegments,\n isRegExp,\n logger,\n stripUrlQueryAndFragment,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../../common/debug-build';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils';\n\ntype Method =\n | 'all'\n | 'get'\n | 'post'\n | 'put'\n | 'delete'\n | 'patch'\n | 'options'\n | 'head'\n | 'checkout'\n | 'copy'\n | 'lock'\n | 'merge'\n | 'mkactivity'\n | 'mkcol'\n | 'move'\n | 'm-search'\n | 'notify'\n | 'purge'\n | 'report'\n | 'search'\n | 'subscribe'\n | 'trace'\n | 'unlock'\n | 'unsubscribe'\n | 'use';\n\ntype Router = {\n [method in Method]: (...args: any) => any; // eslint-disable-line @typescript-eslint/no-explicit-any\n};\n\n/* Extend the PolymorphicRequest type with a patched parameter to build a reconstructed route */\ntype PatchedRequest = PolymorphicRequest & { _reconstructedRoute?: string; _hasParameters?: boolean };\n\n/* Types used for patching the express router prototype */\ntype ExpressRouter = Router & {\n _router?: ExpressRouter;\n stack?: Layer[];\n lazyrouter?: () => void;\n settings?: unknown;\n process_params: (\n layer: Layer,\n called: unknown,\n req: PatchedRequest,\n res: ExpressResponse,\n done: () => void,\n ) => unknown;\n};\n\ntype Layer = {\n match: (path: string) => boolean;\n handle_request: (req: PatchedRequest, res: ExpressResponse, next: () => void) => void;\n route?: { path: RouteType | RouteType[] };\n path?: string;\n regexp?: RegExp;\n keys?: { name: string | number; offset: number; optional: boolean }[];\n};\n\ntype RouteType = string | RegExp;\n\ninterface ExpressResponse {\n once(name: string, callback: () => void): void;\n}\n\n/**\n * Internal helper for `__sentry_transaction`\n * @hidden\n */\ninterface SentryTracingResponse {\n __sentry_transaction?: Transaction;\n}\n\n/**\n * Express integration\n *\n * Provides an request and error handler for Express framework as well as tracing capabilities\n */\nexport class Express implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Express';\n\n /**\n * @inheritDoc\n */\n public name: string;\n\n /**\n * Express App instance\n */\n private readonly _router?: Router;\n private readonly _methods?: Method[];\n\n /**\n * @inheritDoc\n */\n public constructor(options: { app?: Router; router?: Router; methods?: Method[] } = {}) {\n this.name = Express.id;\n this._router = options.router || options.app;\n this._methods = (Array.isArray(options.methods) ? options.methods : []).concat('use');\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line deprecation/deprecation\n public setupOnce(_: unknown, getCurrentHub: () => Hub): void {\n if (!this._router) {\n DEBUG_BUILD && logger.error('ExpressIntegration is missing an Express instance');\n return;\n }\n\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n DEBUG_BUILD && logger.log('Express Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n instrumentMiddlewares(this._router, this._methods);\n instrumentRouter(this._router as ExpressRouter);\n }\n}\n\n/**\n * Wraps original middleware function in a tracing call, which stores the info about the call as a span,\n * and finishes it once the middleware is done invoking.\n *\n * Express middlewares have 3 various forms, thus we have to take care of all of them:\n * // sync\n * app.use(function (req, res) { ... })\n * // async\n * app.use(function (req, res, next) { ... })\n * // error handler\n * app.use(function (err, req, res, next) { ... })\n *\n * They all internally delegate to the `router[method]` of the given application instance.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types, @typescript-eslint/no-explicit-any\nfunction wrap(fn: Function, method: Method): (...args: any[]) => void {\n const arity = fn.length;\n\n switch (arity) {\n case 2: {\n return function (this: NodeJS.Global, req: unknown, res: ExpressResponse & SentryTracingResponse): void {\n const transaction = res.__sentry_transaction;\n if (transaction) {\n // eslint-disable-next-line deprecation/deprecation\n const span = transaction.startChild({\n description: fn.name,\n op: `middleware.express.${method}`,\n origin: 'auto.middleware.express',\n });\n res.once('finish', () => {\n span.end();\n });\n }\n return fn.call(this, req, res);\n };\n }\n case 3: {\n return function (\n this: NodeJS.Global,\n req: unknown,\n res: ExpressResponse & SentryTracingResponse,\n next: () => void,\n ): void {\n const transaction = res.__sentry_transaction;\n // eslint-disable-next-line deprecation/deprecation\n const span = transaction?.startChild({\n description: fn.name,\n op: `middleware.express.${method}`,\n origin: 'auto.middleware.express',\n });\n fn.call(this, req, res, function (this: NodeJS.Global, ...args: unknown[]): void {\n span?.end();\n next.call(this, ...args);\n });\n };\n }\n case 4: {\n return function (\n this: NodeJS.Global,\n err: Error,\n req: Request,\n res: Response & SentryTracingResponse,\n next: () => void,\n ): void {\n const transaction = res.__sentry_transaction;\n // eslint-disable-next-line deprecation/deprecation\n const span = transaction?.startChild({\n description: fn.name,\n op: `middleware.express.${method}`,\n origin: 'auto.middleware.express',\n });\n fn.call(this, err, req, res, function (this: NodeJS.Global, ...args: unknown[]): void {\n span?.end();\n next.call(this, ...args);\n });\n };\n }\n default: {\n throw new Error(`Express middleware takes 2-4 arguments. Got: ${arity}`);\n }\n }\n}\n\n/**\n * Takes all the function arguments passed to the original `app` or `router` method, eg. `app.use` or `router.use`\n * and wraps every function, as well as array of functions with a call to our `wrap` method.\n * We have to take care of the arrays as well as iterate over all of the arguments,\n * as `app.use` can accept middlewares in few various forms.\n *\n * app.use([], )\n * app.use([], , ...)\n * app.use([], ...[])\n */\nfunction wrapMiddlewareArgs(args: unknown[], method: Method): unknown[] {\n return args.map((arg: unknown) => {\n if (typeof arg === 'function') {\n return wrap(arg, method);\n }\n\n if (Array.isArray(arg)) {\n return arg.map((a: unknown) => {\n if (typeof a === 'function') {\n return wrap(a, method);\n }\n return a;\n });\n }\n\n return arg;\n });\n}\n\n/**\n * Patches original router to utilize our tracing functionality\n */\nfunction patchMiddleware(router: Router, method: Method): Router {\n const originalCallback = router[method];\n\n router[method] = function (...args: unknown[]): void {\n return originalCallback.call(this, ...wrapMiddlewareArgs(args, method));\n };\n\n return router;\n}\n\n/**\n * Patches original router methods\n */\nfunction instrumentMiddlewares(router: Router, methods: Method[] = []): void {\n methods.forEach((method: Method) => patchMiddleware(router, method));\n}\n\n/**\n * Patches the prototype of Express.Router to accumulate the resolved route\n * if a layer instance's `match` function was called and it returned a successful match.\n *\n * @see https://github.com/expressjs/express/blob/master/lib/router/index.js\n *\n * @param appOrRouter the router instance which can either be an app (i.e. top-level) or a (nested) router.\n */\nfunction instrumentRouter(appOrRouter: ExpressRouter): void {\n // This is how we can distinguish between app and routers\n const isApp = 'settings' in appOrRouter;\n\n // In case the app's top-level router hasn't been initialized yet, we have to do it now\n if (isApp && appOrRouter._router === undefined && appOrRouter.lazyrouter) {\n appOrRouter.lazyrouter();\n }\n\n const router = isApp ? appOrRouter._router : appOrRouter;\n\n if (!router) {\n /*\n If we end up here, this means likely that this integration is used with Express 3 or Express 5.\n For now, we don't support these versions (3 is very old and 5 is still in beta). To support Express 5,\n we'd need to make more changes to the routing instrumentation because the router is no longer part of\n the Express core package but maintained in its own package. The new router has different function\n signatures and works slightly differently, demanding more changes than just taking the router from\n `app.router` instead of `app._router`.\n @see https://github.com/pillarjs/router\n\n TODO: Proper Express 5 support\n */\n DEBUG_BUILD && logger.debug('Cannot instrument router for URL Parameterization (did not find a valid router).');\n DEBUG_BUILD && logger.debug('Routing instrumentation is currently only supported in Express 4.');\n return;\n }\n\n const routerProto = Object.getPrototypeOf(router) as ExpressRouter;\n\n const originalProcessParams = routerProto.process_params;\n routerProto.process_params = function process_params(\n layer: Layer,\n called: unknown,\n req: PatchedRequest,\n res: ExpressResponse & SentryTracingResponse,\n done: () => unknown,\n ) {\n // Base case: We're in the first part of the URL (thus we start with the root '/')\n if (!req._reconstructedRoute) {\n req._reconstructedRoute = '';\n }\n\n // If the layer's partial route has params, is a regex or an array, the route is stored in layer.route.\n const { layerRoutePath, isRegex, isArray, numExtraSegments }: LayerRoutePathInfo = getLayerRoutePathInfo(layer);\n\n if (layerRoutePath || isRegex || isArray) {\n req._hasParameters = true;\n }\n\n // Otherwise, the hardcoded path (i.e. a partial route without params) is stored in layer.path\n let partialRoute;\n\n if (layerRoutePath) {\n partialRoute = layerRoutePath;\n } else {\n /**\n * prevent duplicate segment in _reconstructedRoute param if router match multiple routes before final path\n * example:\n * original url: /api/v1/1234\n * prevent: /api/api/v1/:userId\n * router structure\n * /api -> middleware\n * /api/v1 -> middleware\n * /1234 -> endpoint with param :userId\n * final _reconstructedRoute is /api/v1/:userId\n */\n partialRoute = preventDuplicateSegments(req.originalUrl, req._reconstructedRoute, layer.path) || '';\n }\n\n // Normalize the partial route so that it doesn't contain leading or trailing slashes\n // and exclude empty or '*' wildcard routes.\n // The exclusion of '*' routes is our best effort to not \"pollute\" the transaction name\n // with interim handlers (e.g. ones that check authentication or do other middleware stuff).\n // We want to end up with the parameterized URL of the incoming request without any extraneous path segments.\n const finalPartialRoute = partialRoute\n .split('/')\n .filter(segment => segment.length > 0 && (isRegex || isArray || !segment.includes('*')))\n .join('/');\n\n // If we found a valid partial URL, we append it to the reconstructed route\n if (finalPartialRoute && finalPartialRoute.length > 0) {\n // If the partial route is from a regex route, we append a '/' to close the regex\n req._reconstructedRoute += `/${finalPartialRoute}${isRegex ? '/' : ''}`;\n }\n\n // Now we check if we are in the \"last\" part of the route. We determine this by comparing the\n // number of URL segments from the original URL to that of our reconstructed parameterized URL.\n // If we've reached our final destination, we update the transaction name.\n const urlLength = getNumberOfUrlSegments(stripUrlQueryAndFragment(req.originalUrl || '')) + numExtraSegments;\n const routeLength = getNumberOfUrlSegments(req._reconstructedRoute);\n\n if (urlLength === routeLength) {\n if (!req._hasParameters) {\n if (req._reconstructedRoute !== req.originalUrl) {\n req._reconstructedRoute = req.originalUrl ? stripUrlQueryAndFragment(req.originalUrl) : req.originalUrl;\n }\n }\n\n const transaction = res.__sentry_transaction;\n const attributes = (transaction && spanToJSON(transaction).data) || {};\n if (transaction && attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] !== 'custom') {\n // If the request URL is '/' or empty, the reconstructed route will be empty.\n // Therefore, we fall back to setting the final route to '/' in this case.\n const finalRoute = req._reconstructedRoute || '/';\n\n const [name, source] = extractPathForTransaction(req, { path: true, method: true, customRoute: finalRoute });\n transaction.updateName(name);\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source);\n }\n }\n\n return originalProcessParams.call(this, layer, called, req, res, done);\n };\n}\n\ntype LayerRoutePathInfo = {\n layerRoutePath?: string;\n isRegex: boolean;\n isArray: boolean;\n numExtraSegments: number;\n};\n\n/**\n * Recreate layer.route.path from layer.regexp and layer.keys.\n * Works until express.js used package path-to-regexp@0.1.7\n * or until layer.keys contain offset attribute\n *\n * @param layer the layer to extract the stringified route from\n *\n * @returns string in layer.route.path structure 'router/:pathParam' or undefined\n */\nexport const extractOriginalRoute = (\n path?: Layer['path'],\n regexp?: Layer['regexp'],\n keys?: Layer['keys'],\n): string | undefined => {\n if (\n !path ||\n !regexp ||\n !keys ||\n Object.keys(keys).length === 0 ||\n keys[0]?.offset === undefined ||\n keys[0]?.offset === null\n ) {\n return undefined;\n }\n const orderedKeys = keys.sort((a, b) => a.offset - b.offset);\n\n // add d flag for getting indices from regexp result\n // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor -- regexp comes from express.js\n const pathRegex = new RegExp(regexp, `${regexp.flags}d`);\n /**\n * use custom type cause of TS error with missing indices in RegExpExecArray\n */\n const execResult = pathRegex.exec(path) as (RegExpExecArray & { indices: [number, number][] }) | null;\n\n if (!execResult || !execResult.indices) {\n return undefined;\n }\n /**\n * remove first match from regex cause contain whole layer.path\n */\n const [, ...paramIndices] = execResult.indices;\n\n if (paramIndices.length !== orderedKeys.length) {\n return undefined;\n }\n let resultPath = path;\n let indexShift = 0;\n\n /**\n * iterate param matches from regexp.exec\n */\n paramIndices.forEach((item: [number, number] | undefined, index: number) => {\n /** check if offsets is define because in some cases regex d flag returns undefined */\n if (item) {\n const [startOffset, endOffset] = item;\n /**\n * isolate part before param\n */\n const substr1 = resultPath.substring(0, startOffset - indexShift);\n /**\n * define paramName as replacement in format :pathParam\n */\n const replacement = `:${orderedKeys[index].name}`;\n\n /**\n * isolate part after param\n */\n const substr2 = resultPath.substring(endOffset - indexShift);\n\n /**\n * recreate original path but with param replacement\n */\n resultPath = substr1 + replacement + substr2;\n\n /**\n * calculate new index shift after resultPath was modified\n */\n indexShift = indexShift + (endOffset - startOffset - replacement.length);\n }\n });\n\n return resultPath;\n};\n\n/**\n * Extracts and stringifies the layer's route which can either be a string with parameters (`users/:id`),\n * a RegEx (`/test/`) or an array of strings and regexes (`['/path1', /\\/path[2-5]/, /path/:id]`). Additionally\n * returns extra information about the route, such as if the route is defined as regex or as an array.\n *\n * @param layer the layer to extract the stringified route from\n *\n * @returns an object containing the stringified route, a flag determining if the route was a regex\n * and the number of extra segments to the matched path that are additionally in the route,\n * if the route was an array (defaults to 0).\n */\nfunction getLayerRoutePathInfo(layer: Layer): LayerRoutePathInfo {\n let lrp = layer.route?.path;\n\n const isRegex = isRegExp(lrp);\n const isArray = Array.isArray(lrp);\n\n if (!lrp) {\n // parse node.js major version\n // Next.js will complain if we directly use `proces.versions` here because of edge runtime.\n const [major] = (GLOBAL_OBJ as unknown as NodeJS.Global).process.versions.node.split('.').map(Number);\n\n // allow call extractOriginalRoute only if node version support Regex d flag, node 16+\n if (major >= 16) {\n /**\n * If lrp does not exist try to recreate original layer path from route regexp\n */\n lrp = extractOriginalRoute(layer.path, layer.regexp, layer.keys);\n }\n }\n\n if (!lrp) {\n return { isRegex, isArray, numExtraSegments: 0 };\n }\n\n const numExtraSegments = isArray\n ? Math.max(getNumberOfArrayUrlSegments(lrp as RouteType[]) - getNumberOfUrlSegments(layer.path || ''), 0)\n : 0;\n\n const layerRoutePath = getLayerRoutePathString(isArray, lrp);\n\n return { layerRoutePath, isRegex, isArray, numExtraSegments };\n}\n\n/**\n * Returns the number of URL segments in an array of routes\n *\n * Example: ['/api/test', /\\/api\\/post[0-9]/, '/users/:id/details`] -> 7\n */\nfunction getNumberOfArrayUrlSegments(routesArray: RouteType[]): number {\n return routesArray.reduce((accNumSegments: number, currentRoute: RouteType) => {\n // array members can be a RegEx -> convert them toString\n return accNumSegments + getNumberOfUrlSegments(currentRoute.toString());\n }, 0);\n}\n\n/**\n * Extracts and returns the stringified version of the layers route path\n * Handles route arrays (by joining the paths together) as well as RegExp and normal\n * string values (in the latter case the toString conversion is technically unnecessary but\n * it doesn't hurt us either).\n */\nfunction getLayerRoutePathString(isArray: boolean, lrp?: RouteType | RouteType[]): string | undefined {\n if (isArray) {\n return (lrp as RouteType[]).map(r => r.toString()).join(',');\n }\n return lrp && lrp.toString();\n}\n\n/**\n * remove duplicate segment contain in layerPath against reconstructedRoute,\n * and return only unique segment that can be added into reconstructedRoute\n */\nexport function preventDuplicateSegments(\n originalUrl?: string,\n reconstructedRoute?: string,\n layerPath?: string,\n): string | undefined {\n // filter query params\n const normalizeURL = stripUrlQueryAndFragment(originalUrl || '');\n const originalUrlSplit = normalizeURL?.split('/').filter(v => !!v);\n let tempCounter = 0;\n const currentOffset = reconstructedRoute?.split('/').filter(v => !!v).length || 0;\n const result = layerPath\n ?.split('/')\n .filter(segment => {\n if (originalUrlSplit?.[currentOffset + tempCounter] === segment) {\n tempCounter += 1;\n return true;\n }\n return false;\n })\n .join('/');\n return result;\n}\n","import type { Hub } from '@sentry/core';\nimport type { EventProcessor } from '@sentry/types';\nimport { fill, isThenable, loadModule, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../../common/debug-build';\nimport type { LazyLoadedIntegration } from './lazy';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils';\n\ntype GraphQLModule = {\n [method: string]: (...args: unknown[]) => unknown;\n};\n\n/** Tracing integration for graphql package */\nexport class GraphQL implements LazyLoadedIntegration {\n /**\n * @inheritDoc\n */\n public static id: string = 'GraphQL';\n\n /**\n * @inheritDoc\n */\n public name: string;\n\n private _module?: GraphQLModule;\n\n public constructor() {\n this.name = GraphQL.id;\n }\n\n /** @inheritdoc */\n public loadDependency(): GraphQLModule | undefined {\n return (this._module = this._module || loadModule('graphql/execution/execute.js'));\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line deprecation/deprecation\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n DEBUG_BUILD && logger.log('GraphQL Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n const pkg = this.loadDependency();\n\n if (!pkg) {\n DEBUG_BUILD && logger.error('GraphQL Integration was unable to require graphql/execution package.');\n return;\n }\n\n fill(pkg, 'execute', function (orig: () => void | Promise) {\n return function (this: unknown, ...args: unknown[]) {\n // eslint-disable-next-line deprecation/deprecation\n const scope = getCurrentHub().getScope();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n // eslint-disable-next-line deprecation/deprecation\n const span = parentSpan?.startChild({\n description: 'execute',\n op: 'graphql.execute',\n origin: 'auto.graphql.graphql',\n });\n\n // eslint-disable-next-line deprecation/deprecation\n scope?.setSpan(span);\n\n const rv = orig.call(this, ...args);\n\n if (isThenable(rv)) {\n return rv.then((res: unknown) => {\n span?.end();\n // eslint-disable-next-line deprecation/deprecation\n scope?.setSpan(parentSpan);\n\n return res;\n });\n }\n\n span?.end();\n // eslint-disable-next-line deprecation/deprecation\n scope?.setSpan(parentSpan);\n return rv;\n };\n });\n }\n}\n","import type { Hub } from '@sentry/core';\nimport type { EventProcessor, SpanContext } from '@sentry/types';\nimport { fill, isThenable, loadModule, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../../common/debug-build';\nimport type { LazyLoadedIntegration } from './lazy';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils';\n\n// This allows us to use the same array for both defaults options and the type itself.\n// (note `as const` at the end to make it a union of string literal types (i.e. \"a\" | \"b\" | ... )\n// and not just a string[])\ntype Operation = (typeof OPERATIONS)[number];\nconst OPERATIONS = [\n 'aggregate', // aggregate(pipeline, options, callback)\n 'bulkWrite', // bulkWrite(operations, options, callback)\n 'countDocuments', // countDocuments(query, options, callback)\n 'createIndex', // createIndex(fieldOrSpec, options, callback)\n 'createIndexes', // createIndexes(indexSpecs, options, callback)\n 'deleteMany', // deleteMany(filter, options, callback)\n 'deleteOne', // deleteOne(filter, options, callback)\n 'distinct', // distinct(key, query, options, callback)\n 'drop', // drop(options, callback)\n 'dropIndex', // dropIndex(indexName, options, callback)\n 'dropIndexes', // dropIndexes(options, callback)\n 'estimatedDocumentCount', // estimatedDocumentCount(options, callback)\n 'find', // find(query, options, callback)\n 'findOne', // findOne(query, options, callback)\n 'findOneAndDelete', // findOneAndDelete(filter, options, callback)\n 'findOneAndReplace', // findOneAndReplace(filter, replacement, options, callback)\n 'findOneAndUpdate', // findOneAndUpdate(filter, update, options, callback)\n 'indexes', // indexes(options, callback)\n 'indexExists', // indexExists(indexes, options, callback)\n 'indexInformation', // indexInformation(options, callback)\n 'initializeOrderedBulkOp', // initializeOrderedBulkOp(options, callback)\n 'insertMany', // insertMany(docs, options, callback)\n 'insertOne', // insertOne(doc, options, callback)\n 'isCapped', // isCapped(options, callback)\n 'mapReduce', // mapReduce(map, reduce, options, callback)\n 'options', // options(options, callback)\n 'parallelCollectionScan', // parallelCollectionScan(options, callback)\n 'rename', // rename(newName, options, callback)\n 'replaceOne', // replaceOne(filter, doc, options, callback)\n 'stats', // stats(options, callback)\n 'updateMany', // updateMany(filter, update, options, callback)\n 'updateOne', // updateOne(filter, update, options, callback)\n] as const;\n\n// All of the operations above take `options` and `callback` as their final parameters, but some of them\n// take additional parameters as well. For those operations, this is a map of\n// { : [] }, as a way to know what to call the operation's\n// positional arguments when we add them to the span's `data` object later\nconst OPERATION_SIGNATURES: {\n [op in Operation]?: string[];\n} = {\n // aggregate intentionally not included because `pipeline` arguments are too complex to serialize well\n // see https://github.com/getsentry/sentry-javascript/pull/3102\n bulkWrite: ['operations'],\n countDocuments: ['query'],\n createIndex: ['fieldOrSpec'],\n createIndexes: ['indexSpecs'],\n deleteMany: ['filter'],\n deleteOne: ['filter'],\n distinct: ['key', 'query'],\n dropIndex: ['indexName'],\n find: ['query'],\n findOne: ['query'],\n findOneAndDelete: ['filter'],\n findOneAndReplace: ['filter', 'replacement'],\n findOneAndUpdate: ['filter', 'update'],\n indexExists: ['indexes'],\n insertMany: ['docs'],\n insertOne: ['doc'],\n mapReduce: ['map', 'reduce'],\n rename: ['newName'],\n replaceOne: ['filter', 'doc'],\n updateMany: ['filter', 'update'],\n updateOne: ['filter', 'update'],\n};\n\ninterface MongoCollection {\n collectionName: string;\n dbName: string;\n namespace: string;\n prototype: {\n [operation in Operation]: (...args: unknown[]) => unknown;\n };\n}\n\ninterface MongoOptions {\n operations?: Operation[];\n describeOperations?: boolean | Operation[];\n useMongoose?: boolean;\n}\n\ninterface MongoCursor {\n once(event: 'close', listener: () => void): void;\n}\n\nfunction isCursor(maybeCursor: MongoCursor): maybeCursor is MongoCursor {\n return maybeCursor && typeof maybeCursor === 'object' && maybeCursor.once && typeof maybeCursor.once === 'function';\n}\n\ntype MongoModule = { Collection: MongoCollection };\n\n/** Tracing integration for mongo package */\nexport class Mongo implements LazyLoadedIntegration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Mongo';\n\n /**\n * @inheritDoc\n */\n public name: string;\n\n private _operations: Operation[];\n private _describeOperations?: boolean | Operation[];\n private _useMongoose: boolean;\n\n private _module?: MongoModule;\n\n /**\n * @inheritDoc\n */\n public constructor(options: MongoOptions = {}) {\n this.name = Mongo.id;\n this._operations = Array.isArray(options.operations) ? options.operations : (OPERATIONS as unknown as Operation[]);\n this._describeOperations = 'describeOperations' in options ? options.describeOperations : true;\n this._useMongoose = !!options.useMongoose;\n }\n\n /** @inheritdoc */\n public loadDependency(): MongoModule | undefined {\n const moduleName = this._useMongoose ? 'mongoose' : 'mongodb';\n return (this._module = this._module || loadModule(moduleName));\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line deprecation/deprecation\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n DEBUG_BUILD && logger.log('Mongo Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n const pkg = this.loadDependency();\n\n if (!pkg) {\n const moduleName = this._useMongoose ? 'mongoose' : 'mongodb';\n DEBUG_BUILD && logger.error(`Mongo Integration was unable to require \\`${moduleName}\\` package.`);\n return;\n }\n\n this._instrumentOperations(pkg.Collection, this._operations, getCurrentHub);\n }\n\n /**\n * Patches original collection methods\n */\n // eslint-disable-next-line deprecation/deprecation\n private _instrumentOperations(collection: MongoCollection, operations: Operation[], getCurrentHub: () => Hub): void {\n operations.forEach((operation: Operation) => this._patchOperation(collection, operation, getCurrentHub));\n }\n\n /**\n * Patches original collection to utilize our tracing functionality\n */\n // eslint-disable-next-line deprecation/deprecation\n private _patchOperation(collection: MongoCollection, operation: Operation, getCurrentHub: () => Hub): void {\n if (!(operation in collection.prototype)) return;\n\n const getSpanContext = this._getSpanContextFromOperationArguments.bind(this);\n\n fill(collection.prototype, operation, function (orig: () => void | Promise) {\n return function (this: unknown, ...args: unknown[]) {\n const lastArg = args[args.length - 1];\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const scope = hub.getScope();\n // eslint-disable-next-line deprecation/deprecation\n const client = hub.getClient();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const sendDefaultPii = client?.getOptions().sendDefaultPii;\n\n // Check if the operation was passed a callback. (mapReduce requires a different check, as\n // its (non-callback) arguments can also be functions.)\n if (typeof lastArg !== 'function' || (operation === 'mapReduce' && args.length === 2)) {\n // eslint-disable-next-line deprecation/deprecation\n const span = parentSpan?.startChild(getSpanContext(this, operation, args, sendDefaultPii));\n const maybePromiseOrCursor = orig.call(this, ...args);\n\n if (isThenable(maybePromiseOrCursor)) {\n return maybePromiseOrCursor.then((res: unknown) => {\n span?.end();\n return res;\n });\n }\n // If the operation returns a Cursor\n // we need to attach a listener to it to finish the span when the cursor is closed.\n else if (isCursor(maybePromiseOrCursor)) {\n const cursor = maybePromiseOrCursor as MongoCursor;\n\n try {\n cursor.once('close', () => {\n span?.end();\n });\n } catch (e) {\n // If the cursor is already closed, `once` will throw an error. In that case, we can\n // finish the span immediately.\n span?.end();\n }\n\n return cursor;\n } else {\n span?.end();\n return maybePromiseOrCursor;\n }\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const span = parentSpan?.startChild(getSpanContext(this, operation, args.slice(0, -1)));\n\n return orig.call(this, ...args.slice(0, -1), function (err: Error, result: unknown) {\n span?.end();\n lastArg(err, result);\n });\n };\n });\n }\n\n /**\n * Form a SpanContext based on the user input to a given operation.\n */\n private _getSpanContextFromOperationArguments(\n collection: MongoCollection,\n operation: Operation,\n args: unknown[],\n sendDefaultPii: boolean | undefined = false,\n ): SpanContext {\n const data: { [key: string]: string } = {\n 'db.system': 'mongodb',\n 'db.name': collection.dbName,\n 'db.operation': operation,\n 'db.mongodb.collection': collection.collectionName,\n };\n const spanContext: SpanContext = {\n op: 'db',\n // TODO v8: Use `${collection.collectionName}.${operation}`\n origin: 'auto.db.mongo',\n description: operation,\n data,\n };\n\n // If the operation takes no arguments besides `options` and `callback`, or if argument\n // collection is disabled for this operation, just return early.\n const signature = OPERATION_SIGNATURES[operation];\n const shouldDescribe = Array.isArray(this._describeOperations)\n ? this._describeOperations.includes(operation)\n : this._describeOperations;\n\n if (!signature || !shouldDescribe || !sendDefaultPii) {\n return spanContext;\n }\n\n try {\n // Special case for `mapReduce`, as the only one accepting functions as arguments.\n if (operation === 'mapReduce') {\n const [map, reduce] = args as { name?: string }[];\n data[signature[0]] = typeof map === 'string' ? map : map.name || '';\n data[signature[1]] = typeof reduce === 'string' ? reduce : reduce.name || '';\n } else {\n for (let i = 0; i < signature.length; i++) {\n data[`db.mongodb.${signature[i]}`] = JSON.stringify(args[i]);\n }\n }\n } catch (_oO) {\n // no-empty\n }\n\n return spanContext;\n }\n}\n","import type { Hub } from '@sentry/core';\nimport type { EventProcessor, Span } from '@sentry/types';\nimport { fill, loadModule, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../../common/debug-build';\nimport type { LazyLoadedIntegration } from './lazy';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils';\n\ninterface MysqlConnection {\n prototype: {\n connect: () => void;\n };\n createQuery: () => void;\n}\n\ninterface MysqlConnectionConfig {\n host: string;\n port: number;\n user: string;\n}\n\n/** Tracing integration for node-mysql package */\nexport class Mysql implements LazyLoadedIntegration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Mysql';\n\n /**\n * @inheritDoc\n */\n public name: string;\n\n private _module?: MysqlConnection;\n\n public constructor() {\n this.name = Mysql.id;\n }\n\n /** @inheritdoc */\n public loadDependency(): MysqlConnection | undefined {\n return (this._module = this._module || loadModule('mysql/lib/Connection.js'));\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line deprecation/deprecation\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n DEBUG_BUILD && logger.log('Mysql Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n const pkg = this.loadDependency();\n\n if (!pkg) {\n DEBUG_BUILD && logger.error('Mysql Integration was unable to require `mysql` package.');\n return;\n }\n\n let mySqlConfig: MysqlConnectionConfig | undefined = undefined;\n\n try {\n pkg.prototype.connect = new Proxy(pkg.prototype.connect, {\n apply(wrappingTarget, thisArg: { config: MysqlConnectionConfig }, args) {\n if (!mySqlConfig) {\n mySqlConfig = thisArg.config;\n }\n return wrappingTarget.apply(thisArg, args);\n },\n });\n } catch (e) {\n DEBUG_BUILD && logger.error('Mysql Integration was unable to instrument `mysql` config.');\n }\n\n function spanDataFromConfig(): Record {\n if (!mySqlConfig) {\n return {};\n }\n return {\n 'server.address': mySqlConfig.host,\n 'server.port': mySqlConfig.port,\n 'db.user': mySqlConfig.user,\n };\n }\n\n function finishSpan(span: Span | undefined): void {\n if (!span) {\n return;\n }\n\n const data = spanDataFromConfig();\n Object.keys(data).forEach(key => {\n span.setAttribute(key, data[key]);\n });\n\n span.end();\n }\n\n // The original function will have one of these signatures:\n // function (callback) => void\n // function (options, callback) => void\n // function (options, values, callback) => void\n fill(pkg, 'createQuery', function (orig: () => void) {\n return function (this: unknown, options: unknown, values: unknown, callback: unknown) {\n // eslint-disable-next-line deprecation/deprecation\n const scope = getCurrentHub().getScope();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n // eslint-disable-next-line deprecation/deprecation\n const span = parentSpan?.startChild({\n description: typeof options === 'string' ? options : (options as { sql: string }).sql,\n op: 'db',\n origin: 'auto.db.mysql',\n data: {\n 'db.system': 'mysql',\n },\n });\n\n if (typeof callback === 'function') {\n return orig.call(this, options, values, function (err: Error, result: unknown, fields: unknown) {\n finishSpan(span);\n callback(err, result, fields);\n });\n }\n\n if (typeof values === 'function') {\n return orig.call(this, options, function (err: Error, result: unknown, fields: unknown) {\n finishSpan(span);\n values(err, result, fields);\n });\n }\n\n // streaming, no callback!\n const query = orig.call(this, options, values) as { on: (event: string, callback: () => void) => void };\n\n query.on('end', () => {\n finishSpan(span);\n });\n\n return query;\n };\n });\n }\n}\n","import type { Hub } from '@sentry/core';\nimport type { EventProcessor } from '@sentry/types';\nimport { fill, isThenable, loadModule, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../../common/debug-build';\nimport type { LazyLoadedIntegration } from './lazy';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils';\n\ntype PgClientQuery = (\n config: unknown,\n values?: unknown,\n callback?: (err: unknown, result: unknown) => void,\n) => void | Promise;\n\ninterface PgClient {\n prototype: {\n query: PgClientQuery;\n };\n}\n\ninterface PgClientThis {\n database?: string;\n host?: string;\n port?: number;\n user?: string;\n}\n\ninterface PgOptions {\n usePgNative?: boolean;\n /**\n * Supply your postgres module directly, instead of having Sentry attempt automatic resolution.\n * Use this if you (a) use a module that's not `pg`, or (b) use a bundler that breaks resolution (e.g. esbuild).\n *\n * Usage:\n * ```\n * import pg from 'pg';\n *\n * Sentry.init({\n * integrations: [new Sentry.Integrations.Postgres({ module: pg })],\n * });\n * ```\n */\n module?: PGModule;\n}\n\ntype PGModule = { Client: PgClient; native: { Client: PgClient } | null };\n\n/** Tracing integration for node-postgres package */\nexport class Postgres implements LazyLoadedIntegration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Postgres';\n\n /**\n * @inheritDoc\n */\n public name: string;\n\n private _usePgNative: boolean;\n\n private _module?: PGModule;\n\n public constructor(options: PgOptions = {}) {\n this.name = Postgres.id;\n this._usePgNative = !!options.usePgNative;\n this._module = options.module;\n }\n\n /** @inheritdoc */\n public loadDependency(): PGModule | undefined {\n return (this._module = this._module || loadModule('pg'));\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line deprecation/deprecation\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n DEBUG_BUILD && logger.log('Postgres Integration is skipped because of instrumenter configuration.');\n return;\n }\n\n const pkg = this.loadDependency();\n\n if (!pkg) {\n DEBUG_BUILD && logger.error('Postgres Integration was unable to require `pg` package.');\n return;\n }\n\n const Client = this._usePgNative ? pkg.native?.Client : pkg.Client;\n\n if (!Client) {\n DEBUG_BUILD && logger.error(\"Postgres Integration was unable to access 'pg-native' bindings.\");\n return;\n }\n\n /**\n * function (query, callback) => void\n * function (query, params, callback) => void\n * function (query) => Promise\n * function (query, params) => Promise\n * function (pg.Cursor) => pg.Cursor\n */\n fill(Client.prototype, 'query', function (orig: PgClientQuery) {\n return function (this: PgClientThis, config: unknown, values: unknown, callback: unknown) {\n // eslint-disable-next-line deprecation/deprecation\n const scope = getCurrentHub().getScope();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const data: Record = {\n 'db.system': 'postgresql',\n };\n\n try {\n if (this.database) {\n data['db.name'] = this.database;\n }\n if (this.host) {\n data['server.address'] = this.host;\n }\n if (this.port) {\n data['server.port'] = this.port;\n }\n if (this.user) {\n data['db.user'] = this.user;\n }\n } catch (e) {\n // ignore\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const span = parentSpan?.startChild({\n description: typeof config === 'string' ? config : (config as { text: string }).text,\n op: 'db',\n origin: 'auto.db.postgres',\n data,\n });\n\n if (typeof callback === 'function') {\n return orig.call(this, config, values, function (err: Error, result: unknown) {\n span?.end();\n callback(err, result);\n });\n }\n\n if (typeof values === 'function') {\n return orig.call(this, config, function (err: Error, result: unknown) {\n span?.end();\n values(err, result);\n });\n }\n\n const rv = typeof values !== 'undefined' ? orig.call(this, config, values) : orig.call(this, config);\n\n if (isThenable(rv)) {\n return rv.then((res: unknown) => {\n span?.end();\n return res;\n });\n }\n\n span?.end();\n return rv;\n };\n });\n }\n}\n","import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, getCurrentHub, startSpan } from '@sentry/core';\nimport type { Integration } from '@sentry/types';\nimport { addNonEnumerableProperty, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../../common/debug-build';\nimport { shouldDisableAutoInstrumentation } from './utils/node-utils';\n\ntype PrismaAction =\n | 'findUnique'\n | 'findMany'\n | 'findFirst'\n | 'create'\n | 'createMany'\n | 'update'\n | 'updateMany'\n | 'upsert'\n | 'delete'\n | 'deleteMany'\n | 'executeRaw'\n | 'queryRaw'\n | 'aggregate'\n | 'count'\n | 'runCommandRaw';\n\ninterface PrismaMiddlewareParams {\n model?: unknown;\n action: PrismaAction;\n args: unknown;\n dataPath: string[];\n runInTransaction: boolean;\n}\n\ntype PrismaMiddleware = (\n params: PrismaMiddlewareParams,\n next: (params: PrismaMiddlewareParams) => Promise,\n) => Promise;\n\ninterface PrismaClient {\n _sentryInstrumented?: boolean;\n _engineConfig?: {\n activeProvider?: string;\n clientVersion?: string;\n };\n $use: (cb: PrismaMiddleware) => void;\n}\n\nfunction isValidPrismaClient(possibleClient: unknown): possibleClient is PrismaClient {\n return !!possibleClient && !!(possibleClient as PrismaClient)['$use'];\n}\n\n/** Tracing integration for @prisma/client package */\nexport class Prisma implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Prisma';\n\n /**\n * @inheritDoc\n */\n public name: string;\n\n /**\n * @inheritDoc\n */\n public constructor(options: { client?: unknown } = {}) {\n this.name = Prisma.id;\n\n // We instrument the PrismaClient inside the constructor and not inside `setupOnce` because in some cases of server-side\n // bundling (Next.js) multiple Prisma clients can be instantiated, even though users don't intend to. When instrumenting\n // in setupOnce we can only ever instrument one client.\n // https://github.com/getsentry/sentry-javascript/issues/7216#issuecomment-1602375012\n // In the future we might explore providing a dedicated PrismaClient middleware instead of this hack.\n if (isValidPrismaClient(options.client) && !options.client._sentryInstrumented) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n addNonEnumerableProperty(options.client as any, '_sentryInstrumented', true);\n\n const clientData: Record = {};\n try {\n const engineConfig = (options.client as PrismaClient)._engineConfig;\n if (engineConfig) {\n const { activeProvider, clientVersion } = engineConfig;\n if (activeProvider) {\n clientData['db.system'] = activeProvider;\n }\n if (clientVersion) {\n clientData['db.prisma.version'] = clientVersion;\n }\n }\n } catch (e) {\n // ignore\n }\n\n options.client.$use((params, next: (params: PrismaMiddlewareParams) => Promise) => {\n // eslint-disable-next-line deprecation/deprecation\n if (shouldDisableAutoInstrumentation(getCurrentHub)) {\n return next(params);\n }\n\n const action = params.action;\n const model = params.model;\n\n return startSpan(\n {\n name: model ? `${model} ${action}` : action,\n onlyIfParent: true,\n op: 'db.prisma',\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.db.prisma',\n },\n data: { ...clientData, 'db.operation': action },\n },\n () => next(params),\n );\n });\n } else {\n DEBUG_BUILD &&\n logger.warn('Unsupported Prisma client provided to PrismaIntegration. Provided client:', options.client);\n }\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n // Noop - here for backwards compatibility\n }\n}\n","import type {\n RequestInstrumentationOptions as RequestInstrumentationOptionsT,\n SpanStatusType as SpanStatusTypeT,\n} from '@sentry-internal/tracing';\nimport {\n Apollo,\n BROWSER_TRACING_INTEGRATION_ID as BROWSER_TRACING_INTEGRATION_ID_T,\n BrowserTracing as BrowserTracingT,\n Express,\n GraphQL,\n IdleTransaction as IdleTransactionT,\n Mongo,\n Mysql,\n Postgres,\n Prisma,\n Span as SpanT,\n SpanStatus as SpanStatusT,\n TRACEPARENT_REGEXP as TRACEPARENT_REGEXP_T,\n Transaction as TransactionT,\n addExtensionMethods as addExtensionMethodsT,\n defaultRequestInstrumentationOptions as defaultRequestInstrumentationOptionsT,\n extractTraceparentData as extractTraceparentDataT,\n getActiveTransaction as getActiveTransactionT,\n hasTracingEnabled as hasTracingEnabledT,\n instrumentOutgoingRequests as instrumentOutgoingRequestsT,\n spanStatusfromHttpCode as spanStatusfromHttpCodeT,\n startIdleTransaction as startIdleTransactionT,\n stripUrlQueryAndFragment as stripUrlQueryAndFragmentT,\n} from '@sentry-internal/tracing';\n\n// BrowserTracing is already exported as part of `Integrations` below (and for the moment will remain so for\n// backwards compatibility), but that interferes with treeshaking, so we also export it separately\n// here.\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `BrowserTracing` can be imported from `@sentry/browser` or your framework SDK\n *\n * import { BrowserTracing } from '@sentry/browser';\n * new BrowserTracing()\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const BrowserTracing = BrowserTracingT;\n\n// BrowserTracing is already exported as part of `Integrations` below (and for the moment will remain so for\n// backwards compatibility), but that interferes with treeshaking, so we also export it separately\n// here.\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `BrowserTracing` can be imported from `@sentry/browser` or your framework SDK\n *\n * import { BrowserTracing } from '@sentry/browser';\n * new BrowserTracing()\n */\n// eslint-disable-next-line deprecation/deprecation\nexport type BrowserTracing = BrowserTracingT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n */\nexport const addExtensionMethods = addExtensionMethodsT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `getActiveTransaction` can be imported from `@sentry/node`, `@sentry/browser`, or your framework SDK\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const getActiveTransaction = getActiveTransactionT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `extractTraceparentData` can be imported from `@sentry/node`, `@sentry/browser`, or your framework SDK\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const extractTraceparentData = extractTraceparentDataT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `spanStatusfromHttpCode` can be imported from `@sentry/node`, `@sentry/browser`, or your framework SDK\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const spanStatusfromHttpCode = spanStatusfromHttpCodeT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `SpanStatusType` can be imported from `@sentry/node`, `@sentry/browser`, or your framework SDK\n */\nexport type SpanStatusType = SpanStatusTypeT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `Transaction` can be imported from `@sentry/node`, `@sentry/browser`, or your framework SDK\n */\nexport const Transaction = TransactionT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `Transaction` can be imported from `@sentry/node`, `@sentry/browser`, or your framework SDK\n */\nexport type Transaction = TransactionT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `Span` can be imported from `@sentry/node`, `@sentry/browser`, or your framework SDK\n */\nexport const Span = SpanT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `Span` can be imported from `@sentry/node`, `@sentry/browser`, or your framework SDK\n */\nexport type Span = SpanT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n */\nexport const BROWSER_TRACING_INTEGRATION_ID = BROWSER_TRACING_INTEGRATION_ID_T;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `defaultRequestInstrumentationOptions` can be imported from `@sentry/browser`, or your framework SDK\n */\nexport const defaultRequestInstrumentationOptions = defaultRequestInstrumentationOptionsT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `hasTracingEnabled` can be imported from `@sentry/utils`\n */\nexport const hasTracingEnabled = hasTracingEnabledT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `stripUrlQueryAndFragment` can be imported from `@sentry/utils`\n */\nexport const stripUrlQueryAndFragment = stripUrlQueryAndFragmentT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n *\n * `TRACEPARENT_REGEXP` can be imported from `@sentry/utils`\n */\nexport const TRACEPARENT_REGEXP = TRACEPARENT_REGEXP_T;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n */\nexport const IdleTransaction = IdleTransactionT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n */\nexport type IdleTransaction = IdleTransactionT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n */\nexport const instrumentOutgoingRequests = instrumentOutgoingRequestsT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n */\nexport const startIdleTransaction = startIdleTransactionT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const SpanStatus = SpanStatusT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport type SpanStatus = SpanStatusT;\n\n/**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n */\nexport type RequestInstrumentationOptions = RequestInstrumentationOptionsT;\n\nexport const Integrations = {\n /**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `BrowserTracing` can be imported from `@sentry/browser` or your framework SDK\n *\n * import { BrowserTracing } from '@sentry/browser';\n * new BrowserTracing()\n */\n // eslint-disable-next-line deprecation/deprecation\n BrowserTracing: BrowserTracing,\n /**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `Apollo` can be imported from `@sentry/node`\n *\n * import { Integrations } from '@sentry/node';\n * new Integrations.Apollo({ ... })\n */\n // eslint-disable-next-line deprecation/deprecation\n Apollo: Apollo,\n /**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `Express` can be imported from `@sentry/node`\n *\n * import { Integrations } from '@sentry/node';\n * new Integrations.Express({ ... })\n */\n // eslint-disable-next-line deprecation/deprecation\n Express: Express,\n /**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `GraphQL` can be imported from `@sentry/node`\n *\n * import { Integrations } from '@sentry/node';\n * new Integrations.GraphQL({ ... })\n */\n // eslint-disable-next-line deprecation/deprecation\n GraphQL: GraphQL,\n /**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `Mongo` can be imported from `@sentry/node`\n *\n * import { Integrations } from '@sentry/node';\n * new Integrations.Mongo({ ... })\n */\n // eslint-disable-next-line deprecation/deprecation\n Mongo: Mongo,\n /**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `Mysql` can be imported from `@sentry/node`\n *\n * import { Integrations } from '@sentry/node';\n * new Integrations.Mysql({ ... })\n */\n // eslint-disable-next-line deprecation/deprecation\n Mysql: Mysql,\n /**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `Postgres` can be imported from `@sentry/node`\n *\n * import { Integrations } from '@sentry/node';\n * new Integrations.Postgres({ ... })\n */\n // eslint-disable-next-line deprecation/deprecation\n Postgres: Postgres,\n /**\n * @deprecated `@sentry/tracing` has been deprecated and will be moved to to `@sentry/node`, `@sentry/browser`, or your framework SDK in the next major version.\n * `Prisma` can be imported from `@sentry/node`\n *\n * import { Integrations } from '@sentry/node';\n * new Integrations.Prisma({ ... })\n */\n // eslint-disable-next-line deprecation/deprecation\n Prisma: Prisma,\n};\n\n// Treeshakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean;\n\n// Guard for tree\nif (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) {\n // We are patching the global object with our hub extension methods\n addExtensionMethodsT();\n}\n","import type { IdleTransaction, SpanStatusType } from '@sentry/core';\nimport { getActiveTransaction, spanToJSON } from '@sentry/core';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport { WINDOW } from './types';\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nexport function registerBackgroundTabDetection(): void {\n if (WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n // eslint-disable-next-line deprecation/deprecation\n const activeTransaction = getActiveTransaction() as IdleTransaction;\n if (WINDOW.document!.hidden && activeTransaction) {\n const statusType: SpanStatusType = 'cancelled';\n\n const { op, status } = spanToJSON(activeTransaction);\n\n DEBUG_BUILD &&\n logger.log(`[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${op}`);\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (!status) {\n activeTransaction.setStatus(statusType);\n }\n // TODO: Can we rewrite this to an attribute?\n // eslint-disable-next-line deprecation/deprecation\n activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.end();\n }\n });\n } else {\n DEBUG_BUILD && logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n","import { Config } from \"./config\";\n\nexport const productionConfig: Config = {\n\tSentry: {\n\t\tdsn: 'https://44d193a246344b6cb4fbe9457ed1c200@o4505521980375040.ingest.sentry.io/4505521986600960'\n\t}\n}\n","import { envSettings } from \"settings/envSettings\";\nimport { productionConfig } from \"./productionConfig\";\nimport { stagingConfig } from \"./stagingConfig\";\n\nexport type Config = {\n\tSentry?: {\n\t\tdsn: string\n\t}\n}\n\nlet config: Config = stagingConfig;\n\nif (envSettings.stage === 'production') {\n\tconfig = productionConfig;\n}\n\nexport { config }\n","import { Config } from \"./config\";\n\nexport const stagingConfig: Config = {\n\tSentry: undefined\n}\n","import * as Sentry from '@sentry/react';\nimport { Integrations } from '@sentry/tracing';\nimport { CaptureContext, Severity, Breadcrumb, EventHint, Event } from '@sentry/types';\nimport { config } from 'config/config';\nimport { getSubdomainFromStorage } from 'features/Tenant/tenantUtils';\nimport { noop } from 'utils/commonHelper';\nimport { getUserInfo } from 'utils/storageUtils';\n\nconst _enabled = process.env.NODE_ENV === 'production';\n\nexport const ErrorReportingErrorBoundary = Sentry.ErrorBoundary;\n\nconst _beforeSend = (event: Event, hint?: EventHint) => {\n\n\tconst userInfo = getUserInfo();\n\tconst subdomainFromStorage = getSubdomainFromStorage();\n\n\treturn {\n\t\t...event,\n\t\tuser: userInfo.id ? { ...event.user, id: userInfo.id.toString(), email: userInfo.email } : event.user,\n\t\ttags: subdomainFromStorage ? {...event.tags, subdomain: subdomainFromStorage } : event.tags,\n\t};\n}\n\nconst init = () => {\n\tconst SentryConfig = config.Sentry;\n\tif (SentryConfig) {\n\t\tSentry.init({\n\t\t\tdsn: SentryConfig.dsn,\n\t\t\tintegrations: [new Integrations.BrowserTracing()],\n\n\t\t\t// Set tracesSampleRate to 1.0 to capture 100%\n\t\t\t// of transactions for performance monitoring.\n\t\t\t// We recommend adjusting this value in production\n\t\t\ttracesSampleRate: 1.0,\n\t\t\tbeforeSend: _beforeSend,\n\t\t});\n\t}\n};\n\nconst reportError = (error: any, captureContext?: CaptureContext) => Sentry.captureException(error, captureContext);\nconst reportMessage = (message: string, captureContext?: CaptureContext | Severity) => Sentry.captureMessage(message, captureContext);\nconst addBreadcrumb = (breadcrumb: Breadcrumb) => Sentry.addBreadcrumb(breadcrumb);\n\nconst errorReportingService = _enabled ? {\n\tinit,\n\treportError,\n\treportMessage,\n\taddBreadcrumb,\n} : {\n\tinit: noop,\n\treportError: noop,\n\treportMessage: noop,\n\taddBreadcrumb: noop,\n};\n\nexport default errorReportingService;\n","import { getToken } from 'features/Token/token';\nimport { envSettings } from 'settings/envSettings';\n\nexport abstract class BaseClient {\n protected async transformOptions(originalOptions: RequestInit): Promise {\n\t\tconst token = getToken();\n\n return Promise.resolve({\n\t\t\t...originalOptions,\n\t\t\theaders: {\n\t\t\t\t...originalOptions.headers,\n\t\t\t\t\"Authorization\": `Bearer ${token}`\n\t\t\t},\n });\n\t}\n\n\tprotected getBaseUrl(defaultUrl: string, baseUrl?: string): string {\n\t\treturn envSettings.apiUrl;\n }\n}\n","//----------------------\n// \n// Generated using the NSwag toolchain v14.2.0.0 (NJsonSchema v11.1.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n\nimport { BaseClient } from './BaseClient';\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\nexport class ActualBudgetRowClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/ActualBudgetRow/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BudgetRowResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: BudgetRowDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ActualBudgetRow/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getHeaders(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/ActualBudgetRow/headers/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetHeaders(_response);\n });\n }\n\n protected processGetHeaders(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BudgetDateValueHeaderResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n exportAll(tenantId: number, projectId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ActualBudgetRow/{tenantId}/{projectId}/exportAll\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportAll(_response);\n });\n }\n\n protected processExportAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class AlertsClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/Alerts/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = AlertResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n seenAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/Alerts/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSeenAll(_response);\n });\n }\n\n protected processSeenAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n deleteAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/Alerts/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteAll(_response);\n });\n }\n\n protected processDeleteAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, alertId: number): Promise {\n let url_ = this.baseUrl + \"/api/Alerts/{tenantId}/{alertId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (alertId === undefined || alertId === null)\n throw new Error(\"The parameter 'alertId' must be defined.\");\n url_ = url_.replace(\"{alertId}\", encodeURIComponent(\"\" + alertId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class BudgetConfigurationClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/BudgetConfiguration/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BudgetConfigurationResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: UpdateBudgetConfigurationRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BudgetConfiguration/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BudgetConfigurationResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class BudgetRowClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/BudgetRow/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BudgetRowResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: BudgetRowDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BudgetRow/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getHeaders(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/BudgetRow/headers/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetHeaders(_response);\n });\n }\n\n protected processGetHeaders(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BudgetDateValueHeaderResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n release(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/BudgetRow/release/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRelease(_response);\n });\n }\n\n protected processRelease(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n exportAll(tenantId: number, projectId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BudgetRow/{tenantId}/{projectId}/exportAll\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportAll(_response);\n });\n }\n\n protected processExportAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class BudgetStatusClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/BudgetStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BudgetStatusResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: SimpleStatusRequestUpdateSimpleStatusRequestItems | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BudgetStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class BusinessPartnerClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n get(id: number, tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/BusinessPartner/{tenantId}/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BusinessPartnerResponseModelSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/BusinessPartner/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BusinessPartnerResponseModelItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n insert(tenantId: number, body: BusinessPartnerInsertRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BusinessPartner/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processInsert(_response);\n });\n }\n\n protected processInsert(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BusinessPartnerResponseModelSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: BusinessPartnerUpdateRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BusinessPartner/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BusinessPartnerResponseModelSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BusinessPartner/{tenantId}/genericFilter\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BusinessPartnerResponseModelItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BusinessPartner/{tenantId}/export\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class CalendarClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, countryId: number): Promise {\n let url_ = this.baseUrl + \"/api/Calendar/{tenantId}/{countryId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (countryId === undefined || countryId === null)\n throw new Error(\"The parameter 'countryId' must be defined.\");\n url_ = url_.replace(\"{countryId}\", encodeURIComponent(\"\" + countryId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CalendarResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: InsertOrUpdateCalendarRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Calendar/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CalendarResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param from (optional)\n * @param to (optional)\n * @return Success\n */\n getDifferenceInSpecificMeasurement(tenantId: number, projectId: number, from: Date | undefined, to: Date | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Calendar/difference/{tenantId}/{projectId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (from === null)\n throw new Error(\"The parameter 'from' cannot be null.\");\n else if (from !== undefined)\n url_ += \"From=\" + encodeURIComponent(from ? \"\" + from.toISOString() : \"\") + \"&\";\n if (to === null)\n throw new Error(\"The parameter 'to' cannot be null.\");\n else if (to !== undefined)\n url_ += \"To=\" + encodeURIComponent(to ? \"\" + to.toISOString() : \"\") + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetDifferenceInSpecificMeasurement(_response);\n });\n }\n\n protected processGetDifferenceInSpecificMeasurement(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DoubleSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ChangeRequestClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getSimple(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequest/simple/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSimple(_response);\n });\n }\n\n protected processGetSimple(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = IdNameResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectId (optional)\n * @param projectIds (optional)\n * @param statusId (optional)\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, projectId: number | undefined, projectIds: number[] | undefined, statusId: number | undefined, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequest/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === null)\n throw new Error(\"The parameter 'projectId' cannot be null.\");\n else if (projectId !== undefined)\n url_ += \"ProjectId=\" + encodeURIComponent(\"\" + projectId) + \"&\";\n if (projectIds === null)\n throw new Error(\"The parameter 'projectIds' cannot be null.\");\n else if (projectIds !== undefined)\n projectIds && projectIds.forEach(item => { url_ += \"ProjectIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (statusId === null)\n throw new Error(\"The parameter 'statusId' cannot be null.\");\n else if (statusId !== undefined)\n url_ += \"StatusId=\" + encodeURIComponent(\"\" + statusId) + \"&\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ChangeRequestResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param idFormatPrefix (optional)\n * @param searchValue (optional)\n * @param body (optional)\n * @return Success\n */\n search(tenantId: number, idFormatPrefix: string | undefined, searchValue: string | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequest/search/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (idFormatPrefix === null)\n throw new Error(\"The parameter 'idFormatPrefix' cannot be null.\");\n else if (idFormatPrefix !== undefined)\n url_ += \"idFormatPrefix=\" + encodeURIComponent(\"\" + idFormatPrefix) + \"&\";\n if (searchValue === null)\n throw new Error(\"The parameter 'searchValue' cannot be null.\");\n else if (searchValue !== undefined)\n url_ += \"searchValue=\" + encodeURIComponent(\"\" + searchValue) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSearch(_response);\n });\n }\n\n protected processSearch(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = IdNameResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, projectId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequest/{tenantId}/{projectId}/genericFilter\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ChangeRequestResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilterCounts(tenantId: number, projectId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequest/{tenantId}/{projectId}/genericFilterCounts\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilterCounts(_response);\n });\n }\n\n protected processGetAllGenericFilterCounts(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ChangeRequestCountsResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequest/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ChangeRequestResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequest/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, projectId: number, body: InsertChangeRequestRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequest/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ChangeRequestResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: UpdateChangeRequestRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequest/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ChangeRequestResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n crAnalysis(tenantId: number, projectId: number, body: ChangeRequestAnalysisRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequest/analysis/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCrAnalysis(_response);\n });\n }\n\n protected processCrAnalysis(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ChangeRequestResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n crApproval(tenantId: number, projectId: number, body: ChangeRequestApprovalRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequest/approval/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCrApproval(_response);\n });\n }\n\n protected processCrApproval(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ChangeRequestResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n crRealization(tenantId: number, projectId: number, body: ChangeRequestRealizationRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequest/realization/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCrRealization(_response);\n });\n }\n\n protected processCrRealization(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ChangeRequestResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n crAcceptance(tenantId: number, projectId: number, body: ChangeRequestAcceptanceRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequest/acceptance/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCrAcceptance(_response);\n });\n }\n\n protected processCrAcceptance(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ChangeRequestResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n download(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequest/download/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownload(_response);\n });\n }\n\n protected processDownload(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n removeAttachment(tenantId: number, projectId: number, changeRequestId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequest/attachment/{tenantId}/{projectId}/{changeRequestId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (changeRequestId === undefined || changeRequestId === null)\n throw new Error(\"The parameter 'changeRequestId' must be defined.\");\n url_ = url_.replace(\"{changeRequestId}\", encodeURIComponent(\"\" + changeRequestId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRemoveAttachment(_response);\n });\n }\n\n protected processRemoveAttachment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, projectId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequest/{tenantId}/{projectId}/export\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ChangeRequestStatusClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequestStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ChangeRequestStatusResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: SimpleStatusRequestUpdateSimpleStatusRequestItems | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequestStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ChangeRequestTypeClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequestType/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: TenantIsActiveDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ChangeRequestType/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class CommunicationCalendarClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param projectIds (optional)\n * @param nonProjectCategoryIds (optional)\n * @param types (optional)\n * @param from (optional)\n * @param to (optional)\n * @return Success\n */\n getAllMy(tenantId: number, projectIds: number[] | undefined, nonProjectCategoryIds: number[] | undefined, types: EntityTypeEnum[] | undefined, from: Date | undefined, to: Date | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CommunicationCalendar/getMy/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectIds === null)\n throw new Error(\"The parameter 'projectIds' cannot be null.\");\n else if (projectIds !== undefined)\n projectIds && projectIds.forEach(item => { url_ += \"projectIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (nonProjectCategoryIds === null)\n throw new Error(\"The parameter 'nonProjectCategoryIds' cannot be null.\");\n else if (nonProjectCategoryIds !== undefined)\n nonProjectCategoryIds && nonProjectCategoryIds.forEach(item => { url_ += \"nonProjectCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (types === null)\n throw new Error(\"The parameter 'types' cannot be null.\");\n else if (types !== undefined)\n types && types.forEach(item => { url_ += \"types=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (from === null)\n throw new Error(\"The parameter 'from' cannot be null.\");\n else if (from !== undefined)\n url_ += \"from=\" + encodeURIComponent(from ? \"\" + from.toISOString() : \"\") + \"&\";\n if (to === null)\n throw new Error(\"The parameter 'to' cannot be null.\");\n else if (to !== undefined)\n url_ += \"to=\" + encodeURIComponent(to ? \"\" + to.toISOString() : \"\") + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllMy(_response);\n });\n }\n\n protected processGetAllMy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CommunicationCalendarResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectIds (optional)\n * @param nonProjectCategoryIds (optional)\n * @param from (optional)\n * @param to (optional)\n * @return Success\n */\n getAllMeetings(tenantId: number, projectIds: number[] | undefined, nonProjectCategoryIds: number[] | undefined, from: Date | undefined, to: Date | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CommunicationCalendar/getAllMeetings/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectIds === null)\n throw new Error(\"The parameter 'projectIds' cannot be null.\");\n else if (projectIds !== undefined)\n projectIds && projectIds.forEach(item => { url_ += \"projectIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (nonProjectCategoryIds === null)\n throw new Error(\"The parameter 'nonProjectCategoryIds' cannot be null.\");\n else if (nonProjectCategoryIds !== undefined)\n nonProjectCategoryIds && nonProjectCategoryIds.forEach(item => { url_ += \"nonProjectCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (from === null)\n throw new Error(\"The parameter 'from' cannot be null.\");\n else if (from !== undefined)\n url_ += \"from=\" + encodeURIComponent(from ? \"\" + from.toISOString() : \"\") + \"&\";\n if (to === null)\n throw new Error(\"The parameter 'to' cannot be null.\");\n else if (to !== undefined)\n url_ += \"to=\" + encodeURIComponent(to ? \"\" + to.toISOString() : \"\") + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllMeetings(_response);\n });\n }\n\n protected processGetAllMeetings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CommunicationCalendarResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param from (optional)\n * @param to (optional)\n * @param body (optional)\n * @return Success\n */\n getAllVacations(tenantId: number, from: Date | undefined, to: Date | undefined, body: GetVacationsCalendarRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CommunicationCalendar/getAllVacations/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (from === null)\n throw new Error(\"The parameter 'from' cannot be null.\");\n else if (from !== undefined)\n url_ += \"from=\" + encodeURIComponent(from ? \"\" + from.toISOString() : \"\") + \"&\";\n if (to === null)\n throw new Error(\"The parameter 'to' cannot be null.\");\n else if (to !== undefined)\n url_ += \"to=\" + encodeURIComponent(to ? \"\" + to.toISOString() : \"\") + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllVacations(_response);\n });\n }\n\n protected processGetAllVacations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CommunicationCalendarResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @param body (optional)\n * @return Success\n */\n updateTaskDate(tenantId: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined, body: UpdateTaskCalendarItemRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CommunicationCalendar/updateDates/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateTaskDate(_response);\n });\n }\n\n protected processUpdateTaskDate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class CommunicationConfigClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getTaskGeneralConfig(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/CommunicationConfig/taskGeneralConfig/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTaskGeneralConfig(_response);\n });\n }\n\n protected processGetTaskGeneralConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TaskGeneralConfigResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateTaskGeneralConfig(tenantId: number, body: UpdateTaskGeneralConfigRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CommunicationConfig/taskGeneralConfig/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateTaskGeneralConfig(_response);\n });\n }\n\n protected processUpdateTaskGeneralConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TaskGeneralConfigResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getMeetingGeneralConfig(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/CommunicationConfig/meetingGeneralConfig/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetMeetingGeneralConfig(_response);\n });\n }\n\n protected processGetMeetingGeneralConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MeetingGeneralConfigResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateMeetingGeneralConfig(tenantId: number, body: UpdateMeetingGeneralConfigRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CommunicationConfig/meetingGeneralConfig/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateMeetingGeneralConfig(_response);\n });\n }\n\n protected processUpdateMeetingGeneralConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MeetingGeneralConfigResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getStatusReportGeneralConfig(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/CommunicationConfig/statusReportGeneralConfig/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetStatusReportGeneralConfig(_response);\n });\n }\n\n protected processGetStatusReportGeneralConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = StatusReportGeneralConfigResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateStatusReportGeneralConfig(tenantId: number, body: UpdateStatusReportGeneralConfigRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CommunicationConfig/statusReportGeneralConfig/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateStatusReportGeneralConfig(_response);\n });\n }\n\n protected processUpdateStatusReportGeneralConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = StatusReportGeneralConfigResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getMeetingTypes(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/CommunicationConfig/meetingType/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetMeetingTypes(_response);\n });\n }\n\n protected processGetMeetingTypes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateMeetingTypes(tenantId: number, body: TenantIsActiveDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CommunicationConfig/financeCategory/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateMeetingTypes(_response);\n });\n }\n\n protected processUpdateMeetingTypes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class CommunicationDashboardClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n get(tenantId: number, body: CommunicationDashboardFilterRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CommunicationDashboard/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CommunicationDashboardResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class CountryClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getCountries(): Promise {\n let url_ = this.baseUrl + \"/api/Country\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCountries(_response);\n });\n }\n\n protected processGetCountries(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = IdNameSymbolResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class CurrencyClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getCurrencies(): Promise {\n let url_ = this.baseUrl + \"/api/Currency\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCurrencies(_response);\n });\n }\n\n protected processGetCurrencies(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = IdNameSymbolResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class DateTimePatternClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getDatePatterns(): Promise {\n let url_ = this.baseUrl + \"/api/DateTimePattern/date\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetDatePatterns(_response);\n });\n }\n\n protected processGetDatePatterns(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DateTimePatternResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getTimePatterns(): Promise {\n let url_ = this.baseUrl + \"/api/DateTimePattern/time\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTimePatterns(_response);\n });\n }\n\n protected processGetTimePatterns(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DateTimePatternResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class DefaultProjectClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, userId: number): Promise {\n let url_ = this.baseUrl + \"/api/DefaultProject/{tenantId}/{userId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (userId === undefined || userId === null)\n throw new Error(\"The parameter 'userId' must be defined.\");\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DefaultProjectResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n set(tenantId: number, body: SetDefaultProjectRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/DefaultProject/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSet(_response);\n });\n }\n\n protected processSet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = DefaultProjectResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class EmailClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Email/template?\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n add(body: AddEmailTemplateRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Email/template\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processAdd(_response);\n });\n }\n\n protected processAdd(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(id: number): Promise {\n let url_ = this.baseUrl + \"/api/Email/template/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(id: number, body: UpdateEmailTemplateRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Email/template/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getAllData(id: number): Promise {\n let url_ = this.baseUrl + \"/api/Email/templateData/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllData(_response);\n });\n }\n\n protected processGetAllData(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n addData(id: number, body: AddUpdateEmailTemplateDataRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Email/templateData/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processAddData(_response);\n });\n }\n\n protected processAddData(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n deleteData(id: number, languageId: number): Promise {\n let url_ = this.baseUrl + \"/api/Email/templateData/{id}/{languageId}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (languageId === undefined || languageId === null)\n throw new Error(\"The parameter 'languageId' must be defined.\");\n url_ = url_.replace(\"{languageId}\", encodeURIComponent(\"\" + languageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteData(_response);\n });\n }\n\n protected processDeleteData(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateData(id: number, languageId: number, body: AddUpdateEmailTemplateDataRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Email/templateData/{id}/{languageId}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (languageId === undefined || languageId === null)\n throw new Error(\"The parameter 'languageId' must be defined.\");\n url_ = url_.replace(\"{languageId}\", encodeURIComponent(\"\" + languageId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateData(_response);\n });\n }\n\n protected processUpdateData(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n send(body: SendEmailRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Email/send\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSend(_response);\n });\n }\n\n protected processSend(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ExpenseClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n getAllMy(tenantId: number, years: number[] | undefined, months: MonthEnum[] | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Expense/allMy/{tenantId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllMy(_response);\n });\n }\n\n protected processGetAllMy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ExpenseResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n getAllMyGenericTotals(tenantId: number, years: number[] | undefined, months: MonthEnum[] | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Expense/allMyTotals/{tenantId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllMyGenericTotals(_response);\n });\n }\n\n protected processGetAllMyGenericTotals(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ExpenseTotalsResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGeneric(tenantId: number, years: number[] | undefined, months: MonthEnum[] | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Expense/allGeneric/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGeneric(_response);\n });\n }\n\n protected processGetAllGeneric(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ExpenseResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGenericTotals(tenantId: number, years: number[] | undefined, months: MonthEnum[] | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Expense/allGenericTotals/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericTotals(_response);\n });\n }\n\n protected processGetAllGenericTotals(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ExpenseTotalsResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Expense/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ExpenseResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Expense/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, body: InsertExpenseRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Expense/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ExpenseResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: UpdateExpenseRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Expense/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ExpenseResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n releaseMy(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Expense/releaseMy/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processReleaseMy(_response);\n });\n }\n\n protected processReleaseMy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n approval(tenantId: number, id: number, body: ApprovalTimeTravelDescriptiveRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Expense/approval/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processApproval(_response);\n });\n }\n\n protected processApproval(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n clone(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Expense/{tenantId}/{id}/clone\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processClone(_response);\n });\n }\n\n protected processClone(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ExpenseResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n downloadAttachment(tenantId: number, expenseItemId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Expense/attachment/{tenantId}/{expenseItemId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (expenseItemId === undefined || expenseItemId === null)\n throw new Error(\"The parameter 'expenseItemId' must be defined.\");\n url_ = url_.replace(\"{expenseItemId}\", encodeURIComponent(\"\" + expenseItemId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownloadAttachment(_response);\n });\n }\n\n protected processDownloadAttachment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n exportAll(tenantId: number, years: number[] | undefined, months: MonthEnum[] | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Expense/{tenantId}/exportAll?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportAll(_response);\n });\n }\n\n protected processExportAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class FinanceConfigClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getFinanceCategories(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/FinanceConfig/financeCategory/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetFinanceCategories(_response);\n });\n }\n\n protected processGetFinanceCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = FinanceCategoryResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateFinanceCategories(tenantId: number, body: TenantIsActiveDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/FinanceConfig/financeCategory/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateFinanceCategories(_response);\n });\n }\n\n protected processUpdateFinanceCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getFinanceGeneralConfig(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/FinanceConfig/financeGeneralConfig/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetFinanceGeneralConfig(_response);\n });\n }\n\n protected processGetFinanceGeneralConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = FinanceGeneralConfigResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateFinanceGeneralConfig(tenantId: number, body: UpdateFinanceGeneralConfigRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/FinanceConfig/financeGeneralConfig/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateFinanceGeneralConfig(_response);\n });\n }\n\n protected processUpdateFinanceGeneralConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = FinanceGeneralConfigResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class FinanceDashboardClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n get(tenantId: number, body: FinanceDashboardFilterRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/FinanceDashboard/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = FinanceDashboardResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ForgotClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n forgotPasswordStart(email: string, domain: string): Promise {\n let url_ = this.baseUrl + \"/api/Forgot/password?\";\n if (email === undefined || email === null)\n throw new Error(\"The parameter 'email' must be defined and cannot be null.\");\n else\n url_ += \"Email=\" + encodeURIComponent(\"\" + email) + \"&\";\n if (domain === undefined || domain === null)\n throw new Error(\"The parameter 'domain' must be defined and cannot be null.\");\n else\n url_ += \"Domain=\" + encodeURIComponent(\"\" + domain) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processForgotPasswordStart(_response);\n });\n }\n\n protected processForgotPasswordStart(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n forgotPasswordFinish(body: ForgotPasswordFinishRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Forgot/password\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processForgotPasswordFinish(_response);\n });\n }\n\n protected processForgotPasswordFinish(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n forgetEmail(username: string, domain: string): Promise {\n let url_ = this.baseUrl + \"/api/Forgot/email?\";\n if (username === undefined || username === null)\n throw new Error(\"The parameter 'username' must be defined and cannot be null.\");\n else\n url_ += \"Username=\" + encodeURIComponent(\"\" + username) + \"&\";\n if (domain === undefined || domain === null)\n throw new Error(\"The parameter 'domain' must be defined and cannot be null.\");\n else\n url_ += \"Domain=\" + encodeURIComponent(\"\" + domain) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processForgetEmail(_response);\n });\n }\n\n protected processForgetEmail(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class IndustryClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getIndustries(): Promise {\n let url_ = this.baseUrl + \"/api/Industry\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetIndustries(_response);\n });\n }\n\n protected processGetIndustries(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = IdNameSymbolResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class InvoiceClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, projectId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Invoice/{tenantId}/{projectId}/genericFilter\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = InvoiceResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilterCounts(tenantId: number, projectId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Invoice/{tenantId}/{projectId}/genericFilterCounts\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilterCounts(_response);\n });\n }\n\n protected processGetAllGenericFilterCounts(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = InvoiceCountsResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Invoice/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = InvoiceResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Invoice/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, projectId: number, body: InsertInvoiceRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Invoice/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = InvoiceResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: UpdateInvoiceRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Invoice/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = InvoiceResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n download(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Invoice/attachment/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownload(_response);\n });\n }\n\n protected processDownload(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n removeAttachment(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Invoice/attachment/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRemoveAttachment(_response);\n });\n }\n\n protected processRemoveAttachment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n exportAll(tenantId: number, projectId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Invoice/{tenantId}/{projectId}/exportAll\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportAll(_response);\n });\n }\n\n protected processExportAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class InvoiceStatusClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/InvoiceStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = InvoiceStatusResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: SimpleStatusRequestUpdateSimpleStatusRequestItems | undefined): Promise {\n let url_ = this.baseUrl + \"/api/InvoiceStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class LanguageClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(): Promise {\n let url_ = this.baseUrl + \"/api/Language\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n download(): Promise {\n let url_ = this.baseUrl + \"/api/Language/download\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownload(_response);\n });\n }\n\n protected processDownload(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n upload(body: UploadLanguagesExcelRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Language/upload\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpload(_response);\n });\n }\n\n protected processUpload(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class LoginClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n login(body: LoginRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Login\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processLogin(_response);\n });\n }\n\n protected processLogin(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TokenResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n refreshToken(): Promise {\n let url_ = this.baseUrl + \"/api/Login/refreshToken\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRefreshToken(_response);\n });\n }\n\n protected processRefreshToken(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TokenResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getRefreshToken(): Promise {\n let url_ = this.baseUrl + \"/api/Login/refreshToken\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetRefreshToken(_response);\n });\n }\n\n protected processGetRefreshToken(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = RefreshTokenResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n refreshTokenWithToken(body: RefreshTokenWithTokenRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Login/refreshTokenWithToken\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRefreshTokenWithToken(_response);\n });\n }\n\n protected processRefreshTokenWithToken(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TokenResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = TokenResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class MeetingClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getSimple(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Meeting/simple/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSimple(_response);\n });\n }\n\n protected processGetSimple(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = IdNameResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @param statusId (optional)\n * @param notEqualStatusId (optional)\n * @return Success\n */\n getAll(tenantId: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined, statusId: number | undefined, notEqualStatusId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Meeting/{tenantId}/getAll?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n if (statusId === null)\n throw new Error(\"The parameter 'statusId' cannot be null.\");\n else if (statusId !== undefined)\n url_ += \"statusId=\" + encodeURIComponent(\"\" + statusId) + \"&\";\n if (notEqualStatusId === null)\n throw new Error(\"The parameter 'notEqualStatusId' cannot be null.\");\n else if (notEqualStatusId !== undefined)\n url_ += \"notEqualStatusId=\" + encodeURIComponent(\"\" + notEqualStatusId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MeetingResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getAllSimple(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/Meeting/{tenantId}/getAllSimple\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllSimple(_response);\n });\n }\n\n protected processGetAllSimple(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SimpleIdNameModelItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param idFormatPrefix (optional)\n * @param searchValue (optional)\n * @param body (optional)\n * @return Success\n */\n search(tenantId: number, idFormatPrefix: string | undefined, searchValue: string | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Meeting/search/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (idFormatPrefix === null)\n throw new Error(\"The parameter 'idFormatPrefix' cannot be null.\");\n else if (idFormatPrefix !== undefined)\n url_ += \"idFormatPrefix=\" + encodeURIComponent(\"\" + idFormatPrefix) + \"&\";\n if (searchValue === null)\n throw new Error(\"The parameter 'searchValue' cannot be null.\");\n else if (searchValue !== undefined)\n url_ += \"searchValue=\" + encodeURIComponent(\"\" + searchValue) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSearch(_response);\n });\n }\n\n protected processSearch(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = IdNameResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Meeting/{tenantId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MeetingResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @return Success\n */\n get(tenantId: number, id: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Meeting/{tenantId}/{id}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MeetingResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @return Success\n */\n delete(tenantId: number, id: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Meeting/{tenantId}/{id}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param isRelease (optional)\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, isRelease: boolean | undefined, body: InsertMeetingRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Meeting/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (isRelease === null)\n throw new Error(\"The parameter 'isRelease' cannot be null.\");\n else if (isRelease !== undefined)\n url_ += \"isRelease=\" + encodeURIComponent(\"\" + isRelease) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MeetingResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param isRelease (optional)\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, isRelease: boolean | undefined, body: UpdateMeetingRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Meeting/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (isRelease === null)\n throw new Error(\"The parameter 'isRelease' cannot be null.\");\n else if (isRelease !== undefined)\n url_ += \"isRelease=\" + encodeURIComponent(\"\" + isRelease) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MeetingResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @return Success\n */\n resetStatus(tenantId: number, id: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Meeting/resetStatus/{tenantId}/{id}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processResetStatus(_response);\n });\n }\n\n protected processResetStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @return Success\n */\n release(tenantId: number, id: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Meeting/release/{tenantId}/{id}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRelease(_response);\n });\n }\n\n protected processRelease(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @return Success\n */\n clone(tenantId: number, id: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Meeting/clone/{tenantId}/{id}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processClone(_response);\n });\n }\n\n protected processClone(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MeetingResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @param isPrivate (optional)\n * @return Success\n */\n setIsPrivate(tenantId: number, id: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined, isPrivate: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Meeting/isPrivate/{tenantId}/{id}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n if (isPrivate === null)\n throw new Error(\"The parameter 'isPrivate' cannot be null.\");\n else if (isPrivate !== undefined)\n url_ += \"isPrivate=\" + encodeURIComponent(\"\" + isPrivate) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PATCH\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSetIsPrivate(_response);\n });\n }\n\n protected processSetIsPrivate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n download(tenantId: number, meetingId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Meeting/download/{tenantId}/{meetingId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (meetingId === undefined || meetingId === null)\n throw new Error(\"The parameter 'meetingId' must be defined.\");\n url_ = url_.replace(\"{meetingId}\", encodeURIComponent(\"\" + meetingId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownload(_response);\n });\n }\n\n protected processDownload(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n removeAttachment(tenantId: number, meetingId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Meeting/attachment/{tenantId}/{meetingId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (meetingId === undefined || meetingId === null)\n throw new Error(\"The parameter 'meetingId' must be defined.\");\n url_ = url_.replace(\"{meetingId}\", encodeURIComponent(\"\" + meetingId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRemoveAttachment(_response);\n });\n }\n\n protected processRemoveAttachment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @param body (optional)\n * @return Success\n */\n exportAll(tenantId: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Meeting/{tenantId}/exportAll?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportAll(_response);\n });\n }\n\n protected processExportAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class MeetingCommentClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, body: InsertMeetingCommentRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/MeetingComment/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MeetingCommentResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: UpdateMeetingCommentRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/MeetingComment/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MeetingCommentResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/MeetingComment/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class MeetingDecisionClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/MeetingDecision/{tenantId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MeetingDecisionResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @param body (optional)\n * @return Success\n */\n exportAll(tenantId: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/MeetingDecision/{tenantId}/exportAll?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportAll(_response);\n });\n }\n\n protected processExportAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class MeetingStatusClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/MeetingStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MeetingStatusResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: SimpleStatusRequestUpdateSimpleStatusRequestItems | undefined): Promise {\n let url_ = this.baseUrl + \"/api/MeetingStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class OrganizationalUnitClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/OrganizationalUnit/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = OrganizationalUnitResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/OrganizationalUnit/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param parentId (optional)\n * @param levelNumber (optional)\n * @return Success\n */\n getAll(tenantId: number, parentId: number | undefined, levelNumber: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/OrganizationalUnit/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (parentId === null)\n throw new Error(\"The parameter 'parentId' cannot be null.\");\n else if (parentId !== undefined)\n url_ += \"ParentId=\" + encodeURIComponent(\"\" + parentId) + \"&\";\n if (levelNumber === null)\n throw new Error(\"The parameter 'levelNumber' cannot be null.\");\n else if (levelNumber !== undefined)\n url_ += \"LevelNumber=\" + encodeURIComponent(\"\" + levelNumber) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = OrganizationalUnitResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, body: InsertOrganizationalUnitRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/OrganizationalUnit/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = OrganizationalUnitResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: UpdateOrganizationalUnitRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/OrganizationalUnit/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = OrganizationalUnitResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateOrders(tenantId: number, body: UpdateOrderRequest[] | undefined): Promise {\n let url_ = this.baseUrl + \"/api/OrganizationalUnit/orders/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateOrders(_response);\n });\n }\n\n protected processUpdateOrders(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class OrganizationalUnitManagerClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/OrganizationalUnitManager/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = OrganizationalUnitManagerResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/OrganizationalUnitManager/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param userId (optional)\n * @param organizationalUnitId (optional)\n * @param isResourceManager (optional)\n * @param date (optional)\n * @return Success\n */\n getAll(tenantId: number, userId: number | undefined, organizationalUnitId: number | undefined, isResourceManager: boolean | undefined, date: Date | undefined): Promise {\n let url_ = this.baseUrl + \"/api/OrganizationalUnitManager/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (userId === null)\n throw new Error(\"The parameter 'userId' cannot be null.\");\n else if (userId !== undefined)\n url_ += \"UserId=\" + encodeURIComponent(\"\" + userId) + \"&\";\n if (organizationalUnitId === null)\n throw new Error(\"The parameter 'organizationalUnitId' cannot be null.\");\n else if (organizationalUnitId !== undefined)\n url_ += \"OrganizationalUnitId=\" + encodeURIComponent(\"\" + organizationalUnitId) + \"&\";\n if (isResourceManager === null)\n throw new Error(\"The parameter 'isResourceManager' cannot be null.\");\n else if (isResourceManager !== undefined)\n url_ += \"IsResourceManager=\" + encodeURIComponent(\"\" + isResourceManager) + \"&\";\n if (date === null)\n throw new Error(\"The parameter 'date' cannot be null.\");\n else if (date !== undefined)\n url_ += \"Date=\" + encodeURIComponent(date ? \"\" + date.toISOString() : \"\") + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = OrganizationalUnitManagerResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, body: InsertOrganizationalUnitManagerRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/OrganizationalUnitManager/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = OrganizationalUnitManagerResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: UpdateOrganizationalUnitManagerRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/OrganizationalUnitManager/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = OrganizationalUnitManagerResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n isUserManager(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/OrganizationalUnitManager/isManager/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processIsUserManager(_response);\n });\n }\n\n protected processIsUserManager(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BooleanSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class PaymentInfoClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n createSetupIntent(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/PaymentInfo/CreateSetupIntent/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateSetupIntent(_response);\n });\n }\n\n protected processCreateSetupIntent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = StringSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getPaymentMethods(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/PaymentInfo/GetPaymentMethods/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPaymentMethods(_response);\n });\n }\n\n protected processGetPaymentMethods(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PaymentMethodResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getDefaultPaymentSourceId(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/PaymentInfo/GetDefaultPaymentSourceId/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetDefaultPaymentSourceId(_response);\n });\n }\n\n protected processGetDefaultPaymentSourceId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = StringSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n setDefaultPaymentSourceId(tenantId: number, paymentMethodId: string): Promise {\n let url_ = this.baseUrl + \"/api/PaymentInfo/SetDefaultPaymentSourceId/{tenantId}/{paymentMethodId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (paymentMethodId === undefined || paymentMethodId === null)\n throw new Error(\"The parameter 'paymentMethodId' must be defined.\");\n url_ = url_.replace(\"{paymentMethodId}\", encodeURIComponent(\"\" + paymentMethodId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSetDefaultPaymentSourceId(_response);\n });\n }\n\n protected processSetDefaultPaymentSourceId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n removePaymentMethod(tenantId: number, paymentMethodId: string): Promise {\n let url_ = this.baseUrl + \"/api/PaymentInfo/RemovePaymentMethod/{tenantId}/{paymentMethodId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (paymentMethodId === undefined || paymentMethodId === null)\n throw new Error(\"The parameter 'paymentMethodId' must be defined.\");\n url_ = url_.replace(\"{paymentMethodId}\", encodeURIComponent(\"\" + paymentMethodId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRemovePaymentMethod(_response);\n });\n }\n\n protected processRemovePaymentMethod(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class PricelistClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/Pricelist/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PricelistRowResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class PricingPlanClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/PricingPlan/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PricingPlanResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: PricingPlanRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/PricingPlan/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PricingPlanResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getFull(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/PricingPlan/getFull/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetFull(_response);\n });\n }\n\n protected processGetFull(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PricingPlanFullResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n cancel(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/PricingPlan/cancel/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCancel(_response);\n });\n }\n\n protected processCancel(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PricingPlanResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n reactivate(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/PricingPlan/reactivate/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processReactivate(_response);\n });\n }\n\n protected processReactivate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PricingPlanResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n checkForExpired(): Promise {\n let url_ = this.baseUrl + \"/api/PricingPlan/check\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCheckForExpired(_response);\n });\n }\n\n protected processCheckForExpired(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n checkStatusOfInvoices(): Promise {\n let url_ = this.baseUrl + \"/api/PricingPlan/checkStatusOfInvoices\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCheckStatusOfInvoices(_response);\n });\n }\n\n protected processCheckStatusOfInvoices(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n checkInvoicesForPayment(): Promise {\n let url_ = this.baseUrl + \"/api/PricingPlan/checkInvoicesForPayment\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCheckInvoicesForPayment(_response);\n });\n }\n\n protected processCheckInvoicesForPayment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class PricingPlanInvoiceClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/PricingPlanInvoice/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PricingPlanInvoiceResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getFileContent(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/PricingPlanInvoice/fileContent/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetFileContent(_response);\n });\n }\n\n protected processGetFileContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/Project/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, body: InsertProjectRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Project/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: UpdateProjectRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Project/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getAllForOrgUnitManager(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/Project/getAllForOrgUnitManager/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllForOrgUnitManager(_response);\n });\n }\n\n protected processGetAllForOrgUnitManager(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getAllForOrgUnitManagerUsers(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/Project/getAllForOrgUnitManagerUsers/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllForOrgUnitManagerUsers(_response);\n });\n }\n\n protected processGetAllForOrgUnitManagerUsers(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Project/{tenantId}/genericFilter\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectGetAllResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/Project/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/Project/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n releas(tenantId: number, body: ProjectIdRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Project/releas/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processReleas(_response);\n });\n }\n\n protected processReleas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n achive(tenantId: number, body: ProjectIdRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Project/archive/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processAchive(_response);\n });\n }\n\n protected processAchive(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n restore(tenantId: number, body: ProjectIdRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Project/restore/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRestore(_response);\n });\n }\n\n protected processRestore(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateProjectData(tenantId: number, body: UpdateProjectDataRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Project/updatedata/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateProjectData(_response);\n });\n }\n\n protected processUpdateProjectData(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getProjectInformation(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/Project/getInformation/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetProjectInformation(_response);\n });\n }\n\n protected processGetProjectInformation(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = StringSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateProjectInformation(tenantId: number, projectId: number, body: UpdateProjectInformationRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Project/updateInformation/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateProjectInformation(_response);\n });\n }\n\n protected processUpdateProjectInformation(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = StringSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n isUserPM(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/Project/ispm/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processIsUserPM(_response);\n });\n }\n\n protected processIsUserPM(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BooleanSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n downloadAttachment(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Project/attachment/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownloadAttachment(_response);\n });\n }\n\n protected processDownloadAttachment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n removeAttachment(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Project/attachment/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRemoveAttachment(_response);\n });\n }\n\n protected processRemoveAttachment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Project/{tenantId}/export\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectAccomplishmentClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param isActive (optional)\n * @param status (optional)\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, reportId: number, isActive: boolean | undefined, status: ReportItemStatusEnum | undefined, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectAccomplishment/{tenantId}/{reportId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (isActive === null)\n throw new Error(\"The parameter 'isActive' cannot be null.\");\n else if (isActive !== undefined)\n url_ += \"IsActive=\" + encodeURIComponent(\"\" + isActive) + \"&\";\n if (status === null)\n throw new Error(\"The parameter 'status' cannot be null.\");\n else if (status !== undefined)\n url_ += \"Status=\" + encodeURIComponent(\"\" + status) + \"&\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectAccomplishmentResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, reportId: number, body: InsertProjectAccomplishmentRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectAccomplishment/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectAccomplishmentResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, reportId: number, body: UpdateProjectAccomplishmentRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectAccomplishment/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectAccomplishmentResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, reportId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectAccomplishment/{tenantId}/{reportId}/genericFilter\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectAccomplishmentResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, reportId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectAccomplishment/{tenantId}/{reportId}/export\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectAccomplishment/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectAccomplishmentResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectAccomplishment/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectActionClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param isActive (optional)\n * @param status (optional)\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, reportId: number, isActive: boolean | undefined, status: ReportItemStatusEnum | undefined, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectAction/{tenantId}/{reportId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (isActive === null)\n throw new Error(\"The parameter 'isActive' cannot be null.\");\n else if (isActive !== undefined)\n url_ += \"IsActive=\" + encodeURIComponent(\"\" + isActive) + \"&\";\n if (status === null)\n throw new Error(\"The parameter 'status' cannot be null.\");\n else if (status !== undefined)\n url_ += \"Status=\" + encodeURIComponent(\"\" + status) + \"&\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectActionResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, reportId: number, body: InsertProjectActionRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectAction/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectActionResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, reportId: number, body: UpdateProjectActionRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectAction/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectActionResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilterExample(tenantId: number, reportId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectAction/{tenantId}/{reportId}/genericFilter\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilterExample(_response);\n });\n }\n\n protected processGetAllGenericFilterExample(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectActionResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, reportId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectAction/{tenantId}/{reportId}/export\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectAction/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectActionResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectAction/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectBusinessClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param isActive (optional)\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, reportId: number, isActive: boolean | undefined, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectBusiness/{tenantId}/{reportId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (isActive === null)\n throw new Error(\"The parameter 'isActive' cannot be null.\");\n else if (isActive !== undefined)\n url_ += \"IsActive=\" + encodeURIComponent(\"\" + isActive) + \"&\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectBusinessResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, reportId: number, body: InsertProjectBusinessRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectBusiness/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectBusinessResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, reportId: number, body: UpdateProjectBusinessRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectBusiness/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectBusinessResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, reportId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectBusiness/{tenantId}/{reportId}/genericFilter\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectBusinessResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, reportId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectBusiness/{tenantId}/{reportId}/export\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectBusiness/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectBusinessResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectBusiness/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectChangeRequestClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param statusId (optional)\n * @param isGenerated (optional)\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, reportId: number, statusId: number | undefined, isGenerated: boolean | undefined, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectChangeRequest/{tenantId}/{reportId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (statusId === null)\n throw new Error(\"The parameter 'statusId' cannot be null.\");\n else if (statusId !== undefined)\n url_ += \"StatusId=\" + encodeURIComponent(\"\" + statusId) + \"&\";\n if (isGenerated === null)\n throw new Error(\"The parameter 'isGenerated' cannot be null.\");\n else if (isGenerated !== undefined)\n url_ += \"IsGenerated=\" + encodeURIComponent(\"\" + isGenerated) + \"&\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectChangeRequestResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, reportId: number, body: InsertProjectChangeRequestRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectChangeRequest/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectChangeRequestResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, reportId: number, body: UpdateProjectChangeRequestRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectChangeRequest/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectChangeRequestResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param copyFromScope (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, reportId: number, copyFromScope: boolean | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectChangeRequest/{tenantId}/{reportId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (copyFromScope === null)\n throw new Error(\"The parameter 'copyFromScope' cannot be null.\");\n else if (copyFromScope !== undefined)\n url_ += \"copyFromScope=\" + encodeURIComponent(\"\" + copyFromScope) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectChangeRequestResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param copyFromScope (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilterCounts(tenantId: number, reportId: number, copyFromScope: boolean | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectChangeRequest/{tenantId}/{reportId}/genericFilterCounts?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (copyFromScope === null)\n throw new Error(\"The parameter 'copyFromScope' cannot be null.\");\n else if (copyFromScope !== undefined)\n url_ += \"copyFromScope=\" + encodeURIComponent(\"\" + copyFromScope) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilterCounts(_response);\n });\n }\n\n protected processGetAllGenericFilterCounts(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectChangeRequestCountsResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param copyFromScope (optional)\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, reportId: number, copyFromScope: boolean | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectChangeRequest/{tenantId}/{reportId}/export?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (copyFromScope === null)\n throw new Error(\"The parameter 'copyFromScope' cannot be null.\");\n else if (copyFromScope !== undefined)\n url_ += \"copyFromScope=\" + encodeURIComponent(\"\" + copyFromScope) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectChangeRequest/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectChangeRequestResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectChangeRequest/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n copyFromScope(tenantId: number, reportId: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectChangeRequest/copyFromScope/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCopyFromScope(_response);\n });\n }\n\n protected processCopyFromScope(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectConfigClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getProjectCategories(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectConfig/category/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetProjectCategories(_response);\n });\n }\n\n protected processGetProjectCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateProjectCategories(tenantId: number, body: TenantIsActiveDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectConfig/category/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateProjectCategories(_response);\n });\n }\n\n protected processUpdateProjectCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getProjectTypes(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectConfig/type/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetProjectTypes(_response);\n });\n }\n\n protected processGetProjectTypes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateProjectTypes(tenantId: number, body: TenantIsActiveDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectConfig/type/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateProjectTypes(_response);\n });\n }\n\n protected processUpdateProjectTypes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectDashboardClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n get(tenantId: number, body: ProjectDashboardFilterRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectDashboard/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectDashboardResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectDeliverableClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param isGenerated (optional)\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, reportId: number, isGenerated: boolean | undefined, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectDeliverable/{tenantId}/{reportId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (isGenerated === null)\n throw new Error(\"The parameter 'isGenerated' cannot be null.\");\n else if (isGenerated !== undefined)\n url_ += \"IsGenerated=\" + encodeURIComponent(\"\" + isGenerated) + \"&\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectDeliverableResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, reportId: number, body: InsertProjectDeliverableRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectDeliverable/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectDeliverableResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, reportId: number, body: UpdateProjectDeliverableRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectDeliverable/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectDeliverableResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param copyFromSchedule (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, reportId: number, copyFromSchedule: boolean | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectDeliverable/{tenantId}/{reportId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (copyFromSchedule === null)\n throw new Error(\"The parameter 'copyFromSchedule' cannot be null.\");\n else if (copyFromSchedule !== undefined)\n url_ += \"copyFromSchedule=\" + encodeURIComponent(\"\" + copyFromSchedule) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectDeliverableResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectDeliverable/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectDeliverableResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectDeliverable/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n copyFromSchedule(tenantId: number, reportId: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectDeliverable/copyFromSchedule/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCopyFromSchedule(_response);\n });\n }\n\n protected processCopyFromSchedule(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param copyFromSchedule (optional)\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, reportId: number, copyFromSchedule: boolean | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectDeliverable/{tenantId}/{reportId}/export?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (copyFromSchedule === null)\n throw new Error(\"The parameter 'copyFromSchedule' cannot be null.\");\n else if (copyFromSchedule !== undefined)\n url_ += \"copyFromSchedule=\" + encodeURIComponent(\"\" + copyFromSchedule) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectFinanceClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param statusId (optional)\n * @param isGenerated (optional)\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, reportId: number, statusId: number | undefined, isGenerated: boolean | undefined, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectFinance/{tenantId}/{reportId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (statusId === null)\n throw new Error(\"The parameter 'statusId' cannot be null.\");\n else if (statusId !== undefined)\n url_ += \"StatusId=\" + encodeURIComponent(\"\" + statusId) + \"&\";\n if (isGenerated === null)\n throw new Error(\"The parameter 'isGenerated' cannot be null.\");\n else if (isGenerated !== undefined)\n url_ += \"IsGenerated=\" + encodeURIComponent(\"\" + isGenerated) + \"&\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectFinanceResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, reportId: number, body: InsertProjectFinanceRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectFinance/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectFinanceResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, reportId: number, body: UpdateProjectFinanceRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectFinance/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectFinanceResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param copyFromFinance (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, reportId: number, copyFromFinance: boolean | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectFinance/{tenantId}/{reportId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (copyFromFinance === null)\n throw new Error(\"The parameter 'copyFromFinance' cannot be null.\");\n else if (copyFromFinance !== undefined)\n url_ += \"copyFromFinance=\" + encodeURIComponent(\"\" + copyFromFinance) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectFinanceResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param copyFromFinance (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilterCounts(tenantId: number, reportId: number, copyFromFinance: boolean | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectFinance/{tenantId}/{reportId}/genericFilterCounts?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (copyFromFinance === null)\n throw new Error(\"The parameter 'copyFromFinance' cannot be null.\");\n else if (copyFromFinance !== undefined)\n url_ += \"copyFromFinance=\" + encodeURIComponent(\"\" + copyFromFinance) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilterCounts(_response);\n });\n }\n\n protected processGetAllGenericFilterCounts(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectFinanceCountsResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectFinance/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectFinanceResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectFinance/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n copyFromFinance(tenantId: number, reportId: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectFinance/copyFromFinance/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCopyFromFinance(_response);\n });\n }\n\n protected processCopyFromFinance(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param copyFromFinance (optional)\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, reportId: number, copyFromFinance: boolean | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectFinance/{tenantId}/{reportId}/export?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (copyFromFinance === null)\n throw new Error(\"The parameter 'copyFromFinance' cannot be null.\");\n else if (copyFromFinance !== undefined)\n url_ += \"copyFromFinance=\" + encodeURIComponent(\"\" + copyFromFinance) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectIssueClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param isActive (optional)\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, reportId: number, isActive: boolean | undefined, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectIssue/{tenantId}/{reportId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (isActive === null)\n throw new Error(\"The parameter 'isActive' cannot be null.\");\n else if (isActive !== undefined)\n url_ += \"IsActive=\" + encodeURIComponent(\"\" + isActive) + \"&\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectIssueResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, reportId: number, body: InsertProjectIssueRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectIssue/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectIssueResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, reportId: number, body: UpdateProjectIssueRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectIssue/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectIssueResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, reportId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectIssue/{tenantId}/{reportId}/genericFilter\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectIssueResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, reportId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectIssue/{tenantId}/{reportId}/export\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectIssue/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectIssueResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectIssue/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectMilestoneClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param isGenerated (optional)\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, reportId: number, isGenerated: boolean | undefined, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectMilestone/{tenantId}/{reportId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (isGenerated === null)\n throw new Error(\"The parameter 'isGenerated' cannot be null.\");\n else if (isGenerated !== undefined)\n url_ += \"IsGenerated=\" + encodeURIComponent(\"\" + isGenerated) + \"&\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectMilestoneResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, reportId: number, body: InsertProjectMilestoneRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectMilestone/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectMilestoneResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, reportId: number, body: UpdateProjectMilestoneRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectMilestone/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectMilestoneResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param copyFromSchedule (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, reportId: number, copyFromSchedule: boolean | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectMilestone/{tenantId}/{reportId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (copyFromSchedule === null)\n throw new Error(\"The parameter 'copyFromSchedule' cannot be null.\");\n else if (copyFromSchedule !== undefined)\n url_ += \"copyFromSchedule=\" + encodeURIComponent(\"\" + copyFromSchedule) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectMilestoneResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectMilestone/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectMilestoneResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectMilestone/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateGenerated(tenantId: number, reportId: number, body: UpdateGeneratedProjectMilestoneRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectMilestone/{tenantId}/{reportId}/generated\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateGenerated(_response);\n });\n }\n\n protected processUpdateGenerated(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectMilestoneResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n copyFromSchedule(tenantId: number, reportId: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectMilestone/copyFromSchedule/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCopyFromSchedule(_response);\n });\n }\n\n protected processCopyFromSchedule(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param copyFromSchedule (optional)\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, reportId: number, copyFromSchedule: boolean | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectMilestone/{tenantId}/{reportId}/export?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (copyFromSchedule === null)\n throw new Error(\"The parameter 'copyFromSchedule' cannot be null.\");\n else if (copyFromSchedule !== undefined)\n url_ += \"copyFromSchedule=\" + encodeURIComponent(\"\" + copyFromSchedule) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectQualityClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param status (optional)\n * @param isGenerated (optional)\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, reportId: number, status: ReportItemStatusEnum | undefined, isGenerated: boolean | undefined, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectQuality/{tenantId}/{reportId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (status === null)\n throw new Error(\"The parameter 'status' cannot be null.\");\n else if (status !== undefined)\n url_ += \"Status=\" + encodeURIComponent(\"\" + status) + \"&\";\n if (isGenerated === null)\n throw new Error(\"The parameter 'isGenerated' cannot be null.\");\n else if (isGenerated !== undefined)\n url_ += \"IsGenerated=\" + encodeURIComponent(\"\" + isGenerated) + \"&\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectQualityResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, reportId: number, body: InsertProjectQualityRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectQuality/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectQualityResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, reportId: number, body: UpdateProjectQualityRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectQuality/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectQualityResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param copyFromSchedule (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, reportId: number, copyFromSchedule: boolean | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectQuality/{tenantId}/{reportId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (copyFromSchedule === null)\n throw new Error(\"The parameter 'copyFromSchedule' cannot be null.\");\n else if (copyFromSchedule !== undefined)\n url_ += \"copyFromSchedule=\" + encodeURIComponent(\"\" + copyFromSchedule) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectQualityResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectQuality/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectQualityResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectQuality/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectQualityResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateGenerated(tenantId: number, reportId: number, body: UpdateGeneratedProjectQualityRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectQuality/{tenantId}/{reportId}/generated\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateGenerated(_response);\n });\n }\n\n protected processUpdateGenerated(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectQualityResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n copyFromSchedule(tenantId: number, reportId: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectQuality/copyFromSchedule/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCopyFromSchedule(_response);\n });\n }\n\n protected processCopyFromSchedule(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param copyFromSchedule (optional)\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, reportId: number, copyFromSchedule: boolean | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectQuality/{tenantId}/{reportId}/export?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (copyFromSchedule === null)\n throw new Error(\"The parameter 'copyFromSchedule' cannot be null.\");\n else if (copyFromSchedule !== undefined)\n url_ += \"copyFromSchedule=\" + encodeURIComponent(\"\" + copyFromSchedule) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectReportClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param statusId (optional)\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, projectId: number, statusId: number | undefined, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectReport/{tenantId}/{projectId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (statusId === null)\n throw new Error(\"The parameter 'statusId' cannot be null.\");\n else if (statusId !== undefined)\n url_ += \"StatusId=\" + encodeURIComponent(\"\" + statusId) + \"&\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectReportResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, projectId: number, body: InsertProjectReportRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectReport/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectReportResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: UpdateProjectReportRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectReport/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectReportResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, projectId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectReport/{tenantId}/{projectId}/genericFilter\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectReportResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectReport/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectReportResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectReport/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n releas(tenantId: number, projectId: number, body: GetProjectReportRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectReport/releas/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processReleas(_response);\n });\n }\n\n protected processReleas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n clone(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectReport/clone/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processClone(_response);\n });\n }\n\n protected processClone(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectReportResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n exportAll(tenantId: number, projectId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectReport/exportAll/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportAll(_response);\n });\n }\n\n protected processExportAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, projectId: number, id: number, body: ExportProjectReportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectReport/export/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectRiskClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param statusId (optional)\n * @param isGenerated (optional)\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, reportId: number, statusId: number | undefined, isGenerated: boolean | undefined, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectRisk/{tenantId}/{reportId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (statusId === null)\n throw new Error(\"The parameter 'statusId' cannot be null.\");\n else if (statusId !== undefined)\n url_ += \"StatusId=\" + encodeURIComponent(\"\" + statusId) + \"&\";\n if (isGenerated === null)\n throw new Error(\"The parameter 'isGenerated' cannot be null.\");\n else if (isGenerated !== undefined)\n url_ += \"IsGenerated=\" + encodeURIComponent(\"\" + isGenerated) + \"&\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectRiskResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, reportId: number, body: InsertProjectRiskRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectRisk/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectRiskResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, reportId: number, body: UpdateProjectRiskRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectRisk/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectRiskResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param copyFromRisk (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, reportId: number, copyFromRisk: boolean | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectRisk/{tenantId}/{reportId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (copyFromRisk === null)\n throw new Error(\"The parameter 'copyFromRisk' cannot be null.\");\n else if (copyFromRisk !== undefined)\n url_ += \"copyFromRisk=\" + encodeURIComponent(\"\" + copyFromRisk) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectRiskResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param copyFromRisk (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilterCounts(tenantId: number, reportId: number, copyFromRisk: boolean | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectRisk/{tenantId}/{reportId}/genericFilterCounts?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (copyFromRisk === null)\n throw new Error(\"The parameter 'copyFromRisk' cannot be null.\");\n else if (copyFromRisk !== undefined)\n url_ += \"copyFromRisk=\" + encodeURIComponent(\"\" + copyFromRisk) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilterCounts(_response);\n });\n }\n\n protected processGetAllGenericFilterCounts(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectRiskCountsResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectRisk/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectRiskResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectRisk/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n copyFromRisk(tenantId: number, reportId: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectRisk/copyFromRisk/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCopyFromRisk(_response);\n });\n }\n\n protected processCopyFromRisk(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param copyFromRisk (optional)\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, reportId: number, copyFromRisk: boolean | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectRisk/{tenantId}/{reportId}/export?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (copyFromRisk === null)\n throw new Error(\"The parameter 'copyFromRisk' cannot be null.\");\n else if (copyFromRisk !== undefined)\n url_ += \"copyFromRisk=\" + encodeURIComponent(\"\" + copyFromRisk) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectRoleClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAllByProjectId(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectRole/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllByProjectId(_response);\n });\n }\n\n protected processGetAllByProjectId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: ProjectConfigDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectRole/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectRole/getAll/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectSLAClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectSLA/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectSLAResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: UpdateProjectSLARequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectSLA/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectSLAResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectStatusClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectStatusResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: SimpleStatusRequestUpdateSimpleStatusRequestItems | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectSubcontractorClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param isActive (optional)\n * @param status (optional)\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, reportId: number, isActive: boolean | undefined, status: ReportItemStatusEnum | undefined, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectSubcontractor/{tenantId}/{reportId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (isActive === null)\n throw new Error(\"The parameter 'isActive' cannot be null.\");\n else if (isActive !== undefined)\n url_ += \"IsActive=\" + encodeURIComponent(\"\" + isActive) + \"&\";\n if (status === null)\n throw new Error(\"The parameter 'status' cannot be null.\");\n else if (status !== undefined)\n url_ += \"Status=\" + encodeURIComponent(\"\" + status) + \"&\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectSubcontractorResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, reportId: number, body: InsertProjectSubcontractorRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectSubcontractor/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectSubcontractorResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, reportId: number, body: UpdateProjectSubcontractorRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectSubcontractor/{tenantId}/{reportId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectSubcontractorResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, reportId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectSubcontractor/{tenantId}/{reportId}/genericFilter\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectSubcontractorResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, reportId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectSubcontractor/{tenantId}/{reportId}/export\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectSubcontractor/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectSubcontractorResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, reportId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectSubcontractor/{tenantId}/{reportId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (reportId === undefined || reportId === null)\n throw new Error(\"The parameter 'reportId' must be defined.\");\n url_ = url_.replace(\"{reportId}\", encodeURIComponent(\"\" + reportId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectTeamClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAllByProjectId(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectTeam/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllByProjectId(_response);\n });\n }\n\n protected processGetAllByProjectId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: ProjectConfigDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectTeam/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectTeam/getAll/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectTeamMemberClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectTeamMember/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectTeamMemberResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectTeamMember/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param roleType (optional)\n * @param isActive (optional)\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, projectId: number, roleType: TokenTypeEnum | undefined, isActive: boolean | undefined, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectTeamMember/{tenantId}/{projectId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (roleType === null)\n throw new Error(\"The parameter 'roleType' cannot be null.\");\n else if (roleType !== undefined)\n url_ += \"RoleType=\" + encodeURIComponent(\"\" + roleType) + \"&\";\n if (isActive === null)\n throw new Error(\"The parameter 'isActive' cannot be null.\");\n else if (isActive !== undefined)\n url_ += \"IsActive=\" + encodeURIComponent(\"\" + isActive) + \"&\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectTeamMemberResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n insert(tenantId: number, projectId: number, body: InsertProjectTeamMemberRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectTeamMember/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processInsert(_response);\n });\n }\n\n protected processInsert(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectTeamMemberResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: UpdateProjectTeamMemberRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectTeamMember/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectTeamMemberResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getAllTeamMemberUsers(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectTeamMember/users/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllTeamMemberUsers(_response);\n });\n }\n\n protected processGetAllTeamMemberUsers(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectTeamMemberUserResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllByProjectGenericFiltering(tenantId: number, projectId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectTeamMember/genericFilter/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllByProjectGenericFiltering(_response);\n });\n }\n\n protected processGetAllByProjectGenericFiltering(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectTeamMemberResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFiltering(tenantId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectTeamMember/genericFilter/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFiltering(_response);\n });\n }\n\n protected processGetAllGenericFiltering(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectTeamMemberResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, projectId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectTeamMember/{tenantId}/{projectId}/export\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n exportAll(tenantId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectTeamMember/{tenantId}/export\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportAll(_response);\n });\n }\n\n protected processExportAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectTeamMemberPermissionClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectTeamMemberPermission/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PermissionCollectionResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: PermissionCollectionRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectTeamMemberPermission/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ProjectTeamMemberValidityPeriodClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/ProjectTeamMemberValidityPeriod/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectTeamMemberValidityPeriodResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: ProjectTeamMemberValidityPeriodDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ProjectTeamMemberValidityPeriod/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class RegisterClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n registerTenant(body: TenantRegistrationRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Register\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRegisterTenant(_response);\n });\n }\n\n protected processRegisterTenant(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class RegistrationConfirmClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n registerConfirm(body: TenantRegistrationConfirmRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/RegistrationConfirm\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRegisterConfirm(_response);\n });\n }\n\n protected processRegisterConfirm(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantRegistrationConfirmStatusResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = BaseResponseModel.fromJS(resultData500);\n return throwException(\"Server Error\", status, _responseText, _headers, result500);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n registerConfirmStatus(tenantId: number, userId: number): Promise {\n let url_ = this.baseUrl + \"/api/RegistrationConfirm/{tenantId}/{userId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (userId === undefined || userId === null)\n throw new Error(\"The parameter 'userId' must be defined.\");\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRegisterConfirmStatus(_response);\n });\n }\n\n protected processRegisterConfirmStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantRegistrationConfirmStatusResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 500) {\n return response.text().then((_responseText) => {\n let result500: any = null;\n let resultData500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result500 = BaseResponseModel.fromJS(resultData500);\n return throwException(\"Server Error\", status, _responseText, _headers, result500);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ReminderClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Reminder/{tenantId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ReminderResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @return Success\n */\n get(tenantId: number, id: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Reminder/{tenantId}/{id}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ReminderResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @return Success\n */\n delete(tenantId: number, id: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Reminder/{tenantId}/{id}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, body: InsertReminderRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Reminder/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ReminderResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: UpdateReminderRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Reminder/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ReminderResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @param body (optional)\n * @return Success\n */\n exportAll(tenantId: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Reminder/{tenantId}/exportAll?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportAll(_response);\n });\n }\n\n protected processExportAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ReportStatusClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/ReportStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ReportStatusResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: SimpleStatusRequestUpdateSimpleStatusRequestItems | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ReportStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class RiskClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getSimple(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Risk/simple/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSimple(_response);\n });\n }\n\n protected processGetSimple(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = IdNameResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/Risk/{tenantId}/{projectId}/all\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = RiskResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param idFormatPrefix (optional)\n * @param searchValue (optional)\n * @param body (optional)\n * @return Success\n */\n search(tenantId: number, idFormatPrefix: string | undefined, searchValue: string | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Risk/search/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (idFormatPrefix === null)\n throw new Error(\"The parameter 'idFormatPrefix' cannot be null.\");\n else if (idFormatPrefix !== undefined)\n url_ += \"idFormatPrefix=\" + encodeURIComponent(\"\" + idFormatPrefix) + \"&\";\n if (searchValue === null)\n throw new Error(\"The parameter 'searchValue' cannot be null.\");\n else if (searchValue !== undefined)\n url_ += \"searchValue=\" + encodeURIComponent(\"\" + searchValue) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSearch(_response);\n });\n }\n\n protected processSearch(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = IdNameResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, projectId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Risk/{tenantId}/{projectId}/genericFilter\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = RiskResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilterCounts(tenantId: number, projectId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Risk/{tenantId}/{projectId}/genericFilterCounts\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilterCounts(_response);\n });\n }\n\n protected processGetAllGenericFilterCounts(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = RiskCountsResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Risk/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = RiskResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Risk/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, projectId: number, body: InsertRiskRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Risk/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = RiskResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: UpdateRiskRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Risk/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = RiskResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n exportAll(tenantId: number, projectId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Risk/{tenantId}/{projectId}/exportAll\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportAll(_response);\n });\n }\n\n protected processExportAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class RiskConfigClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getRiskTypes(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/RiskConfig/type/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetRiskTypes(_response);\n });\n }\n\n protected processGetRiskTypes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateRiskTypes(tenantId: number, body: TenantIsActiveDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/RiskConfig/type/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateRiskTypes(_response);\n });\n }\n\n protected processUpdateRiskTypes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class RiskDashboardClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n get(tenantId: number, body: RiskDashboardFilterRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/RiskDashboard/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = RiskDashboardResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class RiskStatusClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/RiskStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = RiskStatusResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: StatusDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/RiskStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ScheduleClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getSimple(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Schedule/simple/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSimple(_response);\n });\n }\n\n protected processGetSimple(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = IdNameResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/Schedule/{tenantId}/{projectId}/all\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScheduleResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectId (optional)\n * @param parentId (optional)\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAllSimple(tenantId: number, projectId: number | undefined, parentId: number | undefined, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Schedule/{tenantId}/allSimple?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === null)\n throw new Error(\"The parameter 'projectId' cannot be null.\");\n else if (projectId !== undefined)\n url_ += \"ProjectId=\" + encodeURIComponent(\"\" + projectId) + \"&\";\n if (parentId === null)\n throw new Error(\"The parameter 'parentId' cannot be null.\");\n else if (parentId !== undefined)\n url_ += \"ParentId=\" + encodeURIComponent(\"\" + parentId) + \"&\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllSimple(_response);\n });\n }\n\n protected processGetAllSimple(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SimpleScheduleResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Schedule/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScheduleResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Schedule/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param idFormatPrefix (optional)\n * @param searchValue (optional)\n * @param body (optional)\n * @return Success\n */\n search(tenantId: number, idFormatPrefix: string | undefined, searchValue: string | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Schedule/search/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (idFormatPrefix === null)\n throw new Error(\"The parameter 'idFormatPrefix' cannot be null.\");\n else if (idFormatPrefix !== undefined)\n url_ += \"idFormatPrefix=\" + encodeURIComponent(\"\" + idFormatPrefix) + \"&\";\n if (searchValue === null)\n throw new Error(\"The parameter 'searchValue' cannot be null.\");\n else if (searchValue !== undefined)\n url_ += \"searchValue=\" + encodeURIComponent(\"\" + searchValue) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSearch(_response);\n });\n }\n\n protected processSearch(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = IdNameResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, projectId: number, body: InsertScheduleRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Schedule/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScheduleResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: UpdateScheduleRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Schedule/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScheduleResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n patch(tenantId: number, projectId: number, body: PatchScheduleRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Schedule/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processPatch(_response);\n });\n }\n\n protected processPatch(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScheduleResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n bulkPatch(tenantId: number, projectId: number, body: PatchScheduleRequest[] | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Schedule/bulkPatch/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkPatch(_response);\n });\n }\n\n protected processBulkPatch(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateWbs(tenantId: number, projectId: number, body: UpdateWbsRequest[] | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Schedule/wbs/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateWbs(_response);\n });\n }\n\n protected processUpdateWbs(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n clone(tenantId: number, projectId: number, body: CopyFromProjectRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Schedule/clone/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processClone(_response);\n });\n }\n\n protected processClone(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n exportAll(tenantId: number, projectId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Schedule/exportAll/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportAll(_response);\n });\n }\n\n protected processExportAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ScheduleConfigurationClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/ScheduleConfiguration/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScheduleConfigurationResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: ScheduleConfigurationRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ScheduleConfiguration/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScheduleConfigurationResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ScheduleDashboardClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n get(tenantId: number, body: ScheduleDashboardFilterRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ScheduleDashboard/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScheduleDashboardResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getGantt(tenantId: number, body: ScheduleGanttDashboardFilterRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ScheduleDashboard/gantt/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetGantt(_response);\n });\n }\n\n protected processGetGantt(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScheduleGanttDashboardResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getUtilization(tenantId: number, body: ScheduleUtilizationDashboardFilterRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ScheduleDashboard/utilization/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetUtilization(_response);\n });\n }\n\n protected processGetUtilization(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScheduleUtilizationRowDashboardResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getProjectUtilization(tenantId: number, body: ScheduleProjectUtilizationDashboardFilterRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ScheduleDashboard/projecUtilization/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetProjectUtilization(_response);\n });\n }\n\n protected processGetProjectUtilization(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScheduleUtilizationRowDashboardResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class SchedulePredecessorClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/SchedulePredecessor/{tenantId}/{projectId}/all\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SchedulePredecessorResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/SchedulePredecessor/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SchedulePredecessorResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/SchedulePredecessor/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, projectId: number, body: InsertSchedulePredecessorRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SchedulePredecessor/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SchedulePredecessorResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ScopeDashboardClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getForProcesses(tenantId: number, projectId: number, body: ScopeProcessesDashboardFilterRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ScopeDashboard/getForProcesses/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetForProcesses(_response);\n });\n }\n\n protected processGetForProcesses(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScopeProcessesDashboardResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getForChangeRequests(tenantId: number, projectId: number, body: ScopeChangeRequestsDashboardFilterRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ScopeDashboard/getForChangeRequests/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetForChangeRequests(_response);\n });\n }\n\n protected processGetForChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScopeChangeRequestsDashboardResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ScopeDepartmentClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/ScopeDepartment/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectIsActiveOrderResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: ProjectConfigOrderDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ScopeDepartment/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ScopeItemLevelClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ScopeItemLevel/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScopeItemLevelResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ScopeItemLevel/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param parentId (optional)\n * @param levelNumber (optional)\n * @param includeChildren (optional)\n * @return Success\n */\n getAll(tenantId: number, projectId: number, parentId: number | undefined, levelNumber: number | undefined, includeChildren: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ScopeItemLevel/{tenantId}/{projectId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (parentId === null)\n throw new Error(\"The parameter 'parentId' cannot be null.\");\n else if (parentId !== undefined)\n url_ += \"ParentId=\" + encodeURIComponent(\"\" + parentId) + \"&\";\n if (levelNumber === null)\n throw new Error(\"The parameter 'levelNumber' cannot be null.\");\n else if (levelNumber !== undefined)\n url_ += \"LevelNumber=\" + encodeURIComponent(\"\" + levelNumber) + \"&\";\n if (includeChildren === null)\n throw new Error(\"The parameter 'includeChildren' cannot be null.\");\n else if (includeChildren !== undefined)\n url_ += \"IncludeChildren=\" + encodeURIComponent(\"\" + includeChildren) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScopeItemLevelResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, projectId: number, body: InsertScopeItemLevelRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ScopeItemLevel/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScopeItemLevelResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: UpdateScopeItemLevelRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ScopeItemLevel/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScopeItemLevelResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFiltering(tenantId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ScopeItemLevel/genericFilter/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFiltering(_response);\n });\n }\n\n protected processGetAllGenericFiltering(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScopeItemLevelResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateOrders(tenantId: number, projectId: number, body: UpdateOrderRequest[] | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ScopeItemLevel/orders/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateOrders(_response);\n });\n }\n\n protected processUpdateOrders(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getAllReport(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/ScopeItemLevel/{tenantId}/{projectId}/report\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllReport(_response);\n });\n }\n\n protected processGetAllReport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ScopeItemLevelReportResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n clone(tenantId: number, projectId: number, body: CopyFromProjectRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ScopeItemLevel/clone/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processClone(_response);\n });\n }\n\n protected processClone(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getDiagram(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ScopeItemLevel/diagram/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetDiagram(_response);\n });\n }\n\n protected processGetDiagram(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = StringSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateDiagram(tenantId: number, projectId: number, id: number, body: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ScopeItemLevel/diagram/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateDiagram(_response);\n });\n }\n\n protected processUpdateDiagram(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, projectId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ScopeItemLevel/{tenantId}/{projectId}/export\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n downloadAttachment(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ScopeItemLevel/{tenantId}/{projectId}/{id}/attachment\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownloadAttachment(_response);\n });\n }\n\n protected processDownloadAttachment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n removeAttachment(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/ScopeItemLevel/{tenantId}/{projectId}/{id}/attachment\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRemoveAttachment(_response);\n });\n }\n\n protected processRemoveAttachment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ScopeStepTypeClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/ScopeStepType/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectIsActiveOrderResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: ProjectConfigOrderDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ScopeStepType/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ScopeUserRoleClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/ScopeUserRole/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectIsActiveOrderResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: ProjectConfigOrderDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ScopeUserRole/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class StatusReportClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @return Success\n */\n getAll(tenantId: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/StatusReport/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = StatusReportResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param isRelease (optional)\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, isRelease: boolean | undefined, body: InsertStatusReportRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/StatusReport/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (isRelease === null)\n throw new Error(\"The parameter 'isRelease' cannot be null.\");\n else if (isRelease !== undefined)\n url_ += \"isRelease=\" + encodeURIComponent(\"\" + isRelease) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = StatusReportResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param isRelease (optional)\n * @param isAlign (optional)\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, isRelease: boolean | undefined, isAlign: boolean | undefined, body: UpdateStatusReportRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/StatusReport/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (isRelease === null)\n throw new Error(\"The parameter 'isRelease' cannot be null.\");\n else if (isRelease !== undefined)\n url_ += \"isRelease=\" + encodeURIComponent(\"\" + isRelease) + \"&\";\n if (isAlign === null)\n throw new Error(\"The parameter 'isAlign' cannot be null.\");\n else if (isAlign !== undefined)\n url_ += \"isAlign=\" + encodeURIComponent(\"\" + isAlign) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = StatusReportResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/StatusReport/{tenantId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = StatusReportResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @return Success\n */\n get(tenantId: number, id: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/StatusReport/{tenantId}/{id}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = StatusReportResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @return Success\n */\n delete(tenantId: number, id: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/StatusReport/{tenantId}/{id}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @return Success\n */\n release(tenantId: number, id: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/StatusReport/release/{tenantId}/{id}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRelease(_response);\n });\n }\n\n protected processRelease(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @return Success\n */\n align(tenantId: number, id: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/StatusReport/align/{tenantId}/{id}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processAlign(_response);\n });\n }\n\n protected processAlign(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @return Success\n */\n clone(tenantId: number, id: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/StatusReport/clone/{tenantId}/{id}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processClone(_response);\n });\n }\n\n protected processClone(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = StatusReportResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @param body (optional)\n * @return Success\n */\n exportAll(tenantId: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/StatusReport/{tenantId}/exportAll?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportAll(_response);\n });\n }\n\n protected processExportAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class StatusReportStatusClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/StatusReportStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = StatusReportStatusResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: SimpleStatusRequestUpdateSimpleStatusRequestItems | undefined): Promise {\n let url_ = this.baseUrl + \"/api/StatusReportStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class SurveyClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Survey/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SurveyResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param surveyStatus (optional)\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, projectId: number, surveyStatus: SurveyStatusEnum | undefined, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Survey/{tenantId}/{projectId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (surveyStatus === null)\n throw new Error(\"The parameter 'surveyStatus' cannot be null.\");\n else if (surveyStatus !== undefined)\n url_ += \"SurveyStatus=\" + encodeURIComponent(\"\" + surveyStatus) + \"&\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SurveyResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, projectId: number, body: InsertSurveyRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Survey/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SurveyResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: UpdateSurveyRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Survey/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SurveyResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param surveyStatus (optional)\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAllReduced(tenantId: number, projectId: number, surveyStatus: SurveyStatusEnum | undefined, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Survey/getReduced/{tenantId}/{projectId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (surveyStatus === null)\n throw new Error(\"The parameter 'surveyStatus' cannot be null.\");\n else if (surveyStatus !== undefined)\n url_ += \"SurveyStatus=\" + encodeURIComponent(\"\" + surveyStatus) + \"&\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllReduced(_response);\n });\n }\n\n protected processGetAllReduced(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SurveyReducedResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, projectId: number, surveyId: number): Promise {\n let url_ = this.baseUrl + \"/api/Survey/{tenantId}/{projectId}/{surveyId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{surveyId}\", encodeURIComponent(\"\" + surveyId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n clone(tenantId: number, projectId: number, body: CloneSurveyRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Survey/clone/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processClone(_response);\n });\n }\n\n protected processClone(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SurveyResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAllMy(tenantId: number, projectId: number, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Survey/allMy/{tenantId}/{projectId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllMy(_response);\n });\n }\n\n protected processGetAllMy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MySurveyResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getMy(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Survey/my/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetMy(_response);\n });\n }\n\n protected processGetMy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MySurveyResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n submitMy(tenantId: number, surveyId: number, projectId: string, body: SubmitMySurveyRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Survey/submitMy/{tenantId}/{projectId}/{surveyId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{surveyId}\", encodeURIComponent(\"\" + surveyId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSubmitMy(_response);\n });\n }\n\n protected processSubmitMy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MySurveyResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class SurveyAnswerClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAll(tenantId: number, projectId: number, surveyId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SurveyAnswer/{tenantId}/{projectId}/{surveyId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{surveyId}\", encodeURIComponent(\"\" + surveyId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SurveyAnswerResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, projectId: number, surveyId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SurveyAnswer/export/{tenantId}/{projectId}/{surveyId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{surveyId}\", encodeURIComponent(\"\" + surveyId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class SurveyParticipantClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, surveyId: number, offset: number | undefined, limit: number | undefined, projectId: string): Promise {\n let url_ = this.baseUrl + \"/api/SurveyParticipant/{tenantId}/{projectId}/{surveyId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{surveyId}\", encodeURIComponent(\"\" + surveyId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SurveyParticipantResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateSurveyParticipants(tenantId: number, projectId: number, surveyId: number, body: UpdateSurveyParticipantsRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SurveyParticipant/updateSurveyParticipants/{tenantId}/{projectId}/{surveyId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{surveyId}\", encodeURIComponent(\"\" + surveyId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateSurveyParticipants(_response);\n });\n }\n\n protected processUpdateSurveyParticipants(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SurveyParticipantResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n releaseAndSendToSurveyParticipants(tenantId: number, surveyId: number, projectId: string): Promise {\n let url_ = this.baseUrl + \"/api/SurveyParticipant/releaseAndSendToSurveyParticipants/{tenantId}/{projectId}/{surveyId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{surveyId}\", encodeURIComponent(\"\" + surveyId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processReleaseAndSendToSurveyParticipants(_response);\n });\n }\n\n protected processReleaseAndSendToSurveyParticipants(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class SurveyQuestionClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, surveyId: number, id: number, projectId: string): Promise {\n let url_ = this.baseUrl + \"/api/SurveyQuestion/{tenantId}/{projectId}/{surveyId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{surveyId}\", encodeURIComponent(\"\" + surveyId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SurveyQuestionResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, surveyId: number, id: number, projectId: string): Promise {\n let url_ = this.baseUrl + \"/api/SurveyQuestion/{tenantId}/{projectId}/{surveyId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{surveyId}\", encodeURIComponent(\"\" + surveyId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, surveyId: number, offset: number | undefined, limit: number | undefined, projectId: string): Promise {\n let url_ = this.baseUrl + \"/api/SurveyQuestion/{tenantId}/{projectId}/{surveyId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{surveyId}\", encodeURIComponent(\"\" + surveyId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SurveyQuestionResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, surveyId: number, projectId: string, body: InsertSurveyQuestionRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SurveyQuestion/{tenantId}/{projectId}/{surveyId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{surveyId}\", encodeURIComponent(\"\" + surveyId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SurveyQuestionResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, surveyId: number, projectId: string, body: UpdateSurveyQuestionRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SurveyQuestion/{tenantId}/{projectId}/{surveyId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{surveyId}\", encodeURIComponent(\"\" + surveyId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SurveyQuestionResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getMy(tenantId: number, surveyId: number, offset: number | undefined, limit: number | undefined, projectId: string): Promise {\n let url_ = this.baseUrl + \"/api/SurveyQuestion/my/{tenantId}/{projectId}/{surveyId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{surveyId}\", encodeURIComponent(\"\" + surveyId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetMy(_response);\n });\n }\n\n protected processGetMy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MySurveyQuestionResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TaskClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getSimple(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Task/simple/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSimple(_response);\n });\n }\n\n protected processGetSimple(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = IdNameResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Task/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TaskResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @return Success\n */\n delete(tenantId: number, id: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Task/{tenantId}/{id}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param idFormatPrefix (optional)\n * @param searchValue (optional)\n * @param body (optional)\n * @return Success\n */\n search(tenantId: number, idFormatPrefix: string | undefined, searchValue: string | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Task/search/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (idFormatPrefix === null)\n throw new Error(\"The parameter 'idFormatPrefix' cannot be null.\");\n else if (idFormatPrefix !== undefined)\n url_ += \"idFormatPrefix=\" + encodeURIComponent(\"\" + idFormatPrefix) + \"&\";\n if (searchValue === null)\n throw new Error(\"The parameter 'searchValue' cannot be null.\");\n else if (searchValue !== undefined)\n url_ += \"searchValue=\" + encodeURIComponent(\"\" + searchValue) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSearch(_response);\n });\n }\n\n protected processSearch(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = IdNameResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectIds (optional)\n * @param nonProjectCategoryIds (optional)\n * @param partialRequest (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, projectIds: number[] | undefined, nonProjectCategoryIds: number[] | undefined, partialRequest: PartialTaskRequestEnum[] | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Task/{tenantId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectIds === null)\n throw new Error(\"The parameter 'projectIds' cannot be null.\");\n else if (projectIds !== undefined)\n projectIds && projectIds.forEach(item => { url_ += \"projectIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (nonProjectCategoryIds === null)\n throw new Error(\"The parameter 'nonProjectCategoryIds' cannot be null.\");\n else if (nonProjectCategoryIds !== undefined)\n nonProjectCategoryIds && nonProjectCategoryIds.forEach(item => { url_ += \"nonProjectCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (partialRequest === null)\n throw new Error(\"The parameter 'partialRequest' cannot be null.\");\n else if (partialRequest !== undefined)\n partialRequest && partialRequest.forEach(item => { url_ += \"partialRequest=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TaskResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectIds (optional)\n * @param nonProjectCategoryIds (optional)\n * @param statusId (optional)\n * @param notEqualStatusId (optional)\n * @return Success\n */\n getAll(tenantId: number, projectIds: number[] | undefined, nonProjectCategoryIds: number[] | undefined, statusId: number | undefined, notEqualStatusId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Task/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectIds === null)\n throw new Error(\"The parameter 'projectIds' cannot be null.\");\n else if (projectIds !== undefined)\n projectIds && projectIds.forEach(item => { url_ += \"projectIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (nonProjectCategoryIds === null)\n throw new Error(\"The parameter 'nonProjectCategoryIds' cannot be null.\");\n else if (nonProjectCategoryIds !== undefined)\n nonProjectCategoryIds && nonProjectCategoryIds.forEach(item => { url_ += \"nonProjectCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (statusId === null)\n throw new Error(\"The parameter 'statusId' cannot be null.\");\n else if (statusId !== undefined)\n url_ += \"statusId=\" + encodeURIComponent(\"\" + statusId) + \"&\";\n if (notEqualStatusId === null)\n throw new Error(\"The parameter 'notEqualStatusId' cannot be null.\");\n else if (notEqualStatusId !== undefined)\n url_ += \"notEqualStatusId=\" + encodeURIComponent(\"\" + notEqualStatusId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TaskResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, body: InsertTaskRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Task/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TaskResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: UpdateTaskRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Task/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TaskResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getAllSimple(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/Task/{tenantId}/simple\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllSimple(_response);\n });\n }\n\n protected processGetAllSimple(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SimpleIdNameModelItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @return Success\n */\n downloadAttachment(tenantId: number, taskId: number, id: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Task/attachment/{tenantId}/{taskId}/{id}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (taskId === undefined || taskId === null)\n throw new Error(\"The parameter 'taskId' must be defined.\");\n url_ = url_.replace(\"{taskId}\", encodeURIComponent(\"\" + taskId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownloadAttachment(_response);\n });\n }\n\n protected processDownloadAttachment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @return Success\n */\n removeAttachment(tenantId: number, taskId: number, id: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Task/attachment/{tenantId}/{taskId}/{id}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (taskId === undefined || taskId === null)\n throw new Error(\"The parameter 'taskId' must be defined.\");\n url_ = url_.replace(\"{taskId}\", encodeURIComponent(\"\" + taskId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRemoveAttachment(_response);\n });\n }\n\n protected processRemoveAttachment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectIds (optional)\n * @param nonProjectCategoryIds (optional)\n * @param partialRequest (optional)\n * @param body (optional)\n * @return Success\n */\n exportAll(tenantId: number, projectIds: number[] | undefined, nonProjectCategoryIds: number[] | undefined, partialRequest: PartialTaskRequestEnum[] | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Task/{tenantId}/exportAll?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectIds === null)\n throw new Error(\"The parameter 'projectIds' cannot be null.\");\n else if (projectIds !== undefined)\n projectIds && projectIds.forEach(item => { url_ += \"projectIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (nonProjectCategoryIds === null)\n throw new Error(\"The parameter 'nonProjectCategoryIds' cannot be null.\");\n else if (nonProjectCategoryIds !== undefined)\n nonProjectCategoryIds && nonProjectCategoryIds.forEach(item => { url_ += \"nonProjectCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (partialRequest === null)\n throw new Error(\"The parameter 'partialRequest' cannot be null.\");\n else if (partialRequest !== undefined)\n partialRequest && partialRequest.forEach(item => { url_ += \"partialRequest=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportAll(_response);\n });\n }\n\n protected processExportAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @param from (optional)\n * @param to (optional)\n * @return Success\n */\n getHistoryFromTo(tenantId: number, id: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined, from: Date | undefined, to: Date | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Task/history/{tenantId}/{id}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n if (from === null)\n throw new Error(\"The parameter 'from' cannot be null.\");\n else if (from !== undefined)\n url_ += \"from=\" + encodeURIComponent(from ? \"\" + from.toISOString() : \"\") + \"&\";\n if (to === null)\n throw new Error(\"The parameter 'to' cannot be null.\");\n else if (to !== undefined)\n url_ += \"to=\" + encodeURIComponent(to ? \"\" + to.toISOString() : \"\") + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetHistoryFromTo(_response);\n });\n }\n\n protected processGetHistoryFromTo(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TaskHistoryResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @return Success\n */\n getTimesheets(tenantId: number, taskId: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Task/timesheets/{tenantId}/{taskId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (taskId === undefined || taskId === null)\n throw new Error(\"The parameter 'taskId' must be defined.\");\n url_ = url_.replace(\"{taskId}\", encodeURIComponent(\"\" + taskId));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTimesheets(_response);\n });\n }\n\n protected processGetTimesheets(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TaskTimesheetResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @param body (optional)\n * @return Success\n */\n updateTimesheets(tenantId: number, taskId: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined, body: TaskTimesheetDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Task/timesheets/{tenantId}/{taskId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (taskId === undefined || taskId === null)\n throw new Error(\"The parameter 'taskId' must be defined.\");\n url_ = url_.replace(\"{taskId}\", encodeURIComponent(\"\" + taskId));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateTimesheets(_response);\n });\n }\n\n protected processUpdateTimesheets(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @param follow (optional)\n * @return Success\n */\n followTask(tenantId: number, taskId: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined, follow: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Task/follow/{tenantId}/{taskId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (taskId === undefined || taskId === null)\n throw new Error(\"The parameter 'taskId' must be defined.\");\n url_ = url_.replace(\"{taskId}\", encodeURIComponent(\"\" + taskId));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n if (follow === null)\n throw new Error(\"The parameter 'follow' cannot be null.\");\n else if (follow !== undefined)\n url_ += \"follow=\" + encodeURIComponent(\"\" + follow) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processFollowTask(_response);\n });\n }\n\n protected processFollowTask(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TaskCommentClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param projectOrCategoryId (optional)\n * @param isProjectConnected (optional)\n * @return Success\n */\n getAll(tenantId: number, taskId: number, projectOrCategoryId: number | undefined, isProjectConnected: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TaskComment/{tenantId}/{taskId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (taskId === undefined || taskId === null)\n throw new Error(\"The parameter 'taskId' must be defined.\");\n url_ = url_.replace(\"{taskId}\", encodeURIComponent(\"\" + taskId));\n if (projectOrCategoryId === null)\n throw new Error(\"The parameter 'projectOrCategoryId' cannot be null.\");\n else if (projectOrCategoryId !== undefined)\n url_ += \"projectOrCategoryId=\" + encodeURIComponent(\"\" + projectOrCategoryId) + \"&\";\n if (isProjectConnected === null)\n throw new Error(\"The parameter 'isProjectConnected' cannot be null.\");\n else if (isProjectConnected !== undefined)\n url_ += \"isProjectConnected=\" + encodeURIComponent(\"\" + isProjectConnected) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TaskCommentResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, body: InsertTaskCommentRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TaskComment/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TaskCommentResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: UpdateTaskCommentRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TaskComment/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TaskCommentResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/TaskComment/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TaskStatusClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TaskStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TaskStatusResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: StatusDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TaskStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TeamSizeClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getTeamSizes(): Promise {\n let url_ = this.baseUrl + \"/api/TeamSize\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTeamSizes(_response);\n });\n }\n\n protected processGetTeamSizes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = IdNameSymbolResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TenantClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(id: number, body: TenantUpdateRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Tenant/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantResponseModelSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getTenant(id: number): Promise {\n let url_ = this.baseUrl + \"/api/Tenant/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTenant(_response);\n });\n }\n\n protected processGetTenant(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantResponseModelSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n tenantExists(body: CheckTenantRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Tenant/exists\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processTenantExists(_response);\n });\n }\n\n protected processTenantExists(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getCompany(id: number): Promise {\n let url_ = this.baseUrl + \"/api/Tenant/companyinfo/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCompany(_response);\n });\n }\n\n protected processGetCompany(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CompanyResponseModelSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateCompany(id: number, body: CompanyRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Tenant/companyinfo/{id}\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateCompany(_response);\n });\n }\n\n protected processUpdateCompany(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CompanyResponseModelSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TestCycleClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, projectId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/TestCycle/{tenantId}/{projectId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, projectId: number, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TestCycle/{tenantId}/{projectId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: TestCycleDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TestCycle/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, projectId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TestCycle/genericFilter/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TestDashboardClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n get(tenantId: number, projectId: number, cycleId: number, body: TestDashboardFilterRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TestDashboard/{tenantId}/{projectId}/{cycleId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (cycleId === undefined || cycleId === null)\n throw new Error(\"The parameter 'cycleId' must be defined.\");\n url_ = url_.replace(\"{cycleId}\", encodeURIComponent(\"\" + cycleId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TestDashboardResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TestPlanClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, projectId: number, testCycleId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/TestPlan/{tenantId}/{projectId}/{testCycleId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (testCycleId === undefined || testCycleId === null)\n throw new Error(\"The parameter 'testCycleId' must be defined.\");\n url_ = url_.replace(\"{testCycleId}\", encodeURIComponent(\"\" + testCycleId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TestPlanResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, projectId: number, testCycleId: number, includeLevel4: boolean, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TestPlan/genericFilter/{tenantId}/{projectId}/{testCycleId}/{includeLevel4}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (testCycleId === undefined || testCycleId === null)\n throw new Error(\"The parameter 'testCycleId' must be defined.\");\n url_ = url_.replace(\"{testCycleId}\", encodeURIComponent(\"\" + testCycleId));\n if (includeLevel4 === undefined || includeLevel4 === null)\n throw new Error(\"The parameter 'includeLevel4' must be defined.\");\n url_ = url_.replace(\"{includeLevel4}\", encodeURIComponent(\"\" + includeLevel4));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TestPlanRowResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getAllSimple(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TestPlan/{tenantId}/simple\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllSimple(_response);\n });\n }\n\n protected processGetAllSimple(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SimpleIdNameModelItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n setAllIsActive(tenantId: number, projectId: number, testCycleId: number, isActive: boolean, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TestPlan/setAll/{tenantId}/{projectId}/{testCycleId}/{isActive}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (testCycleId === undefined || testCycleId === null)\n throw new Error(\"The parameter 'testCycleId' must be defined.\");\n url_ = url_.replace(\"{testCycleId}\", encodeURIComponent(\"\" + testCycleId));\n if (isActive === undefined || isActive === null)\n throw new Error(\"The parameter 'isActive' must be defined.\");\n url_ = url_.replace(\"{isActive}\", encodeURIComponent(\"\" + isActive));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSetAllIsActive(_response);\n });\n }\n\n protected processSetAllIsActive(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getMy(tenantId: number, projectId: number, testCycleId: number, includeLevel4: boolean, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TestPlan/my/genericFilter/{tenantId}/{projectId}/{testCycleId}/{includeLevel4}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (testCycleId === undefined || testCycleId === null)\n throw new Error(\"The parameter 'testCycleId' must be defined.\");\n url_ = url_.replace(\"{testCycleId}\", encodeURIComponent(\"\" + testCycleId));\n if (includeLevel4 === undefined || includeLevel4 === null)\n throw new Error(\"The parameter 'includeLevel4' must be defined.\");\n url_ = url_.replace(\"{includeLevel4}\", encodeURIComponent(\"\" + includeLevel4));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetMy(_response);\n });\n }\n\n protected processGetMy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MyTestPlanResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param showTestStatus (optional)\n * @param body (optional)\n * @return Success\n */\n getAllReport(tenantId: number, projectId: number, testCycleId: number, showTestStatus: ShowTestStatusEnum | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TestPlan/report/genericFilter/{tenantId}/{projectId}/{testCycleId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (testCycleId === undefined || testCycleId === null)\n throw new Error(\"The parameter 'testCycleId' must be defined.\");\n url_ = url_.replace(\"{testCycleId}\", encodeURIComponent(\"\" + testCycleId));\n if (showTestStatus === null)\n throw new Error(\"The parameter 'showTestStatus' cannot be null.\");\n else if (showTestStatus !== undefined)\n url_ += \"showTestStatus=\" + encodeURIComponent(\"\" + showTestStatus) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllReport(_response);\n });\n }\n\n protected processGetAllReport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ReportTestPlanResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateLevel3(tenantId: number, projectId: number, testCycleId: number, body: UpdateLevel3TestPlanRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TestPlan/updateLevel3/{tenantId}/{projectId}/{testCycleId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (testCycleId === undefined || testCycleId === null)\n throw new Error(\"The parameter 'testCycleId' must be defined.\");\n url_ = url_.replace(\"{testCycleId}\", encodeURIComponent(\"\" + testCycleId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateLevel3(_response);\n });\n }\n\n protected processUpdateLevel3(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateLevel4(tenantId: number, projectId: number, testCycleId: number, body: UpdateLevel4TestPlanRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TestPlan/updateLevel4/{tenantId}/{projectId}/{testCycleId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (testCycleId === undefined || testCycleId === null)\n throw new Error(\"The parameter 'testCycleId' must be defined.\");\n url_ = url_.replace(\"{testCycleId}\", encodeURIComponent(\"\" + testCycleId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateLevel4(_response);\n });\n }\n\n protected processUpdateLevel4(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, testCycleId: number, body: UpdateTestPlanRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TestPlan/{tenantId}/{projectId}/{testCycleId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (testCycleId === undefined || testCycleId === null)\n throw new Error(\"The parameter 'testCycleId' must be defined.\");\n url_ = url_.replace(\"{testCycleId}\", encodeURIComponent(\"\" + testCycleId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TestPlanResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n clone(tenantId: number, projectId: number, testCycleId: number, body: CopyFromTestCycleRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TestPlan/clone/{tenantId}/{projectId}/{testCycleId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (testCycleId === undefined || testCycleId === null)\n throw new Error(\"The parameter 'testCycleId' must be defined.\");\n url_ = url_.replace(\"{testCycleId}\", encodeURIComponent(\"\" + testCycleId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processClone(_response);\n });\n }\n\n protected processClone(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n exportTestPlans(tenantId: number, projectId: number, testCycleId: number, includeLevel4: boolean, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TestPlan/{tenantId}/{projectId}/{testCycleId}/{includeLevel4}/exportTestPlans\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (testCycleId === undefined || testCycleId === null)\n throw new Error(\"The parameter 'testCycleId' must be defined.\");\n url_ = url_.replace(\"{testCycleId}\", encodeURIComponent(\"\" + testCycleId));\n if (includeLevel4 === undefined || includeLevel4 === null)\n throw new Error(\"The parameter 'includeLevel4' must be defined.\");\n url_ = url_.replace(\"{includeLevel4}\", encodeURIComponent(\"\" + includeLevel4));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportTestPlans(_response);\n });\n }\n\n protected processExportTestPlans(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n exportMyTestPlans(tenantId: number, projectId: number, testCycleId: number, includeLevel4: boolean, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TestPlan/{tenantId}/{projectId}/{testCycleId}/{includeLevel4}/exportMyTestPlans\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (testCycleId === undefined || testCycleId === null)\n throw new Error(\"The parameter 'testCycleId' must be defined.\");\n url_ = url_.replace(\"{testCycleId}\", encodeURIComponent(\"\" + testCycleId));\n if (includeLevel4 === undefined || includeLevel4 === null)\n throw new Error(\"The parameter 'includeLevel4' must be defined.\");\n url_ = url_.replace(\"{includeLevel4}\", encodeURIComponent(\"\" + includeLevel4));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportMyTestPlans(_response);\n });\n }\n\n protected processExportMyTestPlans(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param showTestStatus (optional)\n * @param body (optional)\n * @return Success\n */\n exportTestStatus(tenantId: number, projectId: number, testCycleId: number, showTestStatus: ShowTestStatusEnum | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TestPlan/{tenantId}/{projectId}/{testCycleId}/exportTestStatus?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (testCycleId === undefined || testCycleId === null)\n throw new Error(\"The parameter 'testCycleId' must be defined.\");\n url_ = url_.replace(\"{testCycleId}\", encodeURIComponent(\"\" + testCycleId));\n if (showTestStatus === null)\n throw new Error(\"The parameter 'showTestStatus' cannot be null.\");\n else if (showTestStatus !== undefined)\n url_ += \"showTestStatus=\" + encodeURIComponent(\"\" + showTestStatus) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportTestStatus(_response);\n });\n }\n\n protected processExportTestStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getHistoryFromTo(tenantId: number, projectId: number, testCycleId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/TestPlan/history/{tenantId}/{projectId}/{testCycleId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (testCycleId === undefined || testCycleId === null)\n throw new Error(\"The parameter 'testCycleId' must be defined.\");\n url_ = url_.replace(\"{testCycleId}\", encodeURIComponent(\"\" + testCycleId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetHistoryFromTo(_response);\n });\n }\n\n protected processGetHistoryFromTo(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TestPlanHistoryResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n downloadAttachment(tenantId: number, projectId: number, testCycleId: number, testPlanId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/TestPlan/attachment/{tenantId}/{projectId}/{testCycleId}/{testPlanId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (testCycleId === undefined || testCycleId === null)\n throw new Error(\"The parameter 'testCycleId' must be defined.\");\n url_ = url_.replace(\"{testCycleId}\", encodeURIComponent(\"\" + testCycleId));\n if (testPlanId === undefined || testPlanId === null)\n throw new Error(\"The parameter 'testPlanId' must be defined.\");\n url_ = url_.replace(\"{testPlanId}\", encodeURIComponent(\"\" + testPlanId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownloadAttachment(_response);\n });\n }\n\n protected processDownloadAttachment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n removeAttachment(tenantId: number, projectId: number, testCycleId: number, testPlanId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/TestPlan/attachment/{tenantId}/{projectId}/{testCycleId}/{testPlanId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (testCycleId === undefined || testCycleId === null)\n throw new Error(\"The parameter 'testCycleId' must be defined.\");\n url_ = url_.replace(\"{testCycleId}\", encodeURIComponent(\"\" + testCycleId));\n if (testPlanId === undefined || testPlanId === null)\n throw new Error(\"The parameter 'testPlanId' must be defined.\");\n url_ = url_.replace(\"{testPlanId}\", encodeURIComponent(\"\" + testPlanId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRemoveAttachment(_response);\n });\n }\n\n protected processRemoveAttachment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TestStatusClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TestStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TestStatusResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: TestStatusDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TestStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TicketClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getSimple(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Ticket/simple/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSimple(_response);\n });\n }\n\n protected processGetSimple(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = IdNameResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Ticket/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Ticket/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param idFormatPrefix (optional)\n * @param searchValue (optional)\n * @param body (optional)\n * @return Success\n */\n search(tenantId: number, idFormatPrefix: string | undefined, searchValue: string | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Ticket/search/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (idFormatPrefix === null)\n throw new Error(\"The parameter 'idFormatPrefix' cannot be null.\");\n else if (idFormatPrefix !== undefined)\n url_ += \"idFormatPrefix=\" + encodeURIComponent(\"\" + idFormatPrefix) + \"&\";\n if (searchValue === null)\n throw new Error(\"The parameter 'searchValue' cannot be null.\");\n else if (searchValue !== undefined)\n url_ += \"searchValue=\" + encodeURIComponent(\"\" + searchValue) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSearch(_response);\n });\n }\n\n protected processSearch(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = IdNameResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param partalRequest (optional)\n * @param body (optional)\n * @return Success\n */\n getAll(tenantId: number, partalRequest: PartalTicketRequestEnum[] | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Ticket/genericfilter/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (partalRequest === null)\n throw new Error(\"The parameter 'partalRequest' cannot be null.\");\n else if (partalRequest !== undefined)\n partalRequest && partalRequest.forEach(item => { url_ += \"partalRequest=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketResponseGetAllItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getAllSimple(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/Ticket/{tenantId}/simple\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllSimple(_response);\n });\n }\n\n protected processGetAllSimple(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SimpleProjectIdNameModelItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getAllByProjectId(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/Ticket/{tenantId}/{projectId}/all\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllByProjectId(_response);\n });\n }\n\n protected processGetAllByProjectId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, body: InsertTicketRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Ticket/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: UpdateTicketRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Ticket/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param partialRequest (optional)\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, partialRequest: PartalTicketRequestEnum[] | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Ticket/{tenantId}/export?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (partialRequest === null)\n throw new Error(\"The parameter 'partialRequest' cannot be null.\");\n else if (partialRequest !== undefined)\n partialRequest && partialRequest.forEach(item => { url_ += \"partialRequest=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n uploadAttachment(tenantId: number, ticketId: number, body: InsertAttachmentRequest[] | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Ticket/attachment/{tenantId}/{ticketId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (ticketId === undefined || ticketId === null)\n throw new Error(\"The parameter 'ticketId' must be defined.\");\n url_ = url_.replace(\"{ticketId}\", encodeURIComponent(\"\" + ticketId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUploadAttachment(_response);\n });\n }\n\n protected processUploadAttachment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = AttachmentResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n downloadAttachment(tenantId: number, ticketId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Ticket/attachment/{tenantId}/{ticketId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (ticketId === undefined || ticketId === null)\n throw new Error(\"The parameter 'ticketId' must be defined.\");\n url_ = url_.replace(\"{ticketId}\", encodeURIComponent(\"\" + ticketId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownloadAttachment(_response);\n });\n }\n\n protected processDownloadAttachment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n removeAttachment(tenantId: number, ticketId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Ticket/attachment/{tenantId}/{ticketId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (ticketId === undefined || ticketId === null)\n throw new Error(\"The parameter 'ticketId' must be defined.\");\n url_ = url_.replace(\"{ticketId}\", encodeURIComponent(\"\" + ticketId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRemoveAttachment(_response);\n });\n }\n\n protected processRemoveAttachment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param follow (optional)\n * @return Success\n */\n followTicket(tenantId: number, ticketId: number, follow: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Ticket/follow/{tenantId}/{ticketId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (ticketId === undefined || ticketId === null)\n throw new Error(\"The parameter 'ticketId' must be defined.\");\n url_ = url_.replace(\"{ticketId}\", encodeURIComponent(\"\" + ticketId));\n if (follow === null)\n throw new Error(\"The parameter 'follow' cannot be null.\");\n else if (follow !== undefined)\n url_ += \"follow=\" + encodeURIComponent(\"\" + follow) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processFollowTicket(_response);\n });\n }\n\n protected processFollowTicket(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param from (optional)\n * @param to (optional)\n * @return Success\n */\n getHistoryFromTo(tenantId: number, id: number, from: Date | undefined, to: Date | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Ticket/history/{tenantId}/{id}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (from === null)\n throw new Error(\"The parameter 'from' cannot be null.\");\n else if (from !== undefined)\n url_ += \"from=\" + encodeURIComponent(from ? \"\" + from.toISOString() : \"\") + \"&\";\n if (to === null)\n throw new Error(\"The parameter 'to' cannot be null.\");\n else if (to !== undefined)\n url_ += \"to=\" + encodeURIComponent(to ? \"\" + to.toISOString() : \"\") + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetHistoryFromTo(_response);\n });\n }\n\n protected processGetHistoryFromTo(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketHistoryResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TicketCommentClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, ticketId: number, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TicketComment/{tenantId}/{ticketId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (ticketId === undefined || ticketId === null)\n throw new Error(\"The parameter 'ticketId' must be defined.\");\n url_ = url_.replace(\"{ticketId}\", encodeURIComponent(\"\" + ticketId));\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketCommnetResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, ticketId: number, body: InsertTicketCommnetRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TicketComment/{tenantId}/{ticketId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (ticketId === undefined || ticketId === null)\n throw new Error(\"The parameter 'ticketId' must be defined.\");\n url_ = url_.replace(\"{ticketId}\", encodeURIComponent(\"\" + ticketId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketCommnetResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, ticketId: number, body: UpdateTicketCommentRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TicketComment/{tenantId}/{ticketId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (ticketId === undefined || ticketId === null)\n throw new Error(\"The parameter 'ticketId' must be defined.\");\n url_ = url_.replace(\"{ticketId}\", encodeURIComponent(\"\" + ticketId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketCommnetResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/TicketComment/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketCommnetResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n downloadAttachment(tenantId: number, ticketCommentId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/TicketComment/attachment/{tenantId}/{ticketCommentId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (ticketCommentId === undefined || ticketCommentId === null)\n throw new Error(\"The parameter 'ticketCommentId' must be defined.\");\n url_ = url_.replace(\"{ticketCommentId}\", encodeURIComponent(\"\" + ticketCommentId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownloadAttachment(_response);\n });\n }\n\n protected processDownloadAttachment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TicketConfigClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getTicketTypes(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/type/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTicketTypes(_response);\n });\n }\n\n protected processGetTicketTypes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateTicketTypes(tenantId: number, body: TenantIsActiveDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/type/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateTicketTypes(_response);\n });\n }\n\n protected processUpdateTicketTypes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getTicketEnvironments(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/environment/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTicketEnvironments(_response);\n });\n }\n\n protected processGetTicketEnvironments(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateTicketEnvironments(tenantId: number, body: TenantIsActiveDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/environment/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateTicketEnvironments(_response);\n });\n }\n\n protected processUpdateTicketEnvironments(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getTicketClosingIds(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/closingId/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTicketClosingIds(_response);\n });\n }\n\n protected processGetTicketClosingIds(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateTicketClosingIds(tenantId: number, body: TenantIsActiveDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/closingId/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateTicketClosingIds(_response);\n });\n }\n\n protected processUpdateTicketClosingIds(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getAssignedGroups(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/assignedGroup/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAssignedGroups(_response);\n });\n }\n\n protected processGetAssignedGroups(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketAssignedGroupsResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateAssignedGroups(tenantId: number, body: TicketAssignedGroupDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/assignedGroup/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateAssignedGroups(_response);\n });\n }\n\n protected processUpdateAssignedGroups(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketAssignedGroupsResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getCategory(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/category/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCategory(_response);\n });\n }\n\n protected processGetCategory(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketCategoryResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n deleteCategory(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/category/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteCategory(_response);\n });\n }\n\n protected processDeleteCategory(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param parentId (optional)\n * @param levelNumber (optional)\n * @return Success\n */\n getAllCategories(tenantId: number, parentId: number | undefined, levelNumber: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/category/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (parentId === null)\n throw new Error(\"The parameter 'parentId' cannot be null.\");\n else if (parentId !== undefined)\n url_ += \"ParentId=\" + encodeURIComponent(\"\" + parentId) + \"&\";\n if (levelNumber === null)\n throw new Error(\"The parameter 'levelNumber' cannot be null.\");\n else if (levelNumber !== undefined)\n url_ += \"LevelNumber=\" + encodeURIComponent(\"\" + levelNumber) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllCategories(_response);\n });\n }\n\n protected processGetAllCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketCategoryResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n createCategory(tenantId: number, body: InsertTicketCategoryRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/category/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateCategory(_response);\n });\n }\n\n protected processCreateCategory(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketCategoryResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateCategory(tenantId: number, body: UpdateTicketCategoryRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/category/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateCategory(_response);\n });\n }\n\n protected processUpdateCategory(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketCategoryResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateTicketCategoryOrders(tenantId: number, body: UpdateOrderRequest[] | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/category/orders/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateTicketCategoryOrders(_response);\n });\n }\n\n protected processUpdateTicketCategoryOrders(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getPriorityDescs(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/priorityDescs/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPriorityDescs(_response);\n });\n }\n\n protected processGetPriorityDescs(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketPriorityDescriptionResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updatePriorityDescs(tenantId: number, body: TicketPriorityDescriptionRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/priorityDescs/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdatePriorityDescs(_response);\n });\n }\n\n protected processUpdatePriorityDescs(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getUrgencies(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/urgency/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetUrgencies(_response);\n });\n }\n\n protected processGetUrgencies(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = UrgencyResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getImpacts(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/impact/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetImpacts(_response);\n });\n }\n\n protected processGetImpacts(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ImpactResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getPriorites(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TicketConfig/priority/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPriorites(_response);\n });\n }\n\n protected processGetPriorites(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = PriorityResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TicketDashboardClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n get(tenantId: number, body: TicketDashboardFilterRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TicketDashboard/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketDashboardResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TicketStatusClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TicketStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TicketStatusResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: SimpleStatusRequestUpdateSimpleStatusRequestItems | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TicketStatus/ticket/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TimesheetClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllMy(tenantId: number, body: TimesheetsOneDayRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Timesheet/allMy/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllMy(_response);\n });\n }\n\n protected processGetAllMy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TimesheetResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllMyRecoredStatusesForPeriod(tenantId: number, body: TimesheetsPeriodRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Timesheet/myRecordedStatuses/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllMyRecoredStatusesForPeriod(_response);\n });\n }\n\n protected processGetAllMyRecoredStatusesForPeriod(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TimesheetRecordedStatusResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllMerged(tenantId: number, body: TimesheetsPeriodRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Timesheet/all/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllMerged(_response);\n });\n }\n\n protected processGetAllMerged(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TimesheetMergedResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getForPeriod(tenantId: number, projectId: number, statusId: number, userId: number, body: TimesheetsPeriodRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Timesheet/get/{tenantId}/{projectId}/{statusId}/{userId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (statusId === undefined || statusId === null)\n throw new Error(\"The parameter 'statusId' must be defined.\");\n url_ = url_.replace(\"{statusId}\", encodeURIComponent(\"\" + statusId));\n if (userId === undefined || userId === null)\n throw new Error(\"The parameter 'userId' must be defined.\");\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetForPeriod(_response);\n });\n }\n\n protected processGetForPeriod(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TimesheetResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: TimesheetDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Timesheet/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n patch(tenantId: number, projectId: number, body: PatchTenantIdentifyRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Timesheet/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processPatch(_response);\n });\n }\n\n protected processPatch(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TimesheetResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n release(tenantId: number, body: TimesheetsPeriodRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Timesheet/release/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRelease(_response);\n });\n }\n\n protected processRelease(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n approval(tenantId: number, body: ApprovalTimesheetRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Timesheet/approval/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processApproval(_response);\n });\n }\n\n protected processApproval(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param nonProjectCategoryId (optional)\n * @param projectId (optional)\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n exportMy(tenantId: number, nonProjectCategoryId: number | undefined, projectId: number | undefined, years: number[] | undefined, months: MonthEnum[] | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Timesheet/exportMy/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (nonProjectCategoryId === null)\n throw new Error(\"The parameter 'nonProjectCategoryId' cannot be null.\");\n else if (nonProjectCategoryId !== undefined)\n url_ += \"NonProjectCategoryId=\" + encodeURIComponent(\"\" + nonProjectCategoryId) + \"&\";\n if (projectId === null)\n throw new Error(\"The parameter 'projectId' cannot be null.\");\n else if (projectId !== undefined)\n url_ += \"ProjectId=\" + encodeURIComponent(\"\" + projectId) + \"&\";\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"Years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"Months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportMy(_response);\n });\n }\n\n protected processExportMy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n exportMerged(tenantId: number, body: ExportForPeriodTimesheetsRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Timesheet/exportMerged/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportMerged(_response);\n });\n }\n\n protected processExportMerged(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n exportForPeriod(tenantId: number, projectId: number, statusId: number, userId: number, body: ExportForPeriodTimesheetsRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Timesheet/exportForPeriod/{tenantId}/{projectId}/{statusId}/{userId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (statusId === undefined || statusId === null)\n throw new Error(\"The parameter 'statusId' must be defined.\");\n url_ = url_.replace(\"{statusId}\", encodeURIComponent(\"\" + statusId));\n if (userId === undefined || userId === null)\n throw new Error(\"The parameter 'userId' must be defined.\");\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportForPeriod(_response);\n });\n }\n\n protected processExportForPeriod(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n importExcel(tenantId: number, body: UploadExcelFileRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Timesheet/importExcel/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processImportExcel(_response);\n });\n }\n\n protected processImportExcel(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getImportedExcels(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/Timesheet/importExcel/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetImportedExcels(_response);\n });\n }\n\n protected processGetImportedExcels(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TimesheetImportedFileResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n deleteImportedExcel(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/Timesheet/importExcel/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteImportedExcel(_response);\n });\n }\n\n protected processDeleteImportedExcel(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TimesheetRequiredFieldsClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, projectId: number): Promise {\n let url_ = this.baseUrl + \"/api/TimesheetRequiredFields/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TimesheetRequiredFieldsResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: TimesheetRequiredFieldsRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TimesheetRequiredFields/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TimesheetRequiredFieldsResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TimeTravelConfigClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getExpenseTypes(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelConfig/expenseType/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetExpenseTypes(_response);\n });\n }\n\n protected processGetExpenseTypes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CostExpenseTypeResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateExpenseTypes(tenantId: number, body: CostExpenseTypeDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelConfig/expenseType/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateExpenseTypes(_response);\n });\n }\n\n protected processUpdateExpenseTypes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CostExpenseTypeResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getNonProjectCategories(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelConfig/nonProjectCategory/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetNonProjectCategories(_response);\n });\n }\n\n protected processGetNonProjectCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = NonProjectCategoryResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateNonProjectCategories(tenantId: number, body: NonProjectCategoryDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelConfig/nonProjectCategory/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateNonProjectCategories(_response);\n });\n }\n\n protected processUpdateNonProjectCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = NonProjectCategoryResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getTimesheetsConfig(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelConfig/timesheetsConfig/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTimesheetsConfig(_response);\n });\n }\n\n protected processGetTimesheetsConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TimesheetsConfigResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateTimesheetsConfig(tenantId: number, body: UpdateTimesheetsConfigRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelConfig/timesheetsConfig/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateTimesheetsConfig(_response);\n });\n }\n\n protected processUpdateTimesheetsConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TimesheetsConfigResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getTravelCostTypes(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelConfig/travelCostType/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTravelCostTypes(_response);\n });\n }\n\n protected processGetTravelCostTypes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CostExpenseTypeResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateTravelCostTypes(tenantId: number, body: CostExpenseTypeDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelConfig/travelCostType/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateTravelCostTypes(_response);\n });\n }\n\n protected processUpdateTravelCostTypes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CostExpenseTypeResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getTravelConfig(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelConfig/travelConfig/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTravelConfig(_response);\n });\n }\n\n protected processGetTravelConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TimeTravelConfigResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateTravelConfig(tenantId: number, body: UpdateTimeTravelConfigRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelConfig/travelConfig/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateTravelConfig(_response);\n });\n }\n\n protected processUpdateTravelConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TimeTravelConfigResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getVacationConfig(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelConfig/vacationConfig/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetVacationConfig(_response);\n });\n }\n\n protected processGetVacationConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TimeTravelConfigResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateVacationConfig(tenantId: number, body: UpdateTimeTravelConfigRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelConfig/vacationConfig/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateVacationConfig(_response);\n });\n }\n\n protected processUpdateVacationConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TimeTravelConfigResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TimeTravelDashboardClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getMy(tenantId: number, body: MyTimeTravelDashboardFilterRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelDashboard/myDashboards/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetMy(_response);\n });\n }\n\n protected processGetMy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MyTimeTravelDashboardResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n get(tenantId: number, body: ProjectTimeTravelDashboardFilterRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelDashboard/projectDashboard/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = ProjectTimeTravelDashboardResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectIds (optional)\n * @param nonProjectCategoryIds (optional)\n * @param userIds (optional)\n * @param partnerIds (optional)\n * @param organizationalUnitIds (optional)\n * @param body (optional)\n * @return Success\n */\n getTimesheetsGenericFiltering(tenantId: number, projectIds: number[] | undefined, nonProjectCategoryIds: number[] | undefined, userIds: number[] | undefined, partnerIds: number[] | undefined, organizationalUnitIds: number[] | undefined, dateRange_From: Date, dateRange_To: Date, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelDashboard/timesheets/genericFiltering/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectIds === null)\n throw new Error(\"The parameter 'projectIds' cannot be null.\");\n else if (projectIds !== undefined)\n projectIds && projectIds.forEach(item => { url_ += \"ProjectIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (nonProjectCategoryIds === null)\n throw new Error(\"The parameter 'nonProjectCategoryIds' cannot be null.\");\n else if (nonProjectCategoryIds !== undefined)\n nonProjectCategoryIds && nonProjectCategoryIds.forEach(item => { url_ += \"NonProjectCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (userIds === null)\n throw new Error(\"The parameter 'userIds' cannot be null.\");\n else if (userIds !== undefined)\n userIds && userIds.forEach(item => { url_ += \"UserIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (partnerIds === null)\n throw new Error(\"The parameter 'partnerIds' cannot be null.\");\n else if (partnerIds !== undefined)\n partnerIds && partnerIds.forEach(item => { url_ += \"PartnerIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (organizationalUnitIds === null)\n throw new Error(\"The parameter 'organizationalUnitIds' cannot be null.\");\n else if (organizationalUnitIds !== undefined)\n organizationalUnitIds && organizationalUnitIds.forEach(item => { url_ += \"OrganizationalUnitIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (dateRange_From === undefined || dateRange_From === null)\n throw new Error(\"The parameter 'dateRange_From' must be defined and cannot be null.\");\n else\n url_ += \"DateRange.From=\" + encodeURIComponent(dateRange_From ? \"\" + formatDate(dateRange_From) : \"\") + \"&\";\n if (dateRange_To === undefined || dateRange_To === null)\n throw new Error(\"The parameter 'dateRange_To' must be defined and cannot be null.\");\n else\n url_ += \"DateRange.To=\" + encodeURIComponent(dateRange_To ? \"\" + formatDate(dateRange_To) : \"\") + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTimesheetsGenericFiltering(_response);\n });\n }\n\n protected processGetTimesheetsGenericFiltering(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TimesheetDashboardResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectIds (optional)\n * @param nonProjectCategoryIds (optional)\n * @param userIds (optional)\n * @param partnerIds (optional)\n * @param organizationalUnitIds (optional)\n * @param body (optional)\n * @return Success\n */\n getTimesheetsTotals(tenantId: number, projectIds: number[] | undefined, nonProjectCategoryIds: number[] | undefined, userIds: number[] | undefined, partnerIds: number[] | undefined, organizationalUnitIds: number[] | undefined, dateRange_From: Date, dateRange_To: Date, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelDashboard/timesheets/totals/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectIds === null)\n throw new Error(\"The parameter 'projectIds' cannot be null.\");\n else if (projectIds !== undefined)\n projectIds && projectIds.forEach(item => { url_ += \"ProjectIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (nonProjectCategoryIds === null)\n throw new Error(\"The parameter 'nonProjectCategoryIds' cannot be null.\");\n else if (nonProjectCategoryIds !== undefined)\n nonProjectCategoryIds && nonProjectCategoryIds.forEach(item => { url_ += \"NonProjectCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (userIds === null)\n throw new Error(\"The parameter 'userIds' cannot be null.\");\n else if (userIds !== undefined)\n userIds && userIds.forEach(item => { url_ += \"UserIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (partnerIds === null)\n throw new Error(\"The parameter 'partnerIds' cannot be null.\");\n else if (partnerIds !== undefined)\n partnerIds && partnerIds.forEach(item => { url_ += \"PartnerIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (organizationalUnitIds === null)\n throw new Error(\"The parameter 'organizationalUnitIds' cannot be null.\");\n else if (organizationalUnitIds !== undefined)\n organizationalUnitIds && organizationalUnitIds.forEach(item => { url_ += \"OrganizationalUnitIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (dateRange_From === undefined || dateRange_From === null)\n throw new Error(\"The parameter 'dateRange_From' must be defined and cannot be null.\");\n else\n url_ += \"DateRange.From=\" + encodeURIComponent(dateRange_From ? \"\" + formatDate(dateRange_From) : \"\") + \"&\";\n if (dateRange_To === undefined || dateRange_To === null)\n throw new Error(\"The parameter 'dateRange_To' must be defined and cannot be null.\");\n else\n url_ += \"DateRange.To=\" + encodeURIComponent(dateRange_To ? \"\" + formatDate(dateRange_To) : \"\") + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTimesheetsTotals(_response);\n });\n }\n\n protected processGetTimesheetsTotals(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TotalTimesheetDashboardResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectIds (optional)\n * @param nonProjectCategoryIds (optional)\n * @param userIds (optional)\n * @param partnerIds (optional)\n * @param organizationalUnitIds (optional)\n * @param body (optional)\n * @return Success\n */\n exportTime(tenantId: number, projectIds: number[] | undefined, nonProjectCategoryIds: number[] | undefined, userIds: number[] | undefined, partnerIds: number[] | undefined, organizationalUnitIds: number[] | undefined, dateRange_From: Date, dateRange_To: Date, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelDashboard/exportTime/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectIds === null)\n throw new Error(\"The parameter 'projectIds' cannot be null.\");\n else if (projectIds !== undefined)\n projectIds && projectIds.forEach(item => { url_ += \"ProjectIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (nonProjectCategoryIds === null)\n throw new Error(\"The parameter 'nonProjectCategoryIds' cannot be null.\");\n else if (nonProjectCategoryIds !== undefined)\n nonProjectCategoryIds && nonProjectCategoryIds.forEach(item => { url_ += \"NonProjectCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (userIds === null)\n throw new Error(\"The parameter 'userIds' cannot be null.\");\n else if (userIds !== undefined)\n userIds && userIds.forEach(item => { url_ += \"UserIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (partnerIds === null)\n throw new Error(\"The parameter 'partnerIds' cannot be null.\");\n else if (partnerIds !== undefined)\n partnerIds && partnerIds.forEach(item => { url_ += \"PartnerIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (organizationalUnitIds === null)\n throw new Error(\"The parameter 'organizationalUnitIds' cannot be null.\");\n else if (organizationalUnitIds !== undefined)\n organizationalUnitIds && organizationalUnitIds.forEach(item => { url_ += \"OrganizationalUnitIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (dateRange_From === undefined || dateRange_From === null)\n throw new Error(\"The parameter 'dateRange_From' must be defined and cannot be null.\");\n else\n url_ += \"DateRange.From=\" + encodeURIComponent(dateRange_From ? \"\" + formatDate(dateRange_From) : \"\") + \"&\";\n if (dateRange_To === undefined || dateRange_To === null)\n throw new Error(\"The parameter 'dateRange_To' must be defined and cannot be null.\");\n else\n url_ += \"DateRange.To=\" + encodeURIComponent(dateRange_To ? \"\" + formatDate(dateRange_To) : \"\") + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportTime(_response);\n });\n }\n\n protected processExportTime(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param exportGrouped (optional)\n * @param projectIds (optional)\n * @param nonProjectCategoryIds (optional)\n * @param userIds (optional)\n * @param partnerIds (optional)\n * @param organizationalUnitIds (optional)\n * @param body (optional)\n * @return Success\n */\n exportTravelExpense(tenantId: number, exportGrouped: boolean | undefined, projectIds: number[] | undefined, nonProjectCategoryIds: number[] | undefined, userIds: number[] | undefined, partnerIds: number[] | undefined, organizationalUnitIds: number[] | undefined, dateRange_From: Date, dateRange_To: Date, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelDashboard/exportTravelExpense/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (exportGrouped === null)\n throw new Error(\"The parameter 'exportGrouped' cannot be null.\");\n else if (exportGrouped !== undefined)\n url_ += \"exportGrouped=\" + encodeURIComponent(\"\" + exportGrouped) + \"&\";\n if (projectIds === null)\n throw new Error(\"The parameter 'projectIds' cannot be null.\");\n else if (projectIds !== undefined)\n projectIds && projectIds.forEach(item => { url_ += \"ProjectIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (nonProjectCategoryIds === null)\n throw new Error(\"The parameter 'nonProjectCategoryIds' cannot be null.\");\n else if (nonProjectCategoryIds !== undefined)\n nonProjectCategoryIds && nonProjectCategoryIds.forEach(item => { url_ += \"NonProjectCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (userIds === null)\n throw new Error(\"The parameter 'userIds' cannot be null.\");\n else if (userIds !== undefined)\n userIds && userIds.forEach(item => { url_ += \"UserIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (partnerIds === null)\n throw new Error(\"The parameter 'partnerIds' cannot be null.\");\n else if (partnerIds !== undefined)\n partnerIds && partnerIds.forEach(item => { url_ += \"PartnerIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (organizationalUnitIds === null)\n throw new Error(\"The parameter 'organizationalUnitIds' cannot be null.\");\n else if (organizationalUnitIds !== undefined)\n organizationalUnitIds && organizationalUnitIds.forEach(item => { url_ += \"OrganizationalUnitIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (dateRange_From === undefined || dateRange_From === null)\n throw new Error(\"The parameter 'dateRange_From' must be defined and cannot be null.\");\n else\n url_ += \"DateRange.From=\" + encodeURIComponent(dateRange_From ? \"\" + formatDate(dateRange_From) : \"\") + \"&\";\n if (dateRange_To === undefined || dateRange_To === null)\n throw new Error(\"The parameter 'dateRange_To' must be defined and cannot be null.\");\n else\n url_ += \"DateRange.To=\" + encodeURIComponent(dateRange_To ? \"\" + formatDate(dateRange_To) : \"\") + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportTravelExpense(_response);\n });\n }\n\n protected processExportTravelExpense(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param projectIds (optional)\n * @param nonProjectCategoryIds (optional)\n * @param userIds (optional)\n * @param partnerIds (optional)\n * @param organizationalUnitIds (optional)\n * @param body (optional)\n * @return Success\n */\n exportVacationRequest(tenantId: number, projectIds: number[] | undefined, nonProjectCategoryIds: number[] | undefined, userIds: number[] | undefined, partnerIds: number[] | undefined, organizationalUnitIds: number[] | undefined, dateRange_From: Date, dateRange_To: Date, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelDashboard/exportVacationRequest/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectIds === null)\n throw new Error(\"The parameter 'projectIds' cannot be null.\");\n else if (projectIds !== undefined)\n projectIds && projectIds.forEach(item => { url_ += \"ProjectIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (nonProjectCategoryIds === null)\n throw new Error(\"The parameter 'nonProjectCategoryIds' cannot be null.\");\n else if (nonProjectCategoryIds !== undefined)\n nonProjectCategoryIds && nonProjectCategoryIds.forEach(item => { url_ += \"NonProjectCategoryIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (userIds === null)\n throw new Error(\"The parameter 'userIds' cannot be null.\");\n else if (userIds !== undefined)\n userIds && userIds.forEach(item => { url_ += \"UserIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (partnerIds === null)\n throw new Error(\"The parameter 'partnerIds' cannot be null.\");\n else if (partnerIds !== undefined)\n partnerIds && partnerIds.forEach(item => { url_ += \"PartnerIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (organizationalUnitIds === null)\n throw new Error(\"The parameter 'organizationalUnitIds' cannot be null.\");\n else if (organizationalUnitIds !== undefined)\n organizationalUnitIds && organizationalUnitIds.forEach(item => { url_ += \"OrganizationalUnitIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (dateRange_From === undefined || dateRange_From === null)\n throw new Error(\"The parameter 'dateRange_From' must be defined and cannot be null.\");\n else\n url_ += \"DateRange.From=\" + encodeURIComponent(dateRange_From ? \"\" + formatDate(dateRange_From) : \"\") + \"&\";\n if (dateRange_To === undefined || dateRange_To === null)\n throw new Error(\"The parameter 'dateRange_To' must be defined and cannot be null.\");\n else\n url_ += \"DateRange.To=\" + encodeURIComponent(dateRange_To ? \"\" + formatDate(dateRange_To) : \"\") + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportVacationRequest(_response);\n });\n }\n\n protected processExportVacationRequest(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TimeTravelStatusClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TimeTravelStatusResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: SimpleStatusRequestUpdateSimpleStatusRequestItems | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TimeTravelStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TrainingCycleClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, projectId: number, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TrainingCycle/{tenantId}/{projectId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, projectId: number, body: TrainingCycleDeltaRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TrainingCycle/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, projectId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TrainingCycle/genericFilter/{tenantId}/{projectId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TenantIsActiveResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TrainingDashboardClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n get(tenantId: number, projectId: number, cycleId: number, body: TrainingDashboardFilterRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TrainingDashboard/{tenantId}/{projectId}/{cycleId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (cycleId === undefined || cycleId === null)\n throw new Error(\"The parameter 'cycleId' must be defined.\");\n url_ = url_.replace(\"{cycleId}\", encodeURIComponent(\"\" + cycleId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TrainingDashboardResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n get2(tenantId: number, projectId: number, surveyId: number, body: SurveyDashboardFilterRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TrainingDashboard/surveys/{tenantId}/{projectId}/{surveyId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{surveyId}\", encodeURIComponent(\"\" + surveyId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet2(_response);\n });\n }\n\n protected processGet2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SurveyDashboardResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param userIds (optional)\n * @param projectTeamIds (optional)\n * @param projectRoleIds (optional)\n * @param body (optional)\n * @return Success\n */\n exportAverageRatings(tenantId: number, projectId: number, surveyId: number, userIds: number[] | undefined, projectTeamIds: number[] | undefined, projectRoleIds: number[] | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TrainingDashboard/exportAverageRatings/{tenantId}/{projectId}/{surveyId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{surveyId}\", encodeURIComponent(\"\" + surveyId));\n if (userIds === null)\n throw new Error(\"The parameter 'userIds' cannot be null.\");\n else if (userIds !== undefined)\n userIds && userIds.forEach(item => { url_ += \"UserIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (projectTeamIds === null)\n throw new Error(\"The parameter 'projectTeamIds' cannot be null.\");\n else if (projectTeamIds !== undefined)\n projectTeamIds && projectTeamIds.forEach(item => { url_ += \"ProjectTeamIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (projectRoleIds === null)\n throw new Error(\"The parameter 'projectRoleIds' cannot be null.\");\n else if (projectRoleIds !== undefined)\n projectRoleIds && projectRoleIds.forEach(item => { url_ += \"ProjectRoleIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportAverageRatings(_response);\n });\n }\n\n protected processExportAverageRatings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param userIds (optional)\n * @param projectTeamIds (optional)\n * @param projectRoleIds (optional)\n * @param body (optional)\n * @return Success\n */\n exportQuestionGroupAverageRatings(tenantId: number, projectId: number, surveyId: number, userIds: number[] | undefined, projectTeamIds: number[] | undefined, projectRoleIds: number[] | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TrainingDashboard/exportQuestionGroupAverageRatings/{tenantId}/{projectId}/{surveyId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{surveyId}\", encodeURIComponent(\"\" + surveyId));\n if (userIds === null)\n throw new Error(\"The parameter 'userIds' cannot be null.\");\n else if (userIds !== undefined)\n userIds && userIds.forEach(item => { url_ += \"UserIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (projectTeamIds === null)\n throw new Error(\"The parameter 'projectTeamIds' cannot be null.\");\n else if (projectTeamIds !== undefined)\n projectTeamIds && projectTeamIds.forEach(item => { url_ += \"ProjectTeamIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (projectRoleIds === null)\n throw new Error(\"The parameter 'projectRoleIds' cannot be null.\");\n else if (projectRoleIds !== undefined)\n projectRoleIds && projectRoleIds.forEach(item => { url_ += \"ProjectRoleIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportQuestionGroupAverageRatings(_response);\n });\n }\n\n protected processExportQuestionGroupAverageRatings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param userIds (optional)\n * @param projectTeamIds (optional)\n * @param projectRoleIds (optional)\n * @param body (optional)\n * @return Success\n */\n exportTextAnswers(tenantId: number, projectId: number, surveyId: number, userIds: number[] | undefined, projectTeamIds: number[] | undefined, projectRoleIds: number[] | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TrainingDashboard/exportTextAnswers/{tenantId}/{projectId}/{surveyId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (surveyId === undefined || surveyId === null)\n throw new Error(\"The parameter 'surveyId' must be defined.\");\n url_ = url_.replace(\"{surveyId}\", encodeURIComponent(\"\" + surveyId));\n if (userIds === null)\n throw new Error(\"The parameter 'userIds' cannot be null.\");\n else if (userIds !== undefined)\n userIds && userIds.forEach(item => { url_ += \"UserIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (projectTeamIds === null)\n throw new Error(\"The parameter 'projectTeamIds' cannot be null.\");\n else if (projectTeamIds !== undefined)\n projectTeamIds && projectTeamIds.forEach(item => { url_ += \"ProjectTeamIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (projectRoleIds === null)\n throw new Error(\"The parameter 'projectRoleIds' cannot be null.\");\n else if (projectRoleIds !== undefined)\n projectRoleIds && projectRoleIds.forEach(item => { url_ += \"ProjectRoleIds=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportTextAnswers(_response);\n });\n }\n\n protected processExportTextAnswers(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TrainingPlanClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, projectId: number, trainingCycleId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TrainingPlan/genericFilter/{tenantId}/{projectId}/{trainingCycleId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (trainingCycleId === undefined || trainingCycleId === null)\n throw new Error(\"The parameter 'trainingCycleId' must be defined.\");\n url_ = url_.replace(\"{trainingCycleId}\", encodeURIComponent(\"\" + trainingCycleId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TrainingPlanRowResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n setAllIsActive(tenantId: number, projectId: number, trainingCycleId: number, isActive: boolean, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TrainingPlan/setAll/{tenantId}/{projectId}/{trainingCycleId}/{isActive}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (trainingCycleId === undefined || trainingCycleId === null)\n throw new Error(\"The parameter 'trainingCycleId' must be defined.\");\n url_ = url_.replace(\"{trainingCycleId}\", encodeURIComponent(\"\" + trainingCycleId));\n if (isActive === undefined || isActive === null)\n throw new Error(\"The parameter 'isActive' must be defined.\");\n url_ = url_.replace(\"{isActive}\", encodeURIComponent(\"\" + isActive));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSetAllIsActive(_response);\n });\n }\n\n protected processSetAllIsActive(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getMy(tenantId: number, projectId: number, trainingCycleId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TrainingPlan/my/genericFilter/{tenantId}/{projectId}/{trainingCycleId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (trainingCycleId === undefined || trainingCycleId === null)\n throw new Error(\"The parameter 'trainingCycleId' must be defined.\");\n url_ = url_.replace(\"{trainingCycleId}\", encodeURIComponent(\"\" + trainingCycleId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetMy(_response);\n });\n }\n\n protected processGetMy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = MyTrainingPlanResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateMyStatus(tenantId: number, projectId: number, trainingCycleId: number, body: UpdateTrainingPlanStatusRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TrainingPlan/my/updateStatus/{tenantId}/{projectId}/{trainingCycleId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (trainingCycleId === undefined || trainingCycleId === null)\n throw new Error(\"The parameter 'trainingCycleId' must be defined.\");\n url_ = url_.replace(\"{trainingCycleId}\", encodeURIComponent(\"\" + trainingCycleId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateMyStatus(_response);\n });\n }\n\n protected processUpdateMyStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n patch(tenantId: number, projectId: number, trainingCycleId: number, body: PatchTenantIdentifyRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TrainingPlan/{tenantId}/{projectId}/{trainingCycleId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (trainingCycleId === undefined || trainingCycleId === null)\n throw new Error(\"The parameter 'trainingCycleId' must be defined.\");\n url_ = url_.replace(\"{trainingCycleId}\", encodeURIComponent(\"\" + trainingCycleId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processPatch(_response);\n });\n }\n\n protected processPatch(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TrainingPlanRowResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n clone(tenantId: number, projectId: number, trainingCycleId: number, body: CopyFromTrainingCycleRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TrainingPlan/clone/{tenantId}/{projectId}/{trainingCycleId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (trainingCycleId === undefined || trainingCycleId === null)\n throw new Error(\"The parameter 'trainingCycleId' must be defined.\");\n url_ = url_.replace(\"{trainingCycleId}\", encodeURIComponent(\"\" + trainingCycleId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processClone(_response);\n });\n }\n\n protected processClone(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n exportTrainingPlans(tenantId: number, projectId: number, trainingCycleId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TrainingPlan/{tenantId}/{projectId}/{trainingCycleId}/exportTrainingPlans\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (trainingCycleId === undefined || trainingCycleId === null)\n throw new Error(\"The parameter 'trainingCycleId' must be defined.\");\n url_ = url_.replace(\"{trainingCycleId}\", encodeURIComponent(\"\" + trainingCycleId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportTrainingPlans(_response);\n });\n }\n\n protected processExportTrainingPlans(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n exportMyTrainingPlans(tenantId: number, projectId: number, trainingCycleId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TrainingPlan/{tenantId}/{projectId}/{trainingCycleId}/exportMyTrainingPlans\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (projectId === undefined || projectId === null)\n throw new Error(\"The parameter 'projectId' must be defined.\");\n url_ = url_.replace(\"{projectId}\", encodeURIComponent(\"\" + projectId));\n if (trainingCycleId === undefined || trainingCycleId === null)\n throw new Error(\"The parameter 'trainingCycleId' must be defined.\");\n url_ = url_.replace(\"{trainingCycleId}\", encodeURIComponent(\"\" + trainingCycleId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportMyTrainingPlans(_response);\n });\n }\n\n protected processExportMyTrainingPlans(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TrainingStatusClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TrainingStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TrainingStatusResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: SimpleStatusRequestUpdateSimpleStatusRequestItems | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TrainingStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TravelExpenseClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n getAllMy(tenantId: number, years: number[] | undefined, months: MonthEnum[] | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TravelExpense/allMy/{tenantId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllMy(_response);\n });\n }\n\n protected processGetAllMy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TravelExpenseResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n getAllMyGenericTotals(tenantId: number, years: number[] | undefined, months: MonthEnum[] | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TravelExpense/allMyTotals/{tenantId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllMyGenericTotals(_response);\n });\n }\n\n protected processGetAllMyGenericTotals(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TravelExpenseTotalsResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGeneric(tenantId: number, years: number[] | undefined, months: MonthEnum[] | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TravelExpense/allGeneric/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGeneric(_response);\n });\n }\n\n protected processGetAllGeneric(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TravelExpenseResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGenericTotals(tenantId: number, years: number[] | undefined, months: MonthEnum[] | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TravelExpense/allGenericTotals/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericTotals(_response);\n });\n }\n\n protected processGetAllGenericTotals(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TravelExpenseTotalsResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/TravelExpense/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TravelExpenseResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/TravelExpense/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, body: InsertTravelExpenseRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TravelExpense/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TravelExpenseResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: UpdateTravelExpenseRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TravelExpense/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TravelExpenseResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n releaseMy(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/TravelExpense/releaseMy/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processReleaseMy(_response);\n });\n }\n\n protected processReleaseMy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n approval(tenantId: number, id: number, body: ApprovalTimeTravelDescriptiveRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TravelExpense/approval/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processApproval(_response);\n });\n }\n\n protected processApproval(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n clone(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/TravelExpense/{tenantId}/{id}/clone\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processClone(_response);\n });\n }\n\n protected processClone(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TravelExpenseResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n downloadAttachment(tenantId: number, travelExpenseItemId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/TravelExpense/attachment/{tenantId}/{travelExpenseItemId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (travelExpenseItemId === undefined || travelExpenseItemId === null)\n throw new Error(\"The parameter 'travelExpenseItemId' must be defined.\");\n url_ = url_.replace(\"{travelExpenseItemId}\", encodeURIComponent(\"\" + travelExpenseItemId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownloadAttachment(_response);\n });\n }\n\n protected processDownloadAttachment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n exportAll(tenantId: number, years: number[] | undefined, months: MonthEnum[] | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TravelExpense/{tenantId}/exportAll?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportAll(_response);\n });\n }\n\n protected processExportAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class TravelRequestClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n getAllMyGeneric(tenantId: number, years: number[] | undefined, months: MonthEnum[] | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TravelRequest/allMyGeneric/{tenantId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllMyGeneric(_response);\n });\n }\n\n protected processGetAllMyGeneric(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TravelRequestResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n getAllMyGenericTotals(tenantId: number, years: number[] | undefined, months: MonthEnum[] | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TravelRequest/allMyGenericTotals/{tenantId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllMyGenericTotals(_response);\n });\n }\n\n protected processGetAllMyGenericTotals(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TravelRequestTotalsResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getAllMy(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/TravelRequest/allMy/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllMy(_response);\n });\n }\n\n protected processGetAllMy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TravelRequestResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGeneric(tenantId: number, years: number[] | undefined, months: MonthEnum[] | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TravelRequest/allGeneric/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGeneric(_response);\n });\n }\n\n protected processGetAllGeneric(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TravelRequestResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGenericTotals(tenantId: number, years: number[] | undefined, months: MonthEnum[] | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TravelRequest/allGenericTotals/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericTotals(_response);\n });\n }\n\n protected processGetAllGenericTotals(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TravelRequestTotalsResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/TravelRequest/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TravelRequestResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/TravelRequest/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, body: InsertTravelRequestRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TravelRequest/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TravelRequestResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: UpdateTravelRequestRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TravelRequest/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = TravelRequestResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n releaseMy(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/TravelRequest/releaseMy/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processReleaseMy(_response);\n });\n }\n\n protected processReleaseMy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n approval(tenantId: number, id: number, body: ApprovalTimeTravelDescriptiveRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TravelRequest/approval/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processApproval(_response);\n });\n }\n\n protected processApproval(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n exportAll(tenantId: number, years: number[] | undefined, months: MonthEnum[] | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/TravelRequest/{tenantId}/exportAll?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportAll(_response);\n });\n }\n\n protected processExportAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class UserClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n insert(tenantId: number, body: InsertUserRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/User/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processInsert(_response);\n });\n }\n\n protected processInsert(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = UserModelSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: UpdateUserDataRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/User/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = UserModelSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param ids (optional)\n * @param roleId (optional)\n * @param search (optional)\n * @param isActive (optional)\n * @param sort (optional)\n * @param offset (optional)\n * @param limit (optional)\n * @return Success\n */\n getAll(tenantId: number, ids: number[] | undefined, roleId: number | undefined, search: string | undefined, isActive: boolean | undefined, sort: boolean | undefined, offset: number | undefined, limit: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/User/{tenantId}?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (ids === null)\n throw new Error(\"The parameter 'ids' cannot be null.\");\n else if (ids !== undefined)\n ids && ids.forEach(item => { url_ += \"Ids=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (roleId === null)\n throw new Error(\"The parameter 'roleId' cannot be null.\");\n else if (roleId !== undefined)\n url_ += \"RoleId=\" + encodeURIComponent(\"\" + roleId) + \"&\";\n if (search === null)\n throw new Error(\"The parameter 'search' cannot be null.\");\n else if (search !== undefined)\n url_ += \"Search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (isActive === null)\n throw new Error(\"The parameter 'isActive' cannot be null.\");\n else if (isActive !== undefined)\n url_ += \"IsActive=\" + encodeURIComponent(\"\" + isActive) + \"&\";\n if (sort === null)\n throw new Error(\"The parameter 'sort' cannot be null.\");\n else if (sort !== undefined)\n url_ += \"Sort=\" + encodeURIComponent(\"\" + sort) + \"&\";\n if (offset === null)\n throw new Error(\"The parameter 'offset' cannot be null.\");\n else if (offset !== undefined)\n url_ += \"Offset=\" + encodeURIComponent(\"\" + offset) + \"&\";\n if (limit === null)\n throw new Error(\"The parameter 'limit' cannot be null.\");\n else if (limit !== undefined)\n url_ += \"Limit=\" + encodeURIComponent(\"\" + limit) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = UserModelItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateProfile(tenantId: number, body: MyProfileUpdateRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/User/myprofile/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateProfile(_response);\n });\n }\n\n protected processUpdateProfile(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = UserModelSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getMyProfile(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/User/myprofile/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetMyProfile(_response);\n });\n }\n\n protected processGetMyProfile(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = UserModelSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateLanguage(tenantId: number, body: LanguagesEnum | undefined): Promise {\n let url_ = this.baseUrl + \"/api/User/mylanguage/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateLanguage(_response);\n });\n }\n\n protected processUpdateLanguage(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updatePicture(tenantId: number, body: UpdateUserPictureRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/User/picture/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdatePicture(_response);\n });\n }\n\n protected processUpdatePicture(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = StringSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updatePassword(tenantId: number, body: ChangePasswordRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/User/password/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdatePassword(_response);\n });\n }\n\n protected processUpdatePassword(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n updateActivity(tenantId: number, body: UpdateUserActivityRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/User/activity/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateActivity(_response);\n });\n }\n\n protected processUpdateActivity(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BooleanSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAllGenericFilter(tenantId: number, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/User/{tenantId}/genericFilter\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGenericFilter(_response);\n });\n }\n\n protected processGetAllGenericFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = UserModelItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/User/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = UserModelSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n checkUserExists(body: CheckUserExistsRequestModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/User/exists\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCheckUserExists(_response);\n });\n }\n\n protected processCheckUserExists(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = CheckUserExistsReponseModelSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getAllSiteAdmins(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/User/admins/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllSiteAdmins(_response);\n });\n }\n\n protected processGetAllSiteAdmins(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = UserModelItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n setUserAsSiteAdmin(tenantId: number, userId: number): Promise {\n let url_ = this.baseUrl + \"/api/User/setAdmin/{tenantId}/{userId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (userId === undefined || userId === null)\n throw new Error(\"The parameter 'userId' must be defined.\");\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSetUserAsSiteAdmin(_response);\n });\n }\n\n protected processSetUserAsSiteAdmin(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n setSiteAdminAsCompanyUser(tenantId: number, userId: number): Promise {\n let url_ = this.baseUrl + \"/api/User/removeAdmin/{tenantId}/{userId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (userId === undefined || userId === null)\n throw new Error(\"The parameter 'userId' must be defined.\");\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSetSiteAdminAsCompanyUser(_response);\n });\n }\n\n protected processSetSiteAdminAsCompanyUser(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n export(tenantId: number, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/User/{tenantId}/export\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExport(_response);\n });\n }\n\n protected processExport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getActiveUsersForPeriod(tenantId: number, body: ActivityPeriodRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/User/getActiveUsersForPeriod/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetActiveUsersForPeriod(_response);\n });\n }\n\n protected processGetActiveUsersForPeriod(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = UserModelItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getCurrentActiveUsers(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/User/getCurrentActiveUsers/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCurrentActiveUsers(_response);\n });\n }\n\n protected processGetCurrentActiveUsers(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = UserModelItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getActiveTeamMembersForPeriod(tenantId: number, body: ActivityPeriodRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/User/getActiveTeamMembersForPeriod/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetActiveTeamMembersForPeriod(_response);\n });\n }\n\n protected processGetActiveTeamMembersForPeriod(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = SimpleUserIdProjectIdPairItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class UserAlertConfigurationClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/UserAlertConfiguration/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = UserAlertConfigurationResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n addUpdate(tenantId: number, body: AddUpdateUserAlertConfigurationsRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/UserAlertConfiguration/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processAddUpdate(_response);\n });\n }\n\n protected processAddUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = UserAlertConfigurationResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class UserStatusClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @return Success\n */\n getAll(tenantId: number): Promise {\n let url_ = this.baseUrl + \"/api/UserStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = UserStatusResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: SimpleStatusRequestUpdateSimpleStatusRequestItems | undefined): Promise {\n let url_ = this.baseUrl + \"/api/UserStatus/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class UserTableViewConfigClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n getAll(tenantId: number, body: UserTableViewConfigFilter | undefined): Promise {\n let url_ = this.baseUrl + \"/api/UserTableViewConfig/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAll(_response);\n });\n }\n\n protected processGetAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = UserTableViewConfigResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, body: InsertUpdateUserTableViewConfigRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/UserTableViewConfig/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = UserTableViewConfigResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, viewType: string): Promise {\n let url_ = this.baseUrl + \"/api/UserTableViewConfig/{tenantId}/{viewType}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (viewType === undefined || viewType === null)\n throw new Error(\"The parameter 'viewType' must be defined.\");\n url_ = url_.replace(\"{viewType}\", encodeURIComponent(\"\" + viewType));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = UserTableViewConfigResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, viewType: string): Promise {\n let url_ = this.baseUrl + \"/api/UserTableViewConfig/{tenantId}/{viewType}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (viewType === undefined || viewType === null)\n throw new Error(\"The parameter 'viewType' must be defined.\");\n url_ = url_.replace(\"{viewType}\", encodeURIComponent(\"\" + viewType));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class VacationRequestClient extends BaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super();\n this.http = http ? http : window as any;\n this.baseUrl = this.getBaseUrl(\"\", baseUrl);\n }\n\n /**\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n getAllMyGeneric(tenantId: number, years: number[] | undefined, months: MonthEnum[] | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/VacationRequest/allMyGeneric/{tenantId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllMyGeneric(_response);\n });\n }\n\n protected processGetAllMyGeneric(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = VacationRequestResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n getAllGeneric(tenantId: number, years: number[] | undefined, months: MonthEnum[] | undefined, body: GenericFilterModelCollection | undefined): Promise {\n let url_ = this.baseUrl + \"/api/VacationRequest/allGeneric/{tenantId}/genericFilter?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllGeneric(_response);\n });\n }\n\n protected processGetAllGeneric(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = VacationRequestStatusFullResponseItemsResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n getVacationRequestStatus(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/VacationRequest/vacationRequestStatus/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetVacationRequestStatus(_response);\n });\n }\n\n protected processGetVacationRequestStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = VacationRequestStatusResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n get(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/VacationRequest/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGet(_response);\n });\n }\n\n protected processGet(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = VacationRequestResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n delete(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/VacationRequest/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDelete(_response);\n });\n }\n\n protected processDelete(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n create(tenantId: number, body: InsertVacationRequestRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/VacationRequest/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreate(_response);\n });\n }\n\n protected processCreate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = VacationRequestResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n update(tenantId: number, body: UpdateVacationRequestRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/VacationRequest/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdate(_response);\n });\n }\n\n protected processUpdate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = VacationRequestResponseSimpleResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Success\n */\n releaseMy(tenantId: number, id: number): Promise {\n let url_ = this.baseUrl + \"/api/VacationRequest/releaseMy/{tenantId}/{id}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processReleaseMy(_response);\n });\n }\n\n protected processReleaseMy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n approval(tenantId: number, vacationRequestStatusId: number, body: ApprovalTimeTravelDescriptiveRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/VacationRequest/approval/{tenantId}/{vacationRequestStatusId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (vacationRequestStatusId === undefined || vacationRequestStatusId === null)\n throw new Error(\"The parameter 'vacationRequestStatusId' must be defined.\");\n url_ = url_.replace(\"{vacationRequestStatusId}\", encodeURIComponent(\"\" + vacationRequestStatusId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processApproval(_response);\n });\n }\n\n protected processApproval(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param years (optional)\n * @param months (optional)\n * @param body (optional)\n * @return Success\n */\n exportAll(tenantId: number, years: number[] | undefined, months: MonthEnum[] | undefined, body: ExportDataModel | undefined): Promise {\n let url_ = this.baseUrl + \"/api/VacationRequest/{tenantId}/exportVacations?\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n if (years === null)\n throw new Error(\"The parameter 'years' cannot be null.\");\n else if (years !== undefined)\n years && years.forEach(item => { url_ += \"years=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (months === null)\n throw new Error(\"The parameter 'months' cannot be null.\");\n else if (months !== undefined)\n months && months.forEach(item => { url_ += \"months=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportAll(_response);\n });\n }\n\n protected processExportAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n let result404: any = null;\n let resultData404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result404 = BaseResponseModel.fromJS(resultData404);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n let result400: any = null;\n let resultData400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result400 = BaseResponseModel.fromJS(resultData400);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param body (optional)\n * @return Success\n */\n importExcel(tenantId: number, body: UploadExcelFileRequest | undefined): Promise {\n let url_ = this.baseUrl + \"/api/VacationRequest/importExcel/{tenantId}\";\n if (tenantId === undefined || tenantId === null)\n throw new Error(\"The parameter 'tenantId' must be defined.\");\n url_ = url_.replace(\"{tenantId}\", encodeURIComponent(\"\" + tenantId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"text/plain\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processImportExcel(_response);\n });\n }\n\n protected processImportExcel(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result200 = BaseResponseModel.fromJS(resultData200);\n return result200;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n let result403: any = null;\n let resultData403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\n result403 = BaseResponseModel.fromJS(resultData403);\n return throwException(\"Forbidden\", status, _responseText, _headers, result403);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport class ActiveModule implements IActiveModule {\n id!: ModuleActivityEnum;\n isActive!: boolean;\n\n constructor(data?: IActiveModule) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n }\n }\n\n static fromJS(data: any): ActiveModule {\n data = typeof data === 'object' ? data : {};\n let result = new ActiveModule();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n return data;\n }\n}\n\nexport interface IActiveModule {\n id: ModuleActivityEnum;\n isActive: boolean;\n}\n\nexport class ActivityPeriodRequest implements IActivityPeriodRequest {\n from!: Date;\n to!: Date;\n\n constructor(data?: IActivityPeriodRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): ActivityPeriodRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ActivityPeriodRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n return data;\n }\n}\n\nexport interface IActivityPeriodRequest {\n from: Date;\n to: Date;\n}\n\nexport class ActualBudgetResponse implements IActualBudgetResponse {\n income!: number;\n expense!: number;\n readonly profit!: number;\n\n constructor(data?: IActualBudgetResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.income = _data[\"income\"];\n this.expense = _data[\"expense\"];\n (this).profit = _data[\"profit\"];\n }\n }\n\n static fromJS(data: any): ActualBudgetResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ActualBudgetResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"income\"] = this.income;\n data[\"expense\"] = this.expense;\n data[\"profit\"] = this.profit;\n return data;\n }\n}\n\nexport interface IActualBudgetResponse {\n income: number;\n expense: number;\n profit: number;\n}\n\nexport class AddEmailTemplateRequestModel implements IAddEmailTemplateRequestModel {\n name?: string | undefined;\n\n constructor(data?: IAddEmailTemplateRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n }\n }\n\n static fromJS(data: any): AddEmailTemplateRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new AddEmailTemplateRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n return data;\n }\n}\n\nexport interface IAddEmailTemplateRequestModel {\n name?: string | undefined;\n}\n\nexport class AddUpdateEmailTemplateDataRequestModel implements IAddUpdateEmailTemplateDataRequestModel {\n id!: number;\n languageId!: number;\n subject?: string | undefined;\n body?: string | undefined;\n\n constructor(data?: IAddUpdateEmailTemplateDataRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.languageId = _data[\"languageId\"];\n this.subject = _data[\"subject\"];\n this.body = _data[\"body\"];\n }\n }\n\n static fromJS(data: any): AddUpdateEmailTemplateDataRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new AddUpdateEmailTemplateDataRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"languageId\"] = this.languageId;\n data[\"subject\"] = this.subject;\n data[\"body\"] = this.body;\n return data;\n }\n}\n\nexport interface IAddUpdateEmailTemplateDataRequestModel {\n id: number;\n languageId: number;\n subject?: string | undefined;\n body?: string | undefined;\n}\n\nexport class AddUpdateUserAlertConfigurationsRequest implements IAddUpdateUserAlertConfigurationsRequest {\n addedItems?: AddUserAlertConfigurationRequest[] | undefined;\n updatedItems?: UpdateUserAlertConfigurationRequest[] | undefined;\n\n constructor(data?: IAddUpdateUserAlertConfigurationsRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"addedItems\"])) {\n this.addedItems = [] as any;\n for (let item of _data[\"addedItems\"])\n this.addedItems!.push(AddUserAlertConfigurationRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"updatedItems\"])) {\n this.updatedItems = [] as any;\n for (let item of _data[\"updatedItems\"])\n this.updatedItems!.push(UpdateUserAlertConfigurationRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): AddUpdateUserAlertConfigurationsRequest {\n data = typeof data === 'object' ? data : {};\n let result = new AddUpdateUserAlertConfigurationsRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.addedItems)) {\n data[\"addedItems\"] = [];\n for (let item of this.addedItems)\n data[\"addedItems\"].push(item.toJSON());\n }\n if (Array.isArray(this.updatedItems)) {\n data[\"updatedItems\"] = [];\n for (let item of this.updatedItems)\n data[\"updatedItems\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IAddUpdateUserAlertConfigurationsRequest {\n addedItems?: AddUserAlertConfigurationRequest[] | undefined;\n updatedItems?: UpdateUserAlertConfigurationRequest[] | undefined;\n}\n\nexport class AddUserAlertConfigurationRequest implements IAddUserAlertConfigurationRequest {\n enabled!: boolean;\n sendEmail!: boolean;\n entityIds?: number[] | undefined;\n entity!: AlertEntitiesEnum;\n trigger!: AlertTriggersEnum;\n\n constructor(data?: IAddUserAlertConfigurationRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.enabled = _data[\"enabled\"];\n this.sendEmail = _data[\"sendEmail\"];\n if (Array.isArray(_data[\"entityIds\"])) {\n this.entityIds = [] as any;\n for (let item of _data[\"entityIds\"])\n this.entityIds!.push(item);\n }\n this.entity = _data[\"entity\"];\n this.trigger = _data[\"trigger\"];\n }\n }\n\n static fromJS(data: any): AddUserAlertConfigurationRequest {\n data = typeof data === 'object' ? data : {};\n let result = new AddUserAlertConfigurationRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"enabled\"] = this.enabled;\n data[\"sendEmail\"] = this.sendEmail;\n if (Array.isArray(this.entityIds)) {\n data[\"entityIds\"] = [];\n for (let item of this.entityIds)\n data[\"entityIds\"].push(item);\n }\n data[\"entity\"] = this.entity;\n data[\"trigger\"] = this.trigger;\n return data;\n }\n}\n\nexport interface IAddUserAlertConfigurationRequest {\n enabled: boolean;\n sendEmail: boolean;\n entityIds?: number[] | undefined;\n entity: AlertEntitiesEnum;\n trigger: AlertTriggersEnum;\n}\n\nexport enum AlertEntitiesEnum {\n TestPlan = \"TestPlan\",\n Ticket = \"Ticket\",\n ChangeRequest = \"ChangeRequest\",\n TimeSheets = \"TimeSheets\",\n Expense = \"Expense\",\n Vacation = \"Vacation\",\n Reminder = \"Reminder\",\n Meeting = \"Meeting\",\n StatusReport = \"StatusReport\",\n Task = \"Task\",\n}\n\nexport class AlertResponse implements IAlertResponse {\n id!: number;\n tenantId!: number;\n userId!: number;\n entity!: AlertEntitiesEnum;\n trigger!: AlertTriggersEnum;\n initiatorUserId!: number;\n entityId?: number | undefined;\n additionalData?: string | undefined;\n seen!: boolean;\n\n constructor(data?: IAlertResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.tenantId = _data[\"tenantId\"];\n this.userId = _data[\"userId\"];\n this.entity = _data[\"entity\"];\n this.trigger = _data[\"trigger\"];\n this.initiatorUserId = _data[\"initiatorUserId\"];\n this.entityId = _data[\"entityId\"];\n this.additionalData = _data[\"additionalData\"];\n this.seen = _data[\"seen\"];\n }\n }\n\n static fromJS(data: any): AlertResponse {\n data = typeof data === 'object' ? data : {};\n let result = new AlertResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"tenantId\"] = this.tenantId;\n data[\"userId\"] = this.userId;\n data[\"entity\"] = this.entity;\n data[\"trigger\"] = this.trigger;\n data[\"initiatorUserId\"] = this.initiatorUserId;\n data[\"entityId\"] = this.entityId;\n data[\"additionalData\"] = this.additionalData;\n data[\"seen\"] = this.seen;\n return data;\n }\n}\n\nexport interface IAlertResponse {\n id: number;\n tenantId: number;\n userId: number;\n entity: AlertEntitiesEnum;\n trigger: AlertTriggersEnum;\n initiatorUserId: number;\n entityId?: number | undefined;\n additionalData?: string | undefined;\n seen: boolean;\n}\n\nexport class AlertResponseItemsResponseModel implements IAlertResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: AlertResponse[] | undefined;\n\n constructor(data?: IAlertResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(AlertResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): AlertResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new AlertResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IAlertResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: AlertResponse[] | undefined;\n}\n\nexport enum AlertTriggersEnum {\n Created = \"Created\",\n Updated = \"Updated\",\n Deleted = \"Deleted\",\n Submitted = \"Submitted\",\n Approved = \"Approved\",\n Rejected = \"Rejected\",\n Automatic = \"Automatic\",\n Released = \"Released\",\n Aligned = \"Aligned\",\n}\n\nexport class ApprovalTimesheetRequest implements IApprovalTimesheetRequest {\n approve!: boolean;\n rejectionText?: string | undefined;\n from!: Date;\n to!: Date;\n userId!: number;\n projectId!: number;\n statusId!: number;\n\n constructor(data?: IApprovalTimesheetRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.approve = _data[\"approve\"];\n this.rejectionText = _data[\"rejectionText\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.userId = _data[\"userId\"];\n this.projectId = _data[\"projectId\"];\n this.statusId = _data[\"statusId\"];\n }\n }\n\n static fromJS(data: any): ApprovalTimesheetRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ApprovalTimesheetRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"approve\"] = this.approve;\n data[\"rejectionText\"] = this.rejectionText;\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"userId\"] = this.userId;\n data[\"projectId\"] = this.projectId;\n data[\"statusId\"] = this.statusId;\n return data;\n }\n}\n\nexport interface IApprovalTimesheetRequest {\n approve: boolean;\n rejectionText?: string | undefined;\n from: Date;\n to: Date;\n userId: number;\n projectId: number;\n statusId: number;\n}\n\nexport class ApprovalTimeTravelDescriptiveRequest implements IApprovalTimeTravelDescriptiveRequest {\n approve!: boolean;\n rejectionText?: string | undefined;\n\n constructor(data?: IApprovalTimeTravelDescriptiveRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.approve = _data[\"approve\"];\n this.rejectionText = _data[\"rejectionText\"];\n }\n }\n\n static fromJS(data: any): ApprovalTimeTravelDescriptiveRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ApprovalTimeTravelDescriptiveRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"approve\"] = this.approve;\n data[\"rejectionText\"] = this.rejectionText;\n return data;\n }\n}\n\nexport interface IApprovalTimeTravelDescriptiveRequest {\n approve: boolean;\n rejectionText?: string | undefined;\n}\n\nexport enum AttachmentAccessEnum {\n Direct = \"Direct\",\n Controller = \"Controller\",\n}\n\nexport class AttachmentResponse implements IAttachmentResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n accessType!: AttachmentAccessEnum;\n uri?: string | undefined;\n contentType?: string | undefined;\n userId!: number;\n date!: Date;\n\n constructor(data?: IAttachmentResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.accessType = _data[\"accessType\"];\n this.uri = _data[\"uri\"];\n this.contentType = _data[\"contentType\"];\n this.userId = _data[\"userId\"];\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): AttachmentResponse {\n data = typeof data === 'object' ? data : {};\n let result = new AttachmentResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"accessType\"] = this.accessType;\n data[\"uri\"] = this.uri;\n data[\"contentType\"] = this.contentType;\n data[\"userId\"] = this.userId;\n data[\"date\"] = this.date ? this.date.toISOString() : undefined;\n return data;\n }\n}\n\nexport interface IAttachmentResponse {\n id: number;\n name: string;\n description?: string | undefined;\n accessType: AttachmentAccessEnum;\n uri?: string | undefined;\n contentType?: string | undefined;\n userId: number;\n date: Date;\n}\n\nexport class AttachmentResponseItemsResponseModel implements IAttachmentResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: AttachmentResponse[] | undefined;\n\n constructor(data?: IAttachmentResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(AttachmentResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): AttachmentResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new AttachmentResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IAttachmentResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: AttachmentResponse[] | undefined;\n}\n\nexport class BaseResponseModel implements IBaseResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n\n constructor(data?: IBaseResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n }\n }\n\n static fromJS(data: any): BaseResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new BaseResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n return data;\n }\n}\n\nexport interface IBaseResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n}\n\nexport class BooleanSimpleResponseModel implements IBooleanSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value!: boolean;\n\n constructor(data?: IBooleanSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"];\n }\n }\n\n static fromJS(data: any): BooleanSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new BooleanSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value;\n return data;\n }\n}\n\nexport interface IBooleanSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value: boolean;\n}\n\nexport class BoolNewOld implements IBoolNewOld {\n oldValue!: boolean;\n newValue!: boolean;\n\n constructor(data?: IBoolNewOld) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.oldValue = _data[\"oldValue\"];\n this.newValue = _data[\"newValue\"];\n }\n }\n\n static fromJS(data: any): BoolNewOld {\n data = typeof data === 'object' ? data : {};\n let result = new BoolNewOld();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"oldValue\"] = this.oldValue;\n data[\"newValue\"] = this.newValue;\n return data;\n }\n}\n\nexport interface IBoolNewOld {\n oldValue: boolean;\n newValue: boolean;\n}\n\nexport class BudgetConfigurationResponse implements IBudgetConfigurationResponse {\n id!: number;\n planFrom!: Date;\n planTo!: Date;\n includeRiskInBudget!: boolean;\n includePlannedInvoicesInBudget!: boolean;\n includeApprovedChangeRequestsInBudget!: boolean;\n includeCompletedChangeRequests!: boolean;\n includeApprovedTimesheetsInActual!: boolean;\n includeApprovedGuestTimesheetsInActual!: boolean;\n includeApprovedTravelExpensesInActual!: boolean;\n includeIssuedReceivedAndPayedInvoicesInActual!: boolean;\n actualsTimesheetsPerUser!: boolean;\n actualsTravelExpensesPerUser!: boolean;\n actualsInvoicesPerPartner!: boolean;\n\n constructor(data?: IBudgetConfigurationResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.planFrom = _data[\"planFrom\"] ? new Date(_data[\"planFrom\"].toString()) : undefined;\n this.planTo = _data[\"planTo\"] ? new Date(_data[\"planTo\"].toString()) : undefined;\n this.includeRiskInBudget = _data[\"includeRiskInBudget\"];\n this.includePlannedInvoicesInBudget = _data[\"includePlannedInvoicesInBudget\"];\n this.includeApprovedChangeRequestsInBudget = _data[\"includeApprovedChangeRequestsInBudget\"];\n this.includeCompletedChangeRequests = _data[\"includeCompletedChangeRequests\"];\n this.includeApprovedTimesheetsInActual = _data[\"includeApprovedTimesheetsInActual\"];\n this.includeApprovedGuestTimesheetsInActual = _data[\"includeApprovedGuestTimesheetsInActual\"];\n this.includeApprovedTravelExpensesInActual = _data[\"includeApprovedTravelExpensesInActual\"];\n this.includeIssuedReceivedAndPayedInvoicesInActual = _data[\"includeIssuedReceivedAndPayedInvoicesInActual\"];\n this.actualsTimesheetsPerUser = _data[\"actualsTimesheetsPerUser\"];\n this.actualsTravelExpensesPerUser = _data[\"actualsTravelExpensesPerUser\"];\n this.actualsInvoicesPerPartner = _data[\"actualsInvoicesPerPartner\"];\n }\n }\n\n static fromJS(data: any): BudgetConfigurationResponse {\n data = typeof data === 'object' ? data : {};\n let result = new BudgetConfigurationResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"planFrom\"] = this.planFrom ? formatDate(this.planFrom) : undefined;\n data[\"planTo\"] = this.planTo ? formatDate(this.planTo) : undefined;\n data[\"includeRiskInBudget\"] = this.includeRiskInBudget;\n data[\"includePlannedInvoicesInBudget\"] = this.includePlannedInvoicesInBudget;\n data[\"includeApprovedChangeRequestsInBudget\"] = this.includeApprovedChangeRequestsInBudget;\n data[\"includeCompletedChangeRequests\"] = this.includeCompletedChangeRequests;\n data[\"includeApprovedTimesheetsInActual\"] = this.includeApprovedTimesheetsInActual;\n data[\"includeApprovedGuestTimesheetsInActual\"] = this.includeApprovedGuestTimesheetsInActual;\n data[\"includeApprovedTravelExpensesInActual\"] = this.includeApprovedTravelExpensesInActual;\n data[\"includeIssuedReceivedAndPayedInvoicesInActual\"] = this.includeIssuedReceivedAndPayedInvoicesInActual;\n data[\"actualsTimesheetsPerUser\"] = this.actualsTimesheetsPerUser;\n data[\"actualsTravelExpensesPerUser\"] = this.actualsTravelExpensesPerUser;\n data[\"actualsInvoicesPerPartner\"] = this.actualsInvoicesPerPartner;\n return data;\n }\n}\n\nexport interface IBudgetConfigurationResponse {\n id: number;\n planFrom: Date;\n planTo: Date;\n includeRiskInBudget: boolean;\n includePlannedInvoicesInBudget: boolean;\n includeApprovedChangeRequestsInBudget: boolean;\n includeCompletedChangeRequests: boolean;\n includeApprovedTimesheetsInActual: boolean;\n includeApprovedGuestTimesheetsInActual: boolean;\n includeApprovedTravelExpensesInActual: boolean;\n includeIssuedReceivedAndPayedInvoicesInActual: boolean;\n actualsTimesheetsPerUser: boolean;\n actualsTravelExpensesPerUser: boolean;\n actualsInvoicesPerPartner: boolean;\n}\n\nexport class BudgetConfigurationResponseSimpleResponseModel implements IBudgetConfigurationResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: BudgetConfigurationResponse;\n\n constructor(data?: IBudgetConfigurationResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? BudgetConfigurationResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): BudgetConfigurationResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new BudgetConfigurationResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IBudgetConfigurationResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: BudgetConfigurationResponse;\n}\n\nexport class BudgetDateValueHeaderResponse implements IBudgetDateValueHeaderResponse {\n date!: Date;\n title!: string;\n\n constructor(data?: IBudgetDateValueHeaderResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.title = _data[\"title\"];\n }\n }\n\n static fromJS(data: any): BudgetDateValueHeaderResponse {\n data = typeof data === 'object' ? data : {};\n let result = new BudgetDateValueHeaderResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n data[\"title\"] = this.title;\n return data;\n }\n}\n\nexport interface IBudgetDateValueHeaderResponse {\n date: Date;\n title: string;\n}\n\nexport class BudgetDateValueHeaderResponseItemsResponseModel implements IBudgetDateValueHeaderResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: BudgetDateValueHeaderResponse[] | undefined;\n\n constructor(data?: IBudgetDateValueHeaderResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(BudgetDateValueHeaderResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): BudgetDateValueHeaderResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new BudgetDateValueHeaderResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IBudgetDateValueHeaderResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: BudgetDateValueHeaderResponse[] | undefined;\n}\n\nexport class BudgetDateValueRequest implements IBudgetDateValueRequest {\n date!: Date;\n value!: number;\n\n constructor(data?: IBudgetDateValueRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.value = _data[\"value\"];\n }\n }\n\n static fromJS(data: any): BudgetDateValueRequest {\n data = typeof data === 'object' ? data : {};\n let result = new BudgetDateValueRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n data[\"value\"] = this.value;\n return data;\n }\n}\n\nexport interface IBudgetDateValueRequest {\n date: Date;\n value: number;\n}\n\nexport class BudgetDateValueResponse implements IBudgetDateValueResponse {\n date!: Date;\n value!: number;\n\n constructor(data?: IBudgetDateValueResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.value = _data[\"value\"];\n }\n }\n\n static fromJS(data: any): BudgetDateValueResponse {\n data = typeof data === 'object' ? data : {};\n let result = new BudgetDateValueResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n data[\"value\"] = this.value;\n return data;\n }\n}\n\nexport interface IBudgetDateValueResponse {\n date: Date;\n value: number;\n}\n\nexport class BudgetRowDeltaRequest implements IBudgetRowDeltaRequest {\n insert?: InsertBudgetRowRequest[] | undefined;\n update?: UpdateBudgetRowRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n\n constructor(data?: IBudgetRowDeltaRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertBudgetRowRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateBudgetRowRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteTenantIndetifyRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): BudgetRowDeltaRequest {\n data = typeof data === 'object' ? data : {};\n let result = new BudgetRowDeltaRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IBudgetRowDeltaRequest {\n insert?: InsertBudgetRowRequest[] | undefined;\n update?: UpdateBudgetRowRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n}\n\nexport class BudgetRowResponse implements IBudgetRowResponse {\n id!: number;\n financeCategoryId!: number;\n versionId?: number | undefined;\n userId?: number | undefined;\n partnerId?: number | undefined;\n changeRequestId?: number | undefined;\n incomeExpense!: IncomeExpenseEnum;\n customField?: string | undefined;\n readonly isChangeable!: boolean;\n isIncomeExpenseChangeable!: boolean;\n budgetDateValues?: BudgetDateValueResponse[] | undefined;\n\n constructor(data?: IBudgetRowResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.financeCategoryId = _data[\"financeCategoryId\"];\n this.versionId = _data[\"versionId\"];\n this.userId = _data[\"userId\"];\n this.partnerId = _data[\"partnerId\"];\n this.changeRequestId = _data[\"changeRequestId\"];\n this.incomeExpense = _data[\"incomeExpense\"];\n this.customField = _data[\"customField\"];\n (this).isChangeable = _data[\"isChangeable\"];\n this.isIncomeExpenseChangeable = _data[\"isIncomeExpenseChangeable\"];\n if (Array.isArray(_data[\"budgetDateValues\"])) {\n this.budgetDateValues = [] as any;\n for (let item of _data[\"budgetDateValues\"])\n this.budgetDateValues!.push(BudgetDateValueResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): BudgetRowResponse {\n data = typeof data === 'object' ? data : {};\n let result = new BudgetRowResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"financeCategoryId\"] = this.financeCategoryId;\n data[\"versionId\"] = this.versionId;\n data[\"userId\"] = this.userId;\n data[\"partnerId\"] = this.partnerId;\n data[\"changeRequestId\"] = this.changeRequestId;\n data[\"incomeExpense\"] = this.incomeExpense;\n data[\"customField\"] = this.customField;\n data[\"isChangeable\"] = this.isChangeable;\n data[\"isIncomeExpenseChangeable\"] = this.isIncomeExpenseChangeable;\n if (Array.isArray(this.budgetDateValues)) {\n data[\"budgetDateValues\"] = [];\n for (let item of this.budgetDateValues)\n data[\"budgetDateValues\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IBudgetRowResponse {\n id: number;\n financeCategoryId: number;\n versionId?: number | undefined;\n userId?: number | undefined;\n partnerId?: number | undefined;\n changeRequestId?: number | undefined;\n incomeExpense: IncomeExpenseEnum;\n customField?: string | undefined;\n isChangeable: boolean;\n isIncomeExpenseChangeable: boolean;\n budgetDateValues?: BudgetDateValueResponse[] | undefined;\n}\n\nexport class BudgetRowResponseItemsResponseModel implements IBudgetRowResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: BudgetRowResponse[] | undefined;\n\n constructor(data?: IBudgetRowResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(BudgetRowResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): BudgetRowResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new BudgetRowResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IBudgetRowResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: BudgetRowResponse[] | undefined;\n}\n\nexport enum BudgetStatusEnum {\n Created = \"Created\",\n Released = \"Released\",\n}\n\nexport class BudgetStatusResponse implements IBudgetStatusResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n isReadonly!: boolean;\n color!: string;\n isInitial!: boolean;\n nextStates?: number[] | undefined;\n semantics!: BudgetStatusEnum;\n\n constructor(data?: IBudgetStatusResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.isReadonly = _data[\"isReadonly\"];\n this.color = _data[\"color\"];\n this.isInitial = _data[\"isInitial\"];\n if (Array.isArray(_data[\"nextStates\"])) {\n this.nextStates = [] as any;\n for (let item of _data[\"nextStates\"])\n this.nextStates!.push(item);\n }\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): BudgetStatusResponse {\n data = typeof data === 'object' ? data : {};\n let result = new BudgetStatusResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"isReadonly\"] = this.isReadonly;\n data[\"color\"] = this.color;\n data[\"isInitial\"] = this.isInitial;\n if (Array.isArray(this.nextStates)) {\n data[\"nextStates\"] = [];\n for (let item of this.nextStates)\n data[\"nextStates\"].push(item);\n }\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface IBudgetStatusResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n isReadonly: boolean;\n color: string;\n isInitial: boolean;\n nextStates?: number[] | undefined;\n semantics: BudgetStatusEnum;\n}\n\nexport class BudgetStatusResponseItemsResponseModel implements IBudgetStatusResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: BudgetStatusResponse[] | undefined;\n\n constructor(data?: IBudgetStatusResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(BudgetStatusResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): BudgetStatusResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new BudgetStatusResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IBudgetStatusResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: BudgetStatusResponse[] | undefined;\n}\n\nexport class BudgetVsActualDashboardResponse implements IBudgetVsActualDashboardResponse {\n budgetIncome!: number;\n actualBudgetIncome!: number;\n readonly differenceIncome!: number;\n budgetExpense!: number;\n actualBudgetExpense!: number;\n readonly differenceExpense!: number;\n readonly budgetProfit!: number;\n readonly budgetProfitPercent!: number;\n readonly actualBudgetProfit!: number;\n readonly actualBudgetProfitPercent!: number;\n readonly differenceProfit!: number;\n budgetVsActualProjectRows?: BudgetVsActualFullRowDashboardResponse[] | undefined;\n budgetVsActualCategoryRows?: BudgetVsActualFullRowDashboardResponse[] | undefined;\n budgetVsActualCategoryAndProjectRows?: BudgetVsActualFullRowDashboardResponse[] | undefined;\n\n constructor(data?: IBudgetVsActualDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.budgetIncome = _data[\"budgetIncome\"];\n this.actualBudgetIncome = _data[\"actualBudgetIncome\"];\n (this).differenceIncome = _data[\"differenceIncome\"];\n this.budgetExpense = _data[\"budgetExpense\"];\n this.actualBudgetExpense = _data[\"actualBudgetExpense\"];\n (this).differenceExpense = _data[\"differenceExpense\"];\n (this).budgetProfit = _data[\"budgetProfit\"];\n (this).budgetProfitPercent = _data[\"budgetProfitPercent\"];\n (this).actualBudgetProfit = _data[\"actualBudgetProfit\"];\n (this).actualBudgetProfitPercent = _data[\"actualBudgetProfitPercent\"];\n (this).differenceProfit = _data[\"differenceProfit\"];\n if (Array.isArray(_data[\"budgetVsActualProjectRows\"])) {\n this.budgetVsActualProjectRows = [] as any;\n for (let item of _data[\"budgetVsActualProjectRows\"])\n this.budgetVsActualProjectRows!.push(BudgetVsActualFullRowDashboardResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"budgetVsActualCategoryRows\"])) {\n this.budgetVsActualCategoryRows = [] as any;\n for (let item of _data[\"budgetVsActualCategoryRows\"])\n this.budgetVsActualCategoryRows!.push(BudgetVsActualFullRowDashboardResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"budgetVsActualCategoryAndProjectRows\"])) {\n this.budgetVsActualCategoryAndProjectRows = [] as any;\n for (let item of _data[\"budgetVsActualCategoryAndProjectRows\"])\n this.budgetVsActualCategoryAndProjectRows!.push(BudgetVsActualFullRowDashboardResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): BudgetVsActualDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new BudgetVsActualDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"budgetIncome\"] = this.budgetIncome;\n data[\"actualBudgetIncome\"] = this.actualBudgetIncome;\n data[\"differenceIncome\"] = this.differenceIncome;\n data[\"budgetExpense\"] = this.budgetExpense;\n data[\"actualBudgetExpense\"] = this.actualBudgetExpense;\n data[\"differenceExpense\"] = this.differenceExpense;\n data[\"budgetProfit\"] = this.budgetProfit;\n data[\"budgetProfitPercent\"] = this.budgetProfitPercent;\n data[\"actualBudgetProfit\"] = this.actualBudgetProfit;\n data[\"actualBudgetProfitPercent\"] = this.actualBudgetProfitPercent;\n data[\"differenceProfit\"] = this.differenceProfit;\n if (Array.isArray(this.budgetVsActualProjectRows)) {\n data[\"budgetVsActualProjectRows\"] = [];\n for (let item of this.budgetVsActualProjectRows)\n data[\"budgetVsActualProjectRows\"].push(item.toJSON());\n }\n if (Array.isArray(this.budgetVsActualCategoryRows)) {\n data[\"budgetVsActualCategoryRows\"] = [];\n for (let item of this.budgetVsActualCategoryRows)\n data[\"budgetVsActualCategoryRows\"].push(item.toJSON());\n }\n if (Array.isArray(this.budgetVsActualCategoryAndProjectRows)) {\n data[\"budgetVsActualCategoryAndProjectRows\"] = [];\n for (let item of this.budgetVsActualCategoryAndProjectRows)\n data[\"budgetVsActualCategoryAndProjectRows\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IBudgetVsActualDashboardResponse {\n budgetIncome: number;\n actualBudgetIncome: number;\n differenceIncome: number;\n budgetExpense: number;\n actualBudgetExpense: number;\n differenceExpense: number;\n budgetProfit: number;\n budgetProfitPercent: number;\n actualBudgetProfit: number;\n actualBudgetProfitPercent: number;\n differenceProfit: number;\n budgetVsActualProjectRows?: BudgetVsActualFullRowDashboardResponse[] | undefined;\n budgetVsActualCategoryRows?: BudgetVsActualFullRowDashboardResponse[] | undefined;\n budgetVsActualCategoryAndProjectRows?: BudgetVsActualFullRowDashboardResponse[] | undefined;\n}\n\nexport class BudgetVsActualFullRowDashboardResponse implements IBudgetVsActualFullRowDashboardResponse {\n date!: Date;\n projectId!: number;\n financeCategoryId!: number;\n budgetIncomeValue!: number;\n actualBudgetIncomeValue!: number;\n readonly differenceIncome!: number;\n readonly percentageOfBudgetIncome!: number;\n budgetExpenseValue!: number;\n actualBudgetExpenseValue!: number;\n readonly differenceExpense!: number;\n readonly percentageOfBudgetExpense!: number;\n readonly budgetProfitValue!: number;\n readonly actualBudgetProfitValue!: number;\n readonly differenceProfit!: number;\n readonly percentageOfBudgetProfit!: number;\n children?: BudgetVsActualFullRowDashboardResponse[] | undefined;\n\n constructor(data?: IBudgetVsActualFullRowDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.projectId = _data[\"projectId\"];\n this.financeCategoryId = _data[\"financeCategoryId\"];\n this.budgetIncomeValue = _data[\"budgetIncomeValue\"];\n this.actualBudgetIncomeValue = _data[\"actualBudgetIncomeValue\"];\n (this).differenceIncome = _data[\"differenceIncome\"];\n (this).percentageOfBudgetIncome = _data[\"percentageOfBudgetIncome\"];\n this.budgetExpenseValue = _data[\"budgetExpenseValue\"];\n this.actualBudgetExpenseValue = _data[\"actualBudgetExpenseValue\"];\n (this).differenceExpense = _data[\"differenceExpense\"];\n (this).percentageOfBudgetExpense = _data[\"percentageOfBudgetExpense\"];\n (this).budgetProfitValue = _data[\"budgetProfitValue\"];\n (this).actualBudgetProfitValue = _data[\"actualBudgetProfitValue\"];\n (this).differenceProfit = _data[\"differenceProfit\"];\n (this).percentageOfBudgetProfit = _data[\"percentageOfBudgetProfit\"];\n if (Array.isArray(_data[\"children\"])) {\n this.children = [] as any;\n for (let item of _data[\"children\"])\n this.children!.push(BudgetVsActualFullRowDashboardResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): BudgetVsActualFullRowDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new BudgetVsActualFullRowDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"date\"] = this.date ? this.date.toISOString() : undefined;\n data[\"projectId\"] = this.projectId;\n data[\"financeCategoryId\"] = this.financeCategoryId;\n data[\"budgetIncomeValue\"] = this.budgetIncomeValue;\n data[\"actualBudgetIncomeValue\"] = this.actualBudgetIncomeValue;\n data[\"differenceIncome\"] = this.differenceIncome;\n data[\"percentageOfBudgetIncome\"] = this.percentageOfBudgetIncome;\n data[\"budgetExpenseValue\"] = this.budgetExpenseValue;\n data[\"actualBudgetExpenseValue\"] = this.actualBudgetExpenseValue;\n data[\"differenceExpense\"] = this.differenceExpense;\n data[\"percentageOfBudgetExpense\"] = this.percentageOfBudgetExpense;\n data[\"budgetProfitValue\"] = this.budgetProfitValue;\n data[\"actualBudgetProfitValue\"] = this.actualBudgetProfitValue;\n data[\"differenceProfit\"] = this.differenceProfit;\n data[\"percentageOfBudgetProfit\"] = this.percentageOfBudgetProfit;\n if (Array.isArray(this.children)) {\n data[\"children\"] = [];\n for (let item of this.children)\n data[\"children\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IBudgetVsActualFullRowDashboardResponse {\n date: Date;\n projectId: number;\n financeCategoryId: number;\n budgetIncomeValue: number;\n actualBudgetIncomeValue: number;\n differenceIncome: number;\n percentageOfBudgetIncome: number;\n budgetExpenseValue: number;\n actualBudgetExpenseValue: number;\n differenceExpense: number;\n percentageOfBudgetExpense: number;\n budgetProfitValue: number;\n actualBudgetProfitValue: number;\n differenceProfit: number;\n percentageOfBudgetProfit: number;\n children?: BudgetVsActualFullRowDashboardResponse[] | undefined;\n}\n\nexport class BudgetVsActualPartnerRowDashboardResponse implements IBudgetVsActualPartnerRowDashboardResponse {\n date!: Date;\n budgetValue!: number;\n actualBudgetValue!: number;\n readonly difference!: number;\n readonly percentageOfBudget!: number;\n partnerId!: number;\n children?: BudgetVsActualPartnerRowDashboardResponse[] | undefined;\n\n constructor(data?: IBudgetVsActualPartnerRowDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.budgetValue = _data[\"budgetValue\"];\n this.actualBudgetValue = _data[\"actualBudgetValue\"];\n (this).difference = _data[\"difference\"];\n (this).percentageOfBudget = _data[\"percentageOfBudget\"];\n this.partnerId = _data[\"partnerId\"];\n if (Array.isArray(_data[\"children\"])) {\n this.children = [] as any;\n for (let item of _data[\"children\"])\n this.children!.push(BudgetVsActualPartnerRowDashboardResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): BudgetVsActualPartnerRowDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new BudgetVsActualPartnerRowDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"date\"] = this.date ? this.date.toISOString() : undefined;\n data[\"budgetValue\"] = this.budgetValue;\n data[\"actualBudgetValue\"] = this.actualBudgetValue;\n data[\"difference\"] = this.difference;\n data[\"percentageOfBudget\"] = this.percentageOfBudget;\n data[\"partnerId\"] = this.partnerId;\n if (Array.isArray(this.children)) {\n data[\"children\"] = [];\n for (let item of this.children)\n data[\"children\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IBudgetVsActualPartnerRowDashboardResponse {\n date: Date;\n budgetValue: number;\n actualBudgetValue: number;\n difference: number;\n percentageOfBudget: number;\n partnerId: number;\n children?: BudgetVsActualPartnerRowDashboardResponse[] | undefined;\n}\n\nexport class BudgetVsActualRowDashboardResponse implements IBudgetVsActualRowDashboardResponse {\n date!: Date;\n budgetValue!: number;\n actualBudgetValue!: number;\n readonly difference!: number;\n readonly percentageOfBudget!: number;\n\n constructor(data?: IBudgetVsActualRowDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.budgetValue = _data[\"budgetValue\"];\n this.actualBudgetValue = _data[\"actualBudgetValue\"];\n (this).difference = _data[\"difference\"];\n (this).percentageOfBudget = _data[\"percentageOfBudget\"];\n }\n }\n\n static fromJS(data: any): BudgetVsActualRowDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new BudgetVsActualRowDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"date\"] = this.date ? this.date.toISOString() : undefined;\n data[\"budgetValue\"] = this.budgetValue;\n data[\"actualBudgetValue\"] = this.actualBudgetValue;\n data[\"difference\"] = this.difference;\n data[\"percentageOfBudget\"] = this.percentageOfBudget;\n return data;\n }\n}\n\nexport interface IBudgetVsActualRowDashboardResponse {\n date: Date;\n budgetValue: number;\n actualBudgetValue: number;\n difference: number;\n percentageOfBudget: number;\n}\n\nexport class BusinessPartnerInsertRequestModel implements IBusinessPartnerInsertRequestModel {\n countryId!: number;\n name!: string;\n city!: string;\n address?: string | undefined;\n contactPerson?: string | undefined;\n email?: string | undefined;\n phone?: string | undefined;\n regNo?: string | undefined;\n vatNo!: string;\n iban?: string | undefined;\n swift?: string | undefined;\n\n constructor(data?: IBusinessPartnerInsertRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.countryId = _data[\"countryId\"];\n this.name = _data[\"name\"];\n this.city = _data[\"city\"];\n this.address = _data[\"address\"];\n this.contactPerson = _data[\"contactPerson\"];\n this.email = _data[\"email\"];\n this.phone = _data[\"phone\"];\n this.regNo = _data[\"regNo\"];\n this.vatNo = _data[\"vatNo\"];\n this.iban = _data[\"iban\"];\n this.swift = _data[\"swift\"];\n }\n }\n\n static fromJS(data: any): BusinessPartnerInsertRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new BusinessPartnerInsertRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"countryId\"] = this.countryId;\n data[\"name\"] = this.name;\n data[\"city\"] = this.city;\n data[\"address\"] = this.address;\n data[\"contactPerson\"] = this.contactPerson;\n data[\"email\"] = this.email;\n data[\"phone\"] = this.phone;\n data[\"regNo\"] = this.regNo;\n data[\"vatNo\"] = this.vatNo;\n data[\"iban\"] = this.iban;\n data[\"swift\"] = this.swift;\n return data;\n }\n}\n\nexport interface IBusinessPartnerInsertRequestModel {\n countryId: number;\n name: string;\n city: string;\n address?: string | undefined;\n contactPerson?: string | undefined;\n email?: string | undefined;\n phone?: string | undefined;\n regNo?: string | undefined;\n vatNo: string;\n iban?: string | undefined;\n swift?: string | undefined;\n}\n\nexport class BusinessPartnerResponseModel implements IBusinessPartnerResponseModel {\n countryId!: number;\n name!: string;\n city!: string;\n address?: string | undefined;\n contactPerson?: string | undefined;\n email?: string | undefined;\n phone?: string | undefined;\n regNo?: string | undefined;\n vatNo!: string;\n iban?: string | undefined;\n swift?: string | undefined;\n id!: number;\n\n constructor(data?: IBusinessPartnerResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.countryId = _data[\"countryId\"];\n this.name = _data[\"name\"];\n this.city = _data[\"city\"];\n this.address = _data[\"address\"];\n this.contactPerson = _data[\"contactPerson\"];\n this.email = _data[\"email\"];\n this.phone = _data[\"phone\"];\n this.regNo = _data[\"regNo\"];\n this.vatNo = _data[\"vatNo\"];\n this.iban = _data[\"iban\"];\n this.swift = _data[\"swift\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): BusinessPartnerResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new BusinessPartnerResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"countryId\"] = this.countryId;\n data[\"name\"] = this.name;\n data[\"city\"] = this.city;\n data[\"address\"] = this.address;\n data[\"contactPerson\"] = this.contactPerson;\n data[\"email\"] = this.email;\n data[\"phone\"] = this.phone;\n data[\"regNo\"] = this.regNo;\n data[\"vatNo\"] = this.vatNo;\n data[\"iban\"] = this.iban;\n data[\"swift\"] = this.swift;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IBusinessPartnerResponseModel {\n countryId: number;\n name: string;\n city: string;\n address?: string | undefined;\n contactPerson?: string | undefined;\n email?: string | undefined;\n phone?: string | undefined;\n regNo?: string | undefined;\n vatNo: string;\n iban?: string | undefined;\n swift?: string | undefined;\n id: number;\n}\n\nexport class BusinessPartnerResponseModelItemsResponseModel implements IBusinessPartnerResponseModelItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: BusinessPartnerResponseModel[] | undefined;\n\n constructor(data?: IBusinessPartnerResponseModelItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(BusinessPartnerResponseModel.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): BusinessPartnerResponseModelItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new BusinessPartnerResponseModelItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IBusinessPartnerResponseModelItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: BusinessPartnerResponseModel[] | undefined;\n}\n\nexport class BusinessPartnerResponseModelSimpleResponseModel implements IBusinessPartnerResponseModelSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: BusinessPartnerResponseModel;\n\n constructor(data?: IBusinessPartnerResponseModelSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? BusinessPartnerResponseModel.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): BusinessPartnerResponseModelSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new BusinessPartnerResponseModelSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IBusinessPartnerResponseModelSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: BusinessPartnerResponseModel;\n}\n\nexport class BusinessPartnerUpdateRequestModel implements IBusinessPartnerUpdateRequestModel {\n countryId!: number;\n name!: string;\n city!: string;\n address?: string | undefined;\n contactPerson?: string | undefined;\n email?: string | undefined;\n phone?: string | undefined;\n regNo?: string | undefined;\n vatNo!: string;\n iban?: string | undefined;\n swift?: string | undefined;\n id!: number;\n\n constructor(data?: IBusinessPartnerUpdateRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.countryId = _data[\"countryId\"];\n this.name = _data[\"name\"];\n this.city = _data[\"city\"];\n this.address = _data[\"address\"];\n this.contactPerson = _data[\"contactPerson\"];\n this.email = _data[\"email\"];\n this.phone = _data[\"phone\"];\n this.regNo = _data[\"regNo\"];\n this.vatNo = _data[\"vatNo\"];\n this.iban = _data[\"iban\"];\n this.swift = _data[\"swift\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): BusinessPartnerUpdateRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new BusinessPartnerUpdateRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"countryId\"] = this.countryId;\n data[\"name\"] = this.name;\n data[\"city\"] = this.city;\n data[\"address\"] = this.address;\n data[\"contactPerson\"] = this.contactPerson;\n data[\"email\"] = this.email;\n data[\"phone\"] = this.phone;\n data[\"regNo\"] = this.regNo;\n data[\"vatNo\"] = this.vatNo;\n data[\"iban\"] = this.iban;\n data[\"swift\"] = this.swift;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IBusinessPartnerUpdateRequestModel {\n countryId: number;\n name: string;\n city: string;\n address?: string | undefined;\n contactPerson?: string | undefined;\n email?: string | undefined;\n phone?: string | undefined;\n regNo?: string | undefined;\n vatNo: string;\n iban?: string | undefined;\n swift?: string | undefined;\n id: number;\n}\n\nexport class CalendarResponse implements ICalendarResponse {\n id!: number;\n countryId!: number;\n workWeekFrom!: WeekDayEnum;\n workWeekTo!: WeekDayEnum;\n workTimeFrom!: number;\n workTimeTo!: number;\n holidays?: HolidayResponse[] | undefined;\n\n constructor(data?: ICalendarResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.countryId = _data[\"countryId\"];\n this.workWeekFrom = _data[\"workWeekFrom\"];\n this.workWeekTo = _data[\"workWeekTo\"];\n this.workTimeFrom = _data[\"workTimeFrom\"];\n this.workTimeTo = _data[\"workTimeTo\"];\n if (Array.isArray(_data[\"holidays\"])) {\n this.holidays = [] as any;\n for (let item of _data[\"holidays\"])\n this.holidays!.push(HolidayResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): CalendarResponse {\n data = typeof data === 'object' ? data : {};\n let result = new CalendarResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"countryId\"] = this.countryId;\n data[\"workWeekFrom\"] = this.workWeekFrom;\n data[\"workWeekTo\"] = this.workWeekTo;\n data[\"workTimeFrom\"] = this.workTimeFrom;\n data[\"workTimeTo\"] = this.workTimeTo;\n if (Array.isArray(this.holidays)) {\n data[\"holidays\"] = [];\n for (let item of this.holidays)\n data[\"holidays\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ICalendarResponse {\n id: number;\n countryId: number;\n workWeekFrom: WeekDayEnum;\n workWeekTo: WeekDayEnum;\n workTimeFrom: number;\n workTimeTo: number;\n holidays?: HolidayResponse[] | undefined;\n}\n\nexport class CalendarResponseSimpleResponseModel implements ICalendarResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: CalendarResponse;\n\n constructor(data?: ICalendarResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? CalendarResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): CalendarResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new CalendarResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ICalendarResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: CalendarResponse;\n}\n\nexport class ChangePasswordRequestModel implements IChangePasswordRequestModel {\n oldPassword!: string;\n newPassword!: string;\n\n constructor(data?: IChangePasswordRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.oldPassword = _data[\"oldPassword\"];\n this.newPassword = _data[\"newPassword\"];\n }\n }\n\n static fromJS(data: any): ChangePasswordRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new ChangePasswordRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"oldPassword\"] = this.oldPassword;\n data[\"newPassword\"] = this.newPassword;\n return data;\n }\n}\n\nexport interface IChangePasswordRequestModel {\n oldPassword: string;\n newPassword: string;\n}\n\nexport class ChangeRequestAcceptanceRequest implements IChangeRequestAcceptanceRequest {\n id!: number;\n acceptedOn?: Date | undefined;\n comment?: string | undefined;\n\n constructor(data?: IChangeRequestAcceptanceRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.acceptedOn = _data[\"acceptedOn\"] ? new Date(_data[\"acceptedOn\"].toString()) : undefined;\n this.comment = _data[\"comment\"];\n }\n }\n\n static fromJS(data: any): ChangeRequestAcceptanceRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ChangeRequestAcceptanceRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"acceptedOn\"] = this.acceptedOn ? formatDate(this.acceptedOn) : undefined;\n data[\"comment\"] = this.comment;\n return data;\n }\n}\n\nexport interface IChangeRequestAcceptanceRequest {\n id: number;\n acceptedOn?: Date | undefined;\n comment?: string | undefined;\n}\n\nexport class ChangeRequestActivityResponse implements IChangeRequestActivityResponse {\n id!: number;\n name?: string | undefined;\n expectedDeliveryOn?: Date | undefined;\n effortInHours?: number | undefined;\n cost?: number | undefined;\n\n constructor(data?: IChangeRequestActivityResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.expectedDeliveryOn = _data[\"expectedDeliveryOn\"] ? new Date(_data[\"expectedDeliveryOn\"].toString()) : undefined;\n this.effortInHours = _data[\"effortInHours\"];\n this.cost = _data[\"cost\"];\n }\n }\n\n static fromJS(data: any): ChangeRequestActivityResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ChangeRequestActivityResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"expectedDeliveryOn\"] = this.expectedDeliveryOn ? formatDate(this.expectedDeliveryOn) : undefined;\n data[\"effortInHours\"] = this.effortInHours;\n data[\"cost\"] = this.cost;\n return data;\n }\n}\n\nexport interface IChangeRequestActivityResponse {\n id: number;\n name?: string | undefined;\n expectedDeliveryOn?: Date | undefined;\n effortInHours?: number | undefined;\n cost?: number | undefined;\n}\n\nexport class ChangeRequestAnalysisRequest implements IChangeRequestAnalysisRequest {\n id!: number;\n approvalUserId?: number | undefined;\n estimatedByUserId?: number | undefined;\n estimatedOn?: Date | undefined;\n completionOn?: Date | undefined;\n analysisDescription?: string | undefined;\n assumptions?: string | undefined;\n regressionRelevant!: boolean;\n dependencyDescription?: string | undefined;\n activities?: InsertChangeRequestActivityRequestUpdateChangeRequestActivityRequestInt32DeltaModel;\n approve!: ChangeRequestApproveEnum;\n sendEmail!: boolean;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n\n constructor(data?: IChangeRequestAnalysisRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.approvalUserId = _data[\"approvalUserId\"];\n this.estimatedByUserId = _data[\"estimatedByUserId\"];\n this.estimatedOn = _data[\"estimatedOn\"] ? new Date(_data[\"estimatedOn\"].toString()) : undefined;\n this.completionOn = _data[\"completionOn\"] ? new Date(_data[\"completionOn\"].toString()) : undefined;\n this.analysisDescription = _data[\"analysisDescription\"];\n this.assumptions = _data[\"assumptions\"];\n this.regressionRelevant = _data[\"regressionRelevant\"];\n this.dependencyDescription = _data[\"dependencyDescription\"];\n this.activities = _data[\"activities\"] ? InsertChangeRequestActivityRequestUpdateChangeRequestActivityRequestInt32DeltaModel.fromJS(_data[\"activities\"]) : undefined;\n this.approve = _data[\"approve\"];\n this.sendEmail = _data[\"sendEmail\"];\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ChangeRequestAnalysisRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ChangeRequestAnalysisRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"approvalUserId\"] = this.approvalUserId;\n data[\"estimatedByUserId\"] = this.estimatedByUserId;\n data[\"estimatedOn\"] = this.estimatedOn ? formatDate(this.estimatedOn) : undefined;\n data[\"completionOn\"] = this.completionOn ? formatDate(this.completionOn) : undefined;\n data[\"analysisDescription\"] = this.analysisDescription;\n data[\"assumptions\"] = this.assumptions;\n data[\"regressionRelevant\"] = this.regressionRelevant;\n data[\"dependencyDescription\"] = this.dependencyDescription;\n data[\"activities\"] = this.activities ? this.activities.toJSON() : undefined;\n data[\"approve\"] = this.approve;\n data[\"sendEmail\"] = this.sendEmail;\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IChangeRequestAnalysisRequest {\n id: number;\n approvalUserId?: number | undefined;\n estimatedByUserId?: number | undefined;\n estimatedOn?: Date | undefined;\n completionOn?: Date | undefined;\n analysisDescription?: string | undefined;\n assumptions?: string | undefined;\n regressionRelevant: boolean;\n dependencyDescription?: string | undefined;\n activities?: InsertChangeRequestActivityRequestUpdateChangeRequestActivityRequestInt32DeltaModel;\n approve: ChangeRequestApproveEnum;\n sendEmail: boolean;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n}\n\nexport class ChangeRequestApprovalRequest implements IChangeRequestApprovalRequest {\n id!: number;\n approvalActionOn?: Date | undefined;\n reasonForRejection?: string | undefined;\n realizationUserId?: number | undefined;\n approve?: ChangeRequestApproveEnum;\n sendEmail!: boolean;\n\n constructor(data?: IChangeRequestApprovalRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.approvalActionOn = _data[\"approvalActionOn\"] ? new Date(_data[\"approvalActionOn\"].toString()) : undefined;\n this.reasonForRejection = _data[\"reasonForRejection\"];\n this.realizationUserId = _data[\"realizationUserId\"];\n this.approve = _data[\"approve\"];\n this.sendEmail = _data[\"sendEmail\"];\n }\n }\n\n static fromJS(data: any): ChangeRequestApprovalRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ChangeRequestApprovalRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"approvalActionOn\"] = this.approvalActionOn ? formatDate(this.approvalActionOn) : undefined;\n data[\"reasonForRejection\"] = this.reasonForRejection;\n data[\"realizationUserId\"] = this.realizationUserId;\n data[\"approve\"] = this.approve;\n data[\"sendEmail\"] = this.sendEmail;\n return data;\n }\n}\n\nexport interface IChangeRequestApprovalRequest {\n id: number;\n approvalActionOn?: Date | undefined;\n reasonForRejection?: string | undefined;\n realizationUserId?: number | undefined;\n approve?: ChangeRequestApproveEnum;\n sendEmail: boolean;\n}\n\nexport enum ChangeRequestApproveEnum {\n None = \"None\",\n Approve = \"Approve\",\n Reject = \"Reject\",\n AdditionalInfoNeeded = \"AdditionalInfoNeeded\",\n}\n\nexport class ChangeRequestCountsResponse implements IChangeRequestCountsResponse {\n totalEstimatedCostSum!: number;\n totalEstimatedEffortSum!: number;\n totalRealizationCostSum!: number;\n totalRealizationEffortSum!: number;\n\n constructor(data?: IChangeRequestCountsResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.totalEstimatedCostSum = _data[\"totalEstimatedCostSum\"];\n this.totalEstimatedEffortSum = _data[\"totalEstimatedEffortSum\"];\n this.totalRealizationCostSum = _data[\"totalRealizationCostSum\"];\n this.totalRealizationEffortSum = _data[\"totalRealizationEffortSum\"];\n }\n }\n\n static fromJS(data: any): ChangeRequestCountsResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ChangeRequestCountsResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"totalEstimatedCostSum\"] = this.totalEstimatedCostSum;\n data[\"totalEstimatedEffortSum\"] = this.totalEstimatedEffortSum;\n data[\"totalRealizationCostSum\"] = this.totalRealizationCostSum;\n data[\"totalRealizationEffortSum\"] = this.totalRealizationEffortSum;\n return data;\n }\n}\n\nexport interface IChangeRequestCountsResponse {\n totalEstimatedCostSum: number;\n totalEstimatedEffortSum: number;\n totalRealizationCostSum: number;\n totalRealizationEffortSum: number;\n}\n\nexport class ChangeRequestCountsResponseSimpleResponseModel implements IChangeRequestCountsResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ChangeRequestCountsResponse;\n\n constructor(data?: IChangeRequestCountsResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ChangeRequestCountsResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ChangeRequestCountsResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ChangeRequestCountsResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IChangeRequestCountsResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ChangeRequestCountsResponse;\n}\n\nexport enum ChangeRequestPriorityEnum {\n Low = \"Low\",\n Medium = \"Medium\",\n High = \"High\",\n Critical = \"Critical\",\n}\n\nexport class ChangeRequestRealizationRequest implements IChangeRequestRealizationRequest {\n id!: number;\n approve?: ChangeRequestApproveEnum;\n acceptanceUserId?: number | undefined;\n linkToEvidence?: string | undefined;\n scopeItemLevelIdsToAdd?: number[] | undefined;\n scopeItemLevelIdsToRemove?: number[] | undefined;\n sendEmail!: boolean;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n activities?: InsertChangeRequestActivityRequestUpdateChangeRequestActivityRequestInt32DeltaModel;\n\n constructor(data?: IChangeRequestRealizationRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.approve = _data[\"approve\"];\n this.acceptanceUserId = _data[\"acceptanceUserId\"];\n this.linkToEvidence = _data[\"linkToEvidence\"];\n if (Array.isArray(_data[\"scopeItemLevelIdsToAdd\"])) {\n this.scopeItemLevelIdsToAdd = [] as any;\n for (let item of _data[\"scopeItemLevelIdsToAdd\"])\n this.scopeItemLevelIdsToAdd!.push(item);\n }\n if (Array.isArray(_data[\"scopeItemLevelIdsToRemove\"])) {\n this.scopeItemLevelIdsToRemove = [] as any;\n for (let item of _data[\"scopeItemLevelIdsToRemove\"])\n this.scopeItemLevelIdsToRemove!.push(item);\n }\n this.sendEmail = _data[\"sendEmail\"];\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n this.activities = _data[\"activities\"] ? InsertChangeRequestActivityRequestUpdateChangeRequestActivityRequestInt32DeltaModel.fromJS(_data[\"activities\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ChangeRequestRealizationRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ChangeRequestRealizationRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"approve\"] = this.approve;\n data[\"acceptanceUserId\"] = this.acceptanceUserId;\n data[\"linkToEvidence\"] = this.linkToEvidence;\n if (Array.isArray(this.scopeItemLevelIdsToAdd)) {\n data[\"scopeItemLevelIdsToAdd\"] = [];\n for (let item of this.scopeItemLevelIdsToAdd)\n data[\"scopeItemLevelIdsToAdd\"].push(item);\n }\n if (Array.isArray(this.scopeItemLevelIdsToRemove)) {\n data[\"scopeItemLevelIdsToRemove\"] = [];\n for (let item of this.scopeItemLevelIdsToRemove)\n data[\"scopeItemLevelIdsToRemove\"].push(item);\n }\n data[\"sendEmail\"] = this.sendEmail;\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n data[\"activities\"] = this.activities ? this.activities.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IChangeRequestRealizationRequest {\n id: number;\n approve?: ChangeRequestApproveEnum;\n acceptanceUserId?: number | undefined;\n linkToEvidence?: string | undefined;\n scopeItemLevelIdsToAdd?: number[] | undefined;\n scopeItemLevelIdsToRemove?: number[] | undefined;\n sendEmail: boolean;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n activities?: InsertChangeRequestActivityRequestUpdateChangeRequestActivityRequestInt32DeltaModel;\n}\n\nexport class ChangeRequestResponse implements IChangeRequestResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n projectId!: number;\n initiatedBy?: string | undefined;\n requestedOn?: Date | undefined;\n typeId?: number | undefined;\n goLiveCritical!: boolean;\n impactId!: number;\n urgencyId!: number;\n statusId!: number;\n expectedCompletionDate?: Date | undefined;\n reasonOfChange?: string | undefined;\n expectedBenefit?: string | undefined;\n estimatedOn?: Date | undefined;\n completionOn?: Date | undefined;\n analysisDescription?: string | undefined;\n assumptions?: string | undefined;\n regressionRelevant!: boolean;\n dependencyDescription?: string | undefined;\n approvalActionOn?: Date | undefined;\n reasonForRejection?: string | undefined;\n linkToEvidence?: string | undefined;\n acceptedOn?: Date | undefined;\n comment?: string | undefined;\n requestedByUserId!: number;\n analysisUserId?: number | undefined;\n estimatedByUserId?: number | undefined;\n approvalUserId?: number | undefined;\n approvedOrRejectedByUserId?: number | undefined;\n realizationUserId?: number | undefined;\n acceptanceUserId?: number | undefined;\n acceptedByUserId?: number | undefined;\n sendEmailInitial!: boolean;\n sendEmailAnalysis!: boolean;\n sendEmailApproval!: boolean;\n sendEmailRealization!: boolean;\n estimatedActivities?: ChangeRequestActivityResponse[] | undefined;\n realizationActivities?: ChangeRequestActivityResponse[] | undefined;\n problemReportAttachments?: AttachmentResponse[] | undefined;\n analysisAttachments?: AttachmentResponse[] | undefined;\n realizationAttachments?: AttachmentResponse[] | undefined;\n scopeItemLevelIds?: number[] | undefined;\n ticketIds?: number[] | undefined;\n\n constructor(data?: IChangeRequestResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.projectId = _data[\"projectId\"];\n this.initiatedBy = _data[\"initiatedBy\"];\n this.requestedOn = _data[\"requestedOn\"] ? new Date(_data[\"requestedOn\"].toString()) : undefined;\n this.typeId = _data[\"typeId\"];\n this.goLiveCritical = _data[\"goLiveCritical\"];\n this.impactId = _data[\"impactId\"];\n this.urgencyId = _data[\"urgencyId\"];\n this.statusId = _data[\"statusId\"];\n this.expectedCompletionDate = _data[\"expectedCompletionDate\"] ? new Date(_data[\"expectedCompletionDate\"].toString()) : undefined;\n this.reasonOfChange = _data[\"reasonOfChange\"];\n this.expectedBenefit = _data[\"expectedBenefit\"];\n this.estimatedOn = _data[\"estimatedOn\"] ? new Date(_data[\"estimatedOn\"].toString()) : undefined;\n this.completionOn = _data[\"completionOn\"] ? new Date(_data[\"completionOn\"].toString()) : undefined;\n this.analysisDescription = _data[\"analysisDescription\"];\n this.assumptions = _data[\"assumptions\"];\n this.regressionRelevant = _data[\"regressionRelevant\"];\n this.dependencyDescription = _data[\"dependencyDescription\"];\n this.approvalActionOn = _data[\"approvalActionOn\"] ? new Date(_data[\"approvalActionOn\"].toString()) : undefined;\n this.reasonForRejection = _data[\"reasonForRejection\"];\n this.linkToEvidence = _data[\"linkToEvidence\"];\n this.acceptedOn = _data[\"acceptedOn\"] ? new Date(_data[\"acceptedOn\"].toString()) : undefined;\n this.comment = _data[\"comment\"];\n this.requestedByUserId = _data[\"requestedByUserId\"];\n this.analysisUserId = _data[\"analysisUserId\"];\n this.estimatedByUserId = _data[\"estimatedByUserId\"];\n this.approvalUserId = _data[\"approvalUserId\"];\n this.approvedOrRejectedByUserId = _data[\"approvedOrRejectedByUserId\"];\n this.realizationUserId = _data[\"realizationUserId\"];\n this.acceptanceUserId = _data[\"acceptanceUserId\"];\n this.acceptedByUserId = _data[\"acceptedByUserId\"];\n this.sendEmailInitial = _data[\"sendEmailInitial\"];\n this.sendEmailAnalysis = _data[\"sendEmailAnalysis\"];\n this.sendEmailApproval = _data[\"sendEmailApproval\"];\n this.sendEmailRealization = _data[\"sendEmailRealization\"];\n if (Array.isArray(_data[\"estimatedActivities\"])) {\n this.estimatedActivities = [] as any;\n for (let item of _data[\"estimatedActivities\"])\n this.estimatedActivities!.push(ChangeRequestActivityResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"realizationActivities\"])) {\n this.realizationActivities = [] as any;\n for (let item of _data[\"realizationActivities\"])\n this.realizationActivities!.push(ChangeRequestActivityResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"problemReportAttachments\"])) {\n this.problemReportAttachments = [] as any;\n for (let item of _data[\"problemReportAttachments\"])\n this.problemReportAttachments!.push(AttachmentResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"analysisAttachments\"])) {\n this.analysisAttachments = [] as any;\n for (let item of _data[\"analysisAttachments\"])\n this.analysisAttachments!.push(AttachmentResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"realizationAttachments\"])) {\n this.realizationAttachments = [] as any;\n for (let item of _data[\"realizationAttachments\"])\n this.realizationAttachments!.push(AttachmentResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"scopeItemLevelIds\"])) {\n this.scopeItemLevelIds = [] as any;\n for (let item of _data[\"scopeItemLevelIds\"])\n this.scopeItemLevelIds!.push(item);\n }\n if (Array.isArray(_data[\"ticketIds\"])) {\n this.ticketIds = [] as any;\n for (let item of _data[\"ticketIds\"])\n this.ticketIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): ChangeRequestResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ChangeRequestResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"projectId\"] = this.projectId;\n data[\"initiatedBy\"] = this.initiatedBy;\n data[\"requestedOn\"] = this.requestedOn ? formatDate(this.requestedOn) : undefined;\n data[\"typeId\"] = this.typeId;\n data[\"goLiveCritical\"] = this.goLiveCritical;\n data[\"impactId\"] = this.impactId;\n data[\"urgencyId\"] = this.urgencyId;\n data[\"statusId\"] = this.statusId;\n data[\"expectedCompletionDate\"] = this.expectedCompletionDate ? formatDate(this.expectedCompletionDate) : undefined;\n data[\"reasonOfChange\"] = this.reasonOfChange;\n data[\"expectedBenefit\"] = this.expectedBenefit;\n data[\"estimatedOn\"] = this.estimatedOn ? formatDate(this.estimatedOn) : undefined;\n data[\"completionOn\"] = this.completionOn ? formatDate(this.completionOn) : undefined;\n data[\"analysisDescription\"] = this.analysisDescription;\n data[\"assumptions\"] = this.assumptions;\n data[\"regressionRelevant\"] = this.regressionRelevant;\n data[\"dependencyDescription\"] = this.dependencyDescription;\n data[\"approvalActionOn\"] = this.approvalActionOn ? formatDate(this.approvalActionOn) : undefined;\n data[\"reasonForRejection\"] = this.reasonForRejection;\n data[\"linkToEvidence\"] = this.linkToEvidence;\n data[\"acceptedOn\"] = this.acceptedOn ? formatDate(this.acceptedOn) : undefined;\n data[\"comment\"] = this.comment;\n data[\"requestedByUserId\"] = this.requestedByUserId;\n data[\"analysisUserId\"] = this.analysisUserId;\n data[\"estimatedByUserId\"] = this.estimatedByUserId;\n data[\"approvalUserId\"] = this.approvalUserId;\n data[\"approvedOrRejectedByUserId\"] = this.approvedOrRejectedByUserId;\n data[\"realizationUserId\"] = this.realizationUserId;\n data[\"acceptanceUserId\"] = this.acceptanceUserId;\n data[\"acceptedByUserId\"] = this.acceptedByUserId;\n data[\"sendEmailInitial\"] = this.sendEmailInitial;\n data[\"sendEmailAnalysis\"] = this.sendEmailAnalysis;\n data[\"sendEmailApproval\"] = this.sendEmailApproval;\n data[\"sendEmailRealization\"] = this.sendEmailRealization;\n if (Array.isArray(this.estimatedActivities)) {\n data[\"estimatedActivities\"] = [];\n for (let item of this.estimatedActivities)\n data[\"estimatedActivities\"].push(item.toJSON());\n }\n if (Array.isArray(this.realizationActivities)) {\n data[\"realizationActivities\"] = [];\n for (let item of this.realizationActivities)\n data[\"realizationActivities\"].push(item.toJSON());\n }\n if (Array.isArray(this.problemReportAttachments)) {\n data[\"problemReportAttachments\"] = [];\n for (let item of this.problemReportAttachments)\n data[\"problemReportAttachments\"].push(item.toJSON());\n }\n if (Array.isArray(this.analysisAttachments)) {\n data[\"analysisAttachments\"] = [];\n for (let item of this.analysisAttachments)\n data[\"analysisAttachments\"].push(item.toJSON());\n }\n if (Array.isArray(this.realizationAttachments)) {\n data[\"realizationAttachments\"] = [];\n for (let item of this.realizationAttachments)\n data[\"realizationAttachments\"].push(item.toJSON());\n }\n if (Array.isArray(this.scopeItemLevelIds)) {\n data[\"scopeItemLevelIds\"] = [];\n for (let item of this.scopeItemLevelIds)\n data[\"scopeItemLevelIds\"].push(item);\n }\n if (Array.isArray(this.ticketIds)) {\n data[\"ticketIds\"] = [];\n for (let item of this.ticketIds)\n data[\"ticketIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IChangeRequestResponse {\n id: number;\n name: string;\n description?: string | undefined;\n projectId: number;\n initiatedBy?: string | undefined;\n requestedOn?: Date | undefined;\n typeId?: number | undefined;\n goLiveCritical: boolean;\n impactId: number;\n urgencyId: number;\n statusId: number;\n expectedCompletionDate?: Date | undefined;\n reasonOfChange?: string | undefined;\n expectedBenefit?: string | undefined;\n estimatedOn?: Date | undefined;\n completionOn?: Date | undefined;\n analysisDescription?: string | undefined;\n assumptions?: string | undefined;\n regressionRelevant: boolean;\n dependencyDescription?: string | undefined;\n approvalActionOn?: Date | undefined;\n reasonForRejection?: string | undefined;\n linkToEvidence?: string | undefined;\n acceptedOn?: Date | undefined;\n comment?: string | undefined;\n requestedByUserId: number;\n analysisUserId?: number | undefined;\n estimatedByUserId?: number | undefined;\n approvalUserId?: number | undefined;\n approvedOrRejectedByUserId?: number | undefined;\n realizationUserId?: number | undefined;\n acceptanceUserId?: number | undefined;\n acceptedByUserId?: number | undefined;\n sendEmailInitial: boolean;\n sendEmailAnalysis: boolean;\n sendEmailApproval: boolean;\n sendEmailRealization: boolean;\n estimatedActivities?: ChangeRequestActivityResponse[] | undefined;\n realizationActivities?: ChangeRequestActivityResponse[] | undefined;\n problemReportAttachments?: AttachmentResponse[] | undefined;\n analysisAttachments?: AttachmentResponse[] | undefined;\n realizationAttachments?: AttachmentResponse[] | undefined;\n scopeItemLevelIds?: number[] | undefined;\n ticketIds?: number[] | undefined;\n}\n\nexport class ChangeRequestResponseItemsResponseModel implements IChangeRequestResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ChangeRequestResponse[] | undefined;\n\n constructor(data?: IChangeRequestResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ChangeRequestResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ChangeRequestResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ChangeRequestResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IChangeRequestResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ChangeRequestResponse[] | undefined;\n}\n\nexport class ChangeRequestResponseSimpleResponseModel implements IChangeRequestResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ChangeRequestResponse;\n\n constructor(data?: IChangeRequestResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ChangeRequestResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ChangeRequestResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ChangeRequestResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IChangeRequestResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ChangeRequestResponse;\n}\n\nexport enum ChangeRequestStatusEnum {\n Created = \"Created\",\n Initiated = \"Initiated\",\n RejectedAnalysis = \"RejectedAnalysis\",\n ReleasedForApproval = \"ReleasedForApproval\",\n RejectedForRealization = \"RejectedForRealization\",\n ApprovedForRealization = \"ApprovedForRealization\",\n ReleasedForAcceptance = \"ReleasedForAcceptance\",\n Completed = \"Completed\",\n}\n\nexport class ChangeRequestStatusResponse implements IChangeRequestStatusResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n isReadonly!: boolean;\n color!: string;\n isInitial!: boolean;\n nextStates?: number[] | undefined;\n semantics!: ChangeRequestStatusEnum;\n\n constructor(data?: IChangeRequestStatusResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.isReadonly = _data[\"isReadonly\"];\n this.color = _data[\"color\"];\n this.isInitial = _data[\"isInitial\"];\n if (Array.isArray(_data[\"nextStates\"])) {\n this.nextStates = [] as any;\n for (let item of _data[\"nextStates\"])\n this.nextStates!.push(item);\n }\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): ChangeRequestStatusResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ChangeRequestStatusResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"isReadonly\"] = this.isReadonly;\n data[\"color\"] = this.color;\n data[\"isInitial\"] = this.isInitial;\n if (Array.isArray(this.nextStates)) {\n data[\"nextStates\"] = [];\n for (let item of this.nextStates)\n data[\"nextStates\"].push(item);\n }\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface IChangeRequestStatusResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n isReadonly: boolean;\n color: string;\n isInitial: boolean;\n nextStates?: number[] | undefined;\n semantics: ChangeRequestStatusEnum;\n}\n\nexport class ChangeRequestStatusResponseItemsResponseModel implements IChangeRequestStatusResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ChangeRequestStatusResponse[] | undefined;\n\n constructor(data?: IChangeRequestStatusResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ChangeRequestStatusResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ChangeRequestStatusResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ChangeRequestStatusResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IChangeRequestStatusResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ChangeRequestStatusResponse[] | undefined;\n}\n\nexport class CheckTenantRequestModel implements ICheckTenantRequestModel {\n domain!: string;\n email!: string;\n\n constructor(data?: ICheckTenantRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.domain = _data[\"domain\"];\n this.email = _data[\"email\"];\n }\n }\n\n static fromJS(data: any): CheckTenantRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new CheckTenantRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"domain\"] = this.domain;\n data[\"email\"] = this.email;\n return data;\n }\n}\n\nexport interface ICheckTenantRequestModel {\n domain: string;\n email: string;\n}\n\nexport class CheckUserExistsReponseModel implements ICheckUserExistsReponseModel {\n emailExists!: boolean;\n usernameExists!: boolean;\n domain!: boolean;\n\n constructor(data?: ICheckUserExistsReponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.emailExists = _data[\"emailExists\"];\n this.usernameExists = _data[\"usernameExists\"];\n this.domain = _data[\"domain\"];\n }\n }\n\n static fromJS(data: any): CheckUserExistsReponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new CheckUserExistsReponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"emailExists\"] = this.emailExists;\n data[\"usernameExists\"] = this.usernameExists;\n data[\"domain\"] = this.domain;\n return data;\n }\n}\n\nexport interface ICheckUserExistsReponseModel {\n emailExists: boolean;\n usernameExists: boolean;\n domain: boolean;\n}\n\nexport class CheckUserExistsReponseModelSimpleResponseModel implements ICheckUserExistsReponseModelSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: CheckUserExistsReponseModel;\n\n constructor(data?: ICheckUserExistsReponseModelSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? CheckUserExistsReponseModel.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): CheckUserExistsReponseModelSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new CheckUserExistsReponseModelSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ICheckUserExistsReponseModelSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: CheckUserExistsReponseModel;\n}\n\nexport class CheckUserExistsRequestModel implements ICheckUserExistsRequestModel {\n email?: string | undefined;\n username?: string | undefined;\n domain?: string | undefined;\n includeUser!: boolean;\n\n constructor(data?: ICheckUserExistsRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.email = _data[\"email\"];\n this.username = _data[\"username\"];\n this.domain = _data[\"domain\"];\n this.includeUser = _data[\"includeUser\"];\n }\n }\n\n static fromJS(data: any): CheckUserExistsRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new CheckUserExistsRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"email\"] = this.email;\n data[\"username\"] = this.username;\n data[\"domain\"] = this.domain;\n data[\"includeUser\"] = this.includeUser;\n return data;\n }\n}\n\nexport interface ICheckUserExistsRequestModel {\n email?: string | undefined;\n username?: string | undefined;\n domain?: string | undefined;\n includeUser: boolean;\n}\n\nexport class CloneSurveyRequest implements ICloneSurveyRequest {\n name!: string;\n description?: string | undefined;\n copyFromId!: number;\n\n constructor(data?: ICloneSurveyRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.copyFromId = _data[\"copyFromId\"];\n }\n }\n\n static fromJS(data: any): CloneSurveyRequest {\n data = typeof data === 'object' ? data : {};\n let result = new CloneSurveyRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"copyFromId\"] = this.copyFromId;\n return data;\n }\n}\n\nexport interface ICloneSurveyRequest {\n name: string;\n description?: string | undefined;\n copyFromId: number;\n}\n\nexport class CommunicationCalendarResponse implements ICommunicationCalendarResponse {\n id!: number;\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n description?: string | undefined;\n type!: EntityTypeEnum;\n from!: Date;\n to?: Date | undefined;\n dueDate?: Date | undefined;\n statusId?: number | undefined;\n userId!: number;\n\n constructor(data?: ICommunicationCalendarResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.description = _data[\"description\"];\n this.type = _data[\"type\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.dueDate = _data[\"dueDate\"] ? new Date(_data[\"dueDate\"].toString()) : undefined;\n this.statusId = _data[\"statusId\"];\n this.userId = _data[\"userId\"];\n }\n }\n\n static fromJS(data: any): CommunicationCalendarResponse {\n data = typeof data === 'object' ? data : {};\n let result = new CommunicationCalendarResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"description\"] = this.description;\n data[\"type\"] = this.type;\n data[\"from\"] = this.from ? this.from.toISOString() : undefined;\n data[\"to\"] = this.to ? this.to.toISOString() : undefined;\n data[\"dueDate\"] = this.dueDate ? this.dueDate.toISOString() : undefined;\n data[\"statusId\"] = this.statusId;\n data[\"userId\"] = this.userId;\n return data;\n }\n}\n\nexport interface ICommunicationCalendarResponse {\n id: number;\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n description?: string | undefined;\n type: EntityTypeEnum;\n from: Date;\n to?: Date | undefined;\n dueDate?: Date | undefined;\n statusId?: number | undefined;\n userId: number;\n}\n\nexport class CommunicationCalendarResponseItemsResponseModel implements ICommunicationCalendarResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: CommunicationCalendarResponse[] | undefined;\n\n constructor(data?: ICommunicationCalendarResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(CommunicationCalendarResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): CommunicationCalendarResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new CommunicationCalendarResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ICommunicationCalendarResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: CommunicationCalendarResponse[] | undefined;\n}\n\nexport class CommunicationDashboardFilterRequest implements ICommunicationDashboardFilterRequest {\n dateRange!: DateRangeRequest;\n projectIds?: number[] | undefined;\n projectTeamIds?: number[] | undefined;\n userIds?: number[] | undefined;\n taskStatusIds?: number[] | undefined;\n organizationalUnitIds?: number[] | undefined;\n taskIsPrivate?: boolean | undefined;\n\n constructor(data?: ICommunicationDashboardFilterRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.dateRange = new DateRangeRequest();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.dateRange = _data[\"dateRange\"] ? DateRangeRequest.fromJS(_data[\"dateRange\"]) : new DateRangeRequest();\n if (Array.isArray(_data[\"projectIds\"])) {\n this.projectIds = [] as any;\n for (let item of _data[\"projectIds\"])\n this.projectIds!.push(item);\n }\n if (Array.isArray(_data[\"projectTeamIds\"])) {\n this.projectTeamIds = [] as any;\n for (let item of _data[\"projectTeamIds\"])\n this.projectTeamIds!.push(item);\n }\n if (Array.isArray(_data[\"userIds\"])) {\n this.userIds = [] as any;\n for (let item of _data[\"userIds\"])\n this.userIds!.push(item);\n }\n if (Array.isArray(_data[\"taskStatusIds\"])) {\n this.taskStatusIds = [] as any;\n for (let item of _data[\"taskStatusIds\"])\n this.taskStatusIds!.push(item);\n }\n if (Array.isArray(_data[\"organizationalUnitIds\"])) {\n this.organizationalUnitIds = [] as any;\n for (let item of _data[\"organizationalUnitIds\"])\n this.organizationalUnitIds!.push(item);\n }\n this.taskIsPrivate = _data[\"taskIsPrivate\"];\n }\n }\n\n static fromJS(data: any): CommunicationDashboardFilterRequest {\n data = typeof data === 'object' ? data : {};\n let result = new CommunicationDashboardFilterRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dateRange\"] = this.dateRange ? this.dateRange.toJSON() : undefined;\n if (Array.isArray(this.projectIds)) {\n data[\"projectIds\"] = [];\n for (let item of this.projectIds)\n data[\"projectIds\"].push(item);\n }\n if (Array.isArray(this.projectTeamIds)) {\n data[\"projectTeamIds\"] = [];\n for (let item of this.projectTeamIds)\n data[\"projectTeamIds\"].push(item);\n }\n if (Array.isArray(this.userIds)) {\n data[\"userIds\"] = [];\n for (let item of this.userIds)\n data[\"userIds\"].push(item);\n }\n if (Array.isArray(this.taskStatusIds)) {\n data[\"taskStatusIds\"] = [];\n for (let item of this.taskStatusIds)\n data[\"taskStatusIds\"].push(item);\n }\n if (Array.isArray(this.organizationalUnitIds)) {\n data[\"organizationalUnitIds\"] = [];\n for (let item of this.organizationalUnitIds)\n data[\"organizationalUnitIds\"].push(item);\n }\n data[\"taskIsPrivate\"] = this.taskIsPrivate;\n return data;\n }\n}\n\nexport interface ICommunicationDashboardFilterRequest {\n dateRange: DateRangeRequest;\n projectIds?: number[] | undefined;\n projectTeamIds?: number[] | undefined;\n userIds?: number[] | undefined;\n taskStatusIds?: number[] | undefined;\n organizationalUnitIds?: number[] | undefined;\n taskIsPrivate?: boolean | undefined;\n}\n\nexport class CommunicationDashboardResponse implements ICommunicationDashboardResponse {\n totalNumberOfTasks!: number;\n openTasks!: number;\n closedTasks!: number;\n overdueTasks!: number;\n tasksPerStatus?: { [key: string]: number; } | undefined;\n overdueTasksPerAssignedUser?: { [key: string]: number; } | undefined;\n tasksPerAssignedUserAndStatusCounts?: { [key: string]: { [key: string]: number; }; } | undefined;\n\n constructor(data?: ICommunicationDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.totalNumberOfTasks = _data[\"totalNumberOfTasks\"];\n this.openTasks = _data[\"openTasks\"];\n this.closedTasks = _data[\"closedTasks\"];\n this.overdueTasks = _data[\"overdueTasks\"];\n if (_data[\"tasksPerStatus\"]) {\n this.tasksPerStatus = {} as any;\n for (let key in _data[\"tasksPerStatus\"]) {\n if (_data[\"tasksPerStatus\"].hasOwnProperty(key))\n (this.tasksPerStatus)![key] = _data[\"tasksPerStatus\"][key];\n }\n }\n if (_data[\"overdueTasksPerAssignedUser\"]) {\n this.overdueTasksPerAssignedUser = {} as any;\n for (let key in _data[\"overdueTasksPerAssignedUser\"]) {\n if (_data[\"overdueTasksPerAssignedUser\"].hasOwnProperty(key))\n (this.overdueTasksPerAssignedUser)![key] = _data[\"overdueTasksPerAssignedUser\"][key];\n }\n }\n if (_data[\"tasksPerAssignedUserAndStatusCounts\"]) {\n this.tasksPerAssignedUserAndStatusCounts = {} as any;\n for (let key in _data[\"tasksPerAssignedUserAndStatusCounts\"]) {\n if (_data[\"tasksPerAssignedUserAndStatusCounts\"].hasOwnProperty(key))\n (this.tasksPerAssignedUserAndStatusCounts)![key] = _data[\"tasksPerAssignedUserAndStatusCounts\"][key] !== undefined ? _data[\"tasksPerAssignedUserAndStatusCounts\"][key] : {};\n }\n }\n }\n }\n\n static fromJS(data: any): CommunicationDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new CommunicationDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"totalNumberOfTasks\"] = this.totalNumberOfTasks;\n data[\"openTasks\"] = this.openTasks;\n data[\"closedTasks\"] = this.closedTasks;\n data[\"overdueTasks\"] = this.overdueTasks;\n if (this.tasksPerStatus) {\n data[\"tasksPerStatus\"] = {};\n for (let key in this.tasksPerStatus) {\n if (this.tasksPerStatus.hasOwnProperty(key))\n (data[\"tasksPerStatus\"])[key] = (this.tasksPerStatus)[key];\n }\n }\n if (this.overdueTasksPerAssignedUser) {\n data[\"overdueTasksPerAssignedUser\"] = {};\n for (let key in this.overdueTasksPerAssignedUser) {\n if (this.overdueTasksPerAssignedUser.hasOwnProperty(key))\n (data[\"overdueTasksPerAssignedUser\"])[key] = (this.overdueTasksPerAssignedUser)[key];\n }\n }\n if (this.tasksPerAssignedUserAndStatusCounts) {\n data[\"tasksPerAssignedUserAndStatusCounts\"] = {};\n for (let key in this.tasksPerAssignedUserAndStatusCounts) {\n if (this.tasksPerAssignedUserAndStatusCounts.hasOwnProperty(key))\n (data[\"tasksPerAssignedUserAndStatusCounts\"])[key] = (this.tasksPerAssignedUserAndStatusCounts)[key];\n }\n }\n return data;\n }\n}\n\nexport interface ICommunicationDashboardResponse {\n totalNumberOfTasks: number;\n openTasks: number;\n closedTasks: number;\n overdueTasks: number;\n tasksPerStatus?: { [key: string]: number; } | undefined;\n overdueTasksPerAssignedUser?: { [key: string]: number; } | undefined;\n tasksPerAssignedUserAndStatusCounts?: { [key: string]: { [key: string]: number; }; } | undefined;\n}\n\nexport class CommunicationDashboardResponseSimpleResponseModel implements ICommunicationDashboardResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: CommunicationDashboardResponse;\n\n constructor(data?: ICommunicationDashboardResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? CommunicationDashboardResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): CommunicationDashboardResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new CommunicationDashboardResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ICommunicationDashboardResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: CommunicationDashboardResponse;\n}\n\nexport class CompanyRequestModel implements ICompanyRequestModel {\n companyName?: string | undefined;\n address?: string | undefined;\n postalCode?: string | undefined;\n city?: string | undefined;\n phone?: string | undefined;\n webSite?: string | undefined;\n email?: string | undefined;\n regNumber?: string | undefined;\n taxVATNumber!: number;\n bankName?: string | undefined;\n iban?: string | undefined;\n swift?: string | undefined;\n bankAccountNumber?: string | undefined;\n countryId!: number;\n isPrivatePerson!: boolean;\n invoiceContactPerson?: string | undefined;\n invoicePhone?: string | undefined;\n invoiceEmail?: string | undefined;\n logoInHeader?: string | undefined;\n logoInPDF?: string | undefined;\n\n constructor(data?: ICompanyRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.companyName = _data[\"companyName\"];\n this.address = _data[\"address\"];\n this.postalCode = _data[\"postalCode\"];\n this.city = _data[\"city\"];\n this.phone = _data[\"phone\"];\n this.webSite = _data[\"webSite\"];\n this.email = _data[\"email\"];\n this.regNumber = _data[\"regNumber\"];\n this.taxVATNumber = _data[\"taxVATNumber\"];\n this.bankName = _data[\"bankName\"];\n this.iban = _data[\"iban\"];\n this.swift = _data[\"swift\"];\n this.bankAccountNumber = _data[\"bankAccountNumber\"];\n this.countryId = _data[\"countryId\"];\n this.isPrivatePerson = _data[\"isPrivatePerson\"];\n this.invoiceContactPerson = _data[\"invoiceContactPerson\"];\n this.invoicePhone = _data[\"invoicePhone\"];\n this.invoiceEmail = _data[\"invoiceEmail\"];\n this.logoInHeader = _data[\"logoInHeader\"];\n this.logoInPDF = _data[\"logoInPDF\"];\n }\n }\n\n static fromJS(data: any): CompanyRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new CompanyRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"companyName\"] = this.companyName;\n data[\"address\"] = this.address;\n data[\"postalCode\"] = this.postalCode;\n data[\"city\"] = this.city;\n data[\"phone\"] = this.phone;\n data[\"webSite\"] = this.webSite;\n data[\"email\"] = this.email;\n data[\"regNumber\"] = this.regNumber;\n data[\"taxVATNumber\"] = this.taxVATNumber;\n data[\"bankName\"] = this.bankName;\n data[\"iban\"] = this.iban;\n data[\"swift\"] = this.swift;\n data[\"bankAccountNumber\"] = this.bankAccountNumber;\n data[\"countryId\"] = this.countryId;\n data[\"isPrivatePerson\"] = this.isPrivatePerson;\n data[\"invoiceContactPerson\"] = this.invoiceContactPerson;\n data[\"invoicePhone\"] = this.invoicePhone;\n data[\"invoiceEmail\"] = this.invoiceEmail;\n data[\"logoInHeader\"] = this.logoInHeader;\n data[\"logoInPDF\"] = this.logoInPDF;\n return data;\n }\n}\n\nexport interface ICompanyRequestModel {\n companyName?: string | undefined;\n address?: string | undefined;\n postalCode?: string | undefined;\n city?: string | undefined;\n phone?: string | undefined;\n webSite?: string | undefined;\n email?: string | undefined;\n regNumber?: string | undefined;\n taxVATNumber: number;\n bankName?: string | undefined;\n iban?: string | undefined;\n swift?: string | undefined;\n bankAccountNumber?: string | undefined;\n countryId: number;\n isPrivatePerson: boolean;\n invoiceContactPerson?: string | undefined;\n invoicePhone?: string | undefined;\n invoiceEmail?: string | undefined;\n logoInHeader?: string | undefined;\n logoInPDF?: string | undefined;\n}\n\nexport class CompanyResponseModel implements ICompanyResponseModel {\n companyName?: string | undefined;\n address?: string | undefined;\n postalCode?: string | undefined;\n city?: string | undefined;\n phone?: string | undefined;\n webSite?: string | undefined;\n email?: string | undefined;\n regNumber?: string | undefined;\n taxVATNumber!: number;\n bankName?: string | undefined;\n iban?: string | undefined;\n swift?: string | undefined;\n bankAccountNumber?: string | undefined;\n countryId!: number;\n isPrivatePerson!: boolean;\n invoiceContactPerson?: string | undefined;\n invoicePhone?: string | undefined;\n invoiceEmail?: string | undefined;\n logoInHeader?: string | undefined;\n logoInPDF?: string | undefined;\n\n constructor(data?: ICompanyResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.companyName = _data[\"companyName\"];\n this.address = _data[\"address\"];\n this.postalCode = _data[\"postalCode\"];\n this.city = _data[\"city\"];\n this.phone = _data[\"phone\"];\n this.webSite = _data[\"webSite\"];\n this.email = _data[\"email\"];\n this.regNumber = _data[\"regNumber\"];\n this.taxVATNumber = _data[\"taxVATNumber\"];\n this.bankName = _data[\"bankName\"];\n this.iban = _data[\"iban\"];\n this.swift = _data[\"swift\"];\n this.bankAccountNumber = _data[\"bankAccountNumber\"];\n this.countryId = _data[\"countryId\"];\n this.isPrivatePerson = _data[\"isPrivatePerson\"];\n this.invoiceContactPerson = _data[\"invoiceContactPerson\"];\n this.invoicePhone = _data[\"invoicePhone\"];\n this.invoiceEmail = _data[\"invoiceEmail\"];\n this.logoInHeader = _data[\"logoInHeader\"];\n this.logoInPDF = _data[\"logoInPDF\"];\n }\n }\n\n static fromJS(data: any): CompanyResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new CompanyResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"companyName\"] = this.companyName;\n data[\"address\"] = this.address;\n data[\"postalCode\"] = this.postalCode;\n data[\"city\"] = this.city;\n data[\"phone\"] = this.phone;\n data[\"webSite\"] = this.webSite;\n data[\"email\"] = this.email;\n data[\"regNumber\"] = this.regNumber;\n data[\"taxVATNumber\"] = this.taxVATNumber;\n data[\"bankName\"] = this.bankName;\n data[\"iban\"] = this.iban;\n data[\"swift\"] = this.swift;\n data[\"bankAccountNumber\"] = this.bankAccountNumber;\n data[\"countryId\"] = this.countryId;\n data[\"isPrivatePerson\"] = this.isPrivatePerson;\n data[\"invoiceContactPerson\"] = this.invoiceContactPerson;\n data[\"invoicePhone\"] = this.invoicePhone;\n data[\"invoiceEmail\"] = this.invoiceEmail;\n data[\"logoInHeader\"] = this.logoInHeader;\n data[\"logoInPDF\"] = this.logoInPDF;\n return data;\n }\n}\n\nexport interface ICompanyResponseModel {\n companyName?: string | undefined;\n address?: string | undefined;\n postalCode?: string | undefined;\n city?: string | undefined;\n phone?: string | undefined;\n webSite?: string | undefined;\n email?: string | undefined;\n regNumber?: string | undefined;\n taxVATNumber: number;\n bankName?: string | undefined;\n iban?: string | undefined;\n swift?: string | undefined;\n bankAccountNumber?: string | undefined;\n countryId: number;\n isPrivatePerson: boolean;\n invoiceContactPerson?: string | undefined;\n invoicePhone?: string | undefined;\n invoiceEmail?: string | undefined;\n logoInHeader?: string | undefined;\n logoInPDF?: string | undefined;\n}\n\nexport class CompanyResponseModelSimpleResponseModel implements ICompanyResponseModelSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: CompanyResponseModel;\n\n constructor(data?: ICompanyResponseModelSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? CompanyResponseModel.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): CompanyResponseModelSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new CompanyResponseModelSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ICompanyResponseModelSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: CompanyResponseModel;\n}\n\nexport class CopyFromProjectRequest implements ICopyFromProjectRequest {\n projectId!: number;\n\n constructor(data?: ICopyFromProjectRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectId = _data[\"projectId\"];\n }\n }\n\n static fromJS(data: any): CopyFromProjectRequest {\n data = typeof data === 'object' ? data : {};\n let result = new CopyFromProjectRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectId\"] = this.projectId;\n return data;\n }\n}\n\nexport interface ICopyFromProjectRequest {\n projectId: number;\n}\n\nexport class CopyFromTestCycleRequest implements ICopyFromTestCycleRequest {\n testCycleId!: number;\n\n constructor(data?: ICopyFromTestCycleRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.testCycleId = _data[\"testCycleId\"];\n }\n }\n\n static fromJS(data: any): CopyFromTestCycleRequest {\n data = typeof data === 'object' ? data : {};\n let result = new CopyFromTestCycleRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"testCycleId\"] = this.testCycleId;\n return data;\n }\n}\n\nexport interface ICopyFromTestCycleRequest {\n testCycleId: number;\n}\n\nexport class CopyFromTrainingCycleRequest implements ICopyFromTrainingCycleRequest {\n trainingCycleId!: number;\n\n constructor(data?: ICopyFromTrainingCycleRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.trainingCycleId = _data[\"trainingCycleId\"];\n }\n }\n\n static fromJS(data: any): CopyFromTrainingCycleRequest {\n data = typeof data === 'object' ? data : {};\n let result = new CopyFromTrainingCycleRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"trainingCycleId\"] = this.trainingCycleId;\n return data;\n }\n}\n\nexport interface ICopyFromTrainingCycleRequest {\n trainingCycleId: number;\n}\n\nexport class CostExpenseTypeDeltaRequest implements ICostExpenseTypeDeltaRequest {\n insert?: InsertCostExpenseTypeRequest[] | undefined;\n update?: UpdateCostExpenseTypeRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n\n constructor(data?: ICostExpenseTypeDeltaRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertCostExpenseTypeRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateCostExpenseTypeRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteTenantIndetifyRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): CostExpenseTypeDeltaRequest {\n data = typeof data === 'object' ? data : {};\n let result = new CostExpenseTypeDeltaRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ICostExpenseTypeDeltaRequest {\n insert?: InsertCostExpenseTypeRequest[] | undefined;\n update?: UpdateCostExpenseTypeRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n}\n\nexport class CostExpenseTypeResponse implements ICostExpenseTypeResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n mandatoryAttachments!: boolean;\n\n constructor(data?: ICostExpenseTypeResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.mandatoryAttachments = _data[\"mandatoryAttachments\"];\n }\n }\n\n static fromJS(data: any): CostExpenseTypeResponse {\n data = typeof data === 'object' ? data : {};\n let result = new CostExpenseTypeResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"mandatoryAttachments\"] = this.mandatoryAttachments;\n return data;\n }\n}\n\nexport interface ICostExpenseTypeResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n mandatoryAttachments: boolean;\n}\n\nexport class CostExpenseTypeResponseItemsResponseModel implements ICostExpenseTypeResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: CostExpenseTypeResponse[] | undefined;\n\n constructor(data?: ICostExpenseTypeResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(CostExpenseTypeResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): CostExpenseTypeResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new CostExpenseTypeResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ICostExpenseTypeResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: CostExpenseTypeResponse[] | undefined;\n}\n\nexport class DateRangeRequest implements IDateRangeRequest {\n from!: Date;\n to!: Date;\n\n constructor(data?: IDateRangeRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): DateRangeRequest {\n data = typeof data === 'object' ? data : {};\n let result = new DateRangeRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n return data;\n }\n}\n\nexport interface IDateRangeRequest {\n from: Date;\n to: Date;\n}\n\nexport class DateTimeNewOld implements IDateTimeNewOld {\n oldValue?: Date | undefined;\n newValue?: Date | undefined;\n\n constructor(data?: IDateTimeNewOld) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.oldValue = _data[\"oldValue\"] ? new Date(_data[\"oldValue\"].toString()) : undefined;\n this.newValue = _data[\"newValue\"] ? new Date(_data[\"newValue\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): DateTimeNewOld {\n data = typeof data === 'object' ? data : {};\n let result = new DateTimeNewOld();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"oldValue\"] = this.oldValue ? this.oldValue.toISOString() : undefined;\n data[\"newValue\"] = this.newValue ? this.newValue.toISOString() : undefined;\n return data;\n }\n}\n\nexport interface IDateTimeNewOld {\n oldValue?: Date | undefined;\n newValue?: Date | undefined;\n}\n\nexport class DateTimePatternResponse implements IDateTimePatternResponse {\n id!: number;\n pattern!: string;\n\n constructor(data?: IDateTimePatternResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.pattern = _data[\"pattern\"];\n }\n }\n\n static fromJS(data: any): DateTimePatternResponse {\n data = typeof data === 'object' ? data : {};\n let result = new DateTimePatternResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"pattern\"] = this.pattern;\n return data;\n }\n}\n\nexport interface IDateTimePatternResponse {\n id: number;\n pattern: string;\n}\n\nexport class DateTimePatternResponseItemsResponseModel implements IDateTimePatternResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: DateTimePatternResponse[] | undefined;\n\n constructor(data?: IDateTimePatternResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(DateTimePatternResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): DateTimePatternResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new DateTimePatternResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IDateTimePatternResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: DateTimePatternResponse[] | undefined;\n}\n\nexport class DefaultProjectResponse implements IDefaultProjectResponse {\n userId!: number;\n projectId!: number;\n\n constructor(data?: IDefaultProjectResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.userId = _data[\"userId\"];\n this.projectId = _data[\"projectId\"];\n }\n }\n\n static fromJS(data: any): DefaultProjectResponse {\n data = typeof data === 'object' ? data : {};\n let result = new DefaultProjectResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"userId\"] = this.userId;\n data[\"projectId\"] = this.projectId;\n return data;\n }\n}\n\nexport interface IDefaultProjectResponse {\n userId: number;\n projectId: number;\n}\n\nexport class DefaultProjectResponseSimpleResponseModel implements IDefaultProjectResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: DefaultProjectResponse;\n\n constructor(data?: IDefaultProjectResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? DefaultProjectResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): DefaultProjectResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new DefaultProjectResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IDefaultProjectResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: DefaultProjectResponse;\n}\n\nexport class DeleteMeetingTopicRequest implements IDeleteMeetingTopicRequest {\n id!: number;\n type!: MeetingTopicTypeEnum;\n\n constructor(data?: IDeleteMeetingTopicRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.type = _data[\"type\"];\n }\n }\n\n static fromJS(data: any): DeleteMeetingTopicRequest {\n data = typeof data === 'object' ? data : {};\n let result = new DeleteMeetingTopicRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"type\"] = this.type;\n return data;\n }\n}\n\nexport interface IDeleteMeetingTopicRequest {\n id: number;\n type: MeetingTopicTypeEnum;\n}\n\nexport class DeleteProjectConfigRequest implements IDeleteProjectConfigRequest {\n id!: number;\n\n constructor(data?: IDeleteProjectConfigRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): DeleteProjectConfigRequest {\n data = typeof data === 'object' ? data : {};\n let result = new DeleteProjectConfigRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IDeleteProjectConfigRequest {\n id: number;\n}\n\nexport class DeleteSurveyProposedAnswerRequest implements IDeleteSurveyProposedAnswerRequest {\n id!: number;\n\n constructor(data?: IDeleteSurveyProposedAnswerRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): DeleteSurveyProposedAnswerRequest {\n data = typeof data === 'object' ? data : {};\n let result = new DeleteSurveyProposedAnswerRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IDeleteSurveyProposedAnswerRequest {\n id: number;\n}\n\nexport class DeleteTenantIndetifyRequest implements IDeleteTenantIndetifyRequest {\n id!: number;\n\n constructor(data?: IDeleteTenantIndetifyRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): DeleteTenantIndetifyRequest {\n data = typeof data === 'object' ? data : {};\n let result = new DeleteTenantIndetifyRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IDeleteTenantIndetifyRequest {\n id: number;\n}\n\nexport class DeleteTestCycleRequest implements IDeleteTestCycleRequest {\n id!: number;\n\n constructor(data?: IDeleteTestCycleRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): DeleteTestCycleRequest {\n data = typeof data === 'object' ? data : {};\n let result = new DeleteTestCycleRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IDeleteTestCycleRequest {\n id: number;\n}\n\nexport class DeleteTrainingCycleRequest implements IDeleteTrainingCycleRequest {\n id!: number;\n\n constructor(data?: IDeleteTrainingCycleRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): DeleteTrainingCycleRequest {\n data = typeof data === 'object' ? data : {};\n let result = new DeleteTrainingCycleRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IDeleteTrainingCycleRequest {\n id: number;\n}\n\nexport class DoubleSimpleResponseModel implements IDoubleSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value!: number;\n\n constructor(data?: IDoubleSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"];\n }\n }\n\n static fromJS(data: any): DoubleSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new DoubleSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value;\n return data;\n }\n}\n\nexport interface IDoubleSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value: number;\n}\n\nexport enum EntityTypeEnum {\n Meeting = \"Meeting\",\n Vacation = \"Vacation\",\n Task = \"Task\",\n Reminder = \"Reminder\",\n}\n\nexport class ExpenseItemResponse implements IExpenseItemResponse {\n id!: number;\n expenseTypeId!: number;\n amountProjectCurrency!: number;\n receiptCurrencyId?: number | undefined;\n amountReceiptCurrency?: number | undefined;\n comment?: string | undefined;\n attachments?: AttachmentResponse[] | undefined;\n\n constructor(data?: IExpenseItemResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.expenseTypeId = _data[\"expenseTypeId\"];\n this.amountProjectCurrency = _data[\"amountProjectCurrency\"];\n this.receiptCurrencyId = _data[\"receiptCurrencyId\"];\n this.amountReceiptCurrency = _data[\"amountReceiptCurrency\"];\n this.comment = _data[\"comment\"];\n if (Array.isArray(_data[\"attachments\"])) {\n this.attachments = [] as any;\n for (let item of _data[\"attachments\"])\n this.attachments!.push(AttachmentResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ExpenseItemResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ExpenseItemResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"expenseTypeId\"] = this.expenseTypeId;\n data[\"amountProjectCurrency\"] = this.amountProjectCurrency;\n data[\"receiptCurrencyId\"] = this.receiptCurrencyId;\n data[\"amountReceiptCurrency\"] = this.amountReceiptCurrency;\n data[\"comment\"] = this.comment;\n if (Array.isArray(this.attachments)) {\n data[\"attachments\"] = [];\n for (let item of this.attachments)\n data[\"attachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IExpenseItemResponse {\n id: number;\n expenseTypeId: number;\n amountProjectCurrency: number;\n receiptCurrencyId?: number | undefined;\n amountReceiptCurrency?: number | undefined;\n comment?: string | undefined;\n attachments?: AttachmentResponse[] | undefined;\n}\n\nexport class ExpenseResponse implements IExpenseResponse {\n id!: number;\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n description!: string;\n customText1?: string | undefined;\n customText2?: string | undefined;\n statusId!: number;\n userId!: number;\n approvedOrRejectedByUserId?: number | undefined;\n approvedOrRejectedOn?: Date | undefined;\n date!: Date;\n amount!: number;\n expenseItems?: ExpenseItemResponse[] | undefined;\n\n constructor(data?: IExpenseResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.description = _data[\"description\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.statusId = _data[\"statusId\"];\n this.userId = _data[\"userId\"];\n this.approvedOrRejectedByUserId = _data[\"approvedOrRejectedByUserId\"];\n this.approvedOrRejectedOn = _data[\"approvedOrRejectedOn\"] ? new Date(_data[\"approvedOrRejectedOn\"].toString()) : undefined;\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.amount = _data[\"amount\"];\n if (Array.isArray(_data[\"expenseItems\"])) {\n this.expenseItems = [] as any;\n for (let item of _data[\"expenseItems\"])\n this.expenseItems!.push(ExpenseItemResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ExpenseResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ExpenseResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"description\"] = this.description;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"statusId\"] = this.statusId;\n data[\"userId\"] = this.userId;\n data[\"approvedOrRejectedByUserId\"] = this.approvedOrRejectedByUserId;\n data[\"approvedOrRejectedOn\"] = this.approvedOrRejectedOn ? this.approvedOrRejectedOn.toISOString() : undefined;\n data[\"date\"] = this.date ? this.date.toISOString() : undefined;\n data[\"amount\"] = this.amount;\n if (Array.isArray(this.expenseItems)) {\n data[\"expenseItems\"] = [];\n for (let item of this.expenseItems)\n data[\"expenseItems\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IExpenseResponse {\n id: number;\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n description: string;\n customText1?: string | undefined;\n customText2?: string | undefined;\n statusId: number;\n userId: number;\n approvedOrRejectedByUserId?: number | undefined;\n approvedOrRejectedOn?: Date | undefined;\n date: Date;\n amount: number;\n expenseItems?: ExpenseItemResponse[] | undefined;\n}\n\nexport class ExpenseResponseItemsResponseModel implements IExpenseResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ExpenseResponse[] | undefined;\n\n constructor(data?: IExpenseResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ExpenseResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ExpenseResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ExpenseResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IExpenseResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ExpenseResponse[] | undefined;\n}\n\nexport class ExpenseResponseSimpleResponseModel implements IExpenseResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ExpenseResponse;\n\n constructor(data?: IExpenseResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ExpenseResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ExpenseResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ExpenseResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IExpenseResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ExpenseResponse;\n}\n\nexport class ExpenseTotalsResponse implements IExpenseTotalsResponse {\n totalAmounts!: number;\n\n constructor(data?: IExpenseTotalsResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.totalAmounts = _data[\"totalAmounts\"];\n }\n }\n\n static fromJS(data: any): ExpenseTotalsResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ExpenseTotalsResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"totalAmounts\"] = this.totalAmounts;\n return data;\n }\n}\n\nexport interface IExpenseTotalsResponse {\n totalAmounts: number;\n}\n\nexport class ExpenseTotalsResponseSimpleResponseModel implements IExpenseTotalsResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ExpenseTotalsResponse;\n\n constructor(data?: IExpenseTotalsResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ExpenseTotalsResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ExpenseTotalsResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ExpenseTotalsResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IExpenseTotalsResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ExpenseTotalsResponse;\n}\n\nexport class ExportDataDecoraterPropertyModel implements IExportDataDecoraterPropertyModel {\n name!: string;\n format?: string | undefined;\n formats?: string[] | undefined;\n formatMap?: { [key: string]: string; } | undefined;\n\n constructor(data?: IExportDataDecoraterPropertyModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.format = _data[\"format\"];\n if (Array.isArray(_data[\"formats\"])) {\n this.formats = [] as any;\n for (let item of _data[\"formats\"])\n this.formats!.push(item);\n }\n if (_data[\"formatMap\"]) {\n this.formatMap = {} as any;\n for (let key in _data[\"formatMap\"]) {\n if (_data[\"formatMap\"].hasOwnProperty(key))\n (this.formatMap)![key] = _data[\"formatMap\"][key];\n }\n }\n }\n }\n\n static fromJS(data: any): ExportDataDecoraterPropertyModel {\n data = typeof data === 'object' ? data : {};\n let result = new ExportDataDecoraterPropertyModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"format\"] = this.format;\n if (Array.isArray(this.formats)) {\n data[\"formats\"] = [];\n for (let item of this.formats)\n data[\"formats\"].push(item);\n }\n if (this.formatMap) {\n data[\"formatMap\"] = {};\n for (let key in this.formatMap) {\n if (this.formatMap.hasOwnProperty(key))\n (data[\"formatMap\"])[key] = (this.formatMap)[key];\n }\n }\n return data;\n }\n}\n\nexport interface IExportDataDecoraterPropertyModel {\n name: string;\n format?: string | undefined;\n formats?: string[] | undefined;\n formatMap?: { [key: string]: string; } | undefined;\n}\n\nexport enum ExportDataFileTypeEnum {\n CSV = \"CSV\",\n PDF = \"PDF\",\n XLSX = \"XLSX\",\n}\n\nexport class ExportDataModel implements IExportDataModel {\n offset!: number;\n limit!: number;\n filters?: GenericFilterModel[] | undefined;\n sorts?: GenericSortModel[] | undefined;\n includes?: string[] | undefined;\n fileType!: ExportDataFileTypeEnum;\n properties?: ExportDataPropertyModel[] | undefined;\n title?: string | undefined;\n timeZone?: string | undefined;\n timeZoneOffsetInMunutes?: number | undefined;\n\n constructor(data?: IExportDataModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.offset = _data[\"offset\"];\n this.limit = _data[\"limit\"];\n if (Array.isArray(_data[\"filters\"])) {\n this.filters = [] as any;\n for (let item of _data[\"filters\"])\n this.filters!.push(GenericFilterModel.fromJS(item));\n }\n if (Array.isArray(_data[\"sorts\"])) {\n this.sorts = [] as any;\n for (let item of _data[\"sorts\"])\n this.sorts!.push(GenericSortModel.fromJS(item));\n }\n if (Array.isArray(_data[\"includes\"])) {\n this.includes = [] as any;\n for (let item of _data[\"includes\"])\n this.includes!.push(item);\n }\n this.fileType = _data[\"fileType\"];\n if (Array.isArray(_data[\"properties\"])) {\n this.properties = [] as any;\n for (let item of _data[\"properties\"])\n this.properties!.push(ExportDataPropertyModel.fromJS(item));\n }\n this.title = _data[\"title\"];\n this.timeZone = _data[\"timeZone\"];\n this.timeZoneOffsetInMunutes = _data[\"timeZoneOffsetInMunutes\"];\n }\n }\n\n static fromJS(data: any): ExportDataModel {\n data = typeof data === 'object' ? data : {};\n let result = new ExportDataModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"offset\"] = this.offset;\n data[\"limit\"] = this.limit;\n if (Array.isArray(this.filters)) {\n data[\"filters\"] = [];\n for (let item of this.filters)\n data[\"filters\"].push(item.toJSON());\n }\n if (Array.isArray(this.sorts)) {\n data[\"sorts\"] = [];\n for (let item of this.sorts)\n data[\"sorts\"].push(item.toJSON());\n }\n if (Array.isArray(this.includes)) {\n data[\"includes\"] = [];\n for (let item of this.includes)\n data[\"includes\"].push(item);\n }\n data[\"fileType\"] = this.fileType;\n if (Array.isArray(this.properties)) {\n data[\"properties\"] = [];\n for (let item of this.properties)\n data[\"properties\"].push(item.toJSON());\n }\n data[\"title\"] = this.title;\n data[\"timeZone\"] = this.timeZone;\n data[\"timeZoneOffsetInMunutes\"] = this.timeZoneOffsetInMunutes;\n return data;\n }\n}\n\nexport interface IExportDataModel {\n offset: number;\n limit: number;\n filters?: GenericFilterModel[] | undefined;\n sorts?: GenericSortModel[] | undefined;\n includes?: string[] | undefined;\n fileType: ExportDataFileTypeEnum;\n properties?: ExportDataPropertyModel[] | undefined;\n title?: string | undefined;\n timeZone?: string | undefined;\n timeZoneOffsetInMunutes?: number | undefined;\n}\n\nexport class ExportDataPropertyModel implements IExportDataPropertyModel {\n name!: string;\n displayName?: string | undefined;\n displayNames?: string[] | undefined;\n format?: string | undefined;\n formats?: string[] | undefined;\n formatMap?: { [key: string]: string; } | undefined;\n decoraterProperties?: ExportDataDecoraterPropertyModel[] | undefined;\n\n constructor(data?: IExportDataPropertyModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.displayName = _data[\"displayName\"];\n if (Array.isArray(_data[\"displayNames\"])) {\n this.displayNames = [] as any;\n for (let item of _data[\"displayNames\"])\n this.displayNames!.push(item);\n }\n this.format = _data[\"format\"];\n if (Array.isArray(_data[\"formats\"])) {\n this.formats = [] as any;\n for (let item of _data[\"formats\"])\n this.formats!.push(item);\n }\n if (_data[\"formatMap\"]) {\n this.formatMap = {} as any;\n for (let key in _data[\"formatMap\"]) {\n if (_data[\"formatMap\"].hasOwnProperty(key))\n (this.formatMap)![key] = _data[\"formatMap\"][key];\n }\n }\n if (Array.isArray(_data[\"decoraterProperties\"])) {\n this.decoraterProperties = [] as any;\n for (let item of _data[\"decoraterProperties\"])\n this.decoraterProperties!.push(ExportDataDecoraterPropertyModel.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ExportDataPropertyModel {\n data = typeof data === 'object' ? data : {};\n let result = new ExportDataPropertyModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"displayName\"] = this.displayName;\n if (Array.isArray(this.displayNames)) {\n data[\"displayNames\"] = [];\n for (let item of this.displayNames)\n data[\"displayNames\"].push(item);\n }\n data[\"format\"] = this.format;\n if (Array.isArray(this.formats)) {\n data[\"formats\"] = [];\n for (let item of this.formats)\n data[\"formats\"].push(item);\n }\n if (this.formatMap) {\n data[\"formatMap\"] = {};\n for (let key in this.formatMap) {\n if (this.formatMap.hasOwnProperty(key))\n (data[\"formatMap\"])[key] = (this.formatMap)[key];\n }\n }\n if (Array.isArray(this.decoraterProperties)) {\n data[\"decoraterProperties\"] = [];\n for (let item of this.decoraterProperties)\n data[\"decoraterProperties\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IExportDataPropertyModel {\n name: string;\n displayName?: string | undefined;\n displayNames?: string[] | undefined;\n format?: string | undefined;\n formats?: string[] | undefined;\n formatMap?: { [key: string]: string; } | undefined;\n decoraterProperties?: ExportDataDecoraterPropertyModel[] | undefined;\n}\n\nexport class ExportForPeriodTimesheetsRequest implements IExportForPeriodTimesheetsRequest {\n offset!: number;\n limit!: number;\n filters?: GenericFilterModel[] | undefined;\n sorts?: GenericSortModel[] | undefined;\n includes?: string[] | undefined;\n fileType!: ExportDataFileTypeEnum;\n properties?: ExportDataPropertyModel[] | undefined;\n title?: string | undefined;\n timeZone?: string | undefined;\n timeZoneOffsetInMunutes?: number | undefined;\n from!: Date;\n to!: Date;\n\n constructor(data?: IExportForPeriodTimesheetsRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.offset = _data[\"offset\"];\n this.limit = _data[\"limit\"];\n if (Array.isArray(_data[\"filters\"])) {\n this.filters = [] as any;\n for (let item of _data[\"filters\"])\n this.filters!.push(GenericFilterModel.fromJS(item));\n }\n if (Array.isArray(_data[\"sorts\"])) {\n this.sorts = [] as any;\n for (let item of _data[\"sorts\"])\n this.sorts!.push(GenericSortModel.fromJS(item));\n }\n if (Array.isArray(_data[\"includes\"])) {\n this.includes = [] as any;\n for (let item of _data[\"includes\"])\n this.includes!.push(item);\n }\n this.fileType = _data[\"fileType\"];\n if (Array.isArray(_data[\"properties\"])) {\n this.properties = [] as any;\n for (let item of _data[\"properties\"])\n this.properties!.push(ExportDataPropertyModel.fromJS(item));\n }\n this.title = _data[\"title\"];\n this.timeZone = _data[\"timeZone\"];\n this.timeZoneOffsetInMunutes = _data[\"timeZoneOffsetInMunutes\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): ExportForPeriodTimesheetsRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ExportForPeriodTimesheetsRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"offset\"] = this.offset;\n data[\"limit\"] = this.limit;\n if (Array.isArray(this.filters)) {\n data[\"filters\"] = [];\n for (let item of this.filters)\n data[\"filters\"].push(item.toJSON());\n }\n if (Array.isArray(this.sorts)) {\n data[\"sorts\"] = [];\n for (let item of this.sorts)\n data[\"sorts\"].push(item.toJSON());\n }\n if (Array.isArray(this.includes)) {\n data[\"includes\"] = [];\n for (let item of this.includes)\n data[\"includes\"].push(item);\n }\n data[\"fileType\"] = this.fileType;\n if (Array.isArray(this.properties)) {\n data[\"properties\"] = [];\n for (let item of this.properties)\n data[\"properties\"].push(item.toJSON());\n }\n data[\"title\"] = this.title;\n data[\"timeZone\"] = this.timeZone;\n data[\"timeZoneOffsetInMunutes\"] = this.timeZoneOffsetInMunutes;\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n return data;\n }\n}\n\nexport interface IExportForPeriodTimesheetsRequest {\n offset: number;\n limit: number;\n filters?: GenericFilterModel[] | undefined;\n sorts?: GenericSortModel[] | undefined;\n includes?: string[] | undefined;\n fileType: ExportDataFileTypeEnum;\n properties?: ExportDataPropertyModel[] | undefined;\n title?: string | undefined;\n timeZone?: string | undefined;\n timeZoneOffsetInMunutes?: number | undefined;\n from: Date;\n to: Date;\n}\n\nexport class ExportProjectReportDataModel implements IExportProjectReportDataModel {\n title?: string | undefined;\n propertiesPerTablePerArea?: { [key: string]: ExportDataPropertyModel[][]; } | undefined;\n timeZone?: string | undefined;\n timeZoneOffsetInMunutes?: number | undefined;\n\n constructor(data?: IExportProjectReportDataModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.title = _data[\"title\"];\n if (_data[\"propertiesPerTablePerArea\"]) {\n this.propertiesPerTablePerArea = {} as any;\n for (let key in _data[\"propertiesPerTablePerArea\"]) {\n if (_data[\"propertiesPerTablePerArea\"].hasOwnProperty(key))\n (this.propertiesPerTablePerArea)![key] = _data[\"propertiesPerTablePerArea\"][key] !== undefined ? _data[\"propertiesPerTablePerArea\"][key] : [];\n }\n }\n this.timeZone = _data[\"timeZone\"];\n this.timeZoneOffsetInMunutes = _data[\"timeZoneOffsetInMunutes\"];\n }\n }\n\n static fromJS(data: any): ExportProjectReportDataModel {\n data = typeof data === 'object' ? data : {};\n let result = new ExportProjectReportDataModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"title\"] = this.title;\n if (this.propertiesPerTablePerArea) {\n data[\"propertiesPerTablePerArea\"] = {};\n for (let key in this.propertiesPerTablePerArea) {\n if (this.propertiesPerTablePerArea.hasOwnProperty(key))\n (data[\"propertiesPerTablePerArea\"])[key] = (this.propertiesPerTablePerArea)[key];\n }\n }\n data[\"timeZone\"] = this.timeZone;\n data[\"timeZoneOffsetInMunutes\"] = this.timeZoneOffsetInMunutes;\n return data;\n }\n}\n\nexport interface IExportProjectReportDataModel {\n title?: string | undefined;\n propertiesPerTablePerArea?: { [key: string]: ExportDataPropertyModel[][]; } | undefined;\n timeZone?: string | undefined;\n timeZoneOffsetInMunutes?: number | undefined;\n}\n\nexport enum FinanceCategoryEnum {\n Timesheets = \"Timesheets\",\n TravelExpenses = \"TravelExpenses\",\n Risks = \"Risks\",\n ChangeRequests = \"ChangeRequests\",\n Expenses = \"Expenses\",\n}\n\nexport class FinanceCategoryResponse implements IFinanceCategoryResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n isReadonly!: boolean;\n semantics!: FinanceCategoryEnum;\n\n constructor(data?: IFinanceCategoryResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.isReadonly = _data[\"isReadonly\"];\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): FinanceCategoryResponse {\n data = typeof data === 'object' ? data : {};\n let result = new FinanceCategoryResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"isReadonly\"] = this.isReadonly;\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface IFinanceCategoryResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n isReadonly: boolean;\n semantics: FinanceCategoryEnum;\n}\n\nexport class FinanceCategoryResponseItemsResponseModel implements IFinanceCategoryResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: FinanceCategoryResponse[] | undefined;\n\n constructor(data?: IFinanceCategoryResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(FinanceCategoryResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): FinanceCategoryResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new FinanceCategoryResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IFinanceCategoryResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: FinanceCategoryResponse[] | undefined;\n}\n\nexport class FinanceDashboardFilterRequest implements IFinanceDashboardFilterRequest {\n projectIds?: number[] | undefined;\n dateRange!: DateRangeRequest;\n partnerIds?: number[] | undefined;\n pmUserIds?: number[] | undefined;\n projectTypeIds?: number[] | undefined;\n projectCategoryIds?: number[] | undefined;\n projectStatusIds?: number[] | undefined;\n financeCategoryIds?: number[] | undefined;\n organizationalUnitIds?: number[] | undefined;\n\n constructor(data?: IFinanceDashboardFilterRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.dateRange = new DateRangeRequest();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"projectIds\"])) {\n this.projectIds = [] as any;\n for (let item of _data[\"projectIds\"])\n this.projectIds!.push(item);\n }\n this.dateRange = _data[\"dateRange\"] ? DateRangeRequest.fromJS(_data[\"dateRange\"]) : new DateRangeRequest();\n if (Array.isArray(_data[\"partnerIds\"])) {\n this.partnerIds = [] as any;\n for (let item of _data[\"partnerIds\"])\n this.partnerIds!.push(item);\n }\n if (Array.isArray(_data[\"pmUserIds\"])) {\n this.pmUserIds = [] as any;\n for (let item of _data[\"pmUserIds\"])\n this.pmUserIds!.push(item);\n }\n if (Array.isArray(_data[\"projectTypeIds\"])) {\n this.projectTypeIds = [] as any;\n for (let item of _data[\"projectTypeIds\"])\n this.projectTypeIds!.push(item);\n }\n if (Array.isArray(_data[\"projectCategoryIds\"])) {\n this.projectCategoryIds = [] as any;\n for (let item of _data[\"projectCategoryIds\"])\n this.projectCategoryIds!.push(item);\n }\n if (Array.isArray(_data[\"projectStatusIds\"])) {\n this.projectStatusIds = [] as any;\n for (let item of _data[\"projectStatusIds\"])\n this.projectStatusIds!.push(item);\n }\n if (Array.isArray(_data[\"financeCategoryIds\"])) {\n this.financeCategoryIds = [] as any;\n for (let item of _data[\"financeCategoryIds\"])\n this.financeCategoryIds!.push(item);\n }\n if (Array.isArray(_data[\"organizationalUnitIds\"])) {\n this.organizationalUnitIds = [] as any;\n for (let item of _data[\"organizationalUnitIds\"])\n this.organizationalUnitIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): FinanceDashboardFilterRequest {\n data = typeof data === 'object' ? data : {};\n let result = new FinanceDashboardFilterRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.projectIds)) {\n data[\"projectIds\"] = [];\n for (let item of this.projectIds)\n data[\"projectIds\"].push(item);\n }\n data[\"dateRange\"] = this.dateRange ? this.dateRange.toJSON() : undefined;\n if (Array.isArray(this.partnerIds)) {\n data[\"partnerIds\"] = [];\n for (let item of this.partnerIds)\n data[\"partnerIds\"].push(item);\n }\n if (Array.isArray(this.pmUserIds)) {\n data[\"pmUserIds\"] = [];\n for (let item of this.pmUserIds)\n data[\"pmUserIds\"].push(item);\n }\n if (Array.isArray(this.projectTypeIds)) {\n data[\"projectTypeIds\"] = [];\n for (let item of this.projectTypeIds)\n data[\"projectTypeIds\"].push(item);\n }\n if (Array.isArray(this.projectCategoryIds)) {\n data[\"projectCategoryIds\"] = [];\n for (let item of this.projectCategoryIds)\n data[\"projectCategoryIds\"].push(item);\n }\n if (Array.isArray(this.projectStatusIds)) {\n data[\"projectStatusIds\"] = [];\n for (let item of this.projectStatusIds)\n data[\"projectStatusIds\"].push(item);\n }\n if (Array.isArray(this.financeCategoryIds)) {\n data[\"financeCategoryIds\"] = [];\n for (let item of this.financeCategoryIds)\n data[\"financeCategoryIds\"].push(item);\n }\n if (Array.isArray(this.organizationalUnitIds)) {\n data[\"organizationalUnitIds\"] = [];\n for (let item of this.organizationalUnitIds)\n data[\"organizationalUnitIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IFinanceDashboardFilterRequest {\n projectIds?: number[] | undefined;\n dateRange: DateRangeRequest;\n partnerIds?: number[] | undefined;\n pmUserIds?: number[] | undefined;\n projectTypeIds?: number[] | undefined;\n projectCategoryIds?: number[] | undefined;\n projectStatusIds?: number[] | undefined;\n financeCategoryIds?: number[] | undefined;\n organizationalUnitIds?: number[] | undefined;\n}\n\nexport class FinanceDashboardResponse implements IFinanceDashboardResponse {\n budgetVsActual?: BudgetVsActualDashboardResponse;\n partnersInvoices?: PartnersInvoicesDashboardResponse;\n projectActualBudget?: ProjectActualBudgetDashboardResponse;\n timesheets?: FinanceTmesheetsDashboardResponse;\n travelExpenses?: FinanceTravelExpensesDashboardResponse;\n\n constructor(data?: IFinanceDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.budgetVsActual = _data[\"budgetVsActual\"] ? BudgetVsActualDashboardResponse.fromJS(_data[\"budgetVsActual\"]) : undefined;\n this.partnersInvoices = _data[\"partnersInvoices\"] ? PartnersInvoicesDashboardResponse.fromJS(_data[\"partnersInvoices\"]) : undefined;\n this.projectActualBudget = _data[\"projectActualBudget\"] ? ProjectActualBudgetDashboardResponse.fromJS(_data[\"projectActualBudget\"]) : undefined;\n this.timesheets = _data[\"timesheets\"] ? FinanceTmesheetsDashboardResponse.fromJS(_data[\"timesheets\"]) : undefined;\n this.travelExpenses = _data[\"travelExpenses\"] ? FinanceTravelExpensesDashboardResponse.fromJS(_data[\"travelExpenses\"]) : undefined;\n }\n }\n\n static fromJS(data: any): FinanceDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new FinanceDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"budgetVsActual\"] = this.budgetVsActual ? this.budgetVsActual.toJSON() : undefined;\n data[\"partnersInvoices\"] = this.partnersInvoices ? this.partnersInvoices.toJSON() : undefined;\n data[\"projectActualBudget\"] = this.projectActualBudget ? this.projectActualBudget.toJSON() : undefined;\n data[\"timesheets\"] = this.timesheets ? this.timesheets.toJSON() : undefined;\n data[\"travelExpenses\"] = this.travelExpenses ? this.travelExpenses.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IFinanceDashboardResponse {\n budgetVsActual?: BudgetVsActualDashboardResponse;\n partnersInvoices?: PartnersInvoicesDashboardResponse;\n projectActualBudget?: ProjectActualBudgetDashboardResponse;\n timesheets?: FinanceTmesheetsDashboardResponse;\n travelExpenses?: FinanceTravelExpensesDashboardResponse;\n}\n\nexport class FinanceDashboardResponseSimpleResponseModel implements IFinanceDashboardResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: FinanceDashboardResponse;\n\n constructor(data?: IFinanceDashboardResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? FinanceDashboardResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): FinanceDashboardResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new FinanceDashboardResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IFinanceDashboardResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: FinanceDashboardResponse;\n}\n\nexport class FinanceGeneralConfigResponse implements IFinanceGeneralConfigResponse {\n id!: number;\n planingInterval!: FinancePlaningIntervalEnum;\n\n constructor(data?: IFinanceGeneralConfigResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.planingInterval = _data[\"planingInterval\"];\n }\n }\n\n static fromJS(data: any): FinanceGeneralConfigResponse {\n data = typeof data === 'object' ? data : {};\n let result = new FinanceGeneralConfigResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"planingInterval\"] = this.planingInterval;\n return data;\n }\n}\n\nexport interface IFinanceGeneralConfigResponse {\n id: number;\n planingInterval: FinancePlaningIntervalEnum;\n}\n\nexport class FinanceGeneralConfigResponseSimpleResponseModel implements IFinanceGeneralConfigResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: FinanceGeneralConfigResponse;\n\n constructor(data?: IFinanceGeneralConfigResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? FinanceGeneralConfigResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): FinanceGeneralConfigResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new FinanceGeneralConfigResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IFinanceGeneralConfigResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: FinanceGeneralConfigResponse;\n}\n\nexport enum FinancePlaningIntervalEnum {\n Weekly = \"Weekly\",\n Monthly = \"Monthly\",\n Quarterly = \"Quarterly\",\n Yearly = \"Yearly\",\n}\n\nexport class FinanceTmesheetsDashboardResponse implements IFinanceTmesheetsDashboardResponse {\n hoursPerProject?: { [key: string]: number; } | undefined;\n budgetVsActualTimesheets?: BudgetVsActualRowDashboardResponse[] | undefined;\n projectHoursPerPeriod?: ProjectHoursRowDashboardResponse[] | undefined;\n\n constructor(data?: IFinanceTmesheetsDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"hoursPerProject\"]) {\n this.hoursPerProject = {} as any;\n for (let key in _data[\"hoursPerProject\"]) {\n if (_data[\"hoursPerProject\"].hasOwnProperty(key))\n (this.hoursPerProject)![key] = _data[\"hoursPerProject\"][key];\n }\n }\n if (Array.isArray(_data[\"budgetVsActualTimesheets\"])) {\n this.budgetVsActualTimesheets = [] as any;\n for (let item of _data[\"budgetVsActualTimesheets\"])\n this.budgetVsActualTimesheets!.push(BudgetVsActualRowDashboardResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"projectHoursPerPeriod\"])) {\n this.projectHoursPerPeriod = [] as any;\n for (let item of _data[\"projectHoursPerPeriod\"])\n this.projectHoursPerPeriod!.push(ProjectHoursRowDashboardResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): FinanceTmesheetsDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new FinanceTmesheetsDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.hoursPerProject) {\n data[\"hoursPerProject\"] = {};\n for (let key in this.hoursPerProject) {\n if (this.hoursPerProject.hasOwnProperty(key))\n (data[\"hoursPerProject\"])[key] = (this.hoursPerProject)[key];\n }\n }\n if (Array.isArray(this.budgetVsActualTimesheets)) {\n data[\"budgetVsActualTimesheets\"] = [];\n for (let item of this.budgetVsActualTimesheets)\n data[\"budgetVsActualTimesheets\"].push(item.toJSON());\n }\n if (Array.isArray(this.projectHoursPerPeriod)) {\n data[\"projectHoursPerPeriod\"] = [];\n for (let item of this.projectHoursPerPeriod)\n data[\"projectHoursPerPeriod\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IFinanceTmesheetsDashboardResponse {\n hoursPerProject?: { [key: string]: number; } | undefined;\n budgetVsActualTimesheets?: BudgetVsActualRowDashboardResponse[] | undefined;\n projectHoursPerPeriod?: ProjectHoursRowDashboardResponse[] | undefined;\n}\n\nexport class FinanceTravelExpensesDashboardResponse implements IFinanceTravelExpensesDashboardResponse {\n travelExpensesPerCostType?: { [key: string]: number; } | undefined;\n travelExpensesPerProject?: { [key: string]: number; } | undefined;\n expensesPerCostType?: { [key: string]: number; } | undefined;\n expensesPerProject?: { [key: string]: number; } | undefined;\n\n constructor(data?: IFinanceTravelExpensesDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"travelExpensesPerCostType\"]) {\n this.travelExpensesPerCostType = {} as any;\n for (let key in _data[\"travelExpensesPerCostType\"]) {\n if (_data[\"travelExpensesPerCostType\"].hasOwnProperty(key))\n (this.travelExpensesPerCostType)![key] = _data[\"travelExpensesPerCostType\"][key];\n }\n }\n if (_data[\"travelExpensesPerProject\"]) {\n this.travelExpensesPerProject = {} as any;\n for (let key in _data[\"travelExpensesPerProject\"]) {\n if (_data[\"travelExpensesPerProject\"].hasOwnProperty(key))\n (this.travelExpensesPerProject)![key] = _data[\"travelExpensesPerProject\"][key];\n }\n }\n if (_data[\"expensesPerCostType\"]) {\n this.expensesPerCostType = {} as any;\n for (let key in _data[\"expensesPerCostType\"]) {\n if (_data[\"expensesPerCostType\"].hasOwnProperty(key))\n (this.expensesPerCostType)![key] = _data[\"expensesPerCostType\"][key];\n }\n }\n if (_data[\"expensesPerProject\"]) {\n this.expensesPerProject = {} as any;\n for (let key in _data[\"expensesPerProject\"]) {\n if (_data[\"expensesPerProject\"].hasOwnProperty(key))\n (this.expensesPerProject)![key] = _data[\"expensesPerProject\"][key];\n }\n }\n }\n }\n\n static fromJS(data: any): FinanceTravelExpensesDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new FinanceTravelExpensesDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.travelExpensesPerCostType) {\n data[\"travelExpensesPerCostType\"] = {};\n for (let key in this.travelExpensesPerCostType) {\n if (this.travelExpensesPerCostType.hasOwnProperty(key))\n (data[\"travelExpensesPerCostType\"])[key] = (this.travelExpensesPerCostType)[key];\n }\n }\n if (this.travelExpensesPerProject) {\n data[\"travelExpensesPerProject\"] = {};\n for (let key in this.travelExpensesPerProject) {\n if (this.travelExpensesPerProject.hasOwnProperty(key))\n (data[\"travelExpensesPerProject\"])[key] = (this.travelExpensesPerProject)[key];\n }\n }\n if (this.expensesPerCostType) {\n data[\"expensesPerCostType\"] = {};\n for (let key in this.expensesPerCostType) {\n if (this.expensesPerCostType.hasOwnProperty(key))\n (data[\"expensesPerCostType\"])[key] = (this.expensesPerCostType)[key];\n }\n }\n if (this.expensesPerProject) {\n data[\"expensesPerProject\"] = {};\n for (let key in this.expensesPerProject) {\n if (this.expensesPerProject.hasOwnProperty(key))\n (data[\"expensesPerProject\"])[key] = (this.expensesPerProject)[key];\n }\n }\n return data;\n }\n}\n\nexport interface IFinanceTravelExpensesDashboardResponse {\n travelExpensesPerCostType?: { [key: string]: number; } | undefined;\n travelExpensesPerProject?: { [key: string]: number; } | undefined;\n expensesPerCostType?: { [key: string]: number; } | undefined;\n expensesPerProject?: { [key: string]: number; } | undefined;\n}\n\nexport class FloatOldNew implements IFloatOldNew {\n oldValue?: number | undefined;\n newValue?: number | undefined;\n\n constructor(data?: IFloatOldNew) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.oldValue = _data[\"oldValue\"];\n this.newValue = _data[\"newValue\"];\n }\n }\n\n static fromJS(data: any): FloatOldNew {\n data = typeof data === 'object' ? data : {};\n let result = new FloatOldNew();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"oldValue\"] = this.oldValue;\n data[\"newValue\"] = this.newValue;\n return data;\n }\n}\n\nexport interface IFloatOldNew {\n oldValue?: number | undefined;\n newValue?: number | undefined;\n}\n\nexport class ForgotPasswordFinishRequestModel implements IForgotPasswordFinishRequestModel {\n password?: string | undefined;\n passwordConfirmation!: string;\n token!: string;\n userId!: number;\n tenantId!: number;\n\n constructor(data?: IForgotPasswordFinishRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.password = _data[\"password\"];\n this.passwordConfirmation = _data[\"passwordConfirmation\"];\n this.token = _data[\"token\"];\n this.userId = _data[\"userId\"];\n this.tenantId = _data[\"tenantId\"];\n }\n }\n\n static fromJS(data: any): ForgotPasswordFinishRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new ForgotPasswordFinishRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"password\"] = this.password;\n data[\"passwordConfirmation\"] = this.passwordConfirmation;\n data[\"token\"] = this.token;\n data[\"userId\"] = this.userId;\n data[\"tenantId\"] = this.tenantId;\n return data;\n }\n}\n\nexport interface IForgotPasswordFinishRequestModel {\n password?: string | undefined;\n passwordConfirmation: string;\n token: string;\n userId: number;\n tenantId: number;\n}\n\nexport class GenericFilterModel implements IGenericFilterModel {\n property?: string | undefined;\n value?: any | undefined;\n secondValue?: any | undefined;\n operation?: GenericFilterOperationEnum;\n orFilters?: GenericFilterModel[] | undefined;\n\n constructor(data?: IGenericFilterModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.property = _data[\"property\"];\n this.value = _data[\"value\"];\n this.secondValue = _data[\"secondValue\"];\n this.operation = _data[\"operation\"];\n if (Array.isArray(_data[\"orFilters\"])) {\n this.orFilters = [] as any;\n for (let item of _data[\"orFilters\"])\n this.orFilters!.push(GenericFilterModel.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): GenericFilterModel {\n data = typeof data === 'object' ? data : {};\n let result = new GenericFilterModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"property\"] = this.property;\n data[\"value\"] = this.value;\n data[\"secondValue\"] = this.secondValue;\n data[\"operation\"] = this.operation;\n if (Array.isArray(this.orFilters)) {\n data[\"orFilters\"] = [];\n for (let item of this.orFilters)\n data[\"orFilters\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IGenericFilterModel {\n property?: string | undefined;\n value?: any | undefined;\n secondValue?: any | undefined;\n operation?: GenericFilterOperationEnum;\n orFilters?: GenericFilterModel[] | undefined;\n}\n\nexport class GenericFilterModelCollection implements IGenericFilterModelCollection {\n offset!: number;\n limit!: number;\n filters?: GenericFilterModel[] | undefined;\n sorts?: GenericSortModel[] | undefined;\n includes?: string[] | undefined;\n\n constructor(data?: IGenericFilterModelCollection) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.offset = _data[\"offset\"];\n this.limit = _data[\"limit\"];\n if (Array.isArray(_data[\"filters\"])) {\n this.filters = [] as any;\n for (let item of _data[\"filters\"])\n this.filters!.push(GenericFilterModel.fromJS(item));\n }\n if (Array.isArray(_data[\"sorts\"])) {\n this.sorts = [] as any;\n for (let item of _data[\"sorts\"])\n this.sorts!.push(GenericSortModel.fromJS(item));\n }\n if (Array.isArray(_data[\"includes\"])) {\n this.includes = [] as any;\n for (let item of _data[\"includes\"])\n this.includes!.push(item);\n }\n }\n }\n\n static fromJS(data: any): GenericFilterModelCollection {\n data = typeof data === 'object' ? data : {};\n let result = new GenericFilterModelCollection();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"offset\"] = this.offset;\n data[\"limit\"] = this.limit;\n if (Array.isArray(this.filters)) {\n data[\"filters\"] = [];\n for (let item of this.filters)\n data[\"filters\"].push(item.toJSON());\n }\n if (Array.isArray(this.sorts)) {\n data[\"sorts\"] = [];\n for (let item of this.sorts)\n data[\"sorts\"].push(item.toJSON());\n }\n if (Array.isArray(this.includes)) {\n data[\"includes\"] = [];\n for (let item of this.includes)\n data[\"includes\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IGenericFilterModelCollection {\n offset: number;\n limit: number;\n filters?: GenericFilterModel[] | undefined;\n sorts?: GenericSortModel[] | undefined;\n includes?: string[] | undefined;\n}\n\nexport enum GenericFilterOperationEnum {\n EQUALS = \"EQUALS\",\n NOT_EQUALS = \"NOT_EQUALS\",\n GREATER_THAN = \"GREATER_THAN\",\n LESS_THAN = \"LESS_THAN\",\n GREATER_EQUAL_THAN = \"GREATER_EQUAL_THAN\",\n LESS_EQUAL_THAN = \"LESS_EQUAL_THAN\",\n IS_NULL = \"IS_NULL\",\n IS_NOT_NULL = \"IS_NOT_NULL\",\n LIKE = \"LIKE\",\n LIKE_STARTSWITH = \"LIKE_STARTSWITH\",\n LIKE_ENDSWITH = \"LIKE_ENDSWITH\",\n BETWEEN = \"BETWEEN\",\n}\n\nexport class GenericSortModel implements IGenericSortModel {\n property?: string | undefined;\n isAsc!: boolean;\n\n constructor(data?: IGenericSortModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.property = _data[\"property\"];\n this.isAsc = _data[\"isAsc\"];\n }\n }\n\n static fromJS(data: any): GenericSortModel {\n data = typeof data === 'object' ? data : {};\n let result = new GenericSortModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"property\"] = this.property;\n data[\"isAsc\"] = this.isAsc;\n return data;\n }\n}\n\nexport interface IGenericSortModel {\n property?: string | undefined;\n isAsc: boolean;\n}\n\nexport class GetProjectReportRequest implements IGetProjectReportRequest {\n id!: number;\n\n constructor(data?: IGetProjectReportRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): GetProjectReportRequest {\n data = typeof data === 'object' ? data : {};\n let result = new GetProjectReportRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IGetProjectReportRequest {\n id: number;\n}\n\nexport class GetVacationsCalendarRequest implements IGetVacationsCalendarRequest {\n onlyCompanyUsers!: boolean;\n partnerIds?: number[] | undefined;\n organizationalUnitIds?: number[] | undefined;\n\n constructor(data?: IGetVacationsCalendarRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.onlyCompanyUsers = _data[\"onlyCompanyUsers\"];\n if (Array.isArray(_data[\"partnerIds\"])) {\n this.partnerIds = [] as any;\n for (let item of _data[\"partnerIds\"])\n this.partnerIds!.push(item);\n }\n if (Array.isArray(_data[\"organizationalUnitIds\"])) {\n this.organizationalUnitIds = [] as any;\n for (let item of _data[\"organizationalUnitIds\"])\n this.organizationalUnitIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): GetVacationsCalendarRequest {\n data = typeof data === 'object' ? data : {};\n let result = new GetVacationsCalendarRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"onlyCompanyUsers\"] = this.onlyCompanyUsers;\n if (Array.isArray(this.partnerIds)) {\n data[\"partnerIds\"] = [];\n for (let item of this.partnerIds)\n data[\"partnerIds\"].push(item);\n }\n if (Array.isArray(this.organizationalUnitIds)) {\n data[\"organizationalUnitIds\"] = [];\n for (let item of this.organizationalUnitIds)\n data[\"organizationalUnitIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IGetVacationsCalendarRequest {\n onlyCompanyUsers: boolean;\n partnerIds?: number[] | undefined;\n organizationalUnitIds?: number[] | undefined;\n}\n\nexport class HolidayResponse implements IHolidayResponse {\n id!: number;\n isActive!: boolean;\n name!: string;\n from!: Date;\n to!: Date;\n reccuringEntry!: boolean;\n\n constructor(data?: IHolidayResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.name = _data[\"name\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.reccuringEntry = _data[\"reccuringEntry\"];\n }\n }\n\n static fromJS(data: any): HolidayResponse {\n data = typeof data === 'object' ? data : {};\n let result = new HolidayResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"name\"] = this.name;\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"reccuringEntry\"] = this.reccuringEntry;\n return data;\n }\n}\n\nexport interface IHolidayResponse {\n id: number;\n isActive: boolean;\n name: string;\n from: Date;\n to: Date;\n reccuringEntry: boolean;\n}\n\nexport class IdNameResponse implements IIdNameResponse {\n id!: number;\n name!: string;\n\n constructor(data?: IIdNameResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n }\n }\n\n static fromJS(data: any): IdNameResponse {\n data = typeof data === 'object' ? data : {};\n let result = new IdNameResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n return data;\n }\n}\n\nexport interface IIdNameResponse {\n id: number;\n name: string;\n}\n\nexport class IdNameResponseItemsResponseModel implements IIdNameResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: IdNameResponse[] | undefined;\n\n constructor(data?: IIdNameResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(IdNameResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): IdNameResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new IdNameResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IIdNameResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: IdNameResponse[] | undefined;\n}\n\nexport class IdNameResponseSimpleResponseModel implements IIdNameResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: IdNameResponse;\n\n constructor(data?: IIdNameResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? IdNameResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): IdNameResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new IdNameResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IIdNameResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: IdNameResponse;\n}\n\nexport class IdNameSymbolResponse implements IIdNameSymbolResponse {\n id!: number;\n name!: string;\n symbol!: string;\n\n constructor(data?: IIdNameSymbolResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.symbol = _data[\"symbol\"];\n }\n }\n\n static fromJS(data: any): IdNameSymbolResponse {\n data = typeof data === 'object' ? data : {};\n let result = new IdNameSymbolResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"symbol\"] = this.symbol;\n return data;\n }\n}\n\nexport interface IIdNameSymbolResponse {\n id: number;\n name: string;\n symbol: string;\n}\n\nexport class IdNameSymbolResponseItemsResponseModel implements IIdNameSymbolResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: IdNameSymbolResponse[] | undefined;\n\n constructor(data?: IIdNameSymbolResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(IdNameSymbolResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): IdNameSymbolResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new IdNameSymbolResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IIdNameSymbolResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: IdNameSymbolResponse[] | undefined;\n}\n\nexport enum ImpactEnum {\n High = \"High\",\n Medium = \"Medium\",\n Low = \"Low\",\n}\n\nexport class ImpactResponse implements IImpactResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n semantics!: ImpactEnum;\n\n constructor(data?: IImpactResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): ImpactResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ImpactResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface IImpactResponse {\n id: number;\n name: string;\n description?: string | undefined;\n semantics: ImpactEnum;\n}\n\nexport class ImpactResponseItemsResponseModel implements IImpactResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ImpactResponse[] | undefined;\n\n constructor(data?: IImpactResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ImpactResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ImpactResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ImpactResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IImpactResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ImpactResponse[] | undefined;\n}\n\nexport enum IncomeExpenseEnum {\n Income = \"Income\",\n Expense = \"Expense\",\n}\n\nexport class IncomeExpenseProfitDashboardResponse implements IIncomeExpenseProfitDashboardResponse {\n budgetIncome!: number;\n actualBudgetIncome!: number;\n readonly differenceIncome!: number;\n budgetExpense!: number;\n actualBudgetExpense!: number;\n readonly differenceExpense!: number;\n readonly budgetProfit!: number;\n readonly budgetProfitPercent!: number;\n readonly actualBudgetProfit!: number;\n readonly actualBudgetProfitPercent!: number;\n readonly differenceProfit!: number;\n\n constructor(data?: IIncomeExpenseProfitDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.budgetIncome = _data[\"budgetIncome\"];\n this.actualBudgetIncome = _data[\"actualBudgetIncome\"];\n (this).differenceIncome = _data[\"differenceIncome\"];\n this.budgetExpense = _data[\"budgetExpense\"];\n this.actualBudgetExpense = _data[\"actualBudgetExpense\"];\n (this).differenceExpense = _data[\"differenceExpense\"];\n (this).budgetProfit = _data[\"budgetProfit\"];\n (this).budgetProfitPercent = _data[\"budgetProfitPercent\"];\n (this).actualBudgetProfit = _data[\"actualBudgetProfit\"];\n (this).actualBudgetProfitPercent = _data[\"actualBudgetProfitPercent\"];\n (this).differenceProfit = _data[\"differenceProfit\"];\n }\n }\n\n static fromJS(data: any): IncomeExpenseProfitDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new IncomeExpenseProfitDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"budgetIncome\"] = this.budgetIncome;\n data[\"actualBudgetIncome\"] = this.actualBudgetIncome;\n data[\"differenceIncome\"] = this.differenceIncome;\n data[\"budgetExpense\"] = this.budgetExpense;\n data[\"actualBudgetExpense\"] = this.actualBudgetExpense;\n data[\"differenceExpense\"] = this.differenceExpense;\n data[\"budgetProfit\"] = this.budgetProfit;\n data[\"budgetProfitPercent\"] = this.budgetProfitPercent;\n data[\"actualBudgetProfit\"] = this.actualBudgetProfit;\n data[\"actualBudgetProfitPercent\"] = this.actualBudgetProfitPercent;\n data[\"differenceProfit\"] = this.differenceProfit;\n return data;\n }\n}\n\nexport interface IIncomeExpenseProfitDashboardResponse {\n budgetIncome: number;\n actualBudgetIncome: number;\n differenceIncome: number;\n budgetExpense: number;\n actualBudgetExpense: number;\n differenceExpense: number;\n budgetProfit: number;\n budgetProfitPercent: number;\n actualBudgetProfit: number;\n actualBudgetProfitPercent: number;\n differenceProfit: number;\n}\n\nexport class IncomingOutgoingDashboardResponse implements IIncomingOutgoingDashboardResponse {\n incoming!: number;\n outgoing!: number;\n\n constructor(data?: IIncomingOutgoingDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.incoming = _data[\"incoming\"];\n this.outgoing = _data[\"outgoing\"];\n }\n }\n\n static fromJS(data: any): IncomingOutgoingDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new IncomingOutgoingDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"incoming\"] = this.incoming;\n data[\"outgoing\"] = this.outgoing;\n return data;\n }\n}\n\nexport interface IIncomingOutgoingDashboardResponse {\n incoming: number;\n outgoing: number;\n}\n\nexport class IncomingOutgoingOverdueDashboardResponse implements IIncomingOutgoingOverdueDashboardResponse {\n totalIncomingPlanned!: number;\n totalIncomingActual!: number;\n overdue1DayIncoming!: number;\n overdue30DaysIncoming!: number;\n overdue60DaysIncoming!: number;\n overdue90DaysIncoming!: number;\n totalOutgoingPlanned!: number;\n totalOutgoingActual!: number;\n overdue1DayOutgoing!: number;\n overdue30DaysOutgoing!: number;\n overdue60DaysOutgoing!: number;\n overdue90DaysOutgoing!: number;\n\n constructor(data?: IIncomingOutgoingOverdueDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.totalIncomingPlanned = _data[\"totalIncomingPlanned\"];\n this.totalIncomingActual = _data[\"totalIncomingActual\"];\n this.overdue1DayIncoming = _data[\"overdue1DayIncoming\"];\n this.overdue30DaysIncoming = _data[\"overdue30DaysIncoming\"];\n this.overdue60DaysIncoming = _data[\"overdue60DaysIncoming\"];\n this.overdue90DaysIncoming = _data[\"overdue90DaysIncoming\"];\n this.totalOutgoingPlanned = _data[\"totalOutgoingPlanned\"];\n this.totalOutgoingActual = _data[\"totalOutgoingActual\"];\n this.overdue1DayOutgoing = _data[\"overdue1DayOutgoing\"];\n this.overdue30DaysOutgoing = _data[\"overdue30DaysOutgoing\"];\n this.overdue60DaysOutgoing = _data[\"overdue60DaysOutgoing\"];\n this.overdue90DaysOutgoing = _data[\"overdue90DaysOutgoing\"];\n }\n }\n\n static fromJS(data: any): IncomingOutgoingOverdueDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new IncomingOutgoingOverdueDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"totalIncomingPlanned\"] = this.totalIncomingPlanned;\n data[\"totalIncomingActual\"] = this.totalIncomingActual;\n data[\"overdue1DayIncoming\"] = this.overdue1DayIncoming;\n data[\"overdue30DaysIncoming\"] = this.overdue30DaysIncoming;\n data[\"overdue60DaysIncoming\"] = this.overdue60DaysIncoming;\n data[\"overdue90DaysIncoming\"] = this.overdue90DaysIncoming;\n data[\"totalOutgoingPlanned\"] = this.totalOutgoingPlanned;\n data[\"totalOutgoingActual\"] = this.totalOutgoingActual;\n data[\"overdue1DayOutgoing\"] = this.overdue1DayOutgoing;\n data[\"overdue30DaysOutgoing\"] = this.overdue30DaysOutgoing;\n data[\"overdue60DaysOutgoing\"] = this.overdue60DaysOutgoing;\n data[\"overdue90DaysOutgoing\"] = this.overdue90DaysOutgoing;\n return data;\n }\n}\n\nexport interface IIncomingOutgoingOverdueDashboardResponse {\n totalIncomingPlanned: number;\n totalIncomingActual: number;\n overdue1DayIncoming: number;\n overdue30DaysIncoming: number;\n overdue60DaysIncoming: number;\n overdue90DaysIncoming: number;\n totalOutgoingPlanned: number;\n totalOutgoingActual: number;\n overdue1DayOutgoing: number;\n overdue30DaysOutgoing: number;\n overdue60DaysOutgoing: number;\n overdue90DaysOutgoing: number;\n}\n\nexport class InnerTestPlanResponse implements IInnerTestPlanResponse {\n id!: number;\n processStepId?: string | undefined;\n processStepName?: string | undefined;\n stepExpectedResults?: string | undefined;\n stepDocumentsCreated?: string | undefined;\n stepComment?: string | undefined;\n stepRejectionComment?: string | undefined;\n stepStatusId!: number;\n stepTesterUserId?: number | undefined;\n\n constructor(data?: IInnerTestPlanResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.processStepId = _data[\"processStepId\"];\n this.processStepName = _data[\"processStepName\"];\n this.stepExpectedResults = _data[\"stepExpectedResults\"];\n this.stepDocumentsCreated = _data[\"stepDocumentsCreated\"];\n this.stepComment = _data[\"stepComment\"];\n this.stepRejectionComment = _data[\"stepRejectionComment\"];\n this.stepStatusId = _data[\"stepStatusId\"];\n this.stepTesterUserId = _data[\"stepTesterUserId\"];\n }\n }\n\n static fromJS(data: any): InnerTestPlanResponse {\n data = typeof data === 'object' ? data : {};\n let result = new InnerTestPlanResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"processStepId\"] = this.processStepId;\n data[\"processStepName\"] = this.processStepName;\n data[\"stepExpectedResults\"] = this.stepExpectedResults;\n data[\"stepDocumentsCreated\"] = this.stepDocumentsCreated;\n data[\"stepComment\"] = this.stepComment;\n data[\"stepRejectionComment\"] = this.stepRejectionComment;\n data[\"stepStatusId\"] = this.stepStatusId;\n data[\"stepTesterUserId\"] = this.stepTesterUserId;\n return data;\n }\n}\n\nexport interface IInnerTestPlanResponse {\n id: number;\n processStepId?: string | undefined;\n processStepName?: string | undefined;\n stepExpectedResults?: string | undefined;\n stepDocumentsCreated?: string | undefined;\n stepComment?: string | undefined;\n stepRejectionComment?: string | undefined;\n stepStatusId: number;\n stepTesterUserId?: number | undefined;\n}\n\nexport class InnerTestRowPlanResponse implements IInnerTestRowPlanResponse {\n id!: number;\n level4Id?: number | undefined;\n complexForScopeItemLevel4Id?: number | undefined;\n processStepId?: string | undefined;\n processStepName?: string | undefined;\n scopeDepartmentId?: number | undefined;\n scopeStepTypeId?: number | undefined;\n stepTesterUserId?: number | undefined;\n\n constructor(data?: IInnerTestRowPlanResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.level4Id = _data[\"level4Id\"];\n this.complexForScopeItemLevel4Id = _data[\"complexForScopeItemLevel4Id\"];\n this.processStepId = _data[\"processStepId\"];\n this.processStepName = _data[\"processStepName\"];\n this.scopeDepartmentId = _data[\"scopeDepartmentId\"];\n this.scopeStepTypeId = _data[\"scopeStepTypeId\"];\n this.stepTesterUserId = _data[\"stepTesterUserId\"];\n }\n }\n\n static fromJS(data: any): InnerTestRowPlanResponse {\n data = typeof data === 'object' ? data : {};\n let result = new InnerTestRowPlanResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"level4Id\"] = this.level4Id;\n data[\"complexForScopeItemLevel4Id\"] = this.complexForScopeItemLevel4Id;\n data[\"processStepId\"] = this.processStepId;\n data[\"processStepName\"] = this.processStepName;\n data[\"scopeDepartmentId\"] = this.scopeDepartmentId;\n data[\"scopeStepTypeId\"] = this.scopeStepTypeId;\n data[\"stepTesterUserId\"] = this.stepTesterUserId;\n return data;\n }\n}\n\nexport interface IInnerTestRowPlanResponse {\n id: number;\n level4Id?: number | undefined;\n complexForScopeItemLevel4Id?: number | undefined;\n processStepId?: string | undefined;\n processStepName?: string | undefined;\n scopeDepartmentId?: number | undefined;\n scopeStepTypeId?: number | undefined;\n stepTesterUserId?: number | undefined;\n}\n\nexport class InsertAttachmentRequest implements IInsertAttachmentRequest {\n name!: string;\n description?: string | undefined;\n base64EncodedFile!: string;\n\n constructor(data?: IInsertAttachmentRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.base64EncodedFile = _data[\"base64EncodedFile\"];\n }\n }\n\n static fromJS(data: any): InsertAttachmentRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertAttachmentRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"base64EncodedFile\"] = this.base64EncodedFile;\n return data;\n }\n}\n\nexport interface IInsertAttachmentRequest {\n name: string;\n description?: string | undefined;\n base64EncodedFile: string;\n}\n\nexport class InsertBudgetRowRequest implements IInsertBudgetRowRequest {\n financeCategoryId!: number;\n userId?: number | undefined;\n partnerId?: number | undefined;\n incomeExpense!: IncomeExpenseEnum;\n customField?: string | undefined;\n budgetDateValues?: BudgetDateValueRequest[] | undefined;\n\n constructor(data?: IInsertBudgetRowRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.financeCategoryId = _data[\"financeCategoryId\"];\n this.userId = _data[\"userId\"];\n this.partnerId = _data[\"partnerId\"];\n this.incomeExpense = _data[\"incomeExpense\"];\n this.customField = _data[\"customField\"];\n if (Array.isArray(_data[\"budgetDateValues\"])) {\n this.budgetDateValues = [] as any;\n for (let item of _data[\"budgetDateValues\"])\n this.budgetDateValues!.push(BudgetDateValueRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): InsertBudgetRowRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertBudgetRowRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"financeCategoryId\"] = this.financeCategoryId;\n data[\"userId\"] = this.userId;\n data[\"partnerId\"] = this.partnerId;\n data[\"incomeExpense\"] = this.incomeExpense;\n data[\"customField\"] = this.customField;\n if (Array.isArray(this.budgetDateValues)) {\n data[\"budgetDateValues\"] = [];\n for (let item of this.budgetDateValues)\n data[\"budgetDateValues\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IInsertBudgetRowRequest {\n financeCategoryId: number;\n userId?: number | undefined;\n partnerId?: number | undefined;\n incomeExpense: IncomeExpenseEnum;\n customField?: string | undefined;\n budgetDateValues?: BudgetDateValueRequest[] | undefined;\n}\n\nexport class InsertChangeRequestActivityRequest implements IInsertChangeRequestActivityRequest {\n name!: string;\n expectedDeliveryOn?: Date | undefined;\n effortInHours?: number | undefined;\n cost?: number | undefined;\n order!: number;\n\n constructor(data?: IInsertChangeRequestActivityRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.expectedDeliveryOn = _data[\"expectedDeliveryOn\"] ? new Date(_data[\"expectedDeliveryOn\"].toString()) : undefined;\n this.effortInHours = _data[\"effortInHours\"];\n this.cost = _data[\"cost\"];\n this.order = _data[\"order\"];\n }\n }\n\n static fromJS(data: any): InsertChangeRequestActivityRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertChangeRequestActivityRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"expectedDeliveryOn\"] = this.expectedDeliveryOn ? formatDate(this.expectedDeliveryOn) : undefined;\n data[\"effortInHours\"] = this.effortInHours;\n data[\"cost\"] = this.cost;\n data[\"order\"] = this.order;\n return data;\n }\n}\n\nexport interface IInsertChangeRequestActivityRequest {\n name: string;\n expectedDeliveryOn?: Date | undefined;\n effortInHours?: number | undefined;\n cost?: number | undefined;\n order: number;\n}\n\nexport class InsertChangeRequestActivityRequestUpdateChangeRequestActivityRequestInt32DeltaModel implements IInsertChangeRequestActivityRequestUpdateChangeRequestActivityRequestInt32DeltaModel {\n insert?: InsertChangeRequestActivityRequest[] | undefined;\n update?: UpdateChangeRequestActivityRequest[] | undefined;\n delete?: number[] | undefined;\n\n constructor(data?: IInsertChangeRequestActivityRequestUpdateChangeRequestActivityRequestInt32DeltaModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertChangeRequestActivityRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateChangeRequestActivityRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(item);\n }\n }\n }\n\n static fromJS(data: any): InsertChangeRequestActivityRequestUpdateChangeRequestActivityRequestInt32DeltaModel {\n data = typeof data === 'object' ? data : {};\n let result = new InsertChangeRequestActivityRequestUpdateChangeRequestActivityRequestInt32DeltaModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IInsertChangeRequestActivityRequestUpdateChangeRequestActivityRequestInt32DeltaModel {\n insert?: InsertChangeRequestActivityRequest[] | undefined;\n update?: UpdateChangeRequestActivityRequest[] | undefined;\n delete?: number[] | undefined;\n}\n\nexport class InsertChangeRequestRequest implements IInsertChangeRequestRequest {\n name!: string;\n description?: string | undefined;\n analysisUserId?: number | undefined;\n initiatedBy?: string | undefined;\n requestedOn?: Date | undefined;\n typeId?: number | undefined;\n goLiveCritical!: boolean;\n impactId!: number;\n urgencyId!: number;\n expectedCompletionDate?: Date | undefined;\n scopeItemLevelIdsToAdd?: number[] | undefined;\n ticketIdsToAdd?: number[] | undefined;\n reasonOfChange?: string | undefined;\n expectedBenefit?: string | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n isInitiate!: boolean;\n sendEmail!: boolean;\n\n constructor(data?: IInsertChangeRequestRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.analysisUserId = _data[\"analysisUserId\"];\n this.initiatedBy = _data[\"initiatedBy\"];\n this.requestedOn = _data[\"requestedOn\"] ? new Date(_data[\"requestedOn\"].toString()) : undefined;\n this.typeId = _data[\"typeId\"];\n this.goLiveCritical = _data[\"goLiveCritical\"];\n this.impactId = _data[\"impactId\"];\n this.urgencyId = _data[\"urgencyId\"];\n this.expectedCompletionDate = _data[\"expectedCompletionDate\"] ? new Date(_data[\"expectedCompletionDate\"].toString()) : undefined;\n if (Array.isArray(_data[\"scopeItemLevelIdsToAdd\"])) {\n this.scopeItemLevelIdsToAdd = [] as any;\n for (let item of _data[\"scopeItemLevelIdsToAdd\"])\n this.scopeItemLevelIdsToAdd!.push(item);\n }\n if (Array.isArray(_data[\"ticketIdsToAdd\"])) {\n this.ticketIdsToAdd = [] as any;\n for (let item of _data[\"ticketIdsToAdd\"])\n this.ticketIdsToAdd!.push(item);\n }\n this.reasonOfChange = _data[\"reasonOfChange\"];\n this.expectedBenefit = _data[\"expectedBenefit\"];\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n this.isInitiate = _data[\"isInitiate\"];\n this.sendEmail = _data[\"sendEmail\"];\n }\n }\n\n static fromJS(data: any): InsertChangeRequestRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertChangeRequestRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"analysisUserId\"] = this.analysisUserId;\n data[\"initiatedBy\"] = this.initiatedBy;\n data[\"requestedOn\"] = this.requestedOn ? formatDate(this.requestedOn) : undefined;\n data[\"typeId\"] = this.typeId;\n data[\"goLiveCritical\"] = this.goLiveCritical;\n data[\"impactId\"] = this.impactId;\n data[\"urgencyId\"] = this.urgencyId;\n data[\"expectedCompletionDate\"] = this.expectedCompletionDate ? formatDate(this.expectedCompletionDate) : undefined;\n if (Array.isArray(this.scopeItemLevelIdsToAdd)) {\n data[\"scopeItemLevelIdsToAdd\"] = [];\n for (let item of this.scopeItemLevelIdsToAdd)\n data[\"scopeItemLevelIdsToAdd\"].push(item);\n }\n if (Array.isArray(this.ticketIdsToAdd)) {\n data[\"ticketIdsToAdd\"] = [];\n for (let item of this.ticketIdsToAdd)\n data[\"ticketIdsToAdd\"].push(item);\n }\n data[\"reasonOfChange\"] = this.reasonOfChange;\n data[\"expectedBenefit\"] = this.expectedBenefit;\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n data[\"isInitiate\"] = this.isInitiate;\n data[\"sendEmail\"] = this.sendEmail;\n return data;\n }\n}\n\nexport interface IInsertChangeRequestRequest {\n name: string;\n description?: string | undefined;\n analysisUserId?: number | undefined;\n initiatedBy?: string | undefined;\n requestedOn?: Date | undefined;\n typeId?: number | undefined;\n goLiveCritical: boolean;\n impactId: number;\n urgencyId: number;\n expectedCompletionDate?: Date | undefined;\n scopeItemLevelIdsToAdd?: number[] | undefined;\n ticketIdsToAdd?: number[] | undefined;\n reasonOfChange?: string | undefined;\n expectedBenefit?: string | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n isInitiate: boolean;\n sendEmail: boolean;\n}\n\nexport class InsertCostExpenseTypeRequest implements IInsertCostExpenseTypeRequest {\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n mandatoryAttachments!: boolean;\n\n constructor(data?: IInsertCostExpenseTypeRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.mandatoryAttachments = _data[\"mandatoryAttachments\"];\n }\n }\n\n static fromJS(data: any): InsertCostExpenseTypeRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertCostExpenseTypeRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"mandatoryAttachments\"] = this.mandatoryAttachments;\n return data;\n }\n}\n\nexport interface IInsertCostExpenseTypeRequest {\n name: string;\n description?: string | undefined;\n isActive: boolean;\n mandatoryAttachments: boolean;\n}\n\nexport class InsertExpenseItemRequest implements IInsertExpenseItemRequest {\n expenseTypeId!: number;\n amountProjectCurrency!: number;\n receiptCurrencyId?: number | undefined;\n amountReceiptCurrency?: number | undefined;\n comment?: string | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n\n constructor(data?: IInsertExpenseItemRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.expenseTypeId = _data[\"expenseTypeId\"];\n this.amountProjectCurrency = _data[\"amountProjectCurrency\"];\n this.receiptCurrencyId = _data[\"receiptCurrencyId\"];\n this.amountReceiptCurrency = _data[\"amountReceiptCurrency\"];\n this.comment = _data[\"comment\"];\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): InsertExpenseItemRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertExpenseItemRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"expenseTypeId\"] = this.expenseTypeId;\n data[\"amountProjectCurrency\"] = this.amountProjectCurrency;\n data[\"receiptCurrencyId\"] = this.receiptCurrencyId;\n data[\"amountReceiptCurrency\"] = this.amountReceiptCurrency;\n data[\"comment\"] = this.comment;\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IInsertExpenseItemRequest {\n expenseTypeId: number;\n amountProjectCurrency: number;\n receiptCurrencyId?: number | undefined;\n amountReceiptCurrency?: number | undefined;\n comment?: string | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n}\n\nexport class InsertExpenseItemRequestUpdateExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel implements IInsertExpenseItemRequestUpdateExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel {\n insert?: InsertExpenseItemRequest[] | undefined;\n update?: UpdateExpenseItemRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n\n constructor(data?: IInsertExpenseItemRequestUpdateExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertExpenseItemRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateExpenseItemRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteTenantIndetifyRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): InsertExpenseItemRequestUpdateExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel {\n data = typeof data === 'object' ? data : {};\n let result = new InsertExpenseItemRequestUpdateExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IInsertExpenseItemRequestUpdateExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel {\n insert?: InsertExpenseItemRequest[] | undefined;\n update?: UpdateExpenseItemRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n}\n\nexport class InsertExpenseRequest implements IInsertExpenseRequest {\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n description!: string;\n customText1?: string | undefined;\n customText2?: string | undefined;\n isRelease!: boolean;\n date!: Date;\n newExpenseItems?: InsertExpenseItemRequest[] | undefined;\n\n constructor(data?: IInsertExpenseRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.description = _data[\"description\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.isRelease = _data[\"isRelease\"];\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n if (Array.isArray(_data[\"newExpenseItems\"])) {\n this.newExpenseItems = [] as any;\n for (let item of _data[\"newExpenseItems\"])\n this.newExpenseItems!.push(InsertExpenseItemRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): InsertExpenseRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertExpenseRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"description\"] = this.description;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"isRelease\"] = this.isRelease;\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n if (Array.isArray(this.newExpenseItems)) {\n data[\"newExpenseItems\"] = [];\n for (let item of this.newExpenseItems)\n data[\"newExpenseItems\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IInsertExpenseRequest {\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n description: string;\n customText1?: string | undefined;\n customText2?: string | undefined;\n isRelease: boolean;\n date: Date;\n newExpenseItems?: InsertExpenseItemRequest[] | undefined;\n}\n\nexport class InsertHolidayRequest implements IInsertHolidayRequest {\n isActive!: boolean;\n name!: string;\n from!: Date;\n to!: Date;\n reccuringEntry!: boolean;\n\n constructor(data?: IInsertHolidayRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.isActive = _data[\"isActive\"];\n this.name = _data[\"name\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.reccuringEntry = _data[\"reccuringEntry\"];\n }\n }\n\n static fromJS(data: any): InsertHolidayRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertHolidayRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"isActive\"] = this.isActive;\n data[\"name\"] = this.name;\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"reccuringEntry\"] = this.reccuringEntry;\n return data;\n }\n}\n\nexport interface IInsertHolidayRequest {\n isActive: boolean;\n name: string;\n from: Date;\n to: Date;\n reccuringEntry: boolean;\n}\n\nexport class InsertHolidayRequestUpdateHolidayRequestInt32DeltaModel implements IInsertHolidayRequestUpdateHolidayRequestInt32DeltaModel {\n insert?: InsertHolidayRequest[] | undefined;\n update?: UpdateHolidayRequest[] | undefined;\n delete?: number[] | undefined;\n\n constructor(data?: IInsertHolidayRequestUpdateHolidayRequestInt32DeltaModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertHolidayRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateHolidayRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(item);\n }\n }\n }\n\n static fromJS(data: any): InsertHolidayRequestUpdateHolidayRequestInt32DeltaModel {\n data = typeof data === 'object' ? data : {};\n let result = new InsertHolidayRequestUpdateHolidayRequestInt32DeltaModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IInsertHolidayRequestUpdateHolidayRequestInt32DeltaModel {\n insert?: InsertHolidayRequest[] | undefined;\n update?: UpdateHolidayRequest[] | undefined;\n delete?: number[] | undefined;\n}\n\nexport class InsertInvoiceItemRequest implements IInsertInvoiceItemRequest {\n description!: string;\n amount!: number;\n taxAmount!: number;\n localCurrencyAmount?: number | undefined;\n localCurrencyTaxAmount?: number | undefined;\n\n constructor(data?: IInsertInvoiceItemRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.description = _data[\"description\"];\n this.amount = _data[\"amount\"];\n this.taxAmount = _data[\"taxAmount\"];\n this.localCurrencyAmount = _data[\"localCurrencyAmount\"];\n this.localCurrencyTaxAmount = _data[\"localCurrencyTaxAmount\"];\n }\n }\n\n static fromJS(data: any): InsertInvoiceItemRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertInvoiceItemRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"description\"] = this.description;\n data[\"amount\"] = this.amount;\n data[\"taxAmount\"] = this.taxAmount;\n data[\"localCurrencyAmount\"] = this.localCurrencyAmount;\n data[\"localCurrencyTaxAmount\"] = this.localCurrencyTaxAmount;\n return data;\n }\n}\n\nexport interface IInsertInvoiceItemRequest {\n description: string;\n amount: number;\n taxAmount: number;\n localCurrencyAmount?: number | undefined;\n localCurrencyTaxAmount?: number | undefined;\n}\n\nexport class InsertInvoiceItemRequestUpdateInvoiceItemRequestDeleteTenantIndetifyRequestDeltaModel implements IInsertInvoiceItemRequestUpdateInvoiceItemRequestDeleteTenantIndetifyRequestDeltaModel {\n insert?: InsertInvoiceItemRequest[] | undefined;\n update?: UpdateInvoiceItemRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n\n constructor(data?: IInsertInvoiceItemRequestUpdateInvoiceItemRequestDeleteTenantIndetifyRequestDeltaModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertInvoiceItemRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateInvoiceItemRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteTenantIndetifyRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): InsertInvoiceItemRequestUpdateInvoiceItemRequestDeleteTenantIndetifyRequestDeltaModel {\n data = typeof data === 'object' ? data : {};\n let result = new InsertInvoiceItemRequestUpdateInvoiceItemRequestDeleteTenantIndetifyRequestDeltaModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IInsertInvoiceItemRequestUpdateInvoiceItemRequestDeleteTenantIndetifyRequestDeltaModel {\n insert?: InsertInvoiceItemRequest[] | undefined;\n update?: UpdateInvoiceItemRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n}\n\nexport class InsertInvoiceRequest implements IInsertInvoiceRequest {\n partnerId!: number;\n invoiceNumber!: string;\n description?: string | undefined;\n invoiceType!: InvoiceTypeEnum;\n issueDate!: Date;\n due!: Date;\n overdueDays?: number | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n excludeFromBudget!: boolean;\n amount!: number;\n taxAmount!: number;\n localCurrencyId?: number | undefined;\n localCurrencyAmount?: number | undefined;\n localCurrencyTaxAmount?: number | undefined;\n comment?: string | undefined;\n changeRequestId?: number | undefined;\n financeCategoryId!: number;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n invoiceItemsDelta?: InsertInvoiceItemRequestUpdateInvoiceItemRequestDeleteTenantIndetifyRequestDeltaModel;\n\n constructor(data?: IInsertInvoiceRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.partnerId = _data[\"partnerId\"];\n this.invoiceNumber = _data[\"invoiceNumber\"];\n this.description = _data[\"description\"];\n this.invoiceType = _data[\"invoiceType\"];\n this.issueDate = _data[\"issueDate\"] ? new Date(_data[\"issueDate\"].toString()) : undefined;\n this.due = _data[\"due\"] ? new Date(_data[\"due\"].toString()) : undefined;\n this.overdueDays = _data[\"overdueDays\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.excludeFromBudget = _data[\"excludeFromBudget\"];\n this.amount = _data[\"amount\"];\n this.taxAmount = _data[\"taxAmount\"];\n this.localCurrencyId = _data[\"localCurrencyId\"];\n this.localCurrencyAmount = _data[\"localCurrencyAmount\"];\n this.localCurrencyTaxAmount = _data[\"localCurrencyTaxAmount\"];\n this.comment = _data[\"comment\"];\n this.changeRequestId = _data[\"changeRequestId\"];\n this.financeCategoryId = _data[\"financeCategoryId\"];\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n this.invoiceItemsDelta = _data[\"invoiceItemsDelta\"] ? InsertInvoiceItemRequestUpdateInvoiceItemRequestDeleteTenantIndetifyRequestDeltaModel.fromJS(_data[\"invoiceItemsDelta\"]) : undefined;\n }\n }\n\n static fromJS(data: any): InsertInvoiceRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertInvoiceRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"partnerId\"] = this.partnerId;\n data[\"invoiceNumber\"] = this.invoiceNumber;\n data[\"description\"] = this.description;\n data[\"invoiceType\"] = this.invoiceType;\n data[\"issueDate\"] = this.issueDate ? formatDate(this.issueDate) : undefined;\n data[\"due\"] = this.due ? formatDate(this.due) : undefined;\n data[\"overdueDays\"] = this.overdueDays;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"excludeFromBudget\"] = this.excludeFromBudget;\n data[\"amount\"] = this.amount;\n data[\"taxAmount\"] = this.taxAmount;\n data[\"localCurrencyId\"] = this.localCurrencyId;\n data[\"localCurrencyAmount\"] = this.localCurrencyAmount;\n data[\"localCurrencyTaxAmount\"] = this.localCurrencyTaxAmount;\n data[\"comment\"] = this.comment;\n data[\"changeRequestId\"] = this.changeRequestId;\n data[\"financeCategoryId\"] = this.financeCategoryId;\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n data[\"invoiceItemsDelta\"] = this.invoiceItemsDelta ? this.invoiceItemsDelta.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IInsertInvoiceRequest {\n partnerId: number;\n invoiceNumber: string;\n description?: string | undefined;\n invoiceType: InvoiceTypeEnum;\n issueDate: Date;\n due: Date;\n overdueDays?: number | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n excludeFromBudget: boolean;\n amount: number;\n taxAmount: number;\n localCurrencyId?: number | undefined;\n localCurrencyAmount?: number | undefined;\n localCurrencyTaxAmount?: number | undefined;\n comment?: string | undefined;\n changeRequestId?: number | undefined;\n financeCategoryId: number;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n invoiceItemsDelta?: InsertInvoiceItemRequestUpdateInvoiceItemRequestDeleteTenantIndetifyRequestDeltaModel;\n}\n\nexport class InsertMeetingCommentRequest implements IInsertMeetingCommentRequest {\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n meetingId!: number;\n comment!: string;\n meetingTopicId!: number;\n meetingTopicType!: MeetingTopicTypeEnum;\n\n constructor(data?: IInsertMeetingCommentRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.meetingId = _data[\"meetingId\"];\n this.comment = _data[\"comment\"];\n this.meetingTopicId = _data[\"meetingTopicId\"];\n this.meetingTopicType = _data[\"meetingTopicType\"];\n }\n }\n\n static fromJS(data: any): InsertMeetingCommentRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertMeetingCommentRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"meetingId\"] = this.meetingId;\n data[\"comment\"] = this.comment;\n data[\"meetingTopicId\"] = this.meetingTopicId;\n data[\"meetingTopicType\"] = this.meetingTopicType;\n return data;\n }\n}\n\nexport interface IInsertMeetingCommentRequest {\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n meetingId: number;\n comment: string;\n meetingTopicId: number;\n meetingTopicType: MeetingTopicTypeEnum;\n}\n\nexport class InsertMeetingRequest implements IInsertMeetingRequest {\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n subject!: string;\n location?: string | undefined;\n duration?: number | undefined;\n starts!: Date;\n ends!: Date;\n agenda!: string;\n additionallParticipants?: string | undefined;\n isPrivate!: boolean;\n meetingTypeId?: number | undefined;\n projectTeamId?: number | undefined;\n participantUserIds?: number[] | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n topicsDelta?: InsertMeetingTopicRequestUpdateMeetingTopicRequestDeleteMeetingTopicRequestDeltaModel;\n\n constructor(data?: IInsertMeetingRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.subject = _data[\"subject\"];\n this.location = _data[\"location\"];\n this.duration = _data[\"duration\"];\n this.starts = _data[\"starts\"] ? new Date(_data[\"starts\"].toString()) : undefined;\n this.ends = _data[\"ends\"] ? new Date(_data[\"ends\"].toString()) : undefined;\n this.agenda = _data[\"agenda\"];\n this.additionallParticipants = _data[\"additionallParticipants\"];\n this.isPrivate = _data[\"isPrivate\"];\n this.meetingTypeId = _data[\"meetingTypeId\"];\n this.projectTeamId = _data[\"projectTeamId\"];\n if (Array.isArray(_data[\"participantUserIds\"])) {\n this.participantUserIds = [] as any;\n for (let item of _data[\"participantUserIds\"])\n this.participantUserIds!.push(item);\n }\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n this.topicsDelta = _data[\"topicsDelta\"] ? InsertMeetingTopicRequestUpdateMeetingTopicRequestDeleteMeetingTopicRequestDeltaModel.fromJS(_data[\"topicsDelta\"]) : undefined;\n }\n }\n\n static fromJS(data: any): InsertMeetingRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertMeetingRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"subject\"] = this.subject;\n data[\"location\"] = this.location;\n data[\"duration\"] = this.duration;\n data[\"starts\"] = this.starts ? this.starts.toISOString() : undefined;\n data[\"ends\"] = this.ends ? this.ends.toISOString() : undefined;\n data[\"agenda\"] = this.agenda;\n data[\"additionallParticipants\"] = this.additionallParticipants;\n data[\"isPrivate\"] = this.isPrivate;\n data[\"meetingTypeId\"] = this.meetingTypeId;\n data[\"projectTeamId\"] = this.projectTeamId;\n if (Array.isArray(this.participantUserIds)) {\n data[\"participantUserIds\"] = [];\n for (let item of this.participantUserIds)\n data[\"participantUserIds\"].push(item);\n }\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n data[\"topicsDelta\"] = this.topicsDelta ? this.topicsDelta.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IInsertMeetingRequest {\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n subject: string;\n location?: string | undefined;\n duration?: number | undefined;\n starts: Date;\n ends: Date;\n agenda: string;\n additionallParticipants?: string | undefined;\n isPrivate: boolean;\n meetingTypeId?: number | undefined;\n projectTeamId?: number | undefined;\n participantUserIds?: number[] | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n topicsDelta?: InsertMeetingTopicRequestUpdateMeetingTopicRequestDeleteMeetingTopicRequestDeltaModel;\n}\n\nexport class InsertMeetingTopicRequest implements IInsertMeetingTopicRequest {\n description!: string;\n type!: MeetingTopicTypeEnum;\n order!: number;\n userId?: number | undefined;\n due?: Date | undefined;\n statusId?: number | undefined;\n\n constructor(data?: IInsertMeetingTopicRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.description = _data[\"description\"];\n this.type = _data[\"type\"];\n this.order = _data[\"order\"];\n this.userId = _data[\"userId\"];\n this.due = _data[\"due\"] ? new Date(_data[\"due\"].toString()) : undefined;\n this.statusId = _data[\"statusId\"];\n }\n }\n\n static fromJS(data: any): InsertMeetingTopicRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertMeetingTopicRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"description\"] = this.description;\n data[\"type\"] = this.type;\n data[\"order\"] = this.order;\n data[\"userId\"] = this.userId;\n data[\"due\"] = this.due ? formatDate(this.due) : undefined;\n data[\"statusId\"] = this.statusId;\n return data;\n }\n}\n\nexport interface IInsertMeetingTopicRequest {\n description: string;\n type: MeetingTopicTypeEnum;\n order: number;\n userId?: number | undefined;\n due?: Date | undefined;\n statusId?: number | undefined;\n}\n\nexport class InsertMeetingTopicRequestUpdateMeetingTopicRequestDeleteMeetingTopicRequestDeltaModel implements IInsertMeetingTopicRequestUpdateMeetingTopicRequestDeleteMeetingTopicRequestDeltaModel {\n insert?: InsertMeetingTopicRequest[] | undefined;\n update?: UpdateMeetingTopicRequest[] | undefined;\n delete?: DeleteMeetingTopicRequest[] | undefined;\n\n constructor(data?: IInsertMeetingTopicRequestUpdateMeetingTopicRequestDeleteMeetingTopicRequestDeltaModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertMeetingTopicRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateMeetingTopicRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteMeetingTopicRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): InsertMeetingTopicRequestUpdateMeetingTopicRequestDeleteMeetingTopicRequestDeltaModel {\n data = typeof data === 'object' ? data : {};\n let result = new InsertMeetingTopicRequestUpdateMeetingTopicRequestDeleteMeetingTopicRequestDeltaModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IInsertMeetingTopicRequestUpdateMeetingTopicRequestDeleteMeetingTopicRequestDeltaModel {\n insert?: InsertMeetingTopicRequest[] | undefined;\n update?: UpdateMeetingTopicRequest[] | undefined;\n delete?: DeleteMeetingTopicRequest[] | undefined;\n}\n\nexport class InsertNonProjectCategoryRequest implements IInsertNonProjectCategoryRequest {\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n billable!: boolean;\n\n constructor(data?: IInsertNonProjectCategoryRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.billable = _data[\"billable\"];\n }\n }\n\n static fromJS(data: any): InsertNonProjectCategoryRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertNonProjectCategoryRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"billable\"] = this.billable;\n return data;\n }\n}\n\nexport interface IInsertNonProjectCategoryRequest {\n name: string;\n description?: string | undefined;\n isActive: boolean;\n billable: boolean;\n}\n\nexport class InsertOrganizationalUnitManagerRequest implements IInsertOrganizationalUnitManagerRequest {\n userId!: number;\n organizationalUnitId!: number;\n validUntil!: Date;\n isResourceManager!: boolean;\n\n constructor(data?: IInsertOrganizationalUnitManagerRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.userId = _data[\"userId\"];\n this.organizationalUnitId = _data[\"organizationalUnitId\"];\n this.validUntil = _data[\"validUntil\"] ? new Date(_data[\"validUntil\"].toString()) : undefined;\n this.isResourceManager = _data[\"isResourceManager\"];\n }\n }\n\n static fromJS(data: any): InsertOrganizationalUnitManagerRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertOrganizationalUnitManagerRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"userId\"] = this.userId;\n data[\"organizationalUnitId\"] = this.organizationalUnitId;\n data[\"validUntil\"] = this.validUntil ? formatDate(this.validUntil) : undefined;\n data[\"isResourceManager\"] = this.isResourceManager;\n return data;\n }\n}\n\nexport interface IInsertOrganizationalUnitManagerRequest {\n userId: number;\n organizationalUnitId: number;\n validUntil: Date;\n isResourceManager: boolean;\n}\n\nexport class InsertOrganizationalUnitRequest implements IInsertOrganizationalUnitRequest {\n name!: string;\n description?: string | undefined;\n parentId!: number;\n order!: number;\n\n constructor(data?: IInsertOrganizationalUnitRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.parentId = _data[\"parentId\"];\n this.order = _data[\"order\"];\n }\n }\n\n static fromJS(data: any): InsertOrganizationalUnitRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertOrganizationalUnitRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"parentId\"] = this.parentId;\n data[\"order\"] = this.order;\n return data;\n }\n}\n\nexport interface IInsertOrganizationalUnitRequest {\n name: string;\n description?: string | undefined;\n parentId: number;\n order: number;\n}\n\nexport class InsertOrUpdateCalendarRequest implements IInsertOrUpdateCalendarRequest {\n countryId!: number;\n workWeekFrom!: WeekDayEnum;\n workWeekTo!: WeekDayEnum;\n workTimeFrom!: number;\n workTimeTo!: number;\n holidays?: InsertHolidayRequestUpdateHolidayRequestInt32DeltaModel;\n\n constructor(data?: IInsertOrUpdateCalendarRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.countryId = _data[\"countryId\"];\n this.workWeekFrom = _data[\"workWeekFrom\"];\n this.workWeekTo = _data[\"workWeekTo\"];\n this.workTimeFrom = _data[\"workTimeFrom\"];\n this.workTimeTo = _data[\"workTimeTo\"];\n this.holidays = _data[\"holidays\"] ? InsertHolidayRequestUpdateHolidayRequestInt32DeltaModel.fromJS(_data[\"holidays\"]) : undefined;\n }\n }\n\n static fromJS(data: any): InsertOrUpdateCalendarRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertOrUpdateCalendarRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"countryId\"] = this.countryId;\n data[\"workWeekFrom\"] = this.workWeekFrom;\n data[\"workWeekTo\"] = this.workWeekTo;\n data[\"workTimeFrom\"] = this.workTimeFrom;\n data[\"workTimeTo\"] = this.workTimeTo;\n data[\"holidays\"] = this.holidays ? this.holidays.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IInsertOrUpdateCalendarRequest {\n countryId: number;\n workWeekFrom: WeekDayEnum;\n workWeekTo: WeekDayEnum;\n workTimeFrom: number;\n workTimeTo: number;\n holidays?: InsertHolidayRequestUpdateHolidayRequestInt32DeltaModel;\n}\n\nexport class InsertProjectAccomplishmentRequest implements IInsertProjectAccomplishmentRequest {\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n plannedDate?: Date | undefined;\n status!: ReportItemStatusEnum;\n\n constructor(data?: IInsertProjectAccomplishmentRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.plannedDate = _data[\"plannedDate\"] ? new Date(_data[\"plannedDate\"].toString()) : undefined;\n this.status = _data[\"status\"];\n }\n }\n\n static fromJS(data: any): InsertProjectAccomplishmentRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertProjectAccomplishmentRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"plannedDate\"] = this.plannedDate ? formatDate(this.plannedDate) : undefined;\n data[\"status\"] = this.status;\n return data;\n }\n}\n\nexport interface IInsertProjectAccomplishmentRequest {\n name: string;\n description?: string | undefined;\n isActive: boolean;\n plannedDate?: Date | undefined;\n status: ReportItemStatusEnum;\n}\n\nexport class InsertProjectActionRequest implements IInsertProjectActionRequest {\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n reportId!: number;\n status!: ReportItemStatusEnum;\n\n constructor(data?: IInsertProjectActionRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.reportId = _data[\"reportId\"];\n this.status = _data[\"status\"];\n }\n }\n\n static fromJS(data: any): InsertProjectActionRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertProjectActionRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"reportId\"] = this.reportId;\n data[\"status\"] = this.status;\n return data;\n }\n}\n\nexport interface IInsertProjectActionRequest {\n name: string;\n description?: string | undefined;\n isActive: boolean;\n reportId: number;\n status: ReportItemStatusEnum;\n}\n\nexport class InsertProjectBusinessRequest implements IInsertProjectBusinessRequest {\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n value?: number | undefined;\n\n constructor(data?: IInsertProjectBusinessRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.value = _data[\"value\"];\n }\n }\n\n static fromJS(data: any): InsertProjectBusinessRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertProjectBusinessRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"value\"] = this.value;\n return data;\n }\n}\n\nexport interface IInsertProjectBusinessRequest {\n name: string;\n description?: string | undefined;\n isActive: boolean;\n value?: number | undefined;\n}\n\nexport class InsertProjectChangeRequestRequest implements IInsertProjectChangeRequestRequest {\n name!: string;\n description?: string | undefined;\n initiatedBy?: string | undefined;\n approvedByUserId?: number | undefined;\n requestedOn?: Date | undefined;\n priority!: ChangeRequestPriorityEnum;\n completitionOn?: Date | undefined;\n statusId!: number;\n effortInHours?: number | undefined;\n totalCost?: number | undefined;\n estimatedEffortInHours?: number | undefined;\n estimatedTotalCost?: number | undefined;\n goLiveCritical!: boolean;\n\n constructor(data?: IInsertProjectChangeRequestRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.initiatedBy = _data[\"initiatedBy\"];\n this.approvedByUserId = _data[\"approvedByUserId\"];\n this.requestedOn = _data[\"requestedOn\"] ? new Date(_data[\"requestedOn\"].toString()) : undefined;\n this.priority = _data[\"priority\"];\n this.completitionOn = _data[\"completitionOn\"] ? new Date(_data[\"completitionOn\"].toString()) : undefined;\n this.statusId = _data[\"statusId\"];\n this.effortInHours = _data[\"effortInHours\"];\n this.totalCost = _data[\"totalCost\"];\n this.estimatedEffortInHours = _data[\"estimatedEffortInHours\"];\n this.estimatedTotalCost = _data[\"estimatedTotalCost\"];\n this.goLiveCritical = _data[\"goLiveCritical\"];\n }\n }\n\n static fromJS(data: any): InsertProjectChangeRequestRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertProjectChangeRequestRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"initiatedBy\"] = this.initiatedBy;\n data[\"approvedByUserId\"] = this.approvedByUserId;\n data[\"requestedOn\"] = this.requestedOn ? formatDate(this.requestedOn) : undefined;\n data[\"priority\"] = this.priority;\n data[\"completitionOn\"] = this.completitionOn ? formatDate(this.completitionOn) : undefined;\n data[\"statusId\"] = this.statusId;\n data[\"effortInHours\"] = this.effortInHours;\n data[\"totalCost\"] = this.totalCost;\n data[\"estimatedEffortInHours\"] = this.estimatedEffortInHours;\n data[\"estimatedTotalCost\"] = this.estimatedTotalCost;\n data[\"goLiveCritical\"] = this.goLiveCritical;\n return data;\n }\n}\n\nexport interface IInsertProjectChangeRequestRequest {\n name: string;\n description?: string | undefined;\n initiatedBy?: string | undefined;\n approvedByUserId?: number | undefined;\n requestedOn?: Date | undefined;\n priority: ChangeRequestPriorityEnum;\n completitionOn?: Date | undefined;\n statusId: number;\n effortInHours?: number | undefined;\n totalCost?: number | undefined;\n estimatedEffortInHours?: number | undefined;\n estimatedTotalCost?: number | undefined;\n goLiveCritical: boolean;\n}\n\nexport class InsertProjectConfigOrderRequest implements IInsertProjectConfigOrderRequest {\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n order!: number;\n\n constructor(data?: IInsertProjectConfigOrderRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.order = _data[\"order\"];\n }\n }\n\n static fromJS(data: any): InsertProjectConfigOrderRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertProjectConfigOrderRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"order\"] = this.order;\n return data;\n }\n}\n\nexport interface IInsertProjectConfigOrderRequest {\n name: string;\n description?: string | undefined;\n isActive: boolean;\n order: number;\n}\n\nexport class InsertProjectConfigRequest implements IInsertProjectConfigRequest {\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n\n constructor(data?: IInsertProjectConfigRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n }\n }\n\n static fromJS(data: any): InsertProjectConfigRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertProjectConfigRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n return data;\n }\n}\n\nexport interface IInsertProjectConfigRequest {\n name: string;\n description?: string | undefined;\n isActive: boolean;\n}\n\nexport class InsertProjectDeliverableRequest implements IInsertProjectDeliverableRequest {\n name!: string;\n description?: string | undefined;\n wbs!: string;\n complete?: number | undefined;\n finish?: Date | undefined;\n achievedDate?: Date | undefined;\n\n constructor(data?: IInsertProjectDeliverableRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.wbs = _data[\"wbs\"];\n this.complete = _data[\"complete\"];\n this.finish = _data[\"finish\"] ? new Date(_data[\"finish\"].toString()) : undefined;\n this.achievedDate = _data[\"achievedDate\"] ? new Date(_data[\"achievedDate\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): InsertProjectDeliverableRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertProjectDeliverableRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"wbs\"] = this.wbs;\n data[\"complete\"] = this.complete;\n data[\"finish\"] = this.finish ? formatDate(this.finish) : undefined;\n data[\"achievedDate\"] = this.achievedDate ? formatDate(this.achievedDate) : undefined;\n return data;\n }\n}\n\nexport interface IInsertProjectDeliverableRequest {\n name: string;\n description?: string | undefined;\n wbs: string;\n complete?: number | undefined;\n finish?: Date | undefined;\n achievedDate?: Date | undefined;\n}\n\nexport class InsertProjectFinanceRequest implements IInsertProjectFinanceRequest {\n name!: string;\n description?: string | undefined;\n invoiceType!: InvoiceTypeEnum;\n invoiceNumber!: string;\n partnerId!: number;\n issueDate!: Date;\n due!: Date;\n amount!: number;\n taxAmount!: number;\n statusId!: number;\n\n constructor(data?: IInsertProjectFinanceRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.invoiceType = _data[\"invoiceType\"];\n this.invoiceNumber = _data[\"invoiceNumber\"];\n this.partnerId = _data[\"partnerId\"];\n this.issueDate = _data[\"issueDate\"] ? new Date(_data[\"issueDate\"].toString()) : undefined;\n this.due = _data[\"due\"] ? new Date(_data[\"due\"].toString()) : undefined;\n this.amount = _data[\"amount\"];\n this.taxAmount = _data[\"taxAmount\"];\n this.statusId = _data[\"statusId\"];\n }\n }\n\n static fromJS(data: any): InsertProjectFinanceRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertProjectFinanceRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"invoiceType\"] = this.invoiceType;\n data[\"invoiceNumber\"] = this.invoiceNumber;\n data[\"partnerId\"] = this.partnerId;\n data[\"issueDate\"] = this.issueDate ? formatDate(this.issueDate) : undefined;\n data[\"due\"] = this.due ? formatDate(this.due) : undefined;\n data[\"amount\"] = this.amount;\n data[\"taxAmount\"] = this.taxAmount;\n data[\"statusId\"] = this.statusId;\n return data;\n }\n}\n\nexport interface IInsertProjectFinanceRequest {\n name: string;\n description?: string | undefined;\n invoiceType: InvoiceTypeEnum;\n invoiceNumber: string;\n partnerId: number;\n issueDate: Date;\n due: Date;\n amount: number;\n taxAmount: number;\n statusId: number;\n}\n\nexport class InsertProjectIssueRequest implements IInsertProjectIssueRequest {\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n impact?: string | undefined;\n solution?: string | undefined;\n resolution?: string | undefined;\n\n constructor(data?: IInsertProjectIssueRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.impact = _data[\"impact\"];\n this.solution = _data[\"solution\"];\n this.resolution = _data[\"resolution\"];\n }\n }\n\n static fromJS(data: any): InsertProjectIssueRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertProjectIssueRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"impact\"] = this.impact;\n data[\"solution\"] = this.solution;\n data[\"resolution\"] = this.resolution;\n return data;\n }\n}\n\nexport interface IInsertProjectIssueRequest {\n name: string;\n description?: string | undefined;\n isActive: boolean;\n impact?: string | undefined;\n solution?: string | undefined;\n resolution?: string | undefined;\n}\n\nexport class InsertProjectMilestoneRequest implements IInsertProjectMilestoneRequest {\n name!: string;\n description?: string | undefined;\n wbs!: string;\n duration?: number | undefined;\n complete?: number | undefined;\n start?: Date | undefined;\n finish?: Date | undefined;\n achievedDate?: Date | undefined;\n milestoneDeviation?: string | undefined;\n\n constructor(data?: IInsertProjectMilestoneRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.wbs = _data[\"wbs\"];\n this.duration = _data[\"duration\"];\n this.complete = _data[\"complete\"];\n this.start = _data[\"start\"] ? new Date(_data[\"start\"].toString()) : undefined;\n this.finish = _data[\"finish\"] ? new Date(_data[\"finish\"].toString()) : undefined;\n this.achievedDate = _data[\"achievedDate\"] ? new Date(_data[\"achievedDate\"].toString()) : undefined;\n this.milestoneDeviation = _data[\"milestoneDeviation\"];\n }\n }\n\n static fromJS(data: any): InsertProjectMilestoneRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertProjectMilestoneRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"wbs\"] = this.wbs;\n data[\"duration\"] = this.duration;\n data[\"complete\"] = this.complete;\n data[\"start\"] = this.start ? formatDate(this.start) : undefined;\n data[\"finish\"] = this.finish ? formatDate(this.finish) : undefined;\n data[\"achievedDate\"] = this.achievedDate ? formatDate(this.achievedDate) : undefined;\n data[\"milestoneDeviation\"] = this.milestoneDeviation;\n return data;\n }\n}\n\nexport interface IInsertProjectMilestoneRequest {\n name: string;\n description?: string | undefined;\n wbs: string;\n duration?: number | undefined;\n complete?: number | undefined;\n start?: Date | undefined;\n finish?: Date | undefined;\n achievedDate?: Date | undefined;\n milestoneDeviation?: string | undefined;\n}\n\nexport class InsertProjectQualityRequest implements IInsertProjectQualityRequest {\n name!: string;\n description?: string | undefined;\n wbs!: string;\n finish?: Date | undefined;\n achievedData?: Date | undefined;\n actions?: string | undefined;\n status!: ReportItemStatusEnum;\n\n constructor(data?: IInsertProjectQualityRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.wbs = _data[\"wbs\"];\n this.finish = _data[\"finish\"] ? new Date(_data[\"finish\"].toString()) : undefined;\n this.achievedData = _data[\"achievedData\"] ? new Date(_data[\"achievedData\"].toString()) : undefined;\n this.actions = _data[\"actions\"];\n this.status = _data[\"status\"];\n }\n }\n\n static fromJS(data: any): InsertProjectQualityRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertProjectQualityRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"wbs\"] = this.wbs;\n data[\"finish\"] = this.finish ? formatDate(this.finish) : undefined;\n data[\"achievedData\"] = this.achievedData ? formatDate(this.achievedData) : undefined;\n data[\"actions\"] = this.actions;\n data[\"status\"] = this.status;\n return data;\n }\n}\n\nexport interface IInsertProjectQualityRequest {\n name: string;\n description?: string | undefined;\n wbs: string;\n finish?: Date | undefined;\n achievedData?: Date | undefined;\n actions?: string | undefined;\n status: ReportItemStatusEnum;\n}\n\nexport class InsertProjectReportRequest implements IInsertProjectReportRequest {\n from!: Date;\n to!: Date;\n statusId!: number;\n\n constructor(data?: IInsertProjectReportRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.statusId = _data[\"statusId\"];\n }\n }\n\n static fromJS(data: any): InsertProjectReportRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertProjectReportRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"statusId\"] = this.statusId;\n return data;\n }\n}\n\nexport interface IInsertProjectReportRequest {\n from: Date;\n to: Date;\n statusId: number;\n}\n\nexport class InsertProjectRequest implements IInsertProjectRequest {\n name!: string;\n pmId!: number;\n statusId!: number;\n description?: string | undefined;\n from?: Date | undefined;\n to?: Date | undefined;\n\n constructor(data?: IInsertProjectRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.pmId = _data[\"pmId\"];\n this.statusId = _data[\"statusId\"];\n this.description = _data[\"description\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): InsertProjectRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertProjectRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"pmId\"] = this.pmId;\n data[\"statusId\"] = this.statusId;\n data[\"description\"] = this.description;\n data[\"from\"] = this.from ? this.from.toISOString() : undefined;\n data[\"to\"] = this.to ? this.to.toISOString() : undefined;\n return data;\n }\n}\n\nexport interface IInsertProjectRequest {\n name: string;\n pmId: number;\n statusId: number;\n description?: string | undefined;\n from?: Date | undefined;\n to?: Date | undefined;\n}\n\nexport class InsertProjectRiskRequest implements IInsertProjectRiskRequest {\n name!: string;\n description?: string | undefined;\n consequneces?: string | undefined;\n effects?: string | undefined;\n grossImpact?: number | undefined;\n probability?: number | undefined;\n mitigation!: string;\n mitigationType!: MitigationTypeEnum;\n grossImpactAfterMitigation?: number | undefined;\n probabilityAfterMitigation?: number | undefined;\n responsibleUserId?: number | undefined;\n statusId!: number;\n dueDate?: Date | undefined;\n costOfMitigation?: number | undefined;\n\n constructor(data?: IInsertProjectRiskRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.consequneces = _data[\"consequneces\"];\n this.effects = _data[\"effects\"];\n this.grossImpact = _data[\"grossImpact\"];\n this.probability = _data[\"probability\"];\n this.mitigation = _data[\"mitigation\"];\n this.mitigationType = _data[\"mitigationType\"];\n this.grossImpactAfterMitigation = _data[\"grossImpactAfterMitigation\"];\n this.probabilityAfterMitigation = _data[\"probabilityAfterMitigation\"];\n this.responsibleUserId = _data[\"responsibleUserId\"];\n this.statusId = _data[\"statusId\"];\n this.dueDate = _data[\"dueDate\"] ? new Date(_data[\"dueDate\"].toString()) : undefined;\n this.costOfMitigation = _data[\"costOfMitigation\"];\n }\n }\n\n static fromJS(data: any): InsertProjectRiskRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertProjectRiskRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"consequneces\"] = this.consequneces;\n data[\"effects\"] = this.effects;\n data[\"grossImpact\"] = this.grossImpact;\n data[\"probability\"] = this.probability;\n data[\"mitigation\"] = this.mitigation;\n data[\"mitigationType\"] = this.mitigationType;\n data[\"grossImpactAfterMitigation\"] = this.grossImpactAfterMitigation;\n data[\"probabilityAfterMitigation\"] = this.probabilityAfterMitigation;\n data[\"responsibleUserId\"] = this.responsibleUserId;\n data[\"statusId\"] = this.statusId;\n data[\"dueDate\"] = this.dueDate ? formatDate(this.dueDate) : undefined;\n data[\"costOfMitigation\"] = this.costOfMitigation;\n return data;\n }\n}\n\nexport interface IInsertProjectRiskRequest {\n name: string;\n description?: string | undefined;\n consequneces?: string | undefined;\n effects?: string | undefined;\n grossImpact?: number | undefined;\n probability?: number | undefined;\n mitigation: string;\n mitigationType: MitigationTypeEnum;\n grossImpactAfterMitigation?: number | undefined;\n probabilityAfterMitigation?: number | undefined;\n responsibleUserId?: number | undefined;\n statusId: number;\n dueDate?: Date | undefined;\n costOfMitigation?: number | undefined;\n}\n\nexport class InsertProjectSubcontractorRequest implements IInsertProjectSubcontractorRequest {\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n deliverable!: string;\n status!: ReportItemStatusEnum;\n issue!: string;\n solution?: string | undefined;\n resolution?: string | undefined;\n achievedDate?: Date | undefined;\n\n constructor(data?: IInsertProjectSubcontractorRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.deliverable = _data[\"deliverable\"];\n this.status = _data[\"status\"];\n this.issue = _data[\"issue\"];\n this.solution = _data[\"solution\"];\n this.resolution = _data[\"resolution\"];\n this.achievedDate = _data[\"achievedDate\"] ? new Date(_data[\"achievedDate\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): InsertProjectSubcontractorRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertProjectSubcontractorRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"deliverable\"] = this.deliverable;\n data[\"status\"] = this.status;\n data[\"issue\"] = this.issue;\n data[\"solution\"] = this.solution;\n data[\"resolution\"] = this.resolution;\n data[\"achievedDate\"] = this.achievedDate ? formatDate(this.achievedDate) : undefined;\n return data;\n }\n}\n\nexport interface IInsertProjectSubcontractorRequest {\n name: string;\n description?: string | undefined;\n isActive: boolean;\n deliverable: string;\n status: ReportItemStatusEnum;\n issue: string;\n solution?: string | undefined;\n resolution?: string | undefined;\n achievedDate?: Date | undefined;\n}\n\nexport class InsertProjectTeamMemberRequest implements IInsertProjectTeamMemberRequest {\n userId!: number;\n projectRoleId!: number;\n projectTeamId!: number;\n statusId!: number;\n validUntil!: Date;\n\n constructor(data?: IInsertProjectTeamMemberRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.userId = _data[\"userId\"];\n this.projectRoleId = _data[\"projectRoleId\"];\n this.projectTeamId = _data[\"projectTeamId\"];\n this.statusId = _data[\"statusId\"];\n this.validUntil = _data[\"validUntil\"] ? new Date(_data[\"validUntil\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): InsertProjectTeamMemberRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertProjectTeamMemberRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"userId\"] = this.userId;\n data[\"projectRoleId\"] = this.projectRoleId;\n data[\"projectTeamId\"] = this.projectTeamId;\n data[\"statusId\"] = this.statusId;\n data[\"validUntil\"] = this.validUntil ? formatDate(this.validUntil) : undefined;\n return data;\n }\n}\n\nexport interface IInsertProjectTeamMemberRequest {\n userId: number;\n projectRoleId: number;\n projectTeamId: number;\n statusId: number;\n validUntil: Date;\n}\n\nexport class InsertProjectTeamMemberValidityPeriodRequest implements IInsertProjectTeamMemberValidityPeriodRequest {\n teamMemberId!: number;\n from!: Date;\n to!: Date;\n salesRate!: number;\n costRate!: number;\n\n constructor(data?: IInsertProjectTeamMemberValidityPeriodRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.teamMemberId = _data[\"teamMemberId\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.salesRate = _data[\"salesRate\"];\n this.costRate = _data[\"costRate\"];\n }\n }\n\n static fromJS(data: any): InsertProjectTeamMemberValidityPeriodRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertProjectTeamMemberValidityPeriodRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"teamMemberId\"] = this.teamMemberId;\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"salesRate\"] = this.salesRate;\n data[\"costRate\"] = this.costRate;\n return data;\n }\n}\n\nexport interface IInsertProjectTeamMemberValidityPeriodRequest {\n teamMemberId: number;\n from: Date;\n to: Date;\n salesRate: number;\n costRate: number;\n}\n\nexport class InsertReminderRequest implements IInsertReminderRequest {\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n subject!: string;\n startDate!: Date;\n endDate!: Date;\n isRepeat!: boolean;\n repeatInterval!: RepeatIntervalEnum;\n repeatOnMonday!: boolean;\n repeatOnTuesday!: boolean;\n repeatOnWednesday!: boolean;\n repeatOnThursday!: boolean;\n repeatOnFriday!: boolean;\n repeatOnSaturday!: boolean;\n repeatOnSunday!: boolean;\n isPrivate!: boolean;\n sendEmail!: boolean;\n projectTeamId?: number | undefined;\n recipientUserIds?: number[] | undefined;\n\n constructor(data?: IInsertReminderRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.subject = _data[\"subject\"];\n this.startDate = _data[\"startDate\"] ? new Date(_data[\"startDate\"].toString()) : undefined;\n this.endDate = _data[\"endDate\"] ? new Date(_data[\"endDate\"].toString()) : undefined;\n this.isRepeat = _data[\"isRepeat\"];\n this.repeatInterval = _data[\"repeatInterval\"];\n this.repeatOnMonday = _data[\"repeatOnMonday\"];\n this.repeatOnTuesday = _data[\"repeatOnTuesday\"];\n this.repeatOnWednesday = _data[\"repeatOnWednesday\"];\n this.repeatOnThursday = _data[\"repeatOnThursday\"];\n this.repeatOnFriday = _data[\"repeatOnFriday\"];\n this.repeatOnSaturday = _data[\"repeatOnSaturday\"];\n this.repeatOnSunday = _data[\"repeatOnSunday\"];\n this.isPrivate = _data[\"isPrivate\"];\n this.sendEmail = _data[\"sendEmail\"];\n this.projectTeamId = _data[\"projectTeamId\"];\n if (Array.isArray(_data[\"recipientUserIds\"])) {\n this.recipientUserIds = [] as any;\n for (let item of _data[\"recipientUserIds\"])\n this.recipientUserIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): InsertReminderRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertReminderRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"subject\"] = this.subject;\n data[\"startDate\"] = this.startDate ? this.startDate.toISOString() : undefined;\n data[\"endDate\"] = this.endDate ? this.endDate.toISOString() : undefined;\n data[\"isRepeat\"] = this.isRepeat;\n data[\"repeatInterval\"] = this.repeatInterval;\n data[\"repeatOnMonday\"] = this.repeatOnMonday;\n data[\"repeatOnTuesday\"] = this.repeatOnTuesday;\n data[\"repeatOnWednesday\"] = this.repeatOnWednesday;\n data[\"repeatOnThursday\"] = this.repeatOnThursday;\n data[\"repeatOnFriday\"] = this.repeatOnFriday;\n data[\"repeatOnSaturday\"] = this.repeatOnSaturday;\n data[\"repeatOnSunday\"] = this.repeatOnSunday;\n data[\"isPrivate\"] = this.isPrivate;\n data[\"sendEmail\"] = this.sendEmail;\n data[\"projectTeamId\"] = this.projectTeamId;\n if (Array.isArray(this.recipientUserIds)) {\n data[\"recipientUserIds\"] = [];\n for (let item of this.recipientUserIds)\n data[\"recipientUserIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IInsertReminderRequest {\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n subject: string;\n startDate: Date;\n endDate: Date;\n isRepeat: boolean;\n repeatInterval: RepeatIntervalEnum;\n repeatOnMonday: boolean;\n repeatOnTuesday: boolean;\n repeatOnWednesday: boolean;\n repeatOnThursday: boolean;\n repeatOnFriday: boolean;\n repeatOnSaturday: boolean;\n repeatOnSunday: boolean;\n isPrivate: boolean;\n sendEmail: boolean;\n projectTeamId?: number | undefined;\n recipientUserIds?: number[] | undefined;\n}\n\nexport class InsertRiskRequest implements IInsertRiskRequest {\n name!: string;\n typeId?: number | undefined;\n consequneces?: string | undefined;\n effects?: string | undefined;\n responsibleUserId!: number;\n statusId!: number;\n dueDate!: Date;\n comment?: string | undefined;\n grossImpact?: number | undefined;\n probability?: number | undefined;\n mitigation?: string | undefined;\n mitigationType!: MitigationTypeEnum;\n mitigationCost?: number | undefined;\n grossImpactAfterMitigation?: number | undefined;\n probabilityAfterMitigation?: number | undefined;\n probabilityDescriptive?: RiskProbabilityEnum;\n impactDescriptive?: RiskImpactEnum;\n\n constructor(data?: IInsertRiskRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.typeId = _data[\"typeId\"];\n this.consequneces = _data[\"consequneces\"];\n this.effects = _data[\"effects\"];\n this.responsibleUserId = _data[\"responsibleUserId\"];\n this.statusId = _data[\"statusId\"];\n this.dueDate = _data[\"dueDate\"] ? new Date(_data[\"dueDate\"].toString()) : undefined;\n this.comment = _data[\"comment\"];\n this.grossImpact = _data[\"grossImpact\"];\n this.probability = _data[\"probability\"];\n this.mitigation = _data[\"mitigation\"];\n this.mitigationType = _data[\"mitigationType\"];\n this.mitigationCost = _data[\"mitigationCost\"];\n this.grossImpactAfterMitigation = _data[\"grossImpactAfterMitigation\"];\n this.probabilityAfterMitigation = _data[\"probabilityAfterMitigation\"];\n this.probabilityDescriptive = _data[\"probabilityDescriptive\"];\n this.impactDescriptive = _data[\"impactDescriptive\"];\n }\n }\n\n static fromJS(data: any): InsertRiskRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertRiskRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"typeId\"] = this.typeId;\n data[\"consequneces\"] = this.consequneces;\n data[\"effects\"] = this.effects;\n data[\"responsibleUserId\"] = this.responsibleUserId;\n data[\"statusId\"] = this.statusId;\n data[\"dueDate\"] = this.dueDate ? formatDate(this.dueDate) : undefined;\n data[\"comment\"] = this.comment;\n data[\"grossImpact\"] = this.grossImpact;\n data[\"probability\"] = this.probability;\n data[\"mitigation\"] = this.mitigation;\n data[\"mitigationType\"] = this.mitigationType;\n data[\"mitigationCost\"] = this.mitigationCost;\n data[\"grossImpactAfterMitigation\"] = this.grossImpactAfterMitigation;\n data[\"probabilityAfterMitigation\"] = this.probabilityAfterMitigation;\n data[\"probabilityDescriptive\"] = this.probabilityDescriptive;\n data[\"impactDescriptive\"] = this.impactDescriptive;\n return data;\n }\n}\n\nexport interface IInsertRiskRequest {\n name: string;\n typeId?: number | undefined;\n consequneces?: string | undefined;\n effects?: string | undefined;\n responsibleUserId: number;\n statusId: number;\n dueDate: Date;\n comment?: string | undefined;\n grossImpact?: number | undefined;\n probability?: number | undefined;\n mitigation?: string | undefined;\n mitigationType: MitigationTypeEnum;\n mitigationCost?: number | undefined;\n grossImpactAfterMitigation?: number | undefined;\n probabilityAfterMitigation?: number | undefined;\n probabilityDescriptive?: RiskProbabilityEnum;\n impactDescriptive?: RiskImpactEnum;\n}\n\nexport class InsertSchedulePredecessorRequest implements IInsertSchedulePredecessorRequest {\n predecessorId!: number;\n descendantId!: number;\n type!: SchedulePredecessorTypeEnum;\n lag?: number | undefined;\n\n constructor(data?: IInsertSchedulePredecessorRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.predecessorId = _data[\"predecessorId\"];\n this.descendantId = _data[\"descendantId\"];\n this.type = _data[\"type\"];\n this.lag = _data[\"lag\"];\n }\n }\n\n static fromJS(data: any): InsertSchedulePredecessorRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertSchedulePredecessorRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"predecessorId\"] = this.predecessorId;\n data[\"descendantId\"] = this.descendantId;\n data[\"type\"] = this.type;\n data[\"lag\"] = this.lag;\n return data;\n }\n}\n\nexport interface IInsertSchedulePredecessorRequest {\n predecessorId: number;\n descendantId: number;\n type: SchedulePredecessorTypeEnum;\n lag?: number | undefined;\n}\n\nexport class InsertScheduleRequest implements IInsertScheduleRequest {\n name!: string;\n description?: string | undefined;\n wbs!: string;\n start!: Date;\n finish!: Date;\n parentId?: number | undefined;\n percentOfCompletion?: number | undefined;\n achievedDate?: Date | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n customText3?: string | undefined;\n customText4?: string | undefined;\n customText5?: string | undefined;\n customText6?: string | undefined;\n customText7?: string | undefined;\n customText8?: string | undefined;\n customText9?: string | undefined;\n customText10?: string | undefined;\n projectRoleResponsibleId?: number | undefined;\n insertedResponsibleUserIds?: number[] | undefined;\n workloadForResponsibleUsers?: number | undefined;\n addAsTaskPerResponsibleUser!: boolean;\n projectRoleAccountableId?: number | undefined;\n insertedAccountableUserIds?: number[] | undefined;\n projectRoleConsultedId?: number | undefined;\n insertedConsultedUserIds?: number[] | undefined;\n projectRoleInformedId?: number | undefined;\n insertedInformedUserIds?: number[] | undefined;\n markAsMilestone!: boolean;\n markAsDeliverable!: boolean;\n markTaskForQualityGate!: boolean;\n\n constructor(data?: IInsertScheduleRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.wbs = _data[\"wbs\"];\n this.start = _data[\"start\"] ? new Date(_data[\"start\"].toString()) : undefined;\n this.finish = _data[\"finish\"] ? new Date(_data[\"finish\"].toString()) : undefined;\n this.parentId = _data[\"parentId\"];\n this.percentOfCompletion = _data[\"percentOfCompletion\"];\n this.achievedDate = _data[\"achievedDate\"] ? new Date(_data[\"achievedDate\"].toString()) : undefined;\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.customText3 = _data[\"customText3\"];\n this.customText4 = _data[\"customText4\"];\n this.customText5 = _data[\"customText5\"];\n this.customText6 = _data[\"customText6\"];\n this.customText7 = _data[\"customText7\"];\n this.customText8 = _data[\"customText8\"];\n this.customText9 = _data[\"customText9\"];\n this.customText10 = _data[\"customText10\"];\n this.projectRoleResponsibleId = _data[\"projectRoleResponsibleId\"];\n if (Array.isArray(_data[\"insertedResponsibleUserIds\"])) {\n this.insertedResponsibleUserIds = [] as any;\n for (let item of _data[\"insertedResponsibleUserIds\"])\n this.insertedResponsibleUserIds!.push(item);\n }\n this.workloadForResponsibleUsers = _data[\"workloadForResponsibleUsers\"];\n this.addAsTaskPerResponsibleUser = _data[\"addAsTaskPerResponsibleUser\"];\n this.projectRoleAccountableId = _data[\"projectRoleAccountableId\"];\n if (Array.isArray(_data[\"insertedAccountableUserIds\"])) {\n this.insertedAccountableUserIds = [] as any;\n for (let item of _data[\"insertedAccountableUserIds\"])\n this.insertedAccountableUserIds!.push(item);\n }\n this.projectRoleConsultedId = _data[\"projectRoleConsultedId\"];\n if (Array.isArray(_data[\"insertedConsultedUserIds\"])) {\n this.insertedConsultedUserIds = [] as any;\n for (let item of _data[\"insertedConsultedUserIds\"])\n this.insertedConsultedUserIds!.push(item);\n }\n this.projectRoleInformedId = _data[\"projectRoleInformedId\"];\n if (Array.isArray(_data[\"insertedInformedUserIds\"])) {\n this.insertedInformedUserIds = [] as any;\n for (let item of _data[\"insertedInformedUserIds\"])\n this.insertedInformedUserIds!.push(item);\n }\n this.markAsMilestone = _data[\"markAsMilestone\"];\n this.markAsDeliverable = _data[\"markAsDeliverable\"];\n this.markTaskForQualityGate = _data[\"markTaskForQualityGate\"];\n }\n }\n\n static fromJS(data: any): InsertScheduleRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertScheduleRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"wbs\"] = this.wbs;\n data[\"start\"] = this.start ? this.start.toISOString() : undefined;\n data[\"finish\"] = this.finish ? this.finish.toISOString() : undefined;\n data[\"parentId\"] = this.parentId;\n data[\"percentOfCompletion\"] = this.percentOfCompletion;\n data[\"achievedDate\"] = this.achievedDate ? this.achievedDate.toISOString() : undefined;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"customText3\"] = this.customText3;\n data[\"customText4\"] = this.customText4;\n data[\"customText5\"] = this.customText5;\n data[\"customText6\"] = this.customText6;\n data[\"customText7\"] = this.customText7;\n data[\"customText8\"] = this.customText8;\n data[\"customText9\"] = this.customText9;\n data[\"customText10\"] = this.customText10;\n data[\"projectRoleResponsibleId\"] = this.projectRoleResponsibleId;\n if (Array.isArray(this.insertedResponsibleUserIds)) {\n data[\"insertedResponsibleUserIds\"] = [];\n for (let item of this.insertedResponsibleUserIds)\n data[\"insertedResponsibleUserIds\"].push(item);\n }\n data[\"workloadForResponsibleUsers\"] = this.workloadForResponsibleUsers;\n data[\"addAsTaskPerResponsibleUser\"] = this.addAsTaskPerResponsibleUser;\n data[\"projectRoleAccountableId\"] = this.projectRoleAccountableId;\n if (Array.isArray(this.insertedAccountableUserIds)) {\n data[\"insertedAccountableUserIds\"] = [];\n for (let item of this.insertedAccountableUserIds)\n data[\"insertedAccountableUserIds\"].push(item);\n }\n data[\"projectRoleConsultedId\"] = this.projectRoleConsultedId;\n if (Array.isArray(this.insertedConsultedUserIds)) {\n data[\"insertedConsultedUserIds\"] = [];\n for (let item of this.insertedConsultedUserIds)\n data[\"insertedConsultedUserIds\"].push(item);\n }\n data[\"projectRoleInformedId\"] = this.projectRoleInformedId;\n if (Array.isArray(this.insertedInformedUserIds)) {\n data[\"insertedInformedUserIds\"] = [];\n for (let item of this.insertedInformedUserIds)\n data[\"insertedInformedUserIds\"].push(item);\n }\n data[\"markAsMilestone\"] = this.markAsMilestone;\n data[\"markAsDeliverable\"] = this.markAsDeliverable;\n data[\"markTaskForQualityGate\"] = this.markTaskForQualityGate;\n return data;\n }\n}\n\nexport interface IInsertScheduleRequest {\n name: string;\n description?: string | undefined;\n wbs: string;\n start: Date;\n finish: Date;\n parentId?: number | undefined;\n percentOfCompletion?: number | undefined;\n achievedDate?: Date | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n customText3?: string | undefined;\n customText4?: string | undefined;\n customText5?: string | undefined;\n customText6?: string | undefined;\n customText7?: string | undefined;\n customText8?: string | undefined;\n customText9?: string | undefined;\n customText10?: string | undefined;\n projectRoleResponsibleId?: number | undefined;\n insertedResponsibleUserIds?: number[] | undefined;\n workloadForResponsibleUsers?: number | undefined;\n addAsTaskPerResponsibleUser: boolean;\n projectRoleAccountableId?: number | undefined;\n insertedAccountableUserIds?: number[] | undefined;\n projectRoleConsultedId?: number | undefined;\n insertedConsultedUserIds?: number[] | undefined;\n projectRoleInformedId?: number | undefined;\n insertedInformedUserIds?: number[] | undefined;\n markAsMilestone: boolean;\n markAsDeliverable: boolean;\n markTaskForQualityGate: boolean;\n}\n\nexport class InsertScopeItemLevelRequest implements IInsertScopeItemLevelRequest {\n name!: string;\n description?: string | undefined;\n parentId?: number | undefined;\n processDescription?: string | undefined;\n ticketId?: number | undefined;\n processVariant!: boolean;\n relatedScopeItemLevelId?: number | undefined;\n regressionRelevant!: boolean;\n regressionDependecies?: string | undefined;\n stressTestRelevant!: boolean;\n environmentId?: number | undefined;\n inputDocument?: string | undefined;\n outputDocument?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n scopeDepartmentId?: number | undefined;\n scopeStepTypeId?: number | undefined;\n scopeUserRoleId?: number | undefined;\n isComplex!: boolean;\n complexForScopeItemId?: number | undefined;\n order!: number;\n insertedChangeRequestIds?: number[] | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n\n constructor(data?: IInsertScopeItemLevelRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.parentId = _data[\"parentId\"];\n this.processDescription = _data[\"processDescription\"];\n this.ticketId = _data[\"ticketId\"];\n this.processVariant = _data[\"processVariant\"];\n this.relatedScopeItemLevelId = _data[\"relatedScopeItemLevelId\"];\n this.regressionRelevant = _data[\"regressionRelevant\"];\n this.regressionDependecies = _data[\"regressionDependecies\"];\n this.stressTestRelevant = _data[\"stressTestRelevant\"];\n this.environmentId = _data[\"environmentId\"];\n this.inputDocument = _data[\"inputDocument\"];\n this.outputDocument = _data[\"outputDocument\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.scopeDepartmentId = _data[\"scopeDepartmentId\"];\n this.scopeStepTypeId = _data[\"scopeStepTypeId\"];\n this.scopeUserRoleId = _data[\"scopeUserRoleId\"];\n this.isComplex = _data[\"isComplex\"];\n this.complexForScopeItemId = _data[\"complexForScopeItemId\"];\n this.order = _data[\"order\"];\n if (Array.isArray(_data[\"insertedChangeRequestIds\"])) {\n this.insertedChangeRequestIds = [] as any;\n for (let item of _data[\"insertedChangeRequestIds\"])\n this.insertedChangeRequestIds!.push(item);\n }\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): InsertScopeItemLevelRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertScopeItemLevelRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"parentId\"] = this.parentId;\n data[\"processDescription\"] = this.processDescription;\n data[\"ticketId\"] = this.ticketId;\n data[\"processVariant\"] = this.processVariant;\n data[\"relatedScopeItemLevelId\"] = this.relatedScopeItemLevelId;\n data[\"regressionRelevant\"] = this.regressionRelevant;\n data[\"regressionDependecies\"] = this.regressionDependecies;\n data[\"stressTestRelevant\"] = this.stressTestRelevant;\n data[\"environmentId\"] = this.environmentId;\n data[\"inputDocument\"] = this.inputDocument;\n data[\"outputDocument\"] = this.outputDocument;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"scopeDepartmentId\"] = this.scopeDepartmentId;\n data[\"scopeStepTypeId\"] = this.scopeStepTypeId;\n data[\"scopeUserRoleId\"] = this.scopeUserRoleId;\n data[\"isComplex\"] = this.isComplex;\n data[\"complexForScopeItemId\"] = this.complexForScopeItemId;\n data[\"order\"] = this.order;\n if (Array.isArray(this.insertedChangeRequestIds)) {\n data[\"insertedChangeRequestIds\"] = [];\n for (let item of this.insertedChangeRequestIds)\n data[\"insertedChangeRequestIds\"].push(item);\n }\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IInsertScopeItemLevelRequest {\n name: string;\n description?: string | undefined;\n parentId?: number | undefined;\n processDescription?: string | undefined;\n ticketId?: number | undefined;\n processVariant: boolean;\n relatedScopeItemLevelId?: number | undefined;\n regressionRelevant: boolean;\n regressionDependecies?: string | undefined;\n stressTestRelevant: boolean;\n environmentId?: number | undefined;\n inputDocument?: string | undefined;\n outputDocument?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n scopeDepartmentId?: number | undefined;\n scopeStepTypeId?: number | undefined;\n scopeUserRoleId?: number | undefined;\n isComplex: boolean;\n complexForScopeItemId?: number | undefined;\n order: number;\n insertedChangeRequestIds?: number[] | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n}\n\nexport class InsertStatusReportRequest implements IInsertStatusReportRequest {\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n reportDate!: Date;\n from?: Date | undefined;\n to?: Date | undefined;\n responsibleUserId?: number | undefined;\n notifyResponsibleUser!: boolean;\n openIssues!: string;\n keyRisks!: string;\n nextSteps!: string;\n overallStatus!: ReportStatusAreaEnum;\n overallStatusAndKeyAchievements!: string;\n projectTeamId?: number | undefined;\n\n constructor(data?: IInsertStatusReportRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.reportDate = _data[\"reportDate\"] ? new Date(_data[\"reportDate\"].toString()) : undefined;\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.responsibleUserId = _data[\"responsibleUserId\"];\n this.notifyResponsibleUser = _data[\"notifyResponsibleUser\"];\n this.openIssues = _data[\"openIssues\"];\n this.keyRisks = _data[\"keyRisks\"];\n this.nextSteps = _data[\"nextSteps\"];\n this.overallStatus = _data[\"overallStatus\"];\n this.overallStatusAndKeyAchievements = _data[\"overallStatusAndKeyAchievements\"];\n this.projectTeamId = _data[\"projectTeamId\"];\n }\n }\n\n static fromJS(data: any): InsertStatusReportRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertStatusReportRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"reportDate\"] = this.reportDate ? formatDate(this.reportDate) : undefined;\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"responsibleUserId\"] = this.responsibleUserId;\n data[\"notifyResponsibleUser\"] = this.notifyResponsibleUser;\n data[\"openIssues\"] = this.openIssues;\n data[\"keyRisks\"] = this.keyRisks;\n data[\"nextSteps\"] = this.nextSteps;\n data[\"overallStatus\"] = this.overallStatus;\n data[\"overallStatusAndKeyAchievements\"] = this.overallStatusAndKeyAchievements;\n data[\"projectTeamId\"] = this.projectTeamId;\n return data;\n }\n}\n\nexport interface IInsertStatusReportRequest {\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n reportDate: Date;\n from?: Date | undefined;\n to?: Date | undefined;\n responsibleUserId?: number | undefined;\n notifyResponsibleUser: boolean;\n openIssues: string;\n keyRisks: string;\n nextSteps: string;\n overallStatus: ReportStatusAreaEnum;\n overallStatusAndKeyAchievements: string;\n projectTeamId?: number | undefined;\n}\n\nexport class InsertStatusRequest implements IInsertStatusRequest {\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n color!: string;\n\n constructor(data?: IInsertStatusRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.color = _data[\"color\"];\n }\n }\n\n static fromJS(data: any): InsertStatusRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertStatusRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"color\"] = this.color;\n return data;\n }\n}\n\nexport interface IInsertStatusRequest {\n name: string;\n description?: string | undefined;\n isActive: boolean;\n color: string;\n}\n\nexport class InsertSurveyParticipantAnswerRequest implements IInsertSurveyParticipantAnswerRequest {\n answer?: string | undefined;\n rating?: number | undefined;\n proposedAnswerId?: number | undefined;\n\n constructor(data?: IInsertSurveyParticipantAnswerRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.answer = _data[\"answer\"];\n this.rating = _data[\"rating\"];\n this.proposedAnswerId = _data[\"proposedAnswerId\"];\n }\n }\n\n static fromJS(data: any): InsertSurveyParticipantAnswerRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertSurveyParticipantAnswerRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"answer\"] = this.answer;\n data[\"rating\"] = this.rating;\n data[\"proposedAnswerId\"] = this.proposedAnswerId;\n return data;\n }\n}\n\nexport interface IInsertSurveyParticipantAnswerRequest {\n answer?: string | undefined;\n rating?: number | undefined;\n proposedAnswerId?: number | undefined;\n}\n\nexport class InsertSurveyProposedAnswerRequest implements IInsertSurveyProposedAnswerRequest {\n answer!: string;\n points?: number | undefined;\n isCorrect!: boolean;\n\n constructor(data?: IInsertSurveyProposedAnswerRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.answer = _data[\"answer\"];\n this.points = _data[\"points\"];\n this.isCorrect = _data[\"isCorrect\"];\n }\n }\n\n static fromJS(data: any): InsertSurveyProposedAnswerRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertSurveyProposedAnswerRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"answer\"] = this.answer;\n data[\"points\"] = this.points;\n data[\"isCorrect\"] = this.isCorrect;\n return data;\n }\n}\n\nexport interface IInsertSurveyProposedAnswerRequest {\n answer: string;\n points?: number | undefined;\n isCorrect: boolean;\n}\n\nexport class InsertSurveyQuestionRequest implements IInsertSurveyQuestionRequest {\n questionGroup?: string | undefined;\n question!: string;\n surveyType!: SurveyQuestionTypeEnum;\n answerRequired!: boolean;\n scoreQuestion!: boolean;\n order!: number;\n proposedAnswersDelta?: SurveyProposedAnswerDeltaRequest;\n\n constructor(data?: IInsertSurveyQuestionRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.questionGroup = _data[\"questionGroup\"];\n this.question = _data[\"question\"];\n this.surveyType = _data[\"surveyType\"];\n this.answerRequired = _data[\"answerRequired\"];\n this.scoreQuestion = _data[\"scoreQuestion\"];\n this.order = _data[\"order\"];\n this.proposedAnswersDelta = _data[\"proposedAnswersDelta\"] ? SurveyProposedAnswerDeltaRequest.fromJS(_data[\"proposedAnswersDelta\"]) : undefined;\n }\n }\n\n static fromJS(data: any): InsertSurveyQuestionRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertSurveyQuestionRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"questionGroup\"] = this.questionGroup;\n data[\"question\"] = this.question;\n data[\"surveyType\"] = this.surveyType;\n data[\"answerRequired\"] = this.answerRequired;\n data[\"scoreQuestion\"] = this.scoreQuestion;\n data[\"order\"] = this.order;\n data[\"proposedAnswersDelta\"] = this.proposedAnswersDelta ? this.proposedAnswersDelta.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IInsertSurveyQuestionRequest {\n questionGroup?: string | undefined;\n question: string;\n surveyType: SurveyQuestionTypeEnum;\n answerRequired: boolean;\n scoreQuestion: boolean;\n order: number;\n proposedAnswersDelta?: SurveyProposedAnswerDeltaRequest;\n}\n\nexport class InsertSurveyRequest implements IInsertSurveyRequest {\n name!: string;\n description?: string | undefined;\n surveyType!: SurveyTypeEnum;\n\n constructor(data?: IInsertSurveyRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.surveyType = _data[\"surveyType\"];\n }\n }\n\n static fromJS(data: any): InsertSurveyRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertSurveyRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"surveyType\"] = this.surveyType;\n return data;\n }\n}\n\nexport interface IInsertSurveyRequest {\n name: string;\n description?: string | undefined;\n surveyType: SurveyTypeEnum;\n}\n\nexport class InsertTaskCommentRequest implements IInsertTaskCommentRequest {\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n taskId!: number;\n comment!: string;\n\n constructor(data?: IInsertTaskCommentRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.taskId = _data[\"taskId\"];\n this.comment = _data[\"comment\"];\n }\n }\n\n static fromJS(data: any): InsertTaskCommentRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertTaskCommentRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"taskId\"] = this.taskId;\n data[\"comment\"] = this.comment;\n return data;\n }\n}\n\nexport interface IInsertTaskCommentRequest {\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n taskId: number;\n comment: string;\n}\n\nexport class InsertTaskRequest implements IInsertTaskRequest {\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n assignedToUserId!: number;\n due!: Date;\n isPrivate!: boolean;\n description?: string | undefined;\n parentTaskId?: number | undefined;\n riskId?: number | undefined;\n scopeItemLevelId?: number | undefined;\n changeRequestId?: number | undefined;\n ticketId?: number | undefined;\n meetingId?: number | undefined;\n scheduleId?: number | undefined;\n priority?: TaskPriorityEnum;\n estimatedEffort?: number | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n\n constructor(data?: IInsertTaskRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.assignedToUserId = _data[\"assignedToUserId\"];\n this.due = _data[\"due\"] ? new Date(_data[\"due\"].toString()) : undefined;\n this.isPrivate = _data[\"isPrivate\"];\n this.description = _data[\"description\"];\n this.parentTaskId = _data[\"parentTaskId\"];\n this.riskId = _data[\"riskId\"];\n this.scopeItemLevelId = _data[\"scopeItemLevelId\"];\n this.changeRequestId = _data[\"changeRequestId\"];\n this.ticketId = _data[\"ticketId\"];\n this.meetingId = _data[\"meetingId\"];\n this.scheduleId = _data[\"scheduleId\"];\n this.priority = _data[\"priority\"];\n this.estimatedEffort = _data[\"estimatedEffort\"];\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): InsertTaskRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertTaskRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"assignedToUserId\"] = this.assignedToUserId;\n data[\"due\"] = this.due ? formatDate(this.due) : undefined;\n data[\"isPrivate\"] = this.isPrivate;\n data[\"description\"] = this.description;\n data[\"parentTaskId\"] = this.parentTaskId;\n data[\"riskId\"] = this.riskId;\n data[\"scopeItemLevelId\"] = this.scopeItemLevelId;\n data[\"changeRequestId\"] = this.changeRequestId;\n data[\"ticketId\"] = this.ticketId;\n data[\"meetingId\"] = this.meetingId;\n data[\"scheduleId\"] = this.scheduleId;\n data[\"priority\"] = this.priority;\n data[\"estimatedEffort\"] = this.estimatedEffort;\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IInsertTaskRequest {\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n assignedToUserId: number;\n due: Date;\n isPrivate: boolean;\n description?: string | undefined;\n parentTaskId?: number | undefined;\n riskId?: number | undefined;\n scopeItemLevelId?: number | undefined;\n changeRequestId?: number | undefined;\n ticketId?: number | undefined;\n meetingId?: number | undefined;\n scheduleId?: number | undefined;\n priority?: TaskPriorityEnum;\n estimatedEffort?: number | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n}\n\nexport class InsertTaskTimesheetRequest implements IInsertTaskTimesheetRequest {\n userId!: number;\n date!: Date;\n effort!: number;\n estimatedTime?: number | undefined;\n\n constructor(data?: IInsertTaskTimesheetRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.userId = _data[\"userId\"];\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.effort = _data[\"effort\"];\n this.estimatedTime = _data[\"estimatedTime\"];\n }\n }\n\n static fromJS(data: any): InsertTaskTimesheetRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertTaskTimesheetRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"userId\"] = this.userId;\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n data[\"effort\"] = this.effort;\n data[\"estimatedTime\"] = this.estimatedTime;\n return data;\n }\n}\n\nexport interface IInsertTaskTimesheetRequest {\n userId: number;\n date: Date;\n effort: number;\n estimatedTime?: number | undefined;\n}\n\nexport class InsertTenantIsActiveRequest implements IInsertTenantIsActiveRequest {\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n\n constructor(data?: IInsertTenantIsActiveRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n }\n }\n\n static fromJS(data: any): InsertTenantIsActiveRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertTenantIsActiveRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n return data;\n }\n}\n\nexport interface IInsertTenantIsActiveRequest {\n name: string;\n description?: string | undefined;\n isActive: boolean;\n}\n\nexport class InsertTestCycleRequest implements IInsertTestCycleRequest {\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n\n constructor(data?: IInsertTestCycleRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n }\n }\n\n static fromJS(data: any): InsertTestCycleRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertTestCycleRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n return data;\n }\n}\n\nexport interface IInsertTestCycleRequest {\n name: string;\n description?: string | undefined;\n isActive: boolean;\n}\n\nexport class InsertTestStatusRequest implements IInsertTestStatusRequest {\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n color!: string;\n semantics!: TestStatusEnum;\n\n constructor(data?: IInsertTestStatusRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.color = _data[\"color\"];\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): InsertTestStatusRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertTestStatusRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"color\"] = this.color;\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface IInsertTestStatusRequest {\n name: string;\n description?: string | undefined;\n isActive: boolean;\n color: string;\n semantics: TestStatusEnum;\n}\n\nexport class InsertTicketAssignedGroupRequest implements IInsertTicketAssignedGroupRequest {\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n emails?: string | undefined;\n\n constructor(data?: IInsertTicketAssignedGroupRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.emails = _data[\"emails\"];\n }\n }\n\n static fromJS(data: any): InsertTicketAssignedGroupRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertTicketAssignedGroupRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"emails\"] = this.emails;\n return data;\n }\n}\n\nexport interface IInsertTicketAssignedGroupRequest {\n name: string;\n description?: string | undefined;\n isActive: boolean;\n emails?: string | undefined;\n}\n\nexport class InsertTicketCategoryRequest implements IInsertTicketCategoryRequest {\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n parentId?: number | undefined;\n order!: number;\n\n constructor(data?: IInsertTicketCategoryRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.parentId = _data[\"parentId\"];\n this.order = _data[\"order\"];\n }\n }\n\n static fromJS(data: any): InsertTicketCategoryRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertTicketCategoryRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"parentId\"] = this.parentId;\n data[\"order\"] = this.order;\n return data;\n }\n}\n\nexport interface IInsertTicketCategoryRequest {\n name: string;\n description?: string | undefined;\n isActive: boolean;\n parentId?: number | undefined;\n order: number;\n}\n\nexport class InsertTicketCommnetRequest implements IInsertTicketCommnetRequest {\n comment!: string;\n taskUserId?: number | undefined;\n taskDate?: Date | undefined;\n taskStatusId?: number | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n\n constructor(data?: IInsertTicketCommnetRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.comment = _data[\"comment\"];\n this.taskUserId = _data[\"taskUserId\"];\n this.taskDate = _data[\"taskDate\"] ? new Date(_data[\"taskDate\"].toString()) : undefined;\n this.taskStatusId = _data[\"taskStatusId\"];\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): InsertTicketCommnetRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertTicketCommnetRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"comment\"] = this.comment;\n data[\"taskUserId\"] = this.taskUserId;\n data[\"taskDate\"] = this.taskDate ? formatDate(this.taskDate) : undefined;\n data[\"taskStatusId\"] = this.taskStatusId;\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IInsertTicketCommnetRequest {\n comment: string;\n taskUserId?: number | undefined;\n taskDate?: Date | undefined;\n taskStatusId?: number | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n}\n\nexport class InsertTicketRequest implements IInsertTicketRequest {\n name!: string;\n description?: string | undefined;\n projectId!: number;\n reportedBy!: string;\n reportedOn?: Date | undefined;\n typeId!: number;\n categoryLevel1Id!: number;\n categoryLevel2Id?: number | undefined;\n categoryLevel3Id?: number | undefined;\n ticketNumberExt?: string | undefined;\n statusId!: number;\n impactId!: number;\n urgencyId!: number;\n effort?: number | undefined;\n effortUnit?: TimeMeasureEnum;\n assignedGroupId?: number | undefined;\n expectedResolutionDate?: Date | undefined;\n environmentId?: number | undefined;\n scheduleId?: number | undefined;\n assignedToUserId!: number;\n parentTicketId?: number | undefined;\n changeRequestIdsDelta?: Int32Int32Int32DeltaModel;\n testPlanIdsDelta?: Int32Int32Int32DeltaModel;\n timesheetsDelta?: InsertTicketTimesheetRequestUpdateTicketTimesheetRequestInt32DeltaModel;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n\n constructor(data?: IInsertTicketRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.projectId = _data[\"projectId\"];\n this.reportedBy = _data[\"reportedBy\"];\n this.reportedOn = _data[\"reportedOn\"] ? new Date(_data[\"reportedOn\"].toString()) : undefined;\n this.typeId = _data[\"typeId\"];\n this.categoryLevel1Id = _data[\"categoryLevel1Id\"];\n this.categoryLevel2Id = _data[\"categoryLevel2Id\"];\n this.categoryLevel3Id = _data[\"categoryLevel3Id\"];\n this.ticketNumberExt = _data[\"ticketNumberExt\"];\n this.statusId = _data[\"statusId\"];\n this.impactId = _data[\"impactId\"];\n this.urgencyId = _data[\"urgencyId\"];\n this.effort = _data[\"effort\"];\n this.effortUnit = _data[\"effortUnit\"];\n this.assignedGroupId = _data[\"assignedGroupId\"];\n this.expectedResolutionDate = _data[\"expectedResolutionDate\"] ? new Date(_data[\"expectedResolutionDate\"].toString()) : undefined;\n this.environmentId = _data[\"environmentId\"];\n this.scheduleId = _data[\"scheduleId\"];\n this.assignedToUserId = _data[\"assignedToUserId\"];\n this.parentTicketId = _data[\"parentTicketId\"];\n this.changeRequestIdsDelta = _data[\"changeRequestIdsDelta\"] ? Int32Int32Int32DeltaModel.fromJS(_data[\"changeRequestIdsDelta\"]) : undefined;\n this.testPlanIdsDelta = _data[\"testPlanIdsDelta\"] ? Int32Int32Int32DeltaModel.fromJS(_data[\"testPlanIdsDelta\"]) : undefined;\n this.timesheetsDelta = _data[\"timesheetsDelta\"] ? InsertTicketTimesheetRequestUpdateTicketTimesheetRequestInt32DeltaModel.fromJS(_data[\"timesheetsDelta\"]) : undefined;\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): InsertTicketRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertTicketRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"projectId\"] = this.projectId;\n data[\"reportedBy\"] = this.reportedBy;\n data[\"reportedOn\"] = this.reportedOn ? formatDate(this.reportedOn) : undefined;\n data[\"typeId\"] = this.typeId;\n data[\"categoryLevel1Id\"] = this.categoryLevel1Id;\n data[\"categoryLevel2Id\"] = this.categoryLevel2Id;\n data[\"categoryLevel3Id\"] = this.categoryLevel3Id;\n data[\"ticketNumberExt\"] = this.ticketNumberExt;\n data[\"statusId\"] = this.statusId;\n data[\"impactId\"] = this.impactId;\n data[\"urgencyId\"] = this.urgencyId;\n data[\"effort\"] = this.effort;\n data[\"effortUnit\"] = this.effortUnit;\n data[\"assignedGroupId\"] = this.assignedGroupId;\n data[\"expectedResolutionDate\"] = this.expectedResolutionDate ? formatDate(this.expectedResolutionDate) : undefined;\n data[\"environmentId\"] = this.environmentId;\n data[\"scheduleId\"] = this.scheduleId;\n data[\"assignedToUserId\"] = this.assignedToUserId;\n data[\"parentTicketId\"] = this.parentTicketId;\n data[\"changeRequestIdsDelta\"] = this.changeRequestIdsDelta ? this.changeRequestIdsDelta.toJSON() : undefined;\n data[\"testPlanIdsDelta\"] = this.testPlanIdsDelta ? this.testPlanIdsDelta.toJSON() : undefined;\n data[\"timesheetsDelta\"] = this.timesheetsDelta ? this.timesheetsDelta.toJSON() : undefined;\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IInsertTicketRequest {\n name: string;\n description?: string | undefined;\n projectId: number;\n reportedBy: string;\n reportedOn?: Date | undefined;\n typeId: number;\n categoryLevel1Id: number;\n categoryLevel2Id?: number | undefined;\n categoryLevel3Id?: number | undefined;\n ticketNumberExt?: string | undefined;\n statusId: number;\n impactId: number;\n urgencyId: number;\n effort?: number | undefined;\n effortUnit?: TimeMeasureEnum;\n assignedGroupId?: number | undefined;\n expectedResolutionDate?: Date | undefined;\n environmentId?: number | undefined;\n scheduleId?: number | undefined;\n assignedToUserId: number;\n parentTicketId?: number | undefined;\n changeRequestIdsDelta?: Int32Int32Int32DeltaModel;\n testPlanIdsDelta?: Int32Int32Int32DeltaModel;\n timesheetsDelta?: InsertTicketTimesheetRequestUpdateTicketTimesheetRequestInt32DeltaModel;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n}\n\nexport class InsertTicketTimesheetRequest implements IInsertTicketTimesheetRequest {\n date!: Date;\n effort!: number;\n estimatedTime?: number | undefined;\n\n constructor(data?: IInsertTicketTimesheetRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.effort = _data[\"effort\"];\n this.estimatedTime = _data[\"estimatedTime\"];\n }\n }\n\n static fromJS(data: any): InsertTicketTimesheetRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertTicketTimesheetRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n data[\"effort\"] = this.effort;\n data[\"estimatedTime\"] = this.estimatedTime;\n return data;\n }\n}\n\nexport interface IInsertTicketTimesheetRequest {\n date: Date;\n effort: number;\n estimatedTime?: number | undefined;\n}\n\nexport class InsertTicketTimesheetRequestUpdateTicketTimesheetRequestInt32DeltaModel implements IInsertTicketTimesheetRequestUpdateTicketTimesheetRequestInt32DeltaModel {\n insert?: InsertTicketTimesheetRequest[] | undefined;\n update?: UpdateTicketTimesheetRequest[] | undefined;\n delete?: number[] | undefined;\n\n constructor(data?: IInsertTicketTimesheetRequestUpdateTicketTimesheetRequestInt32DeltaModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertTicketTimesheetRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateTicketTimesheetRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(item);\n }\n }\n }\n\n static fromJS(data: any): InsertTicketTimesheetRequestUpdateTicketTimesheetRequestInt32DeltaModel {\n data = typeof data === 'object' ? data : {};\n let result = new InsertTicketTimesheetRequestUpdateTicketTimesheetRequestInt32DeltaModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IInsertTicketTimesheetRequestUpdateTicketTimesheetRequestInt32DeltaModel {\n insert?: InsertTicketTimesheetRequest[] | undefined;\n update?: UpdateTicketTimesheetRequest[] | undefined;\n delete?: number[] | undefined;\n}\n\nexport class InsertTimesheetRequest implements IInsertTimesheetRequest {\n date!: Date;\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n effort!: number;\n description?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n customText3?: string | undefined;\n changeRequestId?: number | undefined;\n ticketId?: number | undefined;\n taskId?: number | undefined;\n scheduleId?: number | undefined;\n\n constructor(data?: IInsertTimesheetRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.effort = _data[\"effort\"];\n this.description = _data[\"description\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.customText3 = _data[\"customText3\"];\n this.changeRequestId = _data[\"changeRequestId\"];\n this.ticketId = _data[\"ticketId\"];\n this.taskId = _data[\"taskId\"];\n this.scheduleId = _data[\"scheduleId\"];\n }\n }\n\n static fromJS(data: any): InsertTimesheetRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertTimesheetRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"effort\"] = this.effort;\n data[\"description\"] = this.description;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"customText3\"] = this.customText3;\n data[\"changeRequestId\"] = this.changeRequestId;\n data[\"ticketId\"] = this.ticketId;\n data[\"taskId\"] = this.taskId;\n data[\"scheduleId\"] = this.scheduleId;\n return data;\n }\n}\n\nexport interface IInsertTimesheetRequest {\n date: Date;\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n effort: number;\n description?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n customText3?: string | undefined;\n changeRequestId?: number | undefined;\n ticketId?: number | undefined;\n taskId?: number | undefined;\n scheduleId?: number | undefined;\n}\n\nexport class InsertTrainingCycleRequest implements IInsertTrainingCycleRequest {\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n\n constructor(data?: IInsertTrainingCycleRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n }\n }\n\n static fromJS(data: any): InsertTrainingCycleRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertTrainingCycleRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n return data;\n }\n}\n\nexport interface IInsertTrainingCycleRequest {\n name: string;\n description?: string | undefined;\n isActive: boolean;\n}\n\nexport class InsertTravelExpenseItemRequest implements IInsertTravelExpenseItemRequest {\n costTypeId!: number;\n amountProjectCurrency!: number;\n receiptCurrencyId?: number | undefined;\n amountReceiptCurrency?: number | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n\n constructor(data?: IInsertTravelExpenseItemRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.costTypeId = _data[\"costTypeId\"];\n this.amountProjectCurrency = _data[\"amountProjectCurrency\"];\n this.receiptCurrencyId = _data[\"receiptCurrencyId\"];\n this.amountReceiptCurrency = _data[\"amountReceiptCurrency\"];\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): InsertTravelExpenseItemRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertTravelExpenseItemRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"costTypeId\"] = this.costTypeId;\n data[\"amountProjectCurrency\"] = this.amountProjectCurrency;\n data[\"receiptCurrencyId\"] = this.receiptCurrencyId;\n data[\"amountReceiptCurrency\"] = this.amountReceiptCurrency;\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IInsertTravelExpenseItemRequest {\n costTypeId: number;\n amountProjectCurrency: number;\n receiptCurrencyId?: number | undefined;\n amountReceiptCurrency?: number | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n}\n\nexport class InsertTravelExpenseItemRequestUpdateTravelExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel implements IInsertTravelExpenseItemRequestUpdateTravelExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel {\n insert?: InsertTravelExpenseItemRequest[] | undefined;\n update?: UpdateTravelExpenseItemRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n\n constructor(data?: IInsertTravelExpenseItemRequestUpdateTravelExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertTravelExpenseItemRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateTravelExpenseItemRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteTenantIndetifyRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): InsertTravelExpenseItemRequestUpdateTravelExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel {\n data = typeof data === 'object' ? data : {};\n let result = new InsertTravelExpenseItemRequestUpdateTravelExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IInsertTravelExpenseItemRequestUpdateTravelExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel {\n insert?: InsertTravelExpenseItemRequest[] | undefined;\n update?: UpdateTravelExpenseItemRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n}\n\nexport class InsertTravelExpenseRequest implements IInsertTravelExpenseRequest {\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n description!: string;\n customText1?: string | undefined;\n customText2?: string | undefined;\n isRelease!: boolean;\n travelRequestId?: number | undefined;\n destinationCountryId!: number;\n destinationCity!: string;\n estimatedCosts?: number | undefined;\n advancePayment?: number | undefined;\n freeMeals!: boolean;\n freeAccommodation!: boolean;\n travelBy!: TravelByEnum;\n regNumber?: string | undefined;\n distance?: string | undefined;\n startKilemeter?: string | undefined;\n endKilometer?: string | undefined;\n leaveDepartureDate!: Date;\n leaveDepartureTime!: number;\n leaveBorderCrossDate?: Date | undefined;\n leaveBorderCrossTime?: number | undefined;\n leaveArrivalDate?: Date | undefined;\n leaveArrivalTime?: number | undefined;\n returnDepartureDate?: Date | undefined;\n returnDepartureTime?: number | undefined;\n returnBorderCrossDate?: Date | undefined;\n returnBorderCrossTime?: number | undefined;\n returnArrivalDate!: Date;\n returnArrivalTime!: number;\n newTravelExpenses?: InsertTravelExpenseItemRequest[] | undefined;\n\n constructor(data?: IInsertTravelExpenseRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.description = _data[\"description\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.isRelease = _data[\"isRelease\"];\n this.travelRequestId = _data[\"travelRequestId\"];\n this.destinationCountryId = _data[\"destinationCountryId\"];\n this.destinationCity = _data[\"destinationCity\"];\n this.estimatedCosts = _data[\"estimatedCosts\"];\n this.advancePayment = _data[\"advancePayment\"];\n this.freeMeals = _data[\"freeMeals\"];\n this.freeAccommodation = _data[\"freeAccommodation\"];\n this.travelBy = _data[\"travelBy\"];\n this.regNumber = _data[\"regNumber\"];\n this.distance = _data[\"distance\"];\n this.startKilemeter = _data[\"startKilemeter\"];\n this.endKilometer = _data[\"endKilometer\"];\n this.leaveDepartureDate = _data[\"leaveDepartureDate\"] ? new Date(_data[\"leaveDepartureDate\"].toString()) : undefined;\n this.leaveDepartureTime = _data[\"leaveDepartureTime\"];\n this.leaveBorderCrossDate = _data[\"leaveBorderCrossDate\"] ? new Date(_data[\"leaveBorderCrossDate\"].toString()) : undefined;\n this.leaveBorderCrossTime = _data[\"leaveBorderCrossTime\"];\n this.leaveArrivalDate = _data[\"leaveArrivalDate\"] ? new Date(_data[\"leaveArrivalDate\"].toString()) : undefined;\n this.leaveArrivalTime = _data[\"leaveArrivalTime\"];\n this.returnDepartureDate = _data[\"returnDepartureDate\"] ? new Date(_data[\"returnDepartureDate\"].toString()) : undefined;\n this.returnDepartureTime = _data[\"returnDepartureTime\"];\n this.returnBorderCrossDate = _data[\"returnBorderCrossDate\"] ? new Date(_data[\"returnBorderCrossDate\"].toString()) : undefined;\n this.returnBorderCrossTime = _data[\"returnBorderCrossTime\"];\n this.returnArrivalDate = _data[\"returnArrivalDate\"] ? new Date(_data[\"returnArrivalDate\"].toString()) : undefined;\n this.returnArrivalTime = _data[\"returnArrivalTime\"];\n if (Array.isArray(_data[\"newTravelExpenses\"])) {\n this.newTravelExpenses = [] as any;\n for (let item of _data[\"newTravelExpenses\"])\n this.newTravelExpenses!.push(InsertTravelExpenseItemRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): InsertTravelExpenseRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertTravelExpenseRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"description\"] = this.description;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"isRelease\"] = this.isRelease;\n data[\"travelRequestId\"] = this.travelRequestId;\n data[\"destinationCountryId\"] = this.destinationCountryId;\n data[\"destinationCity\"] = this.destinationCity;\n data[\"estimatedCosts\"] = this.estimatedCosts;\n data[\"advancePayment\"] = this.advancePayment;\n data[\"freeMeals\"] = this.freeMeals;\n data[\"freeAccommodation\"] = this.freeAccommodation;\n data[\"travelBy\"] = this.travelBy;\n data[\"regNumber\"] = this.regNumber;\n data[\"distance\"] = this.distance;\n data[\"startKilemeter\"] = this.startKilemeter;\n data[\"endKilometer\"] = this.endKilometer;\n data[\"leaveDepartureDate\"] = this.leaveDepartureDate ? formatDate(this.leaveDepartureDate) : undefined;\n data[\"leaveDepartureTime\"] = this.leaveDepartureTime;\n data[\"leaveBorderCrossDate\"] = this.leaveBorderCrossDate ? formatDate(this.leaveBorderCrossDate) : undefined;\n data[\"leaveBorderCrossTime\"] = this.leaveBorderCrossTime;\n data[\"leaveArrivalDate\"] = this.leaveArrivalDate ? formatDate(this.leaveArrivalDate) : undefined;\n data[\"leaveArrivalTime\"] = this.leaveArrivalTime;\n data[\"returnDepartureDate\"] = this.returnDepartureDate ? formatDate(this.returnDepartureDate) : undefined;\n data[\"returnDepartureTime\"] = this.returnDepartureTime;\n data[\"returnBorderCrossDate\"] = this.returnBorderCrossDate ? formatDate(this.returnBorderCrossDate) : undefined;\n data[\"returnBorderCrossTime\"] = this.returnBorderCrossTime;\n data[\"returnArrivalDate\"] = this.returnArrivalDate ? formatDate(this.returnArrivalDate) : undefined;\n data[\"returnArrivalTime\"] = this.returnArrivalTime;\n if (Array.isArray(this.newTravelExpenses)) {\n data[\"newTravelExpenses\"] = [];\n for (let item of this.newTravelExpenses)\n data[\"newTravelExpenses\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IInsertTravelExpenseRequest {\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n description: string;\n customText1?: string | undefined;\n customText2?: string | undefined;\n isRelease: boolean;\n travelRequestId?: number | undefined;\n destinationCountryId: number;\n destinationCity: string;\n estimatedCosts?: number | undefined;\n advancePayment?: number | undefined;\n freeMeals: boolean;\n freeAccommodation: boolean;\n travelBy: TravelByEnum;\n regNumber?: string | undefined;\n distance?: string | undefined;\n startKilemeter?: string | undefined;\n endKilometer?: string | undefined;\n leaveDepartureDate: Date;\n leaveDepartureTime: number;\n leaveBorderCrossDate?: Date | undefined;\n leaveBorderCrossTime?: number | undefined;\n leaveArrivalDate?: Date | undefined;\n leaveArrivalTime?: number | undefined;\n returnDepartureDate?: Date | undefined;\n returnDepartureTime?: number | undefined;\n returnBorderCrossDate?: Date | undefined;\n returnBorderCrossTime?: number | undefined;\n returnArrivalDate: Date;\n returnArrivalTime: number;\n newTravelExpenses?: InsertTravelExpenseItemRequest[] | undefined;\n}\n\nexport class InsertTravelRequestRequest implements IInsertTravelRequestRequest {\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n description!: string;\n customText1?: string | undefined;\n customText2?: string | undefined;\n isRelease!: boolean;\n departure!: Date;\n return!: Date;\n destinationCountryId!: number;\n destinationCity!: string;\n estimatedCosts!: number;\n advancePayment?: number | undefined;\n freeMeals!: boolean;\n freeAccommodation!: boolean;\n travelBy!: TravelByEnum;\n\n constructor(data?: IInsertTravelRequestRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.description = _data[\"description\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.isRelease = _data[\"isRelease\"];\n this.departure = _data[\"departure\"] ? new Date(_data[\"departure\"].toString()) : undefined;\n this.return = _data[\"return\"] ? new Date(_data[\"return\"].toString()) : undefined;\n this.destinationCountryId = _data[\"destinationCountryId\"];\n this.destinationCity = _data[\"destinationCity\"];\n this.estimatedCosts = _data[\"estimatedCosts\"];\n this.advancePayment = _data[\"advancePayment\"];\n this.freeMeals = _data[\"freeMeals\"];\n this.freeAccommodation = _data[\"freeAccommodation\"];\n this.travelBy = _data[\"travelBy\"];\n }\n }\n\n static fromJS(data: any): InsertTravelRequestRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertTravelRequestRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"description\"] = this.description;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"isRelease\"] = this.isRelease;\n data[\"departure\"] = this.departure ? formatDate(this.departure) : undefined;\n data[\"return\"] = this.return ? formatDate(this.return) : undefined;\n data[\"destinationCountryId\"] = this.destinationCountryId;\n data[\"destinationCity\"] = this.destinationCity;\n data[\"estimatedCosts\"] = this.estimatedCosts;\n data[\"advancePayment\"] = this.advancePayment;\n data[\"freeMeals\"] = this.freeMeals;\n data[\"freeAccommodation\"] = this.freeAccommodation;\n data[\"travelBy\"] = this.travelBy;\n return data;\n }\n}\n\nexport interface IInsertTravelRequestRequest {\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n description: string;\n customText1?: string | undefined;\n customText2?: string | undefined;\n isRelease: boolean;\n departure: Date;\n return: Date;\n destinationCountryId: number;\n destinationCity: string;\n estimatedCosts: number;\n advancePayment?: number | undefined;\n freeMeals: boolean;\n freeAccommodation: boolean;\n travelBy: TravelByEnum;\n}\n\nexport class InsertUpdateUserTableViewConfigRequest implements IInsertUpdateUserTableViewConfigRequest {\n viewType!: string;\n content!: any;\n\n constructor(data?: IInsertUpdateUserTableViewConfigRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.viewType = _data[\"viewType\"];\n this.content = _data[\"content\"];\n }\n }\n\n static fromJS(data: any): InsertUpdateUserTableViewConfigRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertUpdateUserTableViewConfigRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"viewType\"] = this.viewType;\n data[\"content\"] = this.content;\n return data;\n }\n}\n\nexport interface IInsertUpdateUserTableViewConfigRequest {\n viewType: string;\n content: any;\n}\n\nexport class InsertUserRequestModel implements IInsertUserRequestModel {\n firstName!: string;\n lastName!: string;\n birthDate?: Date | undefined;\n email!: string;\n officePhone?: string | undefined;\n mobilePhone?: string | undefined;\n address?: string | undefined;\n city?: string | undefined;\n countryId?: number | undefined;\n organizationalUnitId?: number | undefined;\n department?: string | undefined;\n isGuest!: boolean;\n username!: string;\n partnerId?: number | undefined;\n\n constructor(data?: IInsertUserRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.firstName = _data[\"firstName\"];\n this.lastName = _data[\"lastName\"];\n this.birthDate = _data[\"birthDate\"] ? new Date(_data[\"birthDate\"].toString()) : undefined;\n this.email = _data[\"email\"];\n this.officePhone = _data[\"officePhone\"];\n this.mobilePhone = _data[\"mobilePhone\"];\n this.address = _data[\"address\"];\n this.city = _data[\"city\"];\n this.countryId = _data[\"countryId\"];\n this.organizationalUnitId = _data[\"organizationalUnitId\"];\n this.department = _data[\"department\"];\n this.isGuest = _data[\"isGuest\"];\n this.username = _data[\"username\"];\n this.partnerId = _data[\"partnerId\"];\n }\n }\n\n static fromJS(data: any): InsertUserRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new InsertUserRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"firstName\"] = this.firstName;\n data[\"lastName\"] = this.lastName;\n data[\"birthDate\"] = this.birthDate ? this.birthDate.toISOString() : undefined;\n data[\"email\"] = this.email;\n data[\"officePhone\"] = this.officePhone;\n data[\"mobilePhone\"] = this.mobilePhone;\n data[\"address\"] = this.address;\n data[\"city\"] = this.city;\n data[\"countryId\"] = this.countryId;\n data[\"organizationalUnitId\"] = this.organizationalUnitId;\n data[\"department\"] = this.department;\n data[\"isGuest\"] = this.isGuest;\n data[\"username\"] = this.username;\n data[\"partnerId\"] = this.partnerId;\n return data;\n }\n}\n\nexport interface IInsertUserRequestModel {\n firstName: string;\n lastName: string;\n birthDate?: Date | undefined;\n email: string;\n officePhone?: string | undefined;\n mobilePhone?: string | undefined;\n address?: string | undefined;\n city?: string | undefined;\n countryId?: number | undefined;\n organizationalUnitId?: number | undefined;\n department?: string | undefined;\n isGuest: boolean;\n username: string;\n partnerId?: number | undefined;\n}\n\nexport class InsertVacationRequestRequest implements IInsertVacationRequestRequest {\n from!: Date;\n to!: Date;\n note?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n isRelease!: boolean;\n\n constructor(data?: IInsertVacationRequestRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.note = _data[\"note\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.isRelease = _data[\"isRelease\"];\n }\n }\n\n static fromJS(data: any): InsertVacationRequestRequest {\n data = typeof data === 'object' ? data : {};\n let result = new InsertVacationRequestRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"note\"] = this.note;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"isRelease\"] = this.isRelease;\n return data;\n }\n}\n\nexport interface IInsertVacationRequestRequest {\n from: Date;\n to: Date;\n note?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n isRelease: boolean;\n}\n\nexport class Int32Int32Int32DeltaModel implements IInt32Int32Int32DeltaModel {\n insert?: number[] | undefined;\n update?: number[] | undefined;\n delete?: number[] | undefined;\n\n constructor(data?: IInt32Int32Int32DeltaModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(item);\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(item);\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(item);\n }\n }\n }\n\n static fromJS(data: any): Int32Int32Int32DeltaModel {\n data = typeof data === 'object' ? data : {};\n let result = new Int32Int32Int32DeltaModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item);\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item);\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IInt32Int32Int32DeltaModel {\n insert?: number[] | undefined;\n update?: number[] | undefined;\n delete?: number[] | undefined;\n}\n\nexport class IntNewOld implements IIntNewOld {\n oldValue?: number | undefined;\n newValue?: number | undefined;\n\n constructor(data?: IIntNewOld) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.oldValue = _data[\"oldValue\"];\n this.newValue = _data[\"newValue\"];\n }\n }\n\n static fromJS(data: any): IntNewOld {\n data = typeof data === 'object' ? data : {};\n let result = new IntNewOld();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"oldValue\"] = this.oldValue;\n data[\"newValue\"] = this.newValue;\n return data;\n }\n}\n\nexport interface IIntNewOld {\n oldValue?: number | undefined;\n newValue?: number | undefined;\n}\n\nexport class InvoiceCountsResponse implements IInvoiceCountsResponse {\n amountSum!: number;\n taxAmountSum!: number;\n totalAmountSum!: number;\n localCurrencyAmountSum?: number | undefined;\n localCurrencyTaxAmountSum?: number | undefined;\n localCurrencyTotalAmountSum?: number | undefined;\n\n constructor(data?: IInvoiceCountsResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.amountSum = _data[\"amountSum\"];\n this.taxAmountSum = _data[\"taxAmountSum\"];\n this.totalAmountSum = _data[\"totalAmountSum\"];\n this.localCurrencyAmountSum = _data[\"localCurrencyAmountSum\"];\n this.localCurrencyTaxAmountSum = _data[\"localCurrencyTaxAmountSum\"];\n this.localCurrencyTotalAmountSum = _data[\"localCurrencyTotalAmountSum\"];\n }\n }\n\n static fromJS(data: any): InvoiceCountsResponse {\n data = typeof data === 'object' ? data : {};\n let result = new InvoiceCountsResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"amountSum\"] = this.amountSum;\n data[\"taxAmountSum\"] = this.taxAmountSum;\n data[\"totalAmountSum\"] = this.totalAmountSum;\n data[\"localCurrencyAmountSum\"] = this.localCurrencyAmountSum;\n data[\"localCurrencyTaxAmountSum\"] = this.localCurrencyTaxAmountSum;\n data[\"localCurrencyTotalAmountSum\"] = this.localCurrencyTotalAmountSum;\n return data;\n }\n}\n\nexport interface IInvoiceCountsResponse {\n amountSum: number;\n taxAmountSum: number;\n totalAmountSum: number;\n localCurrencyAmountSum?: number | undefined;\n localCurrencyTaxAmountSum?: number | undefined;\n localCurrencyTotalAmountSum?: number | undefined;\n}\n\nexport class InvoiceCountsResponseSimpleResponseModel implements IInvoiceCountsResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: InvoiceCountsResponse;\n\n constructor(data?: IInvoiceCountsResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? InvoiceCountsResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): InvoiceCountsResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new InvoiceCountsResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IInvoiceCountsResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: InvoiceCountsResponse;\n}\n\nexport class InvoiceItemResponse implements IInvoiceItemResponse {\n id!: number;\n description!: string;\n amount!: number;\n taxAmount!: number;\n readonly totalAmount!: number;\n localCurrencyAmount?: number | undefined;\n localCurrencyTaxAmount?: number | undefined;\n readonly totalLocalCurrencyAmount?: number | undefined;\n\n constructor(data?: IInvoiceItemResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.description = _data[\"description\"];\n this.amount = _data[\"amount\"];\n this.taxAmount = _data[\"taxAmount\"];\n (this).totalAmount = _data[\"totalAmount\"];\n this.localCurrencyAmount = _data[\"localCurrencyAmount\"];\n this.localCurrencyTaxAmount = _data[\"localCurrencyTaxAmount\"];\n (this).totalLocalCurrencyAmount = _data[\"totalLocalCurrencyAmount\"];\n }\n }\n\n static fromJS(data: any): InvoiceItemResponse {\n data = typeof data === 'object' ? data : {};\n let result = new InvoiceItemResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"description\"] = this.description;\n data[\"amount\"] = this.amount;\n data[\"taxAmount\"] = this.taxAmount;\n data[\"totalAmount\"] = this.totalAmount;\n data[\"localCurrencyAmount\"] = this.localCurrencyAmount;\n data[\"localCurrencyTaxAmount\"] = this.localCurrencyTaxAmount;\n data[\"totalLocalCurrencyAmount\"] = this.totalLocalCurrencyAmount;\n return data;\n }\n}\n\nexport interface IInvoiceItemResponse {\n id: number;\n description: string;\n amount: number;\n taxAmount: number;\n totalAmount: number;\n localCurrencyAmount?: number | undefined;\n localCurrencyTaxAmount?: number | undefined;\n totalLocalCurrencyAmount?: number | undefined;\n}\n\nexport class InvoiceResponse implements IInvoiceResponse {\n id!: number;\n projectId!: number;\n partnerId!: number;\n invoiceNumber!: string;\n description?: string | undefined;\n invoiceType!: InvoiceTypeEnum;\n issueDate!: Date;\n due!: Date;\n overdueDays?: number | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n excludeFromBudget!: boolean;\n amount!: number;\n taxAmount!: number;\n readonly totalAmount!: number;\n localCurrencyId?: number | undefined;\n localCurrencyAmount?: number | undefined;\n localCurrencyTaxAmount?: number | undefined;\n readonly totalLocalCurrencyAmount?: number | undefined;\n comment?: string | undefined;\n changeRequestId?: number | undefined;\n statusId!: number;\n financeCategoryId!: number;\n invoiceItems?: InvoiceItemResponse[] | undefined;\n attachments?: AttachmentResponse[] | undefined;\n\n constructor(data?: IInvoiceResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.projectId = _data[\"projectId\"];\n this.partnerId = _data[\"partnerId\"];\n this.invoiceNumber = _data[\"invoiceNumber\"];\n this.description = _data[\"description\"];\n this.invoiceType = _data[\"invoiceType\"];\n this.issueDate = _data[\"issueDate\"] ? new Date(_data[\"issueDate\"].toString()) : undefined;\n this.due = _data[\"due\"] ? new Date(_data[\"due\"].toString()) : undefined;\n this.overdueDays = _data[\"overdueDays\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.excludeFromBudget = _data[\"excludeFromBudget\"];\n this.amount = _data[\"amount\"];\n this.taxAmount = _data[\"taxAmount\"];\n (this).totalAmount = _data[\"totalAmount\"];\n this.localCurrencyId = _data[\"localCurrencyId\"];\n this.localCurrencyAmount = _data[\"localCurrencyAmount\"];\n this.localCurrencyTaxAmount = _data[\"localCurrencyTaxAmount\"];\n (this).totalLocalCurrencyAmount = _data[\"totalLocalCurrencyAmount\"];\n this.comment = _data[\"comment\"];\n this.changeRequestId = _data[\"changeRequestId\"];\n this.statusId = _data[\"statusId\"];\n this.financeCategoryId = _data[\"financeCategoryId\"];\n if (Array.isArray(_data[\"invoiceItems\"])) {\n this.invoiceItems = [] as any;\n for (let item of _data[\"invoiceItems\"])\n this.invoiceItems!.push(InvoiceItemResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"attachments\"])) {\n this.attachments = [] as any;\n for (let item of _data[\"attachments\"])\n this.attachments!.push(AttachmentResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): InvoiceResponse {\n data = typeof data === 'object' ? data : {};\n let result = new InvoiceResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"projectId\"] = this.projectId;\n data[\"partnerId\"] = this.partnerId;\n data[\"invoiceNumber\"] = this.invoiceNumber;\n data[\"description\"] = this.description;\n data[\"invoiceType\"] = this.invoiceType;\n data[\"issueDate\"] = this.issueDate ? formatDate(this.issueDate) : undefined;\n data[\"due\"] = this.due ? formatDate(this.due) : undefined;\n data[\"overdueDays\"] = this.overdueDays;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"excludeFromBudget\"] = this.excludeFromBudget;\n data[\"amount\"] = this.amount;\n data[\"taxAmount\"] = this.taxAmount;\n data[\"totalAmount\"] = this.totalAmount;\n data[\"localCurrencyId\"] = this.localCurrencyId;\n data[\"localCurrencyAmount\"] = this.localCurrencyAmount;\n data[\"localCurrencyTaxAmount\"] = this.localCurrencyTaxAmount;\n data[\"totalLocalCurrencyAmount\"] = this.totalLocalCurrencyAmount;\n data[\"comment\"] = this.comment;\n data[\"changeRequestId\"] = this.changeRequestId;\n data[\"statusId\"] = this.statusId;\n data[\"financeCategoryId\"] = this.financeCategoryId;\n if (Array.isArray(this.invoiceItems)) {\n data[\"invoiceItems\"] = [];\n for (let item of this.invoiceItems)\n data[\"invoiceItems\"].push(item.toJSON());\n }\n if (Array.isArray(this.attachments)) {\n data[\"attachments\"] = [];\n for (let item of this.attachments)\n data[\"attachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IInvoiceResponse {\n id: number;\n projectId: number;\n partnerId: number;\n invoiceNumber: string;\n description?: string | undefined;\n invoiceType: InvoiceTypeEnum;\n issueDate: Date;\n due: Date;\n overdueDays?: number | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n excludeFromBudget: boolean;\n amount: number;\n taxAmount: number;\n totalAmount: number;\n localCurrencyId?: number | undefined;\n localCurrencyAmount?: number | undefined;\n localCurrencyTaxAmount?: number | undefined;\n totalLocalCurrencyAmount?: number | undefined;\n comment?: string | undefined;\n changeRequestId?: number | undefined;\n statusId: number;\n financeCategoryId: number;\n invoiceItems?: InvoiceItemResponse[] | undefined;\n attachments?: AttachmentResponse[] | undefined;\n}\n\nexport class InvoiceResponseItemsResponseModel implements IInvoiceResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: InvoiceResponse[] | undefined;\n\n constructor(data?: IInvoiceResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(InvoiceResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): InvoiceResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new InvoiceResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IInvoiceResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: InvoiceResponse[] | undefined;\n}\n\nexport class InvoiceResponseSimpleResponseModel implements IInvoiceResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: InvoiceResponse;\n\n constructor(data?: IInvoiceResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? InvoiceResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): InvoiceResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new InvoiceResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IInvoiceResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: InvoiceResponse;\n}\n\nexport enum InvoiceStatusEnum {\n Planned = \"Planned\",\n IssuedReceived = \"IssuedReceived\",\n Paid = \"Paid\",\n}\n\nexport class InvoiceStatusResponse implements IInvoiceStatusResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n isReadonly!: boolean;\n color!: string;\n isInitial!: boolean;\n nextStates?: number[] | undefined;\n semantics!: InvoiceStatusEnum;\n\n constructor(data?: IInvoiceStatusResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.isReadonly = _data[\"isReadonly\"];\n this.color = _data[\"color\"];\n this.isInitial = _data[\"isInitial\"];\n if (Array.isArray(_data[\"nextStates\"])) {\n this.nextStates = [] as any;\n for (let item of _data[\"nextStates\"])\n this.nextStates!.push(item);\n }\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): InvoiceStatusResponse {\n data = typeof data === 'object' ? data : {};\n let result = new InvoiceStatusResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"isReadonly\"] = this.isReadonly;\n data[\"color\"] = this.color;\n data[\"isInitial\"] = this.isInitial;\n if (Array.isArray(this.nextStates)) {\n data[\"nextStates\"] = [];\n for (let item of this.nextStates)\n data[\"nextStates\"].push(item);\n }\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface IInvoiceStatusResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n isReadonly: boolean;\n color: string;\n isInitial: boolean;\n nextStates?: number[] | undefined;\n semantics: InvoiceStatusEnum;\n}\n\nexport class InvoiceStatusResponseItemsResponseModel implements IInvoiceStatusResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: InvoiceStatusResponse[] | undefined;\n\n constructor(data?: IInvoiceStatusResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(InvoiceStatusResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): InvoiceStatusResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new InvoiceStatusResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IInvoiceStatusResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: InvoiceStatusResponse[] | undefined;\n}\n\nexport enum InvoiceTypeEnum {\n Incoming = \"Incoming\",\n Outgoing = \"Outgoing\",\n}\n\nexport enum LanguagesEnum {\n English = \"English\",\n Serbian = \"Serbian\",\n}\n\nexport class LoginRequestModel implements ILoginRequestModel {\n username?: string | undefined;\n email?: string | undefined;\n domian!: string;\n password?: string | undefined;\n language!: LanguagesEnum;\n\n constructor(data?: ILoginRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.username = _data[\"username\"];\n this.email = _data[\"email\"];\n this.domian = _data[\"domian\"];\n this.password = _data[\"password\"];\n this.language = _data[\"language\"];\n }\n }\n\n static fromJS(data: any): LoginRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new LoginRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"username\"] = this.username;\n data[\"email\"] = this.email;\n data[\"domian\"] = this.domian;\n data[\"password\"] = this.password;\n data[\"language\"] = this.language;\n return data;\n }\n}\n\nexport interface ILoginRequestModel {\n username?: string | undefined;\n email?: string | undefined;\n domian: string;\n password?: string | undefined;\n language: LanguagesEnum;\n}\n\nexport class MeetingCommentResponse implements IMeetingCommentResponse {\n id!: number;\n meetingId!: number;\n comment?: string | undefined;\n userId!: number;\n createdOn!: Date;\n meetingTopicId!: number;\n meetingTopicType!: MeetingTopicTypeEnum;\n\n constructor(data?: IMeetingCommentResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.meetingId = _data[\"meetingId\"];\n this.comment = _data[\"comment\"];\n this.userId = _data[\"userId\"];\n this.createdOn = _data[\"createdOn\"] ? new Date(_data[\"createdOn\"].toString()) : undefined;\n this.meetingTopicId = _data[\"meetingTopicId\"];\n this.meetingTopicType = _data[\"meetingTopicType\"];\n }\n }\n\n static fromJS(data: any): MeetingCommentResponse {\n data = typeof data === 'object' ? data : {};\n let result = new MeetingCommentResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"meetingId\"] = this.meetingId;\n data[\"comment\"] = this.comment;\n data[\"userId\"] = this.userId;\n data[\"createdOn\"] = this.createdOn ? this.createdOn.toISOString() : undefined;\n data[\"meetingTopicId\"] = this.meetingTopicId;\n data[\"meetingTopicType\"] = this.meetingTopicType;\n return data;\n }\n}\n\nexport interface IMeetingCommentResponse {\n id: number;\n meetingId: number;\n comment?: string | undefined;\n userId: number;\n createdOn: Date;\n meetingTopicId: number;\n meetingTopicType: MeetingTopicTypeEnum;\n}\n\nexport class MeetingCommentResponseSimpleResponseModel implements IMeetingCommentResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: MeetingCommentResponse;\n\n constructor(data?: IMeetingCommentResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? MeetingCommentResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): MeetingCommentResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new MeetingCommentResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IMeetingCommentResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: MeetingCommentResponse;\n}\n\nexport class MeetingDecisionResponse implements IMeetingDecisionResponse {\n id!: number;\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n meetingId!: number;\n description!: string;\n subject!: string;\n userId!: number;\n meetingTypeId?: number | undefined;\n statusId!: number;\n date!: Date;\n\n constructor(data?: IMeetingDecisionResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.meetingId = _data[\"meetingId\"];\n this.description = _data[\"description\"];\n this.subject = _data[\"subject\"];\n this.userId = _data[\"userId\"];\n this.meetingTypeId = _data[\"meetingTypeId\"];\n this.statusId = _data[\"statusId\"];\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): MeetingDecisionResponse {\n data = typeof data === 'object' ? data : {};\n let result = new MeetingDecisionResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"meetingId\"] = this.meetingId;\n data[\"description\"] = this.description;\n data[\"subject\"] = this.subject;\n data[\"userId\"] = this.userId;\n data[\"meetingTypeId\"] = this.meetingTypeId;\n data[\"statusId\"] = this.statusId;\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n return data;\n }\n}\n\nexport interface IMeetingDecisionResponse {\n id: number;\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n meetingId: number;\n description: string;\n subject: string;\n userId: number;\n meetingTypeId?: number | undefined;\n statusId: number;\n date: Date;\n}\n\nexport class MeetingDecisionResponseItemsResponseModel implements IMeetingDecisionResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: MeetingDecisionResponse[] | undefined;\n\n constructor(data?: IMeetingDecisionResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(MeetingDecisionResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): MeetingDecisionResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new MeetingDecisionResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IMeetingDecisionResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: MeetingDecisionResponse[] | undefined;\n}\n\nexport class MeetingGeneralConfigResponse implements IMeetingGeneralConfigResponse {\n id!: number;\n notifyWhenReleased!: boolean;\n enableEmailNotifications!: boolean;\n\n constructor(data?: IMeetingGeneralConfigResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.notifyWhenReleased = _data[\"notifyWhenReleased\"];\n this.enableEmailNotifications = _data[\"enableEmailNotifications\"];\n }\n }\n\n static fromJS(data: any): MeetingGeneralConfigResponse {\n data = typeof data === 'object' ? data : {};\n let result = new MeetingGeneralConfigResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"notifyWhenReleased\"] = this.notifyWhenReleased;\n data[\"enableEmailNotifications\"] = this.enableEmailNotifications;\n return data;\n }\n}\n\nexport interface IMeetingGeneralConfigResponse {\n id: number;\n notifyWhenReleased: boolean;\n enableEmailNotifications: boolean;\n}\n\nexport class MeetingGeneralConfigResponseSimpleResponseModel implements IMeetingGeneralConfigResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: MeetingGeneralConfigResponse;\n\n constructor(data?: IMeetingGeneralConfigResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? MeetingGeneralConfigResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): MeetingGeneralConfigResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new MeetingGeneralConfigResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IMeetingGeneralConfigResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: MeetingGeneralConfigResponse;\n}\n\nexport class MeetingResponse implements IMeetingResponse {\n id!: number;\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n subject!: string;\n userId!: number;\n location?: string | undefined;\n duration?: number | undefined;\n starts!: Date;\n ends!: Date;\n agenda!: string;\n additionallParticipants?: string | undefined;\n isPrivate!: boolean;\n statusId!: number;\n meetingTypeId?: number | undefined;\n projectTeamId?: number | undefined;\n participantUserIds?: number[] | undefined;\n topics?: MeetingTopicResponse[] | undefined;\n attachments?: AttachmentResponse[] | undefined;\n\n constructor(data?: IMeetingResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.subject = _data[\"subject\"];\n this.userId = _data[\"userId\"];\n this.location = _data[\"location\"];\n this.duration = _data[\"duration\"];\n this.starts = _data[\"starts\"] ? new Date(_data[\"starts\"].toString()) : undefined;\n this.ends = _data[\"ends\"] ? new Date(_data[\"ends\"].toString()) : undefined;\n this.agenda = _data[\"agenda\"];\n this.additionallParticipants = _data[\"additionallParticipants\"];\n this.isPrivate = _data[\"isPrivate\"];\n this.statusId = _data[\"statusId\"];\n this.meetingTypeId = _data[\"meetingTypeId\"];\n this.projectTeamId = _data[\"projectTeamId\"];\n if (Array.isArray(_data[\"participantUserIds\"])) {\n this.participantUserIds = [] as any;\n for (let item of _data[\"participantUserIds\"])\n this.participantUserIds!.push(item);\n }\n if (Array.isArray(_data[\"topics\"])) {\n this.topics = [] as any;\n for (let item of _data[\"topics\"])\n this.topics!.push(MeetingTopicResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"attachments\"])) {\n this.attachments = [] as any;\n for (let item of _data[\"attachments\"])\n this.attachments!.push(AttachmentResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): MeetingResponse {\n data = typeof data === 'object' ? data : {};\n let result = new MeetingResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"subject\"] = this.subject;\n data[\"userId\"] = this.userId;\n data[\"location\"] = this.location;\n data[\"duration\"] = this.duration;\n data[\"starts\"] = this.starts ? this.starts.toISOString() : undefined;\n data[\"ends\"] = this.ends ? this.ends.toISOString() : undefined;\n data[\"agenda\"] = this.agenda;\n data[\"additionallParticipants\"] = this.additionallParticipants;\n data[\"isPrivate\"] = this.isPrivate;\n data[\"statusId\"] = this.statusId;\n data[\"meetingTypeId\"] = this.meetingTypeId;\n data[\"projectTeamId\"] = this.projectTeamId;\n if (Array.isArray(this.participantUserIds)) {\n data[\"participantUserIds\"] = [];\n for (let item of this.participantUserIds)\n data[\"participantUserIds\"].push(item);\n }\n if (Array.isArray(this.topics)) {\n data[\"topics\"] = [];\n for (let item of this.topics)\n data[\"topics\"].push(item.toJSON());\n }\n if (Array.isArray(this.attachments)) {\n data[\"attachments\"] = [];\n for (let item of this.attachments)\n data[\"attachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IMeetingResponse {\n id: number;\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n subject: string;\n userId: number;\n location?: string | undefined;\n duration?: number | undefined;\n starts: Date;\n ends: Date;\n agenda: string;\n additionallParticipants?: string | undefined;\n isPrivate: boolean;\n statusId: number;\n meetingTypeId?: number | undefined;\n projectTeamId?: number | undefined;\n participantUserIds?: number[] | undefined;\n topics?: MeetingTopicResponse[] | undefined;\n attachments?: AttachmentResponse[] | undefined;\n}\n\nexport class MeetingResponseItemsResponseModel implements IMeetingResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: MeetingResponse[] | undefined;\n\n constructor(data?: IMeetingResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(MeetingResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): MeetingResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new MeetingResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IMeetingResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: MeetingResponse[] | undefined;\n}\n\nexport class MeetingResponseSimpleResponseModel implements IMeetingResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: MeetingResponse;\n\n constructor(data?: IMeetingResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? MeetingResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): MeetingResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new MeetingResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IMeetingResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: MeetingResponse;\n}\n\nexport enum MeetingStatusEnum {\n Created = \"Created\",\n Released = \"Released\",\n}\n\nexport class MeetingStatusResponse implements IMeetingStatusResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n isReadonly!: boolean;\n color!: string;\n isInitial!: boolean;\n nextStates?: number[] | undefined;\n semantics!: MeetingStatusEnum;\n\n constructor(data?: IMeetingStatusResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.isReadonly = _data[\"isReadonly\"];\n this.color = _data[\"color\"];\n this.isInitial = _data[\"isInitial\"];\n if (Array.isArray(_data[\"nextStates\"])) {\n this.nextStates = [] as any;\n for (let item of _data[\"nextStates\"])\n this.nextStates!.push(item);\n }\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): MeetingStatusResponse {\n data = typeof data === 'object' ? data : {};\n let result = new MeetingStatusResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"isReadonly\"] = this.isReadonly;\n data[\"color\"] = this.color;\n data[\"isInitial\"] = this.isInitial;\n if (Array.isArray(this.nextStates)) {\n data[\"nextStates\"] = [];\n for (let item of this.nextStates)\n data[\"nextStates\"].push(item);\n }\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface IMeetingStatusResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n isReadonly: boolean;\n color: string;\n isInitial: boolean;\n nextStates?: number[] | undefined;\n semantics: MeetingStatusEnum;\n}\n\nexport class MeetingStatusResponseItemsResponseModel implements IMeetingStatusResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: MeetingStatusResponse[] | undefined;\n\n constructor(data?: IMeetingStatusResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(MeetingStatusResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): MeetingStatusResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new MeetingStatusResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IMeetingStatusResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: MeetingStatusResponse[] | undefined;\n}\n\nexport class MeetingTopicResponse implements IMeetingTopicResponse {\n id!: number;\n generatedId?: string | undefined;\n description!: string;\n order!: number;\n type!: MeetingTopicTypeEnum;\n userId?: number | undefined;\n due?: Date | undefined;\n statusId?: number | undefined;\n comments?: MeetingCommentResponse[] | undefined;\n\n constructor(data?: IMeetingTopicResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.generatedId = _data[\"generatedId\"];\n this.description = _data[\"description\"];\n this.order = _data[\"order\"];\n this.type = _data[\"type\"];\n this.userId = _data[\"userId\"];\n this.due = _data[\"due\"] ? new Date(_data[\"due\"].toString()) : undefined;\n this.statusId = _data[\"statusId\"];\n if (Array.isArray(_data[\"comments\"])) {\n this.comments = [] as any;\n for (let item of _data[\"comments\"])\n this.comments!.push(MeetingCommentResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): MeetingTopicResponse {\n data = typeof data === 'object' ? data : {};\n let result = new MeetingTopicResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"generatedId\"] = this.generatedId;\n data[\"description\"] = this.description;\n data[\"order\"] = this.order;\n data[\"type\"] = this.type;\n data[\"userId\"] = this.userId;\n data[\"due\"] = this.due ? formatDate(this.due) : undefined;\n data[\"statusId\"] = this.statusId;\n if (Array.isArray(this.comments)) {\n data[\"comments\"] = [];\n for (let item of this.comments)\n data[\"comments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IMeetingTopicResponse {\n id: number;\n generatedId?: string | undefined;\n description: string;\n order: number;\n type: MeetingTopicTypeEnum;\n userId?: number | undefined;\n due?: Date | undefined;\n statusId?: number | undefined;\n comments?: MeetingCommentResponse[] | undefined;\n}\n\nexport enum MeetingTopicTypeEnum {\n Task = \"Task\",\n Information = \"Information\",\n Decision = \"Decision\",\n}\n\nexport class MessageModel implements IMessageModel {\n message?: string | undefined;\n messageCode?: string | undefined;\n additionalInfo?: any[] | undefined;\n\n constructor(data?: IMessageModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.message = _data[\"message\"];\n this.messageCode = _data[\"messageCode\"];\n if (Array.isArray(_data[\"additionalInfo\"])) {\n this.additionalInfo = [] as any;\n for (let item of _data[\"additionalInfo\"])\n this.additionalInfo!.push(item);\n }\n }\n }\n\n static fromJS(data: any): MessageModel {\n data = typeof data === 'object' ? data : {};\n let result = new MessageModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"message\"] = this.message;\n data[\"messageCode\"] = this.messageCode;\n if (Array.isArray(this.additionalInfo)) {\n data[\"additionalInfo\"] = [];\n for (let item of this.additionalInfo)\n data[\"additionalInfo\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IMessageModel {\n message?: string | undefined;\n messageCode?: string | undefined;\n additionalInfo?: any[] | undefined;\n}\n\nexport enum MitigationTypeEnum {\n None = \"None\",\n Preventive = \"Preventive\",\n Corrective = \"Corrective\",\n}\n\nexport enum ModuleActivityEnum {\n Project = \"Project\",\n Ticket = \"Ticket\",\n Time = \"Time\",\n Risk = \"Risk\",\n Communication = \"Communication\",\n Schedule = \"Schedule\",\n Scope = \"Scope\",\n Testing = \"Testing\",\n Training = \"Training\",\n Finance = \"Finance\",\n Reporting = \"Reporting\",\n}\n\nexport enum MonthEnum {\n January = \"January\",\n February = \"February\",\n March = \"March\",\n April = \"April\",\n May = \"May\",\n June = \"June\",\n July = \"July\",\n August = \"August\",\n September = \"September\",\n October = \"October\",\n November = \"November\",\n December = \"December\",\n}\n\nexport class MyExpenseDashboardResponse implements IMyExpenseDashboardResponse {\n expensesPerStatusCounts?: { [key: string]: number; } | undefined;\n notApprovedExpenses?: TimeTravelDashboardRowResponse[] | undefined;\n\n constructor(data?: IMyExpenseDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"expensesPerStatusCounts\"]) {\n this.expensesPerStatusCounts = {} as any;\n for (let key in _data[\"expensesPerStatusCounts\"]) {\n if (_data[\"expensesPerStatusCounts\"].hasOwnProperty(key))\n (this.expensesPerStatusCounts)![key] = _data[\"expensesPerStatusCounts\"][key];\n }\n }\n if (Array.isArray(_data[\"notApprovedExpenses\"])) {\n this.notApprovedExpenses = [] as any;\n for (let item of _data[\"notApprovedExpenses\"])\n this.notApprovedExpenses!.push(TimeTravelDashboardRowResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): MyExpenseDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new MyExpenseDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.expensesPerStatusCounts) {\n data[\"expensesPerStatusCounts\"] = {};\n for (let key in this.expensesPerStatusCounts) {\n if (this.expensesPerStatusCounts.hasOwnProperty(key))\n (data[\"expensesPerStatusCounts\"])[key] = (this.expensesPerStatusCounts)[key];\n }\n }\n if (Array.isArray(this.notApprovedExpenses)) {\n data[\"notApprovedExpenses\"] = [];\n for (let item of this.notApprovedExpenses)\n data[\"notApprovedExpenses\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IMyExpenseDashboardResponse {\n expensesPerStatusCounts?: { [key: string]: number; } | undefined;\n notApprovedExpenses?: TimeTravelDashboardRowResponse[] | undefined;\n}\n\nexport class MyProfileUpdateRequestModel implements IMyProfileUpdateRequestModel {\n firstName!: string;\n lastName!: string;\n birthDate?: Date | undefined;\n email!: string;\n officePhone?: string | undefined;\n mobilePhone?: string | undefined;\n address?: string | undefined;\n city?: string | undefined;\n countryId?: number | undefined;\n organizationalUnitId?: number | undefined;\n department?: string | undefined;\n\n constructor(data?: IMyProfileUpdateRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.firstName = _data[\"firstName\"];\n this.lastName = _data[\"lastName\"];\n this.birthDate = _data[\"birthDate\"] ? new Date(_data[\"birthDate\"].toString()) : undefined;\n this.email = _data[\"email\"];\n this.officePhone = _data[\"officePhone\"];\n this.mobilePhone = _data[\"mobilePhone\"];\n this.address = _data[\"address\"];\n this.city = _data[\"city\"];\n this.countryId = _data[\"countryId\"];\n this.organizationalUnitId = _data[\"organizationalUnitId\"];\n this.department = _data[\"department\"];\n }\n }\n\n static fromJS(data: any): MyProfileUpdateRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new MyProfileUpdateRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"firstName\"] = this.firstName;\n data[\"lastName\"] = this.lastName;\n data[\"birthDate\"] = this.birthDate ? this.birthDate.toISOString() : undefined;\n data[\"email\"] = this.email;\n data[\"officePhone\"] = this.officePhone;\n data[\"mobilePhone\"] = this.mobilePhone;\n data[\"address\"] = this.address;\n data[\"city\"] = this.city;\n data[\"countryId\"] = this.countryId;\n data[\"organizationalUnitId\"] = this.organizationalUnitId;\n data[\"department\"] = this.department;\n return data;\n }\n}\n\nexport interface IMyProfileUpdateRequestModel {\n firstName: string;\n lastName: string;\n birthDate?: Date | undefined;\n email: string;\n officePhone?: string | undefined;\n mobilePhone?: string | undefined;\n address?: string | undefined;\n city?: string | undefined;\n countryId?: number | undefined;\n organizationalUnitId?: number | undefined;\n department?: string | undefined;\n}\n\nexport class MySurveyQuestionResponse implements IMySurveyQuestionResponse {\n id!: number;\n questionGroup?: string | undefined;\n question!: string;\n surveyType!: SurveyQuestionTypeEnum;\n answerRequired!: boolean;\n scoreQuestion!: boolean;\n order!: number;\n proposedAnswers?: SurveyProposedAnswerResponse[] | undefined;\n answers?: SurveyParticipantAnswerResponse[] | undefined;\n\n constructor(data?: IMySurveyQuestionResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.questionGroup = _data[\"questionGroup\"];\n this.question = _data[\"question\"];\n this.surveyType = _data[\"surveyType\"];\n this.answerRequired = _data[\"answerRequired\"];\n this.scoreQuestion = _data[\"scoreQuestion\"];\n this.order = _data[\"order\"];\n if (Array.isArray(_data[\"proposedAnswers\"])) {\n this.proposedAnswers = [] as any;\n for (let item of _data[\"proposedAnswers\"])\n this.proposedAnswers!.push(SurveyProposedAnswerResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"answers\"])) {\n this.answers = [] as any;\n for (let item of _data[\"answers\"])\n this.answers!.push(SurveyParticipantAnswerResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): MySurveyQuestionResponse {\n data = typeof data === 'object' ? data : {};\n let result = new MySurveyQuestionResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"questionGroup\"] = this.questionGroup;\n data[\"question\"] = this.question;\n data[\"surveyType\"] = this.surveyType;\n data[\"answerRequired\"] = this.answerRequired;\n data[\"scoreQuestion\"] = this.scoreQuestion;\n data[\"order\"] = this.order;\n if (Array.isArray(this.proposedAnswers)) {\n data[\"proposedAnswers\"] = [];\n for (let item of this.proposedAnswers)\n data[\"proposedAnswers\"].push(item.toJSON());\n }\n if (Array.isArray(this.answers)) {\n data[\"answers\"] = [];\n for (let item of this.answers)\n data[\"answers\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IMySurveyQuestionResponse {\n id: number;\n questionGroup?: string | undefined;\n question: string;\n surveyType: SurveyQuestionTypeEnum;\n answerRequired: boolean;\n scoreQuestion: boolean;\n order: number;\n proposedAnswers?: SurveyProposedAnswerResponse[] | undefined;\n answers?: SurveyParticipantAnswerResponse[] | undefined;\n}\n\nexport class MySurveyQuestionResponseItemsResponseModel implements IMySurveyQuestionResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: MySurveyQuestionResponse[] | undefined;\n\n constructor(data?: IMySurveyQuestionResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(MySurveyQuestionResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): MySurveyQuestionResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new MySurveyQuestionResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IMySurveyQuestionResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: MySurveyQuestionResponse[] | undefined;\n}\n\nexport class MySurveyResponse implements IMySurveyResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n surveyType!: SurveyTypeEnum;\n statusId!: number;\n\n constructor(data?: IMySurveyResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.surveyType = _data[\"surveyType\"];\n this.statusId = _data[\"statusId\"];\n }\n }\n\n static fromJS(data: any): MySurveyResponse {\n data = typeof data === 'object' ? data : {};\n let result = new MySurveyResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"surveyType\"] = this.surveyType;\n data[\"statusId\"] = this.statusId;\n return data;\n }\n}\n\nexport interface IMySurveyResponse {\n id: number;\n name: string;\n description?: string | undefined;\n surveyType: SurveyTypeEnum;\n statusId: number;\n}\n\nexport class MySurveyResponseItemsResponseModel implements IMySurveyResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: MySurveyResponse[] | undefined;\n\n constructor(data?: IMySurveyResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(MySurveyResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): MySurveyResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new MySurveyResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IMySurveyResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: MySurveyResponse[] | undefined;\n}\n\nexport class MySurveyResponseSimpleResponseModel implements IMySurveyResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: MySurveyResponse;\n\n constructor(data?: IMySurveyResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? MySurveyResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): MySurveyResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new MySurveyResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IMySurveyResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: MySurveyResponse;\n}\n\nexport class MyTestPlanResponse implements IMyTestPlanResponse {\n id!: number;\n isActive!: boolean;\n level3ProcessId?: string | undefined;\n level3ProcessName?: string | undefined;\n plannedDate?: Date | undefined;\n plannedTime?: number | undefined;\n plannedTimeTo?: number | undefined;\n duration?: number | undefined;\n comments?: string | undefined;\n processStatusId!: number;\n processTesterUserId?: number | undefined;\n complexLevel2Name?: string | undefined;\n complexLevel2Description?: string | undefined;\n isComplex!: boolean;\n stepStatusId?: number | undefined;\n stepTesterUserId?: number | undefined;\n processStepId?: string | undefined;\n processStepName?: string | undefined;\n level1Order?: number | undefined;\n level2Order?: number | undefined;\n level3Order?: number | undefined;\n level4Order?: number | undefined;\n level1Id?: number | undefined;\n level2Id?: number | undefined;\n level3Id?: number | undefined;\n level4Id?: number | undefined;\n\n constructor(data?: IMyTestPlanResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.level3ProcessId = _data[\"level3ProcessId\"];\n this.level3ProcessName = _data[\"level3ProcessName\"];\n this.plannedDate = _data[\"plannedDate\"] ? new Date(_data[\"plannedDate\"].toString()) : undefined;\n this.plannedTime = _data[\"plannedTime\"];\n this.plannedTimeTo = _data[\"plannedTimeTo\"];\n this.duration = _data[\"duration\"];\n this.comments = _data[\"comments\"];\n this.processStatusId = _data[\"processStatusId\"];\n this.processTesterUserId = _data[\"processTesterUserId\"];\n this.complexLevel2Name = _data[\"complexLevel2Name\"];\n this.complexLevel2Description = _data[\"complexLevel2Description\"];\n this.isComplex = _data[\"isComplex\"];\n this.stepStatusId = _data[\"stepStatusId\"];\n this.stepTesterUserId = _data[\"stepTesterUserId\"];\n this.processStepId = _data[\"processStepId\"];\n this.processStepName = _data[\"processStepName\"];\n this.level1Order = _data[\"level1Order\"];\n this.level2Order = _data[\"level2Order\"];\n this.level3Order = _data[\"level3Order\"];\n this.level4Order = _data[\"level4Order\"];\n this.level1Id = _data[\"level1Id\"];\n this.level2Id = _data[\"level2Id\"];\n this.level3Id = _data[\"level3Id\"];\n this.level4Id = _data[\"level4Id\"];\n }\n }\n\n static fromJS(data: any): MyTestPlanResponse {\n data = typeof data === 'object' ? data : {};\n let result = new MyTestPlanResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"level3ProcessId\"] = this.level3ProcessId;\n data[\"level3ProcessName\"] = this.level3ProcessName;\n data[\"plannedDate\"] = this.plannedDate ? this.plannedDate.toISOString() : undefined;\n data[\"plannedTime\"] = this.plannedTime;\n data[\"plannedTimeTo\"] = this.plannedTimeTo;\n data[\"duration\"] = this.duration;\n data[\"comments\"] = this.comments;\n data[\"processStatusId\"] = this.processStatusId;\n data[\"processTesterUserId\"] = this.processTesterUserId;\n data[\"complexLevel2Name\"] = this.complexLevel2Name;\n data[\"complexLevel2Description\"] = this.complexLevel2Description;\n data[\"isComplex\"] = this.isComplex;\n data[\"stepStatusId\"] = this.stepStatusId;\n data[\"stepTesterUserId\"] = this.stepTesterUserId;\n data[\"processStepId\"] = this.processStepId;\n data[\"processStepName\"] = this.processStepName;\n data[\"level1Order\"] = this.level1Order;\n data[\"level2Order\"] = this.level2Order;\n data[\"level3Order\"] = this.level3Order;\n data[\"level4Order\"] = this.level4Order;\n data[\"level1Id\"] = this.level1Id;\n data[\"level2Id\"] = this.level2Id;\n data[\"level3Id\"] = this.level3Id;\n data[\"level4Id\"] = this.level4Id;\n return data;\n }\n}\n\nexport interface IMyTestPlanResponse {\n id: number;\n isActive: boolean;\n level3ProcessId?: string | undefined;\n level3ProcessName?: string | undefined;\n plannedDate?: Date | undefined;\n plannedTime?: number | undefined;\n plannedTimeTo?: number | undefined;\n duration?: number | undefined;\n comments?: string | undefined;\n processStatusId: number;\n processTesterUserId?: number | undefined;\n complexLevel2Name?: string | undefined;\n complexLevel2Description?: string | undefined;\n isComplex: boolean;\n stepStatusId?: number | undefined;\n stepTesterUserId?: number | undefined;\n processStepId?: string | undefined;\n processStepName?: string | undefined;\n level1Order?: number | undefined;\n level2Order?: number | undefined;\n level3Order?: number | undefined;\n level4Order?: number | undefined;\n level1Id?: number | undefined;\n level2Id?: number | undefined;\n level3Id?: number | undefined;\n level4Id?: number | undefined;\n}\n\nexport class MyTestPlanResponseItemsResponseModel implements IMyTestPlanResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: MyTestPlanResponse[] | undefined;\n\n constructor(data?: IMyTestPlanResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(MyTestPlanResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): MyTestPlanResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new MyTestPlanResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IMyTestPlanResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: MyTestPlanResponse[] | undefined;\n}\n\nexport class MyTimesheetDashboardResponse implements IMyTimesheetDashboardResponse {\n timesheetsPerStatusCounts?: { [key: string]: number; } | undefined;\n notApprovedTimesheets?: TimeTravelDashboardRowResponse[] | undefined;\n timesheetHoursPerProject?: { [key: string]: number; } | undefined;\n timesheetHoursPerNonProjectCategory?: { [key: string]: number; } | undefined;\n approvedHoursPerBillability?: { [key: string]: number; } | undefined;\n totalTimesheetHours!: number;\n totalProductiveTimesheetHours!: number;\n totalNotProductiveTimesheetHours!: number;\n\n constructor(data?: IMyTimesheetDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"timesheetsPerStatusCounts\"]) {\n this.timesheetsPerStatusCounts = {} as any;\n for (let key in _data[\"timesheetsPerStatusCounts\"]) {\n if (_data[\"timesheetsPerStatusCounts\"].hasOwnProperty(key))\n (this.timesheetsPerStatusCounts)![key] = _data[\"timesheetsPerStatusCounts\"][key];\n }\n }\n if (Array.isArray(_data[\"notApprovedTimesheets\"])) {\n this.notApprovedTimesheets = [] as any;\n for (let item of _data[\"notApprovedTimesheets\"])\n this.notApprovedTimesheets!.push(TimeTravelDashboardRowResponse.fromJS(item));\n }\n if (_data[\"timesheetHoursPerProject\"]) {\n this.timesheetHoursPerProject = {} as any;\n for (let key in _data[\"timesheetHoursPerProject\"]) {\n if (_data[\"timesheetHoursPerProject\"].hasOwnProperty(key))\n (this.timesheetHoursPerProject)![key] = _data[\"timesheetHoursPerProject\"][key];\n }\n }\n if (_data[\"timesheetHoursPerNonProjectCategory\"]) {\n this.timesheetHoursPerNonProjectCategory = {} as any;\n for (let key in _data[\"timesheetHoursPerNonProjectCategory\"]) {\n if (_data[\"timesheetHoursPerNonProjectCategory\"].hasOwnProperty(key))\n (this.timesheetHoursPerNonProjectCategory)![key] = _data[\"timesheetHoursPerNonProjectCategory\"][key];\n }\n }\n if (_data[\"approvedHoursPerBillability\"]) {\n this.approvedHoursPerBillability = {} as any;\n for (let key in _data[\"approvedHoursPerBillability\"]) {\n if (_data[\"approvedHoursPerBillability\"].hasOwnProperty(key))\n (this.approvedHoursPerBillability)![key] = _data[\"approvedHoursPerBillability\"][key];\n }\n }\n this.totalTimesheetHours = _data[\"totalTimesheetHours\"];\n this.totalProductiveTimesheetHours = _data[\"totalProductiveTimesheetHours\"];\n this.totalNotProductiveTimesheetHours = _data[\"totalNotProductiveTimesheetHours\"];\n }\n }\n\n static fromJS(data: any): MyTimesheetDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new MyTimesheetDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.timesheetsPerStatusCounts) {\n data[\"timesheetsPerStatusCounts\"] = {};\n for (let key in this.timesheetsPerStatusCounts) {\n if (this.timesheetsPerStatusCounts.hasOwnProperty(key))\n (data[\"timesheetsPerStatusCounts\"])[key] = (this.timesheetsPerStatusCounts)[key];\n }\n }\n if (Array.isArray(this.notApprovedTimesheets)) {\n data[\"notApprovedTimesheets\"] = [];\n for (let item of this.notApprovedTimesheets)\n data[\"notApprovedTimesheets\"].push(item.toJSON());\n }\n if (this.timesheetHoursPerProject) {\n data[\"timesheetHoursPerProject\"] = {};\n for (let key in this.timesheetHoursPerProject) {\n if (this.timesheetHoursPerProject.hasOwnProperty(key))\n (data[\"timesheetHoursPerProject\"])[key] = (this.timesheetHoursPerProject)[key];\n }\n }\n if (this.timesheetHoursPerNonProjectCategory) {\n data[\"timesheetHoursPerNonProjectCategory\"] = {};\n for (let key in this.timesheetHoursPerNonProjectCategory) {\n if (this.timesheetHoursPerNonProjectCategory.hasOwnProperty(key))\n (data[\"timesheetHoursPerNonProjectCategory\"])[key] = (this.timesheetHoursPerNonProjectCategory)[key];\n }\n }\n if (this.approvedHoursPerBillability) {\n data[\"approvedHoursPerBillability\"] = {};\n for (let key in this.approvedHoursPerBillability) {\n if (this.approvedHoursPerBillability.hasOwnProperty(key))\n (data[\"approvedHoursPerBillability\"])[key] = (this.approvedHoursPerBillability)[key];\n }\n }\n data[\"totalTimesheetHours\"] = this.totalTimesheetHours;\n data[\"totalProductiveTimesheetHours\"] = this.totalProductiveTimesheetHours;\n data[\"totalNotProductiveTimesheetHours\"] = this.totalNotProductiveTimesheetHours;\n return data;\n }\n}\n\nexport interface IMyTimesheetDashboardResponse {\n timesheetsPerStatusCounts?: { [key: string]: number; } | undefined;\n notApprovedTimesheets?: TimeTravelDashboardRowResponse[] | undefined;\n timesheetHoursPerProject?: { [key: string]: number; } | undefined;\n timesheetHoursPerNonProjectCategory?: { [key: string]: number; } | undefined;\n approvedHoursPerBillability?: { [key: string]: number; } | undefined;\n totalTimesheetHours: number;\n totalProductiveTimesheetHours: number;\n totalNotProductiveTimesheetHours: number;\n}\n\nexport class MyTimeTravelDashboardFilterRequest implements IMyTimeTravelDashboardFilterRequest {\n dateRange!: DateRangeRequest;\n\n constructor(data?: IMyTimeTravelDashboardFilterRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.dateRange = new DateRangeRequest();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.dateRange = _data[\"dateRange\"] ? DateRangeRequest.fromJS(_data[\"dateRange\"]) : new DateRangeRequest();\n }\n }\n\n static fromJS(data: any): MyTimeTravelDashboardFilterRequest {\n data = typeof data === 'object' ? data : {};\n let result = new MyTimeTravelDashboardFilterRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dateRange\"] = this.dateRange ? this.dateRange.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IMyTimeTravelDashboardFilterRequest {\n dateRange: DateRangeRequest;\n}\n\nexport class MyTimeTravelDashboardResponse implements IMyTimeTravelDashboardResponse {\n timesheets?: MyTimesheetDashboardResponse;\n travelRequests?: MyTravelRequestDashboardResponse;\n travelExpenses?: MyTravelExpenseDashboardResponse;\n expenses?: MyExpenseDashboardResponse;\n vacationRequests?: MyVacationRequestDashboardResponse;\n\n constructor(data?: IMyTimeTravelDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.timesheets = _data[\"timesheets\"] ? MyTimesheetDashboardResponse.fromJS(_data[\"timesheets\"]) : undefined;\n this.travelRequests = _data[\"travelRequests\"] ? MyTravelRequestDashboardResponse.fromJS(_data[\"travelRequests\"]) : undefined;\n this.travelExpenses = _data[\"travelExpenses\"] ? MyTravelExpenseDashboardResponse.fromJS(_data[\"travelExpenses\"]) : undefined;\n this.expenses = _data[\"expenses\"] ? MyExpenseDashboardResponse.fromJS(_data[\"expenses\"]) : undefined;\n this.vacationRequests = _data[\"vacationRequests\"] ? MyVacationRequestDashboardResponse.fromJS(_data[\"vacationRequests\"]) : undefined;\n }\n }\n\n static fromJS(data: any): MyTimeTravelDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new MyTimeTravelDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"timesheets\"] = this.timesheets ? this.timesheets.toJSON() : undefined;\n data[\"travelRequests\"] = this.travelRequests ? this.travelRequests.toJSON() : undefined;\n data[\"travelExpenses\"] = this.travelExpenses ? this.travelExpenses.toJSON() : undefined;\n data[\"expenses\"] = this.expenses ? this.expenses.toJSON() : undefined;\n data[\"vacationRequests\"] = this.vacationRequests ? this.vacationRequests.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IMyTimeTravelDashboardResponse {\n timesheets?: MyTimesheetDashboardResponse;\n travelRequests?: MyTravelRequestDashboardResponse;\n travelExpenses?: MyTravelExpenseDashboardResponse;\n expenses?: MyExpenseDashboardResponse;\n vacationRequests?: MyVacationRequestDashboardResponse;\n}\n\nexport class MyTimeTravelDashboardResponseSimpleResponseModel implements IMyTimeTravelDashboardResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: MyTimeTravelDashboardResponse;\n\n constructor(data?: IMyTimeTravelDashboardResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? MyTimeTravelDashboardResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): MyTimeTravelDashboardResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new MyTimeTravelDashboardResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IMyTimeTravelDashboardResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: MyTimeTravelDashboardResponse;\n}\n\nexport class MyTrainingPlanResponse implements IMyTrainingPlanResponse {\n id!: number;\n isActive!: boolean;\n cycleId!: number;\n scopeItemLevel3Id?: number | undefined;\n level3ProcessId?: string | undefined;\n level3ProcessName?: string | undefined;\n plannedDate?: Date | undefined;\n plannedTime?: number | undefined;\n plannedTimeTo?: number | undefined;\n duration?: number | undefined;\n linkToMaterial?: string | undefined;\n linkToVideo?: string | undefined;\n statusId!: number;\n attachments?: AttachmentResponse[] | undefined;\n\n constructor(data?: IMyTrainingPlanResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.cycleId = _data[\"cycleId\"];\n this.scopeItemLevel3Id = _data[\"scopeItemLevel3Id\"];\n this.level3ProcessId = _data[\"level3ProcessId\"];\n this.level3ProcessName = _data[\"level3ProcessName\"];\n this.plannedDate = _data[\"plannedDate\"] ? new Date(_data[\"plannedDate\"].toString()) : undefined;\n this.plannedTime = _data[\"plannedTime\"];\n this.plannedTimeTo = _data[\"plannedTimeTo\"];\n this.duration = _data[\"duration\"];\n this.linkToMaterial = _data[\"linkToMaterial\"];\n this.linkToVideo = _data[\"linkToVideo\"];\n this.statusId = _data[\"statusId\"];\n if (Array.isArray(_data[\"attachments\"])) {\n this.attachments = [] as any;\n for (let item of _data[\"attachments\"])\n this.attachments!.push(AttachmentResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): MyTrainingPlanResponse {\n data = typeof data === 'object' ? data : {};\n let result = new MyTrainingPlanResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"cycleId\"] = this.cycleId;\n data[\"scopeItemLevel3Id\"] = this.scopeItemLevel3Id;\n data[\"level3ProcessId\"] = this.level3ProcessId;\n data[\"level3ProcessName\"] = this.level3ProcessName;\n data[\"plannedDate\"] = this.plannedDate ? this.plannedDate.toISOString() : undefined;\n data[\"plannedTime\"] = this.plannedTime;\n data[\"plannedTimeTo\"] = this.plannedTimeTo;\n data[\"duration\"] = this.duration;\n data[\"linkToMaterial\"] = this.linkToMaterial;\n data[\"linkToVideo\"] = this.linkToVideo;\n data[\"statusId\"] = this.statusId;\n if (Array.isArray(this.attachments)) {\n data[\"attachments\"] = [];\n for (let item of this.attachments)\n data[\"attachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IMyTrainingPlanResponse {\n id: number;\n isActive: boolean;\n cycleId: number;\n scopeItemLevel3Id?: number | undefined;\n level3ProcessId?: string | undefined;\n level3ProcessName?: string | undefined;\n plannedDate?: Date | undefined;\n plannedTime?: number | undefined;\n plannedTimeTo?: number | undefined;\n duration?: number | undefined;\n linkToMaterial?: string | undefined;\n linkToVideo?: string | undefined;\n statusId: number;\n attachments?: AttachmentResponse[] | undefined;\n}\n\nexport class MyTrainingPlanResponseItemsResponseModel implements IMyTrainingPlanResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: MyTrainingPlanResponse[] | undefined;\n\n constructor(data?: IMyTrainingPlanResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(MyTrainingPlanResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): MyTrainingPlanResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new MyTrainingPlanResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IMyTrainingPlanResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: MyTrainingPlanResponse[] | undefined;\n}\n\nexport class MyTravelExpenseDashboardResponse implements IMyTravelExpenseDashboardResponse {\n travelExpensesPerStatusCounts?: { [key: string]: number; } | undefined;\n notApprovedTravelExpenses?: TimeTravelDashboardRowResponse[] | undefined;\n\n constructor(data?: IMyTravelExpenseDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"travelExpensesPerStatusCounts\"]) {\n this.travelExpensesPerStatusCounts = {} as any;\n for (let key in _data[\"travelExpensesPerStatusCounts\"]) {\n if (_data[\"travelExpensesPerStatusCounts\"].hasOwnProperty(key))\n (this.travelExpensesPerStatusCounts)![key] = _data[\"travelExpensesPerStatusCounts\"][key];\n }\n }\n if (Array.isArray(_data[\"notApprovedTravelExpenses\"])) {\n this.notApprovedTravelExpenses = [] as any;\n for (let item of _data[\"notApprovedTravelExpenses\"])\n this.notApprovedTravelExpenses!.push(TimeTravelDashboardRowResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): MyTravelExpenseDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new MyTravelExpenseDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.travelExpensesPerStatusCounts) {\n data[\"travelExpensesPerStatusCounts\"] = {};\n for (let key in this.travelExpensesPerStatusCounts) {\n if (this.travelExpensesPerStatusCounts.hasOwnProperty(key))\n (data[\"travelExpensesPerStatusCounts\"])[key] = (this.travelExpensesPerStatusCounts)[key];\n }\n }\n if (Array.isArray(this.notApprovedTravelExpenses)) {\n data[\"notApprovedTravelExpenses\"] = [];\n for (let item of this.notApprovedTravelExpenses)\n data[\"notApprovedTravelExpenses\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IMyTravelExpenseDashboardResponse {\n travelExpensesPerStatusCounts?: { [key: string]: number; } | undefined;\n notApprovedTravelExpenses?: TimeTravelDashboardRowResponse[] | undefined;\n}\n\nexport class MyTravelRequestDashboardResponse implements IMyTravelRequestDashboardResponse {\n travelRequestsPerStatusCounts?: { [key: string]: number; } | undefined;\n notApprovedTravelRequests?: TimeTravelDashboardRowResponse[] | undefined;\n\n constructor(data?: IMyTravelRequestDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"travelRequestsPerStatusCounts\"]) {\n this.travelRequestsPerStatusCounts = {} as any;\n for (let key in _data[\"travelRequestsPerStatusCounts\"]) {\n if (_data[\"travelRequestsPerStatusCounts\"].hasOwnProperty(key))\n (this.travelRequestsPerStatusCounts)![key] = _data[\"travelRequestsPerStatusCounts\"][key];\n }\n }\n if (Array.isArray(_data[\"notApprovedTravelRequests\"])) {\n this.notApprovedTravelRequests = [] as any;\n for (let item of _data[\"notApprovedTravelRequests\"])\n this.notApprovedTravelRequests!.push(TimeTravelDashboardRowResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): MyTravelRequestDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new MyTravelRequestDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.travelRequestsPerStatusCounts) {\n data[\"travelRequestsPerStatusCounts\"] = {};\n for (let key in this.travelRequestsPerStatusCounts) {\n if (this.travelRequestsPerStatusCounts.hasOwnProperty(key))\n (data[\"travelRequestsPerStatusCounts\"])[key] = (this.travelRequestsPerStatusCounts)[key];\n }\n }\n if (Array.isArray(this.notApprovedTravelRequests)) {\n data[\"notApprovedTravelRequests\"] = [];\n for (let item of this.notApprovedTravelRequests)\n data[\"notApprovedTravelRequests\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IMyTravelRequestDashboardResponse {\n travelRequestsPerStatusCounts?: { [key: string]: number; } | undefined;\n notApprovedTravelRequests?: TimeTravelDashboardRowResponse[] | undefined;\n}\n\nexport class MyVacationRequestDashboardResponse implements IMyVacationRequestDashboardResponse {\n vacationRequestsPerStatusCounts?: { [key: string]: number; } | undefined;\n notApprovedVacationRequests?: TimeTravelDashboardRowResponse[] | undefined;\n totalVacationDays!: number;\n\n constructor(data?: IMyVacationRequestDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"vacationRequestsPerStatusCounts\"]) {\n this.vacationRequestsPerStatusCounts = {} as any;\n for (let key in _data[\"vacationRequestsPerStatusCounts\"]) {\n if (_data[\"vacationRequestsPerStatusCounts\"].hasOwnProperty(key))\n (this.vacationRequestsPerStatusCounts)![key] = _data[\"vacationRequestsPerStatusCounts\"][key];\n }\n }\n if (Array.isArray(_data[\"notApprovedVacationRequests\"])) {\n this.notApprovedVacationRequests = [] as any;\n for (let item of _data[\"notApprovedVacationRequests\"])\n this.notApprovedVacationRequests!.push(TimeTravelDashboardRowResponse.fromJS(item));\n }\n this.totalVacationDays = _data[\"totalVacationDays\"];\n }\n }\n\n static fromJS(data: any): MyVacationRequestDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new MyVacationRequestDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.vacationRequestsPerStatusCounts) {\n data[\"vacationRequestsPerStatusCounts\"] = {};\n for (let key in this.vacationRequestsPerStatusCounts) {\n if (this.vacationRequestsPerStatusCounts.hasOwnProperty(key))\n (data[\"vacationRequestsPerStatusCounts\"])[key] = (this.vacationRequestsPerStatusCounts)[key];\n }\n }\n if (Array.isArray(this.notApprovedVacationRequests)) {\n data[\"notApprovedVacationRequests\"] = [];\n for (let item of this.notApprovedVacationRequests)\n data[\"notApprovedVacationRequests\"].push(item.toJSON());\n }\n data[\"totalVacationDays\"] = this.totalVacationDays;\n return data;\n }\n}\n\nexport interface IMyVacationRequestDashboardResponse {\n vacationRequestsPerStatusCounts?: { [key: string]: number; } | undefined;\n notApprovedVacationRequests?: TimeTravelDashboardRowResponse[] | undefined;\n totalVacationDays: number;\n}\n\nexport class NonProjectCategoryDeltaRequest implements INonProjectCategoryDeltaRequest {\n insert?: InsertNonProjectCategoryRequest[] | undefined;\n update?: UpdateNonProjectCategoryRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n\n constructor(data?: INonProjectCategoryDeltaRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertNonProjectCategoryRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateNonProjectCategoryRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteTenantIndetifyRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): NonProjectCategoryDeltaRequest {\n data = typeof data === 'object' ? data : {};\n let result = new NonProjectCategoryDeltaRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface INonProjectCategoryDeltaRequest {\n insert?: InsertNonProjectCategoryRequest[] | undefined;\n update?: UpdateNonProjectCategoryRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n}\n\nexport class NonProjectCategoryResponse implements INonProjectCategoryResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n billable!: boolean;\n isReadOnly!: boolean;\n\n constructor(data?: INonProjectCategoryResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.billable = _data[\"billable\"];\n this.isReadOnly = _data[\"isReadOnly\"];\n }\n }\n\n static fromJS(data: any): NonProjectCategoryResponse {\n data = typeof data === 'object' ? data : {};\n let result = new NonProjectCategoryResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"billable\"] = this.billable;\n data[\"isReadOnly\"] = this.isReadOnly;\n return data;\n }\n}\n\nexport interface INonProjectCategoryResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n billable: boolean;\n isReadOnly: boolean;\n}\n\nexport class NonProjectCategoryResponseItemsResponseModel implements INonProjectCategoryResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: NonProjectCategoryResponse[] | undefined;\n\n constructor(data?: INonProjectCategoryResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(NonProjectCategoryResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): NonProjectCategoryResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new NonProjectCategoryResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface INonProjectCategoryResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: NonProjectCategoryResponse[] | undefined;\n}\n\nexport class OrganizationalUnitManagerResponse implements IOrganizationalUnitManagerResponse {\n id!: number;\n userId!: number;\n organizationalUnitId!: number;\n isResourceManager!: boolean;\n validUntil!: Date;\n\n constructor(data?: IOrganizationalUnitManagerResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.userId = _data[\"userId\"];\n this.organizationalUnitId = _data[\"organizationalUnitId\"];\n this.isResourceManager = _data[\"isResourceManager\"];\n this.validUntil = _data[\"validUntil\"] ? new Date(_data[\"validUntil\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): OrganizationalUnitManagerResponse {\n data = typeof data === 'object' ? data : {};\n let result = new OrganizationalUnitManagerResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"userId\"] = this.userId;\n data[\"organizationalUnitId\"] = this.organizationalUnitId;\n data[\"isResourceManager\"] = this.isResourceManager;\n data[\"validUntil\"] = this.validUntil ? formatDate(this.validUntil) : undefined;\n return data;\n }\n}\n\nexport interface IOrganizationalUnitManagerResponse {\n id: number;\n userId: number;\n organizationalUnitId: number;\n isResourceManager: boolean;\n validUntil: Date;\n}\n\nexport class OrganizationalUnitManagerResponseItemsResponseModel implements IOrganizationalUnitManagerResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: OrganizationalUnitManagerResponse[] | undefined;\n\n constructor(data?: IOrganizationalUnitManagerResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(OrganizationalUnitManagerResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): OrganizationalUnitManagerResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new OrganizationalUnitManagerResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IOrganizationalUnitManagerResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: OrganizationalUnitManagerResponse[] | undefined;\n}\n\nexport class OrganizationalUnitManagerResponseSimpleResponseModel implements IOrganizationalUnitManagerResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: OrganizationalUnitManagerResponse;\n\n constructor(data?: IOrganizationalUnitManagerResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? OrganizationalUnitManagerResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): OrganizationalUnitManagerResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new OrganizationalUnitManagerResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IOrganizationalUnitManagerResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: OrganizationalUnitManagerResponse;\n}\n\nexport class OrganizationalUnitResponse implements IOrganizationalUnitResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n parentId?: number | undefined;\n levelNumber!: number;\n order!: number;\n\n constructor(data?: IOrganizationalUnitResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.parentId = _data[\"parentId\"];\n this.levelNumber = _data[\"levelNumber\"];\n this.order = _data[\"order\"];\n }\n }\n\n static fromJS(data: any): OrganizationalUnitResponse {\n data = typeof data === 'object' ? data : {};\n let result = new OrganizationalUnitResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"parentId\"] = this.parentId;\n data[\"levelNumber\"] = this.levelNumber;\n data[\"order\"] = this.order;\n return data;\n }\n}\n\nexport interface IOrganizationalUnitResponse {\n id: number;\n name: string;\n description?: string | undefined;\n parentId?: number | undefined;\n levelNumber: number;\n order: number;\n}\n\nexport class OrganizationalUnitResponseItemsResponseModel implements IOrganizationalUnitResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: OrganizationalUnitResponse[] | undefined;\n\n constructor(data?: IOrganizationalUnitResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(OrganizationalUnitResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): OrganizationalUnitResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new OrganizationalUnitResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IOrganizationalUnitResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: OrganizationalUnitResponse[] | undefined;\n}\n\nexport class OrganizationalUnitResponseSimpleResponseModel implements IOrganizationalUnitResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: OrganizationalUnitResponse;\n\n constructor(data?: IOrganizationalUnitResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? OrganizationalUnitResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): OrganizationalUnitResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new OrganizationalUnitResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IOrganizationalUnitResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: OrganizationalUnitResponse;\n}\n\nexport enum PartalTicketRequestEnum {\n AssignedToMe = \"AssignedToMe\",\n My = \"My\",\n New = \"New\",\n ShowClosed = \"ShowClosed\",\n}\n\nexport enum PartialTaskRequestEnum {\n My = \"My\",\n Overdue = \"Overdue\",\n ShowCompleted = \"ShowCompleted\",\n AssignedToMe = \"AssignedToMe\",\n}\n\nexport class PartnersInvoicesDashboardResponse implements IPartnersInvoicesDashboardResponse {\n totalIncomingPlanned!: number;\n totalIncomingActual!: number;\n overdue1DayIncoming!: number;\n overdue30DaysIncoming!: number;\n overdue60DaysIncoming!: number;\n overdue90DaysIncoming!: number;\n totalOutgoingPlanned!: number;\n totalOutgoingActual!: number;\n overdue1DayOutgoing!: number;\n overdue30DaysOutgoing!: number;\n overdue60DaysOutgoing!: number;\n overdue90DaysOutgoing!: number;\n plannedIncomingOutgoingPerPartner?: { [key: string]: IncomingOutgoingDashboardResponse; } | undefined;\n actualIncomingOutgoingPerPartner?: { [key: string]: IncomingOutgoingDashboardResponse; } | undefined;\n incomingInvoicesPerPlannedActual?: { [key: string]: number; } | undefined;\n outgoingInvoicesPerPlannedActual?: { [key: string]: number; } | undefined;\n budgetVsActualIncomingInvoices?: BudgetVsActualPartnerRowDashboardResponse[] | undefined;\n budgetVsActualOutgoingInvoices?: BudgetVsActualPartnerRowDashboardResponse[] | undefined;\n\n constructor(data?: IPartnersInvoicesDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.totalIncomingPlanned = _data[\"totalIncomingPlanned\"];\n this.totalIncomingActual = _data[\"totalIncomingActual\"];\n this.overdue1DayIncoming = _data[\"overdue1DayIncoming\"];\n this.overdue30DaysIncoming = _data[\"overdue30DaysIncoming\"];\n this.overdue60DaysIncoming = _data[\"overdue60DaysIncoming\"];\n this.overdue90DaysIncoming = _data[\"overdue90DaysIncoming\"];\n this.totalOutgoingPlanned = _data[\"totalOutgoingPlanned\"];\n this.totalOutgoingActual = _data[\"totalOutgoingActual\"];\n this.overdue1DayOutgoing = _data[\"overdue1DayOutgoing\"];\n this.overdue30DaysOutgoing = _data[\"overdue30DaysOutgoing\"];\n this.overdue60DaysOutgoing = _data[\"overdue60DaysOutgoing\"];\n this.overdue90DaysOutgoing = _data[\"overdue90DaysOutgoing\"];\n if (_data[\"plannedIncomingOutgoingPerPartner\"]) {\n this.plannedIncomingOutgoingPerPartner = {} as any;\n for (let key in _data[\"plannedIncomingOutgoingPerPartner\"]) {\n if (_data[\"plannedIncomingOutgoingPerPartner\"].hasOwnProperty(key))\n (this.plannedIncomingOutgoingPerPartner)![key] = _data[\"plannedIncomingOutgoingPerPartner\"][key] ? IncomingOutgoingDashboardResponse.fromJS(_data[\"plannedIncomingOutgoingPerPartner\"][key]) : new IncomingOutgoingDashboardResponse();\n }\n }\n if (_data[\"actualIncomingOutgoingPerPartner\"]) {\n this.actualIncomingOutgoingPerPartner = {} as any;\n for (let key in _data[\"actualIncomingOutgoingPerPartner\"]) {\n if (_data[\"actualIncomingOutgoingPerPartner\"].hasOwnProperty(key))\n (this.actualIncomingOutgoingPerPartner)![key] = _data[\"actualIncomingOutgoingPerPartner\"][key] ? IncomingOutgoingDashboardResponse.fromJS(_data[\"actualIncomingOutgoingPerPartner\"][key]) : new IncomingOutgoingDashboardResponse();\n }\n }\n if (_data[\"incomingInvoicesPerPlannedActual\"]) {\n this.incomingInvoicesPerPlannedActual = {} as any;\n for (let key in _data[\"incomingInvoicesPerPlannedActual\"]) {\n if (_data[\"incomingInvoicesPerPlannedActual\"].hasOwnProperty(key))\n (this.incomingInvoicesPerPlannedActual)![key] = _data[\"incomingInvoicesPerPlannedActual\"][key];\n }\n }\n if (_data[\"outgoingInvoicesPerPlannedActual\"]) {\n this.outgoingInvoicesPerPlannedActual = {} as any;\n for (let key in _data[\"outgoingInvoicesPerPlannedActual\"]) {\n if (_data[\"outgoingInvoicesPerPlannedActual\"].hasOwnProperty(key))\n (this.outgoingInvoicesPerPlannedActual)![key] = _data[\"outgoingInvoicesPerPlannedActual\"][key];\n }\n }\n if (Array.isArray(_data[\"budgetVsActualIncomingInvoices\"])) {\n this.budgetVsActualIncomingInvoices = [] as any;\n for (let item of _data[\"budgetVsActualIncomingInvoices\"])\n this.budgetVsActualIncomingInvoices!.push(BudgetVsActualPartnerRowDashboardResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"budgetVsActualOutgoingInvoices\"])) {\n this.budgetVsActualOutgoingInvoices = [] as any;\n for (let item of _data[\"budgetVsActualOutgoingInvoices\"])\n this.budgetVsActualOutgoingInvoices!.push(BudgetVsActualPartnerRowDashboardResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): PartnersInvoicesDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new PartnersInvoicesDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"totalIncomingPlanned\"] = this.totalIncomingPlanned;\n data[\"totalIncomingActual\"] = this.totalIncomingActual;\n data[\"overdue1DayIncoming\"] = this.overdue1DayIncoming;\n data[\"overdue30DaysIncoming\"] = this.overdue30DaysIncoming;\n data[\"overdue60DaysIncoming\"] = this.overdue60DaysIncoming;\n data[\"overdue90DaysIncoming\"] = this.overdue90DaysIncoming;\n data[\"totalOutgoingPlanned\"] = this.totalOutgoingPlanned;\n data[\"totalOutgoingActual\"] = this.totalOutgoingActual;\n data[\"overdue1DayOutgoing\"] = this.overdue1DayOutgoing;\n data[\"overdue30DaysOutgoing\"] = this.overdue30DaysOutgoing;\n data[\"overdue60DaysOutgoing\"] = this.overdue60DaysOutgoing;\n data[\"overdue90DaysOutgoing\"] = this.overdue90DaysOutgoing;\n if (this.plannedIncomingOutgoingPerPartner) {\n data[\"plannedIncomingOutgoingPerPartner\"] = {};\n for (let key in this.plannedIncomingOutgoingPerPartner) {\n if (this.plannedIncomingOutgoingPerPartner.hasOwnProperty(key))\n (data[\"plannedIncomingOutgoingPerPartner\"])[key] = this.plannedIncomingOutgoingPerPartner[key] ? this.plannedIncomingOutgoingPerPartner[key].toJSON() : undefined;\n }\n }\n if (this.actualIncomingOutgoingPerPartner) {\n data[\"actualIncomingOutgoingPerPartner\"] = {};\n for (let key in this.actualIncomingOutgoingPerPartner) {\n if (this.actualIncomingOutgoingPerPartner.hasOwnProperty(key))\n (data[\"actualIncomingOutgoingPerPartner\"])[key] = this.actualIncomingOutgoingPerPartner[key] ? this.actualIncomingOutgoingPerPartner[key].toJSON() : undefined;\n }\n }\n if (this.incomingInvoicesPerPlannedActual) {\n data[\"incomingInvoicesPerPlannedActual\"] = {};\n for (let key in this.incomingInvoicesPerPlannedActual) {\n if (this.incomingInvoicesPerPlannedActual.hasOwnProperty(key))\n (data[\"incomingInvoicesPerPlannedActual\"])[key] = (this.incomingInvoicesPerPlannedActual)[key];\n }\n }\n if (this.outgoingInvoicesPerPlannedActual) {\n data[\"outgoingInvoicesPerPlannedActual\"] = {};\n for (let key in this.outgoingInvoicesPerPlannedActual) {\n if (this.outgoingInvoicesPerPlannedActual.hasOwnProperty(key))\n (data[\"outgoingInvoicesPerPlannedActual\"])[key] = (this.outgoingInvoicesPerPlannedActual)[key];\n }\n }\n if (Array.isArray(this.budgetVsActualIncomingInvoices)) {\n data[\"budgetVsActualIncomingInvoices\"] = [];\n for (let item of this.budgetVsActualIncomingInvoices)\n data[\"budgetVsActualIncomingInvoices\"].push(item.toJSON());\n }\n if (Array.isArray(this.budgetVsActualOutgoingInvoices)) {\n data[\"budgetVsActualOutgoingInvoices\"] = [];\n for (let item of this.budgetVsActualOutgoingInvoices)\n data[\"budgetVsActualOutgoingInvoices\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IPartnersInvoicesDashboardResponse {\n totalIncomingPlanned: number;\n totalIncomingActual: number;\n overdue1DayIncoming: number;\n overdue30DaysIncoming: number;\n overdue60DaysIncoming: number;\n overdue90DaysIncoming: number;\n totalOutgoingPlanned: number;\n totalOutgoingActual: number;\n overdue1DayOutgoing: number;\n overdue30DaysOutgoing: number;\n overdue60DaysOutgoing: number;\n overdue90DaysOutgoing: number;\n plannedIncomingOutgoingPerPartner?: { [key: string]: IncomingOutgoingDashboardResponse; } | undefined;\n actualIncomingOutgoingPerPartner?: { [key: string]: IncomingOutgoingDashboardResponse; } | undefined;\n incomingInvoicesPerPlannedActual?: { [key: string]: number; } | undefined;\n outgoingInvoicesPerPlannedActual?: { [key: string]: number; } | undefined;\n budgetVsActualIncomingInvoices?: BudgetVsActualPartnerRowDashboardResponse[] | undefined;\n budgetVsActualOutgoingInvoices?: BudgetVsActualPartnerRowDashboardResponse[] | undefined;\n}\n\nexport class PatchScheduleRequest implements IPatchScheduleRequest {\n id!: number;\n parentId?: number | undefined;\n name?: string | undefined;\n start?: Date | undefined;\n finish?: Date | undefined;\n percentOfCompletion?: number | undefined;\n\n constructor(data?: IPatchScheduleRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.parentId = _data[\"parentId\"];\n this.name = _data[\"name\"];\n this.start = _data[\"start\"] ? new Date(_data[\"start\"].toString()) : undefined;\n this.finish = _data[\"finish\"] ? new Date(_data[\"finish\"].toString()) : undefined;\n this.percentOfCompletion = _data[\"percentOfCompletion\"];\n }\n }\n\n static fromJS(data: any): PatchScheduleRequest {\n data = typeof data === 'object' ? data : {};\n let result = new PatchScheduleRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"parentId\"] = this.parentId;\n data[\"name\"] = this.name;\n data[\"start\"] = this.start ? this.start.toISOString() : undefined;\n data[\"finish\"] = this.finish ? this.finish.toISOString() : undefined;\n data[\"percentOfCompletion\"] = this.percentOfCompletion;\n return data;\n }\n}\n\nexport interface IPatchScheduleRequest {\n id: number;\n parentId?: number | undefined;\n name?: string | undefined;\n start?: Date | undefined;\n finish?: Date | undefined;\n percentOfCompletion?: number | undefined;\n}\n\nexport class PatchTenantIdentifyRequest implements IPatchTenantIdentifyRequest {\n id!: number;\n propertyName!: string;\n value?: any | undefined;\n\n constructor(data?: IPatchTenantIdentifyRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.propertyName = _data[\"propertyName\"];\n this.value = _data[\"value\"];\n }\n }\n\n static fromJS(data: any): PatchTenantIdentifyRequest {\n data = typeof data === 'object' ? data : {};\n let result = new PatchTenantIdentifyRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"propertyName\"] = this.propertyName;\n data[\"value\"] = this.value;\n return data;\n }\n}\n\nexport interface IPatchTenantIdentifyRequest {\n id: number;\n propertyName: string;\n value?: any | undefined;\n}\n\nexport class PaymentMethodResponse implements IPaymentMethodResponse {\n id?: string | undefined;\n brand?: string | undefined;\n isDefault!: boolean;\n last4Numbers?: string | undefined;\n expDate!: Date;\n\n constructor(data?: IPaymentMethodResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.brand = _data[\"brand\"];\n this.isDefault = _data[\"isDefault\"];\n this.last4Numbers = _data[\"last4Numbers\"];\n this.expDate = _data[\"expDate\"] ? new Date(_data[\"expDate\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): PaymentMethodResponse {\n data = typeof data === 'object' ? data : {};\n let result = new PaymentMethodResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"brand\"] = this.brand;\n data[\"isDefault\"] = this.isDefault;\n data[\"last4Numbers\"] = this.last4Numbers;\n data[\"expDate\"] = this.expDate ? this.expDate.toISOString() : undefined;\n return data;\n }\n}\n\nexport interface IPaymentMethodResponse {\n id?: string | undefined;\n brand?: string | undefined;\n isDefault: boolean;\n last4Numbers?: string | undefined;\n expDate: Date;\n}\n\nexport class PaymentMethodResponseItemsResponseModel implements IPaymentMethodResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: PaymentMethodResponse[] | undefined;\n\n constructor(data?: IPaymentMethodResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(PaymentMethodResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): PaymentMethodResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new PaymentMethodResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IPaymentMethodResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: PaymentMethodResponse[] | undefined;\n}\n\nexport class PermissionCollectionRequest implements IPermissionCollectionRequest {\n teamMemberId!: number;\n isSubstituteProjectManager!: boolean;\n ticketPermission?: TicketPermission;\n timeTravelPermission?: TimeTravelPermission;\n scopePermission?: ScopePermission;\n testingPermission?: TestingPermission;\n trainingPermission?: TrainingPermission;\n schedulePermission?: SchedulePermission;\n riskPermission?: RiskPermission;\n\n constructor(data?: IPermissionCollectionRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.teamMemberId = _data[\"teamMemberId\"];\n this.isSubstituteProjectManager = _data[\"isSubstituteProjectManager\"];\n this.ticketPermission = _data[\"ticketPermission\"] ? TicketPermission.fromJS(_data[\"ticketPermission\"]) : undefined;\n this.timeTravelPermission = _data[\"timeTravelPermission\"] ? TimeTravelPermission.fromJS(_data[\"timeTravelPermission\"]) : undefined;\n this.scopePermission = _data[\"scopePermission\"] ? ScopePermission.fromJS(_data[\"scopePermission\"]) : undefined;\n this.testingPermission = _data[\"testingPermission\"] ? TestingPermission.fromJS(_data[\"testingPermission\"]) : undefined;\n this.trainingPermission = _data[\"trainingPermission\"] ? TrainingPermission.fromJS(_data[\"trainingPermission\"]) : undefined;\n this.schedulePermission = _data[\"schedulePermission\"] ? SchedulePermission.fromJS(_data[\"schedulePermission\"]) : undefined;\n this.riskPermission = _data[\"riskPermission\"] ? RiskPermission.fromJS(_data[\"riskPermission\"]) : undefined;\n }\n }\n\n static fromJS(data: any): PermissionCollectionRequest {\n data = typeof data === 'object' ? data : {};\n let result = new PermissionCollectionRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"teamMemberId\"] = this.teamMemberId;\n data[\"isSubstituteProjectManager\"] = this.isSubstituteProjectManager;\n data[\"ticketPermission\"] = this.ticketPermission ? this.ticketPermission.toJSON() : undefined;\n data[\"timeTravelPermission\"] = this.timeTravelPermission ? this.timeTravelPermission.toJSON() : undefined;\n data[\"scopePermission\"] = this.scopePermission ? this.scopePermission.toJSON() : undefined;\n data[\"testingPermission\"] = this.testingPermission ? this.testingPermission.toJSON() : undefined;\n data[\"trainingPermission\"] = this.trainingPermission ? this.trainingPermission.toJSON() : undefined;\n data[\"schedulePermission\"] = this.schedulePermission ? this.schedulePermission.toJSON() : undefined;\n data[\"riskPermission\"] = this.riskPermission ? this.riskPermission.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IPermissionCollectionRequest {\n teamMemberId: number;\n isSubstituteProjectManager: boolean;\n ticketPermission?: TicketPermission;\n timeTravelPermission?: TimeTravelPermission;\n scopePermission?: ScopePermission;\n testingPermission?: TestingPermission;\n trainingPermission?: TrainingPermission;\n schedulePermission?: SchedulePermission;\n riskPermission?: RiskPermission;\n}\n\nexport class PermissionCollectionResponse implements IPermissionCollectionResponse {\n teamMemberId!: number;\n isProjectManager!: boolean;\n isSubstituteProjectManager!: boolean;\n ticketPermission?: TicketPermission;\n timeTravelPermission?: TimeTravelPermission;\n scopePermission?: ScopePermission;\n testingPermission?: TestingPermission;\n trainingPermission?: TrainingPermission;\n schedulePermission?: SchedulePermission;\n riskPermission?: RiskPermission;\n\n constructor(data?: IPermissionCollectionResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.teamMemberId = _data[\"teamMemberId\"];\n this.isProjectManager = _data[\"isProjectManager\"];\n this.isSubstituteProjectManager = _data[\"isSubstituteProjectManager\"];\n this.ticketPermission = _data[\"ticketPermission\"] ? TicketPermission.fromJS(_data[\"ticketPermission\"]) : undefined;\n this.timeTravelPermission = _data[\"timeTravelPermission\"] ? TimeTravelPermission.fromJS(_data[\"timeTravelPermission\"]) : undefined;\n this.scopePermission = _data[\"scopePermission\"] ? ScopePermission.fromJS(_data[\"scopePermission\"]) : undefined;\n this.testingPermission = _data[\"testingPermission\"] ? TestingPermission.fromJS(_data[\"testingPermission\"]) : undefined;\n this.trainingPermission = _data[\"trainingPermission\"] ? TrainingPermission.fromJS(_data[\"trainingPermission\"]) : undefined;\n this.schedulePermission = _data[\"schedulePermission\"] ? SchedulePermission.fromJS(_data[\"schedulePermission\"]) : undefined;\n this.riskPermission = _data[\"riskPermission\"] ? RiskPermission.fromJS(_data[\"riskPermission\"]) : undefined;\n }\n }\n\n static fromJS(data: any): PermissionCollectionResponse {\n data = typeof data === 'object' ? data : {};\n let result = new PermissionCollectionResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"teamMemberId\"] = this.teamMemberId;\n data[\"isProjectManager\"] = this.isProjectManager;\n data[\"isSubstituteProjectManager\"] = this.isSubstituteProjectManager;\n data[\"ticketPermission\"] = this.ticketPermission ? this.ticketPermission.toJSON() : undefined;\n data[\"timeTravelPermission\"] = this.timeTravelPermission ? this.timeTravelPermission.toJSON() : undefined;\n data[\"scopePermission\"] = this.scopePermission ? this.scopePermission.toJSON() : undefined;\n data[\"testingPermission\"] = this.testingPermission ? this.testingPermission.toJSON() : undefined;\n data[\"trainingPermission\"] = this.trainingPermission ? this.trainingPermission.toJSON() : undefined;\n data[\"schedulePermission\"] = this.schedulePermission ? this.schedulePermission.toJSON() : undefined;\n data[\"riskPermission\"] = this.riskPermission ? this.riskPermission.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IPermissionCollectionResponse {\n teamMemberId: number;\n isProjectManager: boolean;\n isSubstituteProjectManager: boolean;\n ticketPermission?: TicketPermission;\n timeTravelPermission?: TimeTravelPermission;\n scopePermission?: ScopePermission;\n testingPermission?: TestingPermission;\n trainingPermission?: TrainingPermission;\n schedulePermission?: SchedulePermission;\n riskPermission?: RiskPermission;\n}\n\nexport class PermissionCollectionResponseItemsResponseModel implements IPermissionCollectionResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: PermissionCollectionResponse[] | undefined;\n\n constructor(data?: IPermissionCollectionResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(PermissionCollectionResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): PermissionCollectionResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new PermissionCollectionResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IPermissionCollectionResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: PermissionCollectionResponse[] | undefined;\n}\n\nexport class PricelistRowResponse implements IPricelistRowResponse {\n id!: number;\n tenantId!: number;\n maxUsersFrom!: number;\n maxUsersTo!: number;\n maxGuestsFrom!: number;\n maxGuestsTo!: number;\n pricePerUserInEuro!: number;\n pricePerGuestInEuro!: number;\n\n constructor(data?: IPricelistRowResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.tenantId = _data[\"tenantId\"];\n this.maxUsersFrom = _data[\"maxUsersFrom\"];\n this.maxUsersTo = _data[\"maxUsersTo\"];\n this.maxGuestsFrom = _data[\"maxGuestsFrom\"];\n this.maxGuestsTo = _data[\"maxGuestsTo\"];\n this.pricePerUserInEuro = _data[\"pricePerUserInEuro\"];\n this.pricePerGuestInEuro = _data[\"pricePerGuestInEuro\"];\n }\n }\n\n static fromJS(data: any): PricelistRowResponse {\n data = typeof data === 'object' ? data : {};\n let result = new PricelistRowResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"tenantId\"] = this.tenantId;\n data[\"maxUsersFrom\"] = this.maxUsersFrom;\n data[\"maxUsersTo\"] = this.maxUsersTo;\n data[\"maxGuestsFrom\"] = this.maxGuestsFrom;\n data[\"maxGuestsTo\"] = this.maxGuestsTo;\n data[\"pricePerUserInEuro\"] = this.pricePerUserInEuro;\n data[\"pricePerGuestInEuro\"] = this.pricePerGuestInEuro;\n return data;\n }\n}\n\nexport interface IPricelistRowResponse {\n id: number;\n tenantId: number;\n maxUsersFrom: number;\n maxUsersTo: number;\n maxGuestsFrom: number;\n maxGuestsTo: number;\n pricePerUserInEuro: number;\n pricePerGuestInEuro: number;\n}\n\nexport class PricelistRowResponseItemsResponseModel implements IPricelistRowResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: PricelistRowResponse[] | undefined;\n\n constructor(data?: IPricelistRowResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(PricelistRowResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): PricelistRowResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new PricelistRowResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IPricelistRowResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: PricelistRowResponse[] | undefined;\n}\n\nexport enum PricingPlanChangeTypeEnum {\n Cancelation = \"Cancelation\",\n UserReduction = \"UserReduction\",\n Reactivation = \"Reactivation\",\n}\n\nexport class PricingPlanFullResponse implements IPricingPlanFullResponse {\n id!: number;\n isTrial!: boolean;\n isCanceled!: boolean;\n maxUsers!: number;\n maxGuests!: number;\n from!: Date;\n to!: Date;\n tenantId!: number;\n pendingChange?: PricingPlanPendingChangeResponse;\n numberSiteAdmins!: number;\n actualUsers!: number;\n actualGuests!: number;\n budgetInEuro!: number;\n budgetInEuroWithVat!: number;\n costsInEuro!: number;\n costsInEuroWithVat!: number;\n vatPercentage!: number;\n\n constructor(data?: IPricingPlanFullResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.isTrial = _data[\"isTrial\"];\n this.isCanceled = _data[\"isCanceled\"];\n this.maxUsers = _data[\"maxUsers\"];\n this.maxGuests = _data[\"maxGuests\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.tenantId = _data[\"tenantId\"];\n this.pendingChange = _data[\"pendingChange\"] ? PricingPlanPendingChangeResponse.fromJS(_data[\"pendingChange\"]) : undefined;\n this.numberSiteAdmins = _data[\"numberSiteAdmins\"];\n this.actualUsers = _data[\"actualUsers\"];\n this.actualGuests = _data[\"actualGuests\"];\n this.budgetInEuro = _data[\"budgetInEuro\"];\n this.budgetInEuroWithVat = _data[\"budgetInEuroWithVat\"];\n this.costsInEuro = _data[\"costsInEuro\"];\n this.costsInEuroWithVat = _data[\"costsInEuroWithVat\"];\n this.vatPercentage = _data[\"vatPercentage\"];\n }\n }\n\n static fromJS(data: any): PricingPlanFullResponse {\n data = typeof data === 'object' ? data : {};\n let result = new PricingPlanFullResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"isTrial\"] = this.isTrial;\n data[\"isCanceled\"] = this.isCanceled;\n data[\"maxUsers\"] = this.maxUsers;\n data[\"maxGuests\"] = this.maxGuests;\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"tenantId\"] = this.tenantId;\n data[\"pendingChange\"] = this.pendingChange ? this.pendingChange.toJSON() : undefined;\n data[\"numberSiteAdmins\"] = this.numberSiteAdmins;\n data[\"actualUsers\"] = this.actualUsers;\n data[\"actualGuests\"] = this.actualGuests;\n data[\"budgetInEuro\"] = this.budgetInEuro;\n data[\"budgetInEuroWithVat\"] = this.budgetInEuroWithVat;\n data[\"costsInEuro\"] = this.costsInEuro;\n data[\"costsInEuroWithVat\"] = this.costsInEuroWithVat;\n data[\"vatPercentage\"] = this.vatPercentage;\n return data;\n }\n}\n\nexport interface IPricingPlanFullResponse {\n id: number;\n isTrial: boolean;\n isCanceled: boolean;\n maxUsers: number;\n maxGuests: number;\n from: Date;\n to: Date;\n tenantId: number;\n pendingChange?: PricingPlanPendingChangeResponse;\n numberSiteAdmins: number;\n actualUsers: number;\n actualGuests: number;\n budgetInEuro: number;\n budgetInEuroWithVat: number;\n costsInEuro: number;\n costsInEuroWithVat: number;\n vatPercentage: number;\n}\n\nexport class PricingPlanFullResponseSimpleResponseModel implements IPricingPlanFullResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: PricingPlanFullResponse;\n\n constructor(data?: IPricingPlanFullResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? PricingPlanFullResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): PricingPlanFullResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new PricingPlanFullResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IPricingPlanFullResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: PricingPlanFullResponse;\n}\n\nexport class PricingPlanInvoiceResponse implements IPricingPlanInvoiceResponse {\n id!: number;\n dateCreated!: Date;\n activeUsersNo!: number;\n activeGuestsNo!: number;\n periodFrom!: Date;\n periodTo!: Date;\n pricePerUserInEuro!: number;\n pricePerGuestInEuro!: number;\n euroToRsdExchanged!: number;\n status!: PricingPlanInvoiceStatusEnum;\n name!: string;\n vatPercentage!: number;\n readonly userPriceEUR!: number;\n readonly guestPriceEUR!: number;\n readonly totalPriceEUR!: number;\n readonly vatPriceEUR!: number;\n readonly totalPriceWithVatEUR!: number;\n\n constructor(data?: IPricingPlanInvoiceResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.dateCreated = _data[\"dateCreated\"] ? new Date(_data[\"dateCreated\"].toString()) : undefined;\n this.activeUsersNo = _data[\"activeUsersNo\"];\n this.activeGuestsNo = _data[\"activeGuestsNo\"];\n this.periodFrom = _data[\"periodFrom\"] ? new Date(_data[\"periodFrom\"].toString()) : undefined;\n this.periodTo = _data[\"periodTo\"] ? new Date(_data[\"periodTo\"].toString()) : undefined;\n this.pricePerUserInEuro = _data[\"pricePerUserInEuro\"];\n this.pricePerGuestInEuro = _data[\"pricePerGuestInEuro\"];\n this.euroToRsdExchanged = _data[\"euroToRsdExchanged\"];\n this.status = _data[\"status\"];\n this.name = _data[\"name\"];\n this.vatPercentage = _data[\"vatPercentage\"];\n (this).userPriceEUR = _data[\"userPriceEUR\"];\n (this).guestPriceEUR = _data[\"guestPriceEUR\"];\n (this).totalPriceEUR = _data[\"totalPriceEUR\"];\n (this).vatPriceEUR = _data[\"vatPriceEUR\"];\n (this).totalPriceWithVatEUR = _data[\"totalPriceWithVatEUR\"];\n }\n }\n\n static fromJS(data: any): PricingPlanInvoiceResponse {\n data = typeof data === 'object' ? data : {};\n let result = new PricingPlanInvoiceResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"dateCreated\"] = this.dateCreated ? formatDate(this.dateCreated) : undefined;\n data[\"activeUsersNo\"] = this.activeUsersNo;\n data[\"activeGuestsNo\"] = this.activeGuestsNo;\n data[\"periodFrom\"] = this.periodFrom ? formatDate(this.periodFrom) : undefined;\n data[\"periodTo\"] = this.periodTo ? formatDate(this.periodTo) : undefined;\n data[\"pricePerUserInEuro\"] = this.pricePerUserInEuro;\n data[\"pricePerGuestInEuro\"] = this.pricePerGuestInEuro;\n data[\"euroToRsdExchanged\"] = this.euroToRsdExchanged;\n data[\"status\"] = this.status;\n data[\"name\"] = this.name;\n data[\"vatPercentage\"] = this.vatPercentage;\n data[\"userPriceEUR\"] = this.userPriceEUR;\n data[\"guestPriceEUR\"] = this.guestPriceEUR;\n data[\"totalPriceEUR\"] = this.totalPriceEUR;\n data[\"vatPriceEUR\"] = this.vatPriceEUR;\n data[\"totalPriceWithVatEUR\"] = this.totalPriceWithVatEUR;\n return data;\n }\n}\n\nexport interface IPricingPlanInvoiceResponse {\n id: number;\n dateCreated: Date;\n activeUsersNo: number;\n activeGuestsNo: number;\n periodFrom: Date;\n periodTo: Date;\n pricePerUserInEuro: number;\n pricePerGuestInEuro: number;\n euroToRsdExchanged: number;\n status: PricingPlanInvoiceStatusEnum;\n name: string;\n vatPercentage: number;\n userPriceEUR: number;\n guestPriceEUR: number;\n totalPriceEUR: number;\n vatPriceEUR: number;\n totalPriceWithVatEUR: number;\n}\n\nexport class PricingPlanInvoiceResponseItemsResponseModel implements IPricingPlanInvoiceResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: PricingPlanInvoiceResponse[] | undefined;\n\n constructor(data?: IPricingPlanInvoiceResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(PricingPlanInvoiceResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): PricingPlanInvoiceResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new PricingPlanInvoiceResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IPricingPlanInvoiceResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: PricingPlanInvoiceResponse[] | undefined;\n}\n\nexport enum PricingPlanInvoiceStatusEnum {\n Created = \"Created\",\n Processing = \"Processing\",\n Failed = \"Failed\",\n Succeeded = \"Succeeded\",\n}\n\nexport class PricingPlanPendingChangeResponse implements IPricingPlanPendingChangeResponse {\n id!: number;\n type!: PricingPlanChangeTypeEnum;\n userReductionData?: PricingPlanUserReductionData;\n tenantId!: number;\n\n constructor(data?: IPricingPlanPendingChangeResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.type = _data[\"type\"];\n this.userReductionData = _data[\"userReductionData\"] ? PricingPlanUserReductionData.fromJS(_data[\"userReductionData\"]) : undefined;\n this.tenantId = _data[\"tenantId\"];\n }\n }\n\n static fromJS(data: any): PricingPlanPendingChangeResponse {\n data = typeof data === 'object' ? data : {};\n let result = new PricingPlanPendingChangeResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"type\"] = this.type;\n data[\"userReductionData\"] = this.userReductionData ? this.userReductionData.toJSON() : undefined;\n data[\"tenantId\"] = this.tenantId;\n return data;\n }\n}\n\nexport interface IPricingPlanPendingChangeResponse {\n id: number;\n type: PricingPlanChangeTypeEnum;\n userReductionData?: PricingPlanUserReductionData;\n tenantId: number;\n}\n\nexport class PricingPlanRequestModel implements IPricingPlanRequestModel {\n maxUsers!: number;\n maxGuests!: number;\n userReductionData?: PricingPlanUserReductionDataRequestModel;\n\n constructor(data?: IPricingPlanRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.maxUsers = _data[\"maxUsers\"];\n this.maxGuests = _data[\"maxGuests\"];\n this.userReductionData = _data[\"userReductionData\"] ? PricingPlanUserReductionDataRequestModel.fromJS(_data[\"userReductionData\"]) : undefined;\n }\n }\n\n static fromJS(data: any): PricingPlanRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new PricingPlanRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"maxUsers\"] = this.maxUsers;\n data[\"maxGuests\"] = this.maxGuests;\n data[\"userReductionData\"] = this.userReductionData ? this.userReductionData.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IPricingPlanRequestModel {\n maxUsers: number;\n maxGuests: number;\n userReductionData?: PricingPlanUserReductionDataRequestModel;\n}\n\nexport class PricingPlanResponse implements IPricingPlanResponse {\n id!: number;\n isTrial!: boolean;\n isCanceled!: boolean;\n maxUsers!: number;\n maxGuests!: number;\n from!: Date;\n to!: Date;\n tenantId!: number;\n pendingChange?: PricingPlanPendingChangeResponse;\n\n constructor(data?: IPricingPlanResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.isTrial = _data[\"isTrial\"];\n this.isCanceled = _data[\"isCanceled\"];\n this.maxUsers = _data[\"maxUsers\"];\n this.maxGuests = _data[\"maxGuests\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.tenantId = _data[\"tenantId\"];\n this.pendingChange = _data[\"pendingChange\"] ? PricingPlanPendingChangeResponse.fromJS(_data[\"pendingChange\"]) : undefined;\n }\n }\n\n static fromJS(data: any): PricingPlanResponse {\n data = typeof data === 'object' ? data : {};\n let result = new PricingPlanResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"isTrial\"] = this.isTrial;\n data[\"isCanceled\"] = this.isCanceled;\n data[\"maxUsers\"] = this.maxUsers;\n data[\"maxGuests\"] = this.maxGuests;\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"tenantId\"] = this.tenantId;\n data[\"pendingChange\"] = this.pendingChange ? this.pendingChange.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IPricingPlanResponse {\n id: number;\n isTrial: boolean;\n isCanceled: boolean;\n maxUsers: number;\n maxGuests: number;\n from: Date;\n to: Date;\n tenantId: number;\n pendingChange?: PricingPlanPendingChangeResponse;\n}\n\nexport class PricingPlanResponseSimpleResponseModel implements IPricingPlanResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: PricingPlanResponse;\n\n constructor(data?: IPricingPlanResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? PricingPlanResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): PricingPlanResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new PricingPlanResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IPricingPlanResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: PricingPlanResponse;\n}\n\nexport class PricingPlanUserReductionData implements IPricingPlanUserReductionData {\n maxUsers?: number | undefined;\n maxGuests?: number | undefined;\n usersToRemainActive?: number[] | undefined;\n guestsToRemainActive?: number[] | undefined;\n\n constructor(data?: IPricingPlanUserReductionData) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.maxUsers = _data[\"maxUsers\"];\n this.maxGuests = _data[\"maxGuests\"];\n if (Array.isArray(_data[\"usersToRemainActive\"])) {\n this.usersToRemainActive = [] as any;\n for (let item of _data[\"usersToRemainActive\"])\n this.usersToRemainActive!.push(item);\n }\n if (Array.isArray(_data[\"guestsToRemainActive\"])) {\n this.guestsToRemainActive = [] as any;\n for (let item of _data[\"guestsToRemainActive\"])\n this.guestsToRemainActive!.push(item);\n }\n }\n }\n\n static fromJS(data: any): PricingPlanUserReductionData {\n data = typeof data === 'object' ? data : {};\n let result = new PricingPlanUserReductionData();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"maxUsers\"] = this.maxUsers;\n data[\"maxGuests\"] = this.maxGuests;\n if (Array.isArray(this.usersToRemainActive)) {\n data[\"usersToRemainActive\"] = [];\n for (let item of this.usersToRemainActive)\n data[\"usersToRemainActive\"].push(item);\n }\n if (Array.isArray(this.guestsToRemainActive)) {\n data[\"guestsToRemainActive\"] = [];\n for (let item of this.guestsToRemainActive)\n data[\"guestsToRemainActive\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IPricingPlanUserReductionData {\n maxUsers?: number | undefined;\n maxGuests?: number | undefined;\n usersToRemainActive?: number[] | undefined;\n guestsToRemainActive?: number[] | undefined;\n}\n\nexport class PricingPlanUserReductionDataRequestModel implements IPricingPlanUserReductionDataRequestModel {\n usersToDeactivate?: number[] | undefined;\n guestsToDeactivate?: number[] | undefined;\n\n constructor(data?: IPricingPlanUserReductionDataRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"usersToDeactivate\"])) {\n this.usersToDeactivate = [] as any;\n for (let item of _data[\"usersToDeactivate\"])\n this.usersToDeactivate!.push(item);\n }\n if (Array.isArray(_data[\"guestsToDeactivate\"])) {\n this.guestsToDeactivate = [] as any;\n for (let item of _data[\"guestsToDeactivate\"])\n this.guestsToDeactivate!.push(item);\n }\n }\n }\n\n static fromJS(data: any): PricingPlanUserReductionDataRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new PricingPlanUserReductionDataRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.usersToDeactivate)) {\n data[\"usersToDeactivate\"] = [];\n for (let item of this.usersToDeactivate)\n data[\"usersToDeactivate\"].push(item);\n }\n if (Array.isArray(this.guestsToDeactivate)) {\n data[\"guestsToDeactivate\"] = [];\n for (let item of this.guestsToDeactivate)\n data[\"guestsToDeactivate\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IPricingPlanUserReductionDataRequestModel {\n usersToDeactivate?: number[] | undefined;\n guestsToDeactivate?: number[] | undefined;\n}\n\nexport enum PriorityEnum {\n Critical = \"Critical\",\n High = \"High\",\n Medium = \"Medium\",\n Low = \"Low\",\n}\n\nexport class PriorityNewOld implements IPriorityNewOld {\n oldValue?: PriorityEnum;\n newValue?: PriorityEnum;\n\n constructor(data?: IPriorityNewOld) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.oldValue = _data[\"oldValue\"];\n this.newValue = _data[\"newValue\"];\n }\n }\n\n static fromJS(data: any): PriorityNewOld {\n data = typeof data === 'object' ? data : {};\n let result = new PriorityNewOld();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"oldValue\"] = this.oldValue;\n data[\"newValue\"] = this.newValue;\n return data;\n }\n}\n\nexport interface IPriorityNewOld {\n oldValue?: PriorityEnum;\n newValue?: PriorityEnum;\n}\n\nexport class PriorityResponse implements IPriorityResponse {\n id!: number;\n semantics!: PriorityEnum;\n name!: string;\n description?: string | undefined;\n urgencyImpactMapping!: UrgencyImpatPair[];\n\n constructor(data?: IPriorityResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.urgencyImpactMapping = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.semantics = _data[\"semantics\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n if (Array.isArray(_data[\"urgencyImpactMapping\"])) {\n this.urgencyImpactMapping = [] as any;\n for (let item of _data[\"urgencyImpactMapping\"])\n this.urgencyImpactMapping!.push(UrgencyImpatPair.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): PriorityResponse {\n data = typeof data === 'object' ? data : {};\n let result = new PriorityResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"semantics\"] = this.semantics;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n if (Array.isArray(this.urgencyImpactMapping)) {\n data[\"urgencyImpactMapping\"] = [];\n for (let item of this.urgencyImpactMapping)\n data[\"urgencyImpactMapping\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IPriorityResponse {\n id: number;\n semantics: PriorityEnum;\n name: string;\n description?: string | undefined;\n urgencyImpactMapping: UrgencyImpatPair[];\n}\n\nexport class PriorityResponseItemsResponseModel implements IPriorityResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: PriorityResponse[] | undefined;\n\n constructor(data?: IPriorityResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(PriorityResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): PriorityResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new PriorityResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IPriorityResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: PriorityResponse[] | undefined;\n}\n\nexport class ProjectAccomplishmentResponse implements IProjectAccomplishmentResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n reportId!: number;\n plannedDate?: Date | undefined;\n status!: ReportItemStatusEnum;\n\n constructor(data?: IProjectAccomplishmentResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.reportId = _data[\"reportId\"];\n this.plannedDate = _data[\"plannedDate\"] ? new Date(_data[\"plannedDate\"].toString()) : undefined;\n this.status = _data[\"status\"];\n }\n }\n\n static fromJS(data: any): ProjectAccomplishmentResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectAccomplishmentResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"reportId\"] = this.reportId;\n data[\"plannedDate\"] = this.plannedDate ? formatDate(this.plannedDate) : undefined;\n data[\"status\"] = this.status;\n return data;\n }\n}\n\nexport interface IProjectAccomplishmentResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n reportId: number;\n plannedDate?: Date | undefined;\n status: ReportItemStatusEnum;\n}\n\nexport class ProjectAccomplishmentResponseItemsResponseModel implements IProjectAccomplishmentResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectAccomplishmentResponse[] | undefined;\n\n constructor(data?: IProjectAccomplishmentResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectAccomplishmentResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectAccomplishmentResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectAccomplishmentResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectAccomplishmentResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectAccomplishmentResponse[] | undefined;\n}\n\nexport class ProjectAccomplishmentResponseSimpleResponseModel implements IProjectAccomplishmentResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectAccomplishmentResponse;\n\n constructor(data?: IProjectAccomplishmentResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectAccomplishmentResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectAccomplishmentResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectAccomplishmentResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectAccomplishmentResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectAccomplishmentResponse;\n}\n\nexport class ProjectActionResponse implements IProjectActionResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n reportId!: number;\n status!: ReportItemStatusEnum;\n\n constructor(data?: IProjectActionResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.reportId = _data[\"reportId\"];\n this.status = _data[\"status\"];\n }\n }\n\n static fromJS(data: any): ProjectActionResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectActionResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"reportId\"] = this.reportId;\n data[\"status\"] = this.status;\n return data;\n }\n}\n\nexport interface IProjectActionResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n reportId: number;\n status: ReportItemStatusEnum;\n}\n\nexport class ProjectActionResponseItemsResponseModel implements IProjectActionResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectActionResponse[] | undefined;\n\n constructor(data?: IProjectActionResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectActionResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectActionResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectActionResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectActionResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectActionResponse[] | undefined;\n}\n\nexport class ProjectActionResponseSimpleResponseModel implements IProjectActionResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectActionResponse;\n\n constructor(data?: IProjectActionResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectActionResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectActionResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectActionResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectActionResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectActionResponse;\n}\n\nexport class ProjectActualBudgetDashboardResponse implements IProjectActualBudgetDashboardResponse {\n actualBudgetPerProject?: { [key: string]: ActualBudgetResponse; } | undefined;\n incomePerProjectType?: { [key: string]: number; } | undefined;\n expensePerProjectType?: { [key: string]: number; } | undefined;\n profitPerProjectType?: { [key: string]: number; } | undefined;\n incomePerProjectCategory?: { [key: string]: number; } | undefined;\n expensePerProjectCategory?: { [key: string]: number; } | undefined;\n profitPerProjectCategory?: { [key: string]: number; } | undefined;\n\n constructor(data?: IProjectActualBudgetDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"actualBudgetPerProject\"]) {\n this.actualBudgetPerProject = {} as any;\n for (let key in _data[\"actualBudgetPerProject\"]) {\n if (_data[\"actualBudgetPerProject\"].hasOwnProperty(key))\n (this.actualBudgetPerProject)![key] = _data[\"actualBudgetPerProject\"][key] ? ActualBudgetResponse.fromJS(_data[\"actualBudgetPerProject\"][key]) : new ActualBudgetResponse();\n }\n }\n if (_data[\"incomePerProjectType\"]) {\n this.incomePerProjectType = {} as any;\n for (let key in _data[\"incomePerProjectType\"]) {\n if (_data[\"incomePerProjectType\"].hasOwnProperty(key))\n (this.incomePerProjectType)![key] = _data[\"incomePerProjectType\"][key];\n }\n }\n if (_data[\"expensePerProjectType\"]) {\n this.expensePerProjectType = {} as any;\n for (let key in _data[\"expensePerProjectType\"]) {\n if (_data[\"expensePerProjectType\"].hasOwnProperty(key))\n (this.expensePerProjectType)![key] = _data[\"expensePerProjectType\"][key];\n }\n }\n if (_data[\"profitPerProjectType\"]) {\n this.profitPerProjectType = {} as any;\n for (let key in _data[\"profitPerProjectType\"]) {\n if (_data[\"profitPerProjectType\"].hasOwnProperty(key))\n (this.profitPerProjectType)![key] = _data[\"profitPerProjectType\"][key];\n }\n }\n if (_data[\"incomePerProjectCategory\"]) {\n this.incomePerProjectCategory = {} as any;\n for (let key in _data[\"incomePerProjectCategory\"]) {\n if (_data[\"incomePerProjectCategory\"].hasOwnProperty(key))\n (this.incomePerProjectCategory)![key] = _data[\"incomePerProjectCategory\"][key];\n }\n }\n if (_data[\"expensePerProjectCategory\"]) {\n this.expensePerProjectCategory = {} as any;\n for (let key in _data[\"expensePerProjectCategory\"]) {\n if (_data[\"expensePerProjectCategory\"].hasOwnProperty(key))\n (this.expensePerProjectCategory)![key] = _data[\"expensePerProjectCategory\"][key];\n }\n }\n if (_data[\"profitPerProjectCategory\"]) {\n this.profitPerProjectCategory = {} as any;\n for (let key in _data[\"profitPerProjectCategory\"]) {\n if (_data[\"profitPerProjectCategory\"].hasOwnProperty(key))\n (this.profitPerProjectCategory)![key] = _data[\"profitPerProjectCategory\"][key];\n }\n }\n }\n }\n\n static fromJS(data: any): ProjectActualBudgetDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectActualBudgetDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.actualBudgetPerProject) {\n data[\"actualBudgetPerProject\"] = {};\n for (let key in this.actualBudgetPerProject) {\n if (this.actualBudgetPerProject.hasOwnProperty(key))\n (data[\"actualBudgetPerProject\"])[key] = this.actualBudgetPerProject[key] ? this.actualBudgetPerProject[key].toJSON() : undefined;\n }\n }\n if (this.incomePerProjectType) {\n data[\"incomePerProjectType\"] = {};\n for (let key in this.incomePerProjectType) {\n if (this.incomePerProjectType.hasOwnProperty(key))\n (data[\"incomePerProjectType\"])[key] = (this.incomePerProjectType)[key];\n }\n }\n if (this.expensePerProjectType) {\n data[\"expensePerProjectType\"] = {};\n for (let key in this.expensePerProjectType) {\n if (this.expensePerProjectType.hasOwnProperty(key))\n (data[\"expensePerProjectType\"])[key] = (this.expensePerProjectType)[key];\n }\n }\n if (this.profitPerProjectType) {\n data[\"profitPerProjectType\"] = {};\n for (let key in this.profitPerProjectType) {\n if (this.profitPerProjectType.hasOwnProperty(key))\n (data[\"profitPerProjectType\"])[key] = (this.profitPerProjectType)[key];\n }\n }\n if (this.incomePerProjectCategory) {\n data[\"incomePerProjectCategory\"] = {};\n for (let key in this.incomePerProjectCategory) {\n if (this.incomePerProjectCategory.hasOwnProperty(key))\n (data[\"incomePerProjectCategory\"])[key] = (this.incomePerProjectCategory)[key];\n }\n }\n if (this.expensePerProjectCategory) {\n data[\"expensePerProjectCategory\"] = {};\n for (let key in this.expensePerProjectCategory) {\n if (this.expensePerProjectCategory.hasOwnProperty(key))\n (data[\"expensePerProjectCategory\"])[key] = (this.expensePerProjectCategory)[key];\n }\n }\n if (this.profitPerProjectCategory) {\n data[\"profitPerProjectCategory\"] = {};\n for (let key in this.profitPerProjectCategory) {\n if (this.profitPerProjectCategory.hasOwnProperty(key))\n (data[\"profitPerProjectCategory\"])[key] = (this.profitPerProjectCategory)[key];\n }\n }\n return data;\n }\n}\n\nexport interface IProjectActualBudgetDashboardResponse {\n actualBudgetPerProject?: { [key: string]: ActualBudgetResponse; } | undefined;\n incomePerProjectType?: { [key: string]: number; } | undefined;\n expensePerProjectType?: { [key: string]: number; } | undefined;\n profitPerProjectType?: { [key: string]: number; } | undefined;\n incomePerProjectCategory?: { [key: string]: number; } | undefined;\n expensePerProjectCategory?: { [key: string]: number; } | undefined;\n profitPerProjectCategory?: { [key: string]: number; } | undefined;\n}\n\nexport class ProjectBusinessResponse implements IProjectBusinessResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n reportId!: number;\n value?: number | undefined;\n\n constructor(data?: IProjectBusinessResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.reportId = _data[\"reportId\"];\n this.value = _data[\"value\"];\n }\n }\n\n static fromJS(data: any): ProjectBusinessResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectBusinessResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"reportId\"] = this.reportId;\n data[\"value\"] = this.value;\n return data;\n }\n}\n\nexport interface IProjectBusinessResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n reportId: number;\n value?: number | undefined;\n}\n\nexport class ProjectBusinessResponseItemsResponseModel implements IProjectBusinessResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectBusinessResponse[] | undefined;\n\n constructor(data?: IProjectBusinessResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectBusinessResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectBusinessResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectBusinessResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectBusinessResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectBusinessResponse[] | undefined;\n}\n\nexport class ProjectBusinessResponseSimpleResponseModel implements IProjectBusinessResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectBusinessResponse;\n\n constructor(data?: IProjectBusinessResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectBusinessResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectBusinessResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectBusinessResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectBusinessResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectBusinessResponse;\n}\n\nexport class ProjectChangeRequestCountsResponse implements IProjectChangeRequestCountsResponse {\n totalCostSum!: number;\n totalEffortSum!: number;\n\n constructor(data?: IProjectChangeRequestCountsResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.totalCostSum = _data[\"totalCostSum\"];\n this.totalEffortSum = _data[\"totalEffortSum\"];\n }\n }\n\n static fromJS(data: any): ProjectChangeRequestCountsResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectChangeRequestCountsResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"totalCostSum\"] = this.totalCostSum;\n data[\"totalEffortSum\"] = this.totalEffortSum;\n return data;\n }\n}\n\nexport interface IProjectChangeRequestCountsResponse {\n totalCostSum: number;\n totalEffortSum: number;\n}\n\nexport class ProjectChangeRequestCountsResponseSimpleResponseModel implements IProjectChangeRequestCountsResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectChangeRequestCountsResponse;\n\n constructor(data?: IProjectChangeRequestCountsResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectChangeRequestCountsResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectChangeRequestCountsResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectChangeRequestCountsResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectChangeRequestCountsResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectChangeRequestCountsResponse;\n}\n\nexport class ProjectChangeRequestResponse implements IProjectChangeRequestResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n visibleId!: number;\n reportId!: number;\n isGenerated!: boolean;\n initiatedBy?: string | undefined;\n approvedByUserId?: number | undefined;\n requestedOn?: Date | undefined;\n priority!: ChangeRequestPriorityEnum;\n completitionOn?: Date | undefined;\n statusId!: number;\n effortInHours?: number | undefined;\n totalCost?: number | undefined;\n estimatedEffortInHours?: number | undefined;\n estimatedTotalCost?: number | undefined;\n goLiveCritical!: boolean;\n\n constructor(data?: IProjectChangeRequestResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.visibleId = _data[\"visibleId\"];\n this.reportId = _data[\"reportId\"];\n this.isGenerated = _data[\"isGenerated\"];\n this.initiatedBy = _data[\"initiatedBy\"];\n this.approvedByUserId = _data[\"approvedByUserId\"];\n this.requestedOn = _data[\"requestedOn\"] ? new Date(_data[\"requestedOn\"].toString()) : undefined;\n this.priority = _data[\"priority\"];\n this.completitionOn = _data[\"completitionOn\"] ? new Date(_data[\"completitionOn\"].toString()) : undefined;\n this.statusId = _data[\"statusId\"];\n this.effortInHours = _data[\"effortInHours\"];\n this.totalCost = _data[\"totalCost\"];\n this.estimatedEffortInHours = _data[\"estimatedEffortInHours\"];\n this.estimatedTotalCost = _data[\"estimatedTotalCost\"];\n this.goLiveCritical = _data[\"goLiveCritical\"];\n }\n }\n\n static fromJS(data: any): ProjectChangeRequestResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectChangeRequestResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"visibleId\"] = this.visibleId;\n data[\"reportId\"] = this.reportId;\n data[\"isGenerated\"] = this.isGenerated;\n data[\"initiatedBy\"] = this.initiatedBy;\n data[\"approvedByUserId\"] = this.approvedByUserId;\n data[\"requestedOn\"] = this.requestedOn ? formatDate(this.requestedOn) : undefined;\n data[\"priority\"] = this.priority;\n data[\"completitionOn\"] = this.completitionOn ? formatDate(this.completitionOn) : undefined;\n data[\"statusId\"] = this.statusId;\n data[\"effortInHours\"] = this.effortInHours;\n data[\"totalCost\"] = this.totalCost;\n data[\"estimatedEffortInHours\"] = this.estimatedEffortInHours;\n data[\"estimatedTotalCost\"] = this.estimatedTotalCost;\n data[\"goLiveCritical\"] = this.goLiveCritical;\n return data;\n }\n}\n\nexport interface IProjectChangeRequestResponse {\n id: number;\n name: string;\n description?: string | undefined;\n visibleId: number;\n reportId: number;\n isGenerated: boolean;\n initiatedBy?: string | undefined;\n approvedByUserId?: number | undefined;\n requestedOn?: Date | undefined;\n priority: ChangeRequestPriorityEnum;\n completitionOn?: Date | undefined;\n statusId: number;\n effortInHours?: number | undefined;\n totalCost?: number | undefined;\n estimatedEffortInHours?: number | undefined;\n estimatedTotalCost?: number | undefined;\n goLiveCritical: boolean;\n}\n\nexport class ProjectChangeRequestResponseItemsResponseModel implements IProjectChangeRequestResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectChangeRequestResponse[] | undefined;\n\n constructor(data?: IProjectChangeRequestResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectChangeRequestResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectChangeRequestResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectChangeRequestResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectChangeRequestResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectChangeRequestResponse[] | undefined;\n}\n\nexport class ProjectChangeRequestResponseSimpleResponseModel implements IProjectChangeRequestResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectChangeRequestResponse;\n\n constructor(data?: IProjectChangeRequestResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectChangeRequestResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectChangeRequestResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectChangeRequestResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectChangeRequestResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectChangeRequestResponse;\n}\n\nexport class ProjectConfigDeltaRequest implements IProjectConfigDeltaRequest {\n insert?: InsertProjectConfigRequest[] | undefined;\n update?: UpdateProjectConfigRequest[] | undefined;\n delete?: DeleteProjectConfigRequest[] | undefined;\n\n constructor(data?: IProjectConfigDeltaRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertProjectConfigRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateProjectConfigRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteProjectConfigRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectConfigDeltaRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectConfigDeltaRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectConfigDeltaRequest {\n insert?: InsertProjectConfigRequest[] | undefined;\n update?: UpdateProjectConfigRequest[] | undefined;\n delete?: DeleteProjectConfigRequest[] | undefined;\n}\n\nexport class ProjectConfigOrderDeltaRequest implements IProjectConfigOrderDeltaRequest {\n insert?: InsertProjectConfigOrderRequest[] | undefined;\n update?: UpdateProjectConfigOrderRequest[] | undefined;\n delete?: DeleteProjectConfigRequest[] | undefined;\n\n constructor(data?: IProjectConfigOrderDeltaRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertProjectConfigOrderRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateProjectConfigOrderRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteProjectConfigRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectConfigOrderDeltaRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectConfigOrderDeltaRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectConfigOrderDeltaRequest {\n insert?: InsertProjectConfigOrderRequest[] | undefined;\n update?: UpdateProjectConfigOrderRequest[] | undefined;\n delete?: DeleteProjectConfigRequest[] | undefined;\n}\n\nexport class ProjectDashboardFilterRequest implements IProjectDashboardFilterRequest {\n projectId!: number;\n testCycleIds?: number[] | undefined;\n trainingCycleIds?: number[] | undefined;\n\n constructor(data?: IProjectDashboardFilterRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectId = _data[\"projectId\"];\n if (Array.isArray(_data[\"testCycleIds\"])) {\n this.testCycleIds = [] as any;\n for (let item of _data[\"testCycleIds\"])\n this.testCycleIds!.push(item);\n }\n if (Array.isArray(_data[\"trainingCycleIds\"])) {\n this.trainingCycleIds = [] as any;\n for (let item of _data[\"trainingCycleIds\"])\n this.trainingCycleIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): ProjectDashboardFilterRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectDashboardFilterRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectId\"] = this.projectId;\n if (Array.isArray(this.testCycleIds)) {\n data[\"testCycleIds\"] = [];\n for (let item of this.testCycleIds)\n data[\"testCycleIds\"].push(item);\n }\n if (Array.isArray(this.trainingCycleIds)) {\n data[\"trainingCycleIds\"] = [];\n for (let item of this.trainingCycleIds)\n data[\"trainingCycleIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IProjectDashboardFilterRequest {\n projectId: number;\n testCycleIds?: number[] | undefined;\n trainingCycleIds?: number[] | undefined;\n}\n\nexport class ProjectDashboardResponse implements IProjectDashboardResponse {\n incomeExpenseProfit?: IncomeExpenseProfitDashboardResponse;\n incomingOutgoingOverdue?: IncomingOutgoingOverdueDashboardResponse;\n projectHoursPerPeriod?: ProjectHoursRowDashboardResponse[] | undefined;\n projectDurationCompletion?: ProjectDurationCompletionResponse;\n ticketsPerStatusCounts?: { [key: string]: number; } | undefined;\n tasksPerStatusCounts?: { [key: string]: number; } | undefined;\n testStatuses?: TestDashboardStatusesResponse[] | undefined;\n trainingStatusCounts?: { [key: string]: number; } | undefined;\n\n constructor(data?: IProjectDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.incomeExpenseProfit = _data[\"incomeExpenseProfit\"] ? IncomeExpenseProfitDashboardResponse.fromJS(_data[\"incomeExpenseProfit\"]) : undefined;\n this.incomingOutgoingOverdue = _data[\"incomingOutgoingOverdue\"] ? IncomingOutgoingOverdueDashboardResponse.fromJS(_data[\"incomingOutgoingOverdue\"]) : undefined;\n if (Array.isArray(_data[\"projectHoursPerPeriod\"])) {\n this.projectHoursPerPeriod = [] as any;\n for (let item of _data[\"projectHoursPerPeriod\"])\n this.projectHoursPerPeriod!.push(ProjectHoursRowDashboardResponse.fromJS(item));\n }\n this.projectDurationCompletion = _data[\"projectDurationCompletion\"] ? ProjectDurationCompletionResponse.fromJS(_data[\"projectDurationCompletion\"]) : undefined;\n if (_data[\"ticketsPerStatusCounts\"]) {\n this.ticketsPerStatusCounts = {} as any;\n for (let key in _data[\"ticketsPerStatusCounts\"]) {\n if (_data[\"ticketsPerStatusCounts\"].hasOwnProperty(key))\n (this.ticketsPerStatusCounts)![key] = _data[\"ticketsPerStatusCounts\"][key];\n }\n }\n if (_data[\"tasksPerStatusCounts\"]) {\n this.tasksPerStatusCounts = {} as any;\n for (let key in _data[\"tasksPerStatusCounts\"]) {\n if (_data[\"tasksPerStatusCounts\"].hasOwnProperty(key))\n (this.tasksPerStatusCounts)![key] = _data[\"tasksPerStatusCounts\"][key];\n }\n }\n if (Array.isArray(_data[\"testStatuses\"])) {\n this.testStatuses = [] as any;\n for (let item of _data[\"testStatuses\"])\n this.testStatuses!.push(TestDashboardStatusesResponse.fromJS(item));\n }\n if (_data[\"trainingStatusCounts\"]) {\n this.trainingStatusCounts = {} as any;\n for (let key in _data[\"trainingStatusCounts\"]) {\n if (_data[\"trainingStatusCounts\"].hasOwnProperty(key))\n (this.trainingStatusCounts)![key] = _data[\"trainingStatusCounts\"][key];\n }\n }\n }\n }\n\n static fromJS(data: any): ProjectDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"incomeExpenseProfit\"] = this.incomeExpenseProfit ? this.incomeExpenseProfit.toJSON() : undefined;\n data[\"incomingOutgoingOverdue\"] = this.incomingOutgoingOverdue ? this.incomingOutgoingOverdue.toJSON() : undefined;\n if (Array.isArray(this.projectHoursPerPeriod)) {\n data[\"projectHoursPerPeriod\"] = [];\n for (let item of this.projectHoursPerPeriod)\n data[\"projectHoursPerPeriod\"].push(item.toJSON());\n }\n data[\"projectDurationCompletion\"] = this.projectDurationCompletion ? this.projectDurationCompletion.toJSON() : undefined;\n if (this.ticketsPerStatusCounts) {\n data[\"ticketsPerStatusCounts\"] = {};\n for (let key in this.ticketsPerStatusCounts) {\n if (this.ticketsPerStatusCounts.hasOwnProperty(key))\n (data[\"ticketsPerStatusCounts\"])[key] = (this.ticketsPerStatusCounts)[key];\n }\n }\n if (this.tasksPerStatusCounts) {\n data[\"tasksPerStatusCounts\"] = {};\n for (let key in this.tasksPerStatusCounts) {\n if (this.tasksPerStatusCounts.hasOwnProperty(key))\n (data[\"tasksPerStatusCounts\"])[key] = (this.tasksPerStatusCounts)[key];\n }\n }\n if (Array.isArray(this.testStatuses)) {\n data[\"testStatuses\"] = [];\n for (let item of this.testStatuses)\n data[\"testStatuses\"].push(item.toJSON());\n }\n if (this.trainingStatusCounts) {\n data[\"trainingStatusCounts\"] = {};\n for (let key in this.trainingStatusCounts) {\n if (this.trainingStatusCounts.hasOwnProperty(key))\n (data[\"trainingStatusCounts\"])[key] = (this.trainingStatusCounts)[key];\n }\n }\n return data;\n }\n}\n\nexport interface IProjectDashboardResponse {\n incomeExpenseProfit?: IncomeExpenseProfitDashboardResponse;\n incomingOutgoingOverdue?: IncomingOutgoingOverdueDashboardResponse;\n projectHoursPerPeriod?: ProjectHoursRowDashboardResponse[] | undefined;\n projectDurationCompletion?: ProjectDurationCompletionResponse;\n ticketsPerStatusCounts?: { [key: string]: number; } | undefined;\n tasksPerStatusCounts?: { [key: string]: number; } | undefined;\n testStatuses?: TestDashboardStatusesResponse[] | undefined;\n trainingStatusCounts?: { [key: string]: number; } | undefined;\n}\n\nexport class ProjectDashboardResponseSimpleResponseModel implements IProjectDashboardResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectDashboardResponse;\n\n constructor(data?: IProjectDashboardResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectDashboardResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectDashboardResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectDashboardResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectDashboardResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectDashboardResponse;\n}\n\nexport class ProjectDeliverableResponse implements IProjectDeliverableResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n reportId!: number;\n visibleId?: number | undefined;\n isGenerated!: boolean;\n wbs!: string;\n complete?: number | undefined;\n finish?: Date | undefined;\n achievedDate?: Date | undefined;\n\n constructor(data?: IProjectDeliverableResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.reportId = _data[\"reportId\"];\n this.visibleId = _data[\"visibleId\"];\n this.isGenerated = _data[\"isGenerated\"];\n this.wbs = _data[\"wbs\"];\n this.complete = _data[\"complete\"];\n this.finish = _data[\"finish\"] ? new Date(_data[\"finish\"].toString()) : undefined;\n this.achievedDate = _data[\"achievedDate\"] ? new Date(_data[\"achievedDate\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectDeliverableResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectDeliverableResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"reportId\"] = this.reportId;\n data[\"visibleId\"] = this.visibleId;\n data[\"isGenerated\"] = this.isGenerated;\n data[\"wbs\"] = this.wbs;\n data[\"complete\"] = this.complete;\n data[\"finish\"] = this.finish ? formatDate(this.finish) : undefined;\n data[\"achievedDate\"] = this.achievedDate ? formatDate(this.achievedDate) : undefined;\n return data;\n }\n}\n\nexport interface IProjectDeliverableResponse {\n id: number;\n name: string;\n description?: string | undefined;\n reportId: number;\n visibleId?: number | undefined;\n isGenerated: boolean;\n wbs: string;\n complete?: number | undefined;\n finish?: Date | undefined;\n achievedDate?: Date | undefined;\n}\n\nexport class ProjectDeliverableResponseItemsResponseModel implements IProjectDeliverableResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectDeliverableResponse[] | undefined;\n\n constructor(data?: IProjectDeliverableResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectDeliverableResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectDeliverableResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectDeliverableResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectDeliverableResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectDeliverableResponse[] | undefined;\n}\n\nexport class ProjectDeliverableResponseSimpleResponseModel implements IProjectDeliverableResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectDeliverableResponse;\n\n constructor(data?: IProjectDeliverableResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectDeliverableResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectDeliverableResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectDeliverableResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectDeliverableResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectDeliverableResponse;\n}\n\nexport class ProjectDurationCompletionResponse implements IProjectDurationCompletionResponse {\n projectDurationInDays!: number;\n percentOfCompletion!: number;\n\n constructor(data?: IProjectDurationCompletionResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectDurationInDays = _data[\"projectDurationInDays\"];\n this.percentOfCompletion = _data[\"percentOfCompletion\"];\n }\n }\n\n static fromJS(data: any): ProjectDurationCompletionResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectDurationCompletionResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectDurationInDays\"] = this.projectDurationInDays;\n data[\"percentOfCompletion\"] = this.percentOfCompletion;\n return data;\n }\n}\n\nexport interface IProjectDurationCompletionResponse {\n projectDurationInDays: number;\n percentOfCompletion: number;\n}\n\nexport class ProjectFinanceCountsResponse implements IProjectFinanceCountsResponse {\n amountSum!: number;\n taxAmountSum!: number;\n totalAmountSum!: number;\n\n constructor(data?: IProjectFinanceCountsResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.amountSum = _data[\"amountSum\"];\n this.taxAmountSum = _data[\"taxAmountSum\"];\n this.totalAmountSum = _data[\"totalAmountSum\"];\n }\n }\n\n static fromJS(data: any): ProjectFinanceCountsResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectFinanceCountsResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"amountSum\"] = this.amountSum;\n data[\"taxAmountSum\"] = this.taxAmountSum;\n data[\"totalAmountSum\"] = this.totalAmountSum;\n return data;\n }\n}\n\nexport interface IProjectFinanceCountsResponse {\n amountSum: number;\n taxAmountSum: number;\n totalAmountSum: number;\n}\n\nexport class ProjectFinanceCountsResponseSimpleResponseModel implements IProjectFinanceCountsResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectFinanceCountsResponse;\n\n constructor(data?: IProjectFinanceCountsResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectFinanceCountsResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectFinanceCountsResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectFinanceCountsResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectFinanceCountsResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectFinanceCountsResponse;\n}\n\nexport class ProjectFinanceResponse implements IProjectFinanceResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n visibleId!: number;\n reportId!: number;\n isGenerated!: boolean;\n invoiceType!: InvoiceTypeEnum;\n invoiceNumber!: string;\n partnerId!: number;\n issueDate!: Date;\n due!: Date;\n readonly paymentTerm!: number;\n amount!: number;\n taxAmount!: number;\n readonly totalAmount!: number;\n statusId!: number;\n\n constructor(data?: IProjectFinanceResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.visibleId = _data[\"visibleId\"];\n this.reportId = _data[\"reportId\"];\n this.isGenerated = _data[\"isGenerated\"];\n this.invoiceType = _data[\"invoiceType\"];\n this.invoiceNumber = _data[\"invoiceNumber\"];\n this.partnerId = _data[\"partnerId\"];\n this.issueDate = _data[\"issueDate\"] ? new Date(_data[\"issueDate\"].toString()) : undefined;\n this.due = _data[\"due\"] ? new Date(_data[\"due\"].toString()) : undefined;\n (this).paymentTerm = _data[\"paymentTerm\"];\n this.amount = _data[\"amount\"];\n this.taxAmount = _data[\"taxAmount\"];\n (this).totalAmount = _data[\"totalAmount\"];\n this.statusId = _data[\"statusId\"];\n }\n }\n\n static fromJS(data: any): ProjectFinanceResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectFinanceResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"visibleId\"] = this.visibleId;\n data[\"reportId\"] = this.reportId;\n data[\"isGenerated\"] = this.isGenerated;\n data[\"invoiceType\"] = this.invoiceType;\n data[\"invoiceNumber\"] = this.invoiceNumber;\n data[\"partnerId\"] = this.partnerId;\n data[\"issueDate\"] = this.issueDate ? formatDate(this.issueDate) : undefined;\n data[\"due\"] = this.due ? formatDate(this.due) : undefined;\n data[\"paymentTerm\"] = this.paymentTerm;\n data[\"amount\"] = this.amount;\n data[\"taxAmount\"] = this.taxAmount;\n data[\"totalAmount\"] = this.totalAmount;\n data[\"statusId\"] = this.statusId;\n return data;\n }\n}\n\nexport interface IProjectFinanceResponse {\n id: number;\n name: string;\n description?: string | undefined;\n visibleId: number;\n reportId: number;\n isGenerated: boolean;\n invoiceType: InvoiceTypeEnum;\n invoiceNumber: string;\n partnerId: number;\n issueDate: Date;\n due: Date;\n paymentTerm: number;\n amount: number;\n taxAmount: number;\n totalAmount: number;\n statusId: number;\n}\n\nexport class ProjectFinanceResponseItemsResponseModel implements IProjectFinanceResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectFinanceResponse[] | undefined;\n\n constructor(data?: IProjectFinanceResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectFinanceResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectFinanceResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectFinanceResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectFinanceResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectFinanceResponse[] | undefined;\n}\n\nexport class ProjectFinanceResponseSimpleResponseModel implements IProjectFinanceResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectFinanceResponse;\n\n constructor(data?: IProjectFinanceResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectFinanceResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectFinanceResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectFinanceResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectFinanceResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectFinanceResponse;\n}\n\nexport class ProjectGetAllResponse implements IProjectGetAllResponse {\n id!: number;\n name!: string;\n statusId!: number;\n pmId!: number;\n typeId?: number | undefined;\n categoryId?: number | undefined;\n organizationalUnitId?: number | undefined;\n description?: string | undefined;\n from?: Date | undefined;\n to?: Date | undefined;\n roleId?: TokenTypeEnum;\n\n constructor(data?: IProjectGetAllResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.statusId = _data[\"statusId\"];\n this.pmId = _data[\"pmId\"];\n this.typeId = _data[\"typeId\"];\n this.categoryId = _data[\"categoryId\"];\n this.organizationalUnitId = _data[\"organizationalUnitId\"];\n this.description = _data[\"description\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.roleId = _data[\"roleId\"];\n }\n }\n\n static fromJS(data: any): ProjectGetAllResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectGetAllResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"statusId\"] = this.statusId;\n data[\"pmId\"] = this.pmId;\n data[\"typeId\"] = this.typeId;\n data[\"categoryId\"] = this.categoryId;\n data[\"organizationalUnitId\"] = this.organizationalUnitId;\n data[\"description\"] = this.description;\n data[\"from\"] = this.from ? this.from.toISOString() : undefined;\n data[\"to\"] = this.to ? this.to.toISOString() : undefined;\n data[\"roleId\"] = this.roleId;\n return data;\n }\n}\n\nexport interface IProjectGetAllResponse {\n id: number;\n name: string;\n statusId: number;\n pmId: number;\n typeId?: number | undefined;\n categoryId?: number | undefined;\n organizationalUnitId?: number | undefined;\n description?: string | undefined;\n from?: Date | undefined;\n to?: Date | undefined;\n roleId?: TokenTypeEnum;\n}\n\nexport class ProjectGetAllResponseItemsResponseModel implements IProjectGetAllResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectGetAllResponse[] | undefined;\n\n constructor(data?: IProjectGetAllResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectGetAllResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectGetAllResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectGetAllResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectGetAllResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectGetAllResponse[] | undefined;\n}\n\nexport class ProjectHoursRowDashboardResponse implements IProjectHoursRowDashboardResponse {\n date!: Date;\n hours!: number;\n\n constructor(data?: IProjectHoursRowDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.hours = _data[\"hours\"];\n }\n }\n\n static fromJS(data: any): ProjectHoursRowDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectHoursRowDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"date\"] = this.date ? this.date.toISOString() : undefined;\n data[\"hours\"] = this.hours;\n return data;\n }\n}\n\nexport interface IProjectHoursRowDashboardResponse {\n date: Date;\n hours: number;\n}\n\nexport class ProjectIdRequest implements IProjectIdRequest {\n projectId!: number;\n\n constructor(data?: IProjectIdRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectId = _data[\"projectId\"];\n }\n }\n\n static fromJS(data: any): ProjectIdRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectIdRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectId\"] = this.projectId;\n return data;\n }\n}\n\nexport interface IProjectIdRequest {\n projectId: number;\n}\n\nexport class ProjectIsActiveOrderResponse implements IProjectIsActiveOrderResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n projectId!: number;\n order!: number;\n\n constructor(data?: IProjectIsActiveOrderResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.projectId = _data[\"projectId\"];\n this.order = _data[\"order\"];\n }\n }\n\n static fromJS(data: any): ProjectIsActiveOrderResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectIsActiveOrderResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"projectId\"] = this.projectId;\n data[\"order\"] = this.order;\n return data;\n }\n}\n\nexport interface IProjectIsActiveOrderResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n projectId: number;\n order: number;\n}\n\nexport class ProjectIsActiveOrderResponseItemsResponseModel implements IProjectIsActiveOrderResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectIsActiveOrderResponse[] | undefined;\n\n constructor(data?: IProjectIsActiveOrderResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectIsActiveOrderResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectIsActiveOrderResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectIsActiveOrderResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectIsActiveOrderResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectIsActiveOrderResponse[] | undefined;\n}\n\nexport class ProjectIsActiveResponse implements IProjectIsActiveResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n projectId!: number;\n\n constructor(data?: IProjectIsActiveResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.projectId = _data[\"projectId\"];\n }\n }\n\n static fromJS(data: any): ProjectIsActiveResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectIsActiveResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"projectId\"] = this.projectId;\n return data;\n }\n}\n\nexport interface IProjectIsActiveResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n projectId: number;\n}\n\nexport class ProjectIsActiveResponseItemsResponseModel implements IProjectIsActiveResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectIsActiveResponse[] | undefined;\n\n constructor(data?: IProjectIsActiveResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectIsActiveResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectIsActiveResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectIsActiveResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectIsActiveResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectIsActiveResponse[] | undefined;\n}\n\nexport class ProjectIssueResponse implements IProjectIssueResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n reportId!: number;\n impact?: string | undefined;\n solution?: string | undefined;\n resolution?: string | undefined;\n\n constructor(data?: IProjectIssueResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.reportId = _data[\"reportId\"];\n this.impact = _data[\"impact\"];\n this.solution = _data[\"solution\"];\n this.resolution = _data[\"resolution\"];\n }\n }\n\n static fromJS(data: any): ProjectIssueResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectIssueResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"reportId\"] = this.reportId;\n data[\"impact\"] = this.impact;\n data[\"solution\"] = this.solution;\n data[\"resolution\"] = this.resolution;\n return data;\n }\n}\n\nexport interface IProjectIssueResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n reportId: number;\n impact?: string | undefined;\n solution?: string | undefined;\n resolution?: string | undefined;\n}\n\nexport class ProjectIssueResponseItemsResponseModel implements IProjectIssueResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectIssueResponse[] | undefined;\n\n constructor(data?: IProjectIssueResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectIssueResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectIssueResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectIssueResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectIssueResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectIssueResponse[] | undefined;\n}\n\nexport class ProjectIssueResponseSimpleResponseModel implements IProjectIssueResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectIssueResponse;\n\n constructor(data?: IProjectIssueResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectIssueResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectIssueResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectIssueResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectIssueResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectIssueResponse;\n}\n\nexport class ProjectMilestoneResponse implements IProjectMilestoneResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n reportId!: number;\n visibleId?: number | undefined;\n isGenerated!: boolean;\n wbs!: string;\n duration?: number | undefined;\n complete?: number | undefined;\n start?: Date | undefined;\n finish?: Date | undefined;\n achievedDate?: Date | undefined;\n milestoneDeviation?: string | undefined;\n\n constructor(data?: IProjectMilestoneResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.reportId = _data[\"reportId\"];\n this.visibleId = _data[\"visibleId\"];\n this.isGenerated = _data[\"isGenerated\"];\n this.wbs = _data[\"wbs\"];\n this.duration = _data[\"duration\"];\n this.complete = _data[\"complete\"];\n this.start = _data[\"start\"] ? new Date(_data[\"start\"].toString()) : undefined;\n this.finish = _data[\"finish\"] ? new Date(_data[\"finish\"].toString()) : undefined;\n this.achievedDate = _data[\"achievedDate\"] ? new Date(_data[\"achievedDate\"].toString()) : undefined;\n this.milestoneDeviation = _data[\"milestoneDeviation\"];\n }\n }\n\n static fromJS(data: any): ProjectMilestoneResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectMilestoneResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"reportId\"] = this.reportId;\n data[\"visibleId\"] = this.visibleId;\n data[\"isGenerated\"] = this.isGenerated;\n data[\"wbs\"] = this.wbs;\n data[\"duration\"] = this.duration;\n data[\"complete\"] = this.complete;\n data[\"start\"] = this.start ? formatDate(this.start) : undefined;\n data[\"finish\"] = this.finish ? formatDate(this.finish) : undefined;\n data[\"achievedDate\"] = this.achievedDate ? formatDate(this.achievedDate) : undefined;\n data[\"milestoneDeviation\"] = this.milestoneDeviation;\n return data;\n }\n}\n\nexport interface IProjectMilestoneResponse {\n id: number;\n name: string;\n description?: string | undefined;\n reportId: number;\n visibleId?: number | undefined;\n isGenerated: boolean;\n wbs: string;\n duration?: number | undefined;\n complete?: number | undefined;\n start?: Date | undefined;\n finish?: Date | undefined;\n achievedDate?: Date | undefined;\n milestoneDeviation?: string | undefined;\n}\n\nexport class ProjectMilestoneResponseItemsResponseModel implements IProjectMilestoneResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectMilestoneResponse[] | undefined;\n\n constructor(data?: IProjectMilestoneResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectMilestoneResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectMilestoneResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectMilestoneResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectMilestoneResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectMilestoneResponse[] | undefined;\n}\n\nexport class ProjectMilestoneResponseSimpleResponseModel implements IProjectMilestoneResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectMilestoneResponse;\n\n constructor(data?: IProjectMilestoneResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectMilestoneResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectMilestoneResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectMilestoneResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectMilestoneResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectMilestoneResponse;\n}\n\nexport class ProjectQualityResponse implements IProjectQualityResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n reportId!: number;\n visibleId?: number | undefined;\n isGenerated!: boolean;\n wbs!: string;\n finish?: Date | undefined;\n achievedData?: Date | undefined;\n actions?: string | undefined;\n status!: ReportItemStatusEnum;\n\n constructor(data?: IProjectQualityResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.reportId = _data[\"reportId\"];\n this.visibleId = _data[\"visibleId\"];\n this.isGenerated = _data[\"isGenerated\"];\n this.wbs = _data[\"wbs\"];\n this.finish = _data[\"finish\"] ? new Date(_data[\"finish\"].toString()) : undefined;\n this.achievedData = _data[\"achievedData\"] ? new Date(_data[\"achievedData\"].toString()) : undefined;\n this.actions = _data[\"actions\"];\n this.status = _data[\"status\"];\n }\n }\n\n static fromJS(data: any): ProjectQualityResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectQualityResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"reportId\"] = this.reportId;\n data[\"visibleId\"] = this.visibleId;\n data[\"isGenerated\"] = this.isGenerated;\n data[\"wbs\"] = this.wbs;\n data[\"finish\"] = this.finish ? formatDate(this.finish) : undefined;\n data[\"achievedData\"] = this.achievedData ? formatDate(this.achievedData) : undefined;\n data[\"actions\"] = this.actions;\n data[\"status\"] = this.status;\n return data;\n }\n}\n\nexport interface IProjectQualityResponse {\n id: number;\n name: string;\n description?: string | undefined;\n reportId: number;\n visibleId?: number | undefined;\n isGenerated: boolean;\n wbs: string;\n finish?: Date | undefined;\n achievedData?: Date | undefined;\n actions?: string | undefined;\n status: ReportItemStatusEnum;\n}\n\nexport class ProjectQualityResponseItemsResponseModel implements IProjectQualityResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectQualityResponse[] | undefined;\n\n constructor(data?: IProjectQualityResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectQualityResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectQualityResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectQualityResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectQualityResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectQualityResponse[] | undefined;\n}\n\nexport class ProjectQualityResponseSimpleResponseModel implements IProjectQualityResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectQualityResponse;\n\n constructor(data?: IProjectQualityResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectQualityResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectQualityResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectQualityResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectQualityResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectQualityResponse;\n}\n\nexport class ProjectReportAreaRequest implements IProjectReportAreaRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n isActive!: boolean;\n status!: ReportStatusAreaEnum;\n\n constructor(data?: IProjectReportAreaRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.status = _data[\"status\"];\n }\n }\n\n static fromJS(data: any): ProjectReportAreaRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectReportAreaRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"status\"] = this.status;\n return data;\n }\n}\n\nexport interface IProjectReportAreaRequest {\n name: string;\n description?: string | undefined;\n id: number;\n isActive: boolean;\n status: ReportStatusAreaEnum;\n}\n\nexport class ProjectReportAreaResponse implements IProjectReportAreaResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n status!: ReportStatusAreaEnum;\n order!: number;\n\n constructor(data?: IProjectReportAreaResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.status = _data[\"status\"];\n this.order = _data[\"order\"];\n }\n }\n\n static fromJS(data: any): ProjectReportAreaResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectReportAreaResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"status\"] = this.status;\n data[\"order\"] = this.order;\n return data;\n }\n}\n\nexport interface IProjectReportAreaResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n status: ReportStatusAreaEnum;\n order: number;\n}\n\nexport class ProjectReportResponse implements IProjectReportResponse {\n id!: number;\n projectId!: number;\n from!: Date;\n to!: Date;\n projectFrom?: Date | undefined;\n projectTo?: Date | undefined;\n statusId!: number;\n relationshipStatus?: string | undefined;\n staffing?: string | undefined;\n areaStatuses!: ProjectReportAreaResponse[];\n\n constructor(data?: IProjectReportResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.areaStatuses = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.projectId = _data[\"projectId\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.projectFrom = _data[\"projectFrom\"] ? new Date(_data[\"projectFrom\"].toString()) : undefined;\n this.projectTo = _data[\"projectTo\"] ? new Date(_data[\"projectTo\"].toString()) : undefined;\n this.statusId = _data[\"statusId\"];\n this.relationshipStatus = _data[\"relationshipStatus\"];\n this.staffing = _data[\"staffing\"];\n if (Array.isArray(_data[\"areaStatuses\"])) {\n this.areaStatuses = [] as any;\n for (let item of _data[\"areaStatuses\"])\n this.areaStatuses!.push(ProjectReportAreaResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectReportResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectReportResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"projectId\"] = this.projectId;\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"projectFrom\"] = this.projectFrom ? formatDate(this.projectFrom) : undefined;\n data[\"projectTo\"] = this.projectTo ? formatDate(this.projectTo) : undefined;\n data[\"statusId\"] = this.statusId;\n data[\"relationshipStatus\"] = this.relationshipStatus;\n data[\"staffing\"] = this.staffing;\n if (Array.isArray(this.areaStatuses)) {\n data[\"areaStatuses\"] = [];\n for (let item of this.areaStatuses)\n data[\"areaStatuses\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectReportResponse {\n id: number;\n projectId: number;\n from: Date;\n to: Date;\n projectFrom?: Date | undefined;\n projectTo?: Date | undefined;\n statusId: number;\n relationshipStatus?: string | undefined;\n staffing?: string | undefined;\n areaStatuses: ProjectReportAreaResponse[];\n}\n\nexport class ProjectReportResponseItemsResponseModel implements IProjectReportResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectReportResponse[] | undefined;\n\n constructor(data?: IProjectReportResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectReportResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectReportResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectReportResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectReportResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectReportResponse[] | undefined;\n}\n\nexport class ProjectReportResponseSimpleResponseModel implements IProjectReportResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectReportResponse;\n\n constructor(data?: IProjectReportResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectReportResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectReportResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectReportResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectReportResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectReportResponse;\n}\n\nexport enum ProjectReportStatusEnum {\n Created = \"Created\",\n Released = \"Released\",\n}\n\nexport class ProjectResponse implements IProjectResponse {\n id!: number;\n name!: string;\n statusId!: number;\n pmId!: number;\n typeId?: number | undefined;\n categoryId?: number | undefined;\n organizationalUnitId?: number | undefined;\n isOrganizationalUnitManager!: boolean;\n description?: string | undefined;\n from?: Date | undefined;\n to?: Date | undefined;\n archaived!: boolean;\n activeModules?: ActiveModule[] | undefined;\n roleId?: TokenTypeEnum;\n permissions?: PermissionCollectionResponse;\n attachments?: AttachmentResponse[] | undefined;\n\n constructor(data?: IProjectResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.statusId = _data[\"statusId\"];\n this.pmId = _data[\"pmId\"];\n this.typeId = _data[\"typeId\"];\n this.categoryId = _data[\"categoryId\"];\n this.organizationalUnitId = _data[\"organizationalUnitId\"];\n this.isOrganizationalUnitManager = _data[\"isOrganizationalUnitManager\"];\n this.description = _data[\"description\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.archaived = _data[\"archaived\"];\n if (Array.isArray(_data[\"activeModules\"])) {\n this.activeModules = [] as any;\n for (let item of _data[\"activeModules\"])\n this.activeModules!.push(ActiveModule.fromJS(item));\n }\n this.roleId = _data[\"roleId\"];\n this.permissions = _data[\"permissions\"] ? PermissionCollectionResponse.fromJS(_data[\"permissions\"]) : undefined;\n if (Array.isArray(_data[\"attachments\"])) {\n this.attachments = [] as any;\n for (let item of _data[\"attachments\"])\n this.attachments!.push(AttachmentResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"statusId\"] = this.statusId;\n data[\"pmId\"] = this.pmId;\n data[\"typeId\"] = this.typeId;\n data[\"categoryId\"] = this.categoryId;\n data[\"organizationalUnitId\"] = this.organizationalUnitId;\n data[\"isOrganizationalUnitManager\"] = this.isOrganizationalUnitManager;\n data[\"description\"] = this.description;\n data[\"from\"] = this.from ? this.from.toISOString() : undefined;\n data[\"to\"] = this.to ? this.to.toISOString() : undefined;\n data[\"archaived\"] = this.archaived;\n if (Array.isArray(this.activeModules)) {\n data[\"activeModules\"] = [];\n for (let item of this.activeModules)\n data[\"activeModules\"].push(item.toJSON());\n }\n data[\"roleId\"] = this.roleId;\n data[\"permissions\"] = this.permissions ? this.permissions.toJSON() : undefined;\n if (Array.isArray(this.attachments)) {\n data[\"attachments\"] = [];\n for (let item of this.attachments)\n data[\"attachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectResponse {\n id: number;\n name: string;\n statusId: number;\n pmId: number;\n typeId?: number | undefined;\n categoryId?: number | undefined;\n organizationalUnitId?: number | undefined;\n isOrganizationalUnitManager: boolean;\n description?: string | undefined;\n from?: Date | undefined;\n to?: Date | undefined;\n archaived: boolean;\n activeModules?: ActiveModule[] | undefined;\n roleId?: TokenTypeEnum;\n permissions?: PermissionCollectionResponse;\n attachments?: AttachmentResponse[] | undefined;\n}\n\nexport class ProjectResponseItemsResponseModel implements IProjectResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectResponse[] | undefined;\n\n constructor(data?: IProjectResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectResponse[] | undefined;\n}\n\nexport class ProjectResponseSimpleResponseModel implements IProjectResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectResponse;\n\n constructor(data?: IProjectResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectResponse;\n}\n\nexport class ProjectRiskCountsResponse implements IProjectRiskCountsResponse {\n grossImpactSum!: number;\n netImpactSum!: number;\n mitigationCostSum!: number;\n grossImpactAfterMitigationSum!: number;\n netImpactAfterMitigationSum!: number;\n costBenefitSum!: number;\n riskInclusionSum!: number;\n\n constructor(data?: IProjectRiskCountsResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.grossImpactSum = _data[\"grossImpactSum\"];\n this.netImpactSum = _data[\"netImpactSum\"];\n this.mitigationCostSum = _data[\"mitigationCostSum\"];\n this.grossImpactAfterMitigationSum = _data[\"grossImpactAfterMitigationSum\"];\n this.netImpactAfterMitigationSum = _data[\"netImpactAfterMitigationSum\"];\n this.costBenefitSum = _data[\"costBenefitSum\"];\n this.riskInclusionSum = _data[\"riskInclusionSum\"];\n }\n }\n\n static fromJS(data: any): ProjectRiskCountsResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectRiskCountsResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"grossImpactSum\"] = this.grossImpactSum;\n data[\"netImpactSum\"] = this.netImpactSum;\n data[\"mitigationCostSum\"] = this.mitigationCostSum;\n data[\"grossImpactAfterMitigationSum\"] = this.grossImpactAfterMitigationSum;\n data[\"netImpactAfterMitigationSum\"] = this.netImpactAfterMitigationSum;\n data[\"costBenefitSum\"] = this.costBenefitSum;\n data[\"riskInclusionSum\"] = this.riskInclusionSum;\n return data;\n }\n}\n\nexport interface IProjectRiskCountsResponse {\n grossImpactSum: number;\n netImpactSum: number;\n mitigationCostSum: number;\n grossImpactAfterMitigationSum: number;\n netImpactAfterMitigationSum: number;\n costBenefitSum: number;\n riskInclusionSum: number;\n}\n\nexport class ProjectRiskCountsResponseSimpleResponseModel implements IProjectRiskCountsResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectRiskCountsResponse;\n\n constructor(data?: IProjectRiskCountsResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectRiskCountsResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectRiskCountsResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectRiskCountsResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectRiskCountsResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectRiskCountsResponse;\n}\n\nexport class ProjectRiskResponse implements IProjectRiskResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n visibleId!: number;\n reportId!: number;\n isGenerated!: boolean;\n consequneces?: string | undefined;\n effects?: string | undefined;\n grossImpact?: number | undefined;\n probability?: number | undefined;\n mitigation!: string;\n mitigationType!: MitigationTypeEnum;\n grossImpactAfterMitigation?: number | undefined;\n probabilityAfterMitigation?: number | undefined;\n responsibleUserId?: number | undefined;\n statusId!: number;\n dueDate?: Date | undefined;\n costOfMitigation?: number | undefined;\n\n constructor(data?: IProjectRiskResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.visibleId = _data[\"visibleId\"];\n this.reportId = _data[\"reportId\"];\n this.isGenerated = _data[\"isGenerated\"];\n this.consequneces = _data[\"consequneces\"];\n this.effects = _data[\"effects\"];\n this.grossImpact = _data[\"grossImpact\"];\n this.probability = _data[\"probability\"];\n this.mitigation = _data[\"mitigation\"];\n this.mitigationType = _data[\"mitigationType\"];\n this.grossImpactAfterMitigation = _data[\"grossImpactAfterMitigation\"];\n this.probabilityAfterMitigation = _data[\"probabilityAfterMitigation\"];\n this.responsibleUserId = _data[\"responsibleUserId\"];\n this.statusId = _data[\"statusId\"];\n this.dueDate = _data[\"dueDate\"] ? new Date(_data[\"dueDate\"].toString()) : undefined;\n this.costOfMitigation = _data[\"costOfMitigation\"];\n }\n }\n\n static fromJS(data: any): ProjectRiskResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectRiskResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"visibleId\"] = this.visibleId;\n data[\"reportId\"] = this.reportId;\n data[\"isGenerated\"] = this.isGenerated;\n data[\"consequneces\"] = this.consequneces;\n data[\"effects\"] = this.effects;\n data[\"grossImpact\"] = this.grossImpact;\n data[\"probability\"] = this.probability;\n data[\"mitigation\"] = this.mitigation;\n data[\"mitigationType\"] = this.mitigationType;\n data[\"grossImpactAfterMitigation\"] = this.grossImpactAfterMitigation;\n data[\"probabilityAfterMitigation\"] = this.probabilityAfterMitigation;\n data[\"responsibleUserId\"] = this.responsibleUserId;\n data[\"statusId\"] = this.statusId;\n data[\"dueDate\"] = this.dueDate ? formatDate(this.dueDate) : undefined;\n data[\"costOfMitigation\"] = this.costOfMitigation;\n return data;\n }\n}\n\nexport interface IProjectRiskResponse {\n id: number;\n name: string;\n description?: string | undefined;\n visibleId: number;\n reportId: number;\n isGenerated: boolean;\n consequneces?: string | undefined;\n effects?: string | undefined;\n grossImpact?: number | undefined;\n probability?: number | undefined;\n mitigation: string;\n mitigationType: MitigationTypeEnum;\n grossImpactAfterMitigation?: number | undefined;\n probabilityAfterMitigation?: number | undefined;\n responsibleUserId?: number | undefined;\n statusId: number;\n dueDate?: Date | undefined;\n costOfMitigation?: number | undefined;\n}\n\nexport class ProjectRiskResponseItemsResponseModel implements IProjectRiskResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectRiskResponse[] | undefined;\n\n constructor(data?: IProjectRiskResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectRiskResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectRiskResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectRiskResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectRiskResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectRiskResponse[] | undefined;\n}\n\nexport class ProjectRiskResponseSimpleResponseModel implements IProjectRiskResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectRiskResponse;\n\n constructor(data?: IProjectRiskResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectRiskResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectRiskResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectRiskResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectRiskResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectRiskResponse;\n}\n\nexport class ProjectSLAResponse implements IProjectSLAResponse {\n projectId!: number;\n isActive!: boolean;\n closingStatus!: TicketStatusEnum;\n resolutionTimeCalculationStatus!: TicketStatusEnum;\n resolutionTimeBasedOn!: ResolutionTimeBasedOnEnum;\n excludeOnHoldTime!: boolean;\n timeMeasure!: TimeMeasureEnum;\n workWeekFrom!: WeekDayEnum;\n workWeekTo!: WeekDayEnum;\n workTimeFrom!: number;\n workTimeTo!: number;\n responseTimes!: ResponseTimeResponse[];\n\n constructor(data?: IProjectSLAResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.responseTimes = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectId = _data[\"projectId\"];\n this.isActive = _data[\"isActive\"];\n this.closingStatus = _data[\"closingStatus\"];\n this.resolutionTimeCalculationStatus = _data[\"resolutionTimeCalculationStatus\"];\n this.resolutionTimeBasedOn = _data[\"resolutionTimeBasedOn\"];\n this.excludeOnHoldTime = _data[\"excludeOnHoldTime\"];\n this.timeMeasure = _data[\"timeMeasure\"];\n this.workWeekFrom = _data[\"workWeekFrom\"];\n this.workWeekTo = _data[\"workWeekTo\"];\n this.workTimeFrom = _data[\"workTimeFrom\"];\n this.workTimeTo = _data[\"workTimeTo\"];\n if (Array.isArray(_data[\"responseTimes\"])) {\n this.responseTimes = [] as any;\n for (let item of _data[\"responseTimes\"])\n this.responseTimes!.push(ResponseTimeResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectSLAResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectSLAResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectId\"] = this.projectId;\n data[\"isActive\"] = this.isActive;\n data[\"closingStatus\"] = this.closingStatus;\n data[\"resolutionTimeCalculationStatus\"] = this.resolutionTimeCalculationStatus;\n data[\"resolutionTimeBasedOn\"] = this.resolutionTimeBasedOn;\n data[\"excludeOnHoldTime\"] = this.excludeOnHoldTime;\n data[\"timeMeasure\"] = this.timeMeasure;\n data[\"workWeekFrom\"] = this.workWeekFrom;\n data[\"workWeekTo\"] = this.workWeekTo;\n data[\"workTimeFrom\"] = this.workTimeFrom;\n data[\"workTimeTo\"] = this.workTimeTo;\n if (Array.isArray(this.responseTimes)) {\n data[\"responseTimes\"] = [];\n for (let item of this.responseTimes)\n data[\"responseTimes\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectSLAResponse {\n projectId: number;\n isActive: boolean;\n closingStatus: TicketStatusEnum;\n resolutionTimeCalculationStatus: TicketStatusEnum;\n resolutionTimeBasedOn: ResolutionTimeBasedOnEnum;\n excludeOnHoldTime: boolean;\n timeMeasure: TimeMeasureEnum;\n workWeekFrom: WeekDayEnum;\n workWeekTo: WeekDayEnum;\n workTimeFrom: number;\n workTimeTo: number;\n responseTimes: ResponseTimeResponse[];\n}\n\nexport class ProjectSLAResponseSimpleResponseModel implements IProjectSLAResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectSLAResponse;\n\n constructor(data?: IProjectSLAResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectSLAResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectSLAResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectSLAResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectSLAResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectSLAResponse;\n}\n\nexport enum ProjectStatusEnum {\n Planning = \"Planning\",\n Released = \"Released\",\n Completed = \"Completed\",\n Archived = \"Archived\",\n}\n\nexport class ProjectStatusResponse implements IProjectStatusResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n isReadonly!: boolean;\n color!: string;\n isInitial!: boolean;\n nextStates?: number[] | undefined;\n semantics!: ProjectStatusEnum;\n\n constructor(data?: IProjectStatusResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.isReadonly = _data[\"isReadonly\"];\n this.color = _data[\"color\"];\n this.isInitial = _data[\"isInitial\"];\n if (Array.isArray(_data[\"nextStates\"])) {\n this.nextStates = [] as any;\n for (let item of _data[\"nextStates\"])\n this.nextStates!.push(item);\n }\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): ProjectStatusResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectStatusResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"isReadonly\"] = this.isReadonly;\n data[\"color\"] = this.color;\n data[\"isInitial\"] = this.isInitial;\n if (Array.isArray(this.nextStates)) {\n data[\"nextStates\"] = [];\n for (let item of this.nextStates)\n data[\"nextStates\"].push(item);\n }\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface IProjectStatusResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n isReadonly: boolean;\n color: string;\n isInitial: boolean;\n nextStates?: number[] | undefined;\n semantics: ProjectStatusEnum;\n}\n\nexport class ProjectStatusResponseItemsResponseModel implements IProjectStatusResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectStatusResponse[] | undefined;\n\n constructor(data?: IProjectStatusResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectStatusResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectStatusResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectStatusResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectStatusResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectStatusResponse[] | undefined;\n}\n\nexport class ProjectSubcontractorResponse implements IProjectSubcontractorResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n reportId!: number;\n deliverable!: string;\n status!: ReportItemStatusEnum;\n issue!: string;\n solution?: string | undefined;\n resolution?: string | undefined;\n achievedDate?: Date | undefined;\n\n constructor(data?: IProjectSubcontractorResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.reportId = _data[\"reportId\"];\n this.deliverable = _data[\"deliverable\"];\n this.status = _data[\"status\"];\n this.issue = _data[\"issue\"];\n this.solution = _data[\"solution\"];\n this.resolution = _data[\"resolution\"];\n this.achievedDate = _data[\"achievedDate\"] ? new Date(_data[\"achievedDate\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectSubcontractorResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectSubcontractorResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"reportId\"] = this.reportId;\n data[\"deliverable\"] = this.deliverable;\n data[\"status\"] = this.status;\n data[\"issue\"] = this.issue;\n data[\"solution\"] = this.solution;\n data[\"resolution\"] = this.resolution;\n data[\"achievedDate\"] = this.achievedDate ? formatDate(this.achievedDate) : undefined;\n return data;\n }\n}\n\nexport interface IProjectSubcontractorResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n reportId: number;\n deliverable: string;\n status: ReportItemStatusEnum;\n issue: string;\n solution?: string | undefined;\n resolution?: string | undefined;\n achievedDate?: Date | undefined;\n}\n\nexport class ProjectSubcontractorResponseItemsResponseModel implements IProjectSubcontractorResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectSubcontractorResponse[] | undefined;\n\n constructor(data?: IProjectSubcontractorResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectSubcontractorResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectSubcontractorResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectSubcontractorResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectSubcontractorResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectSubcontractorResponse[] | undefined;\n}\n\nexport class ProjectSubcontractorResponseSimpleResponseModel implements IProjectSubcontractorResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectSubcontractorResponse;\n\n constructor(data?: IProjectSubcontractorResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectSubcontractorResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectSubcontractorResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectSubcontractorResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectSubcontractorResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectSubcontractorResponse;\n}\n\nexport class ProjectTeamMemberResponse implements IProjectTeamMemberResponse {\n id!: number;\n userId!: number;\n projectId!: number;\n roleId!: TokenTypeEnum;\n projectRoleId?: number | undefined;\n projectTeamId?: number | undefined;\n statusId!: number;\n validUntil?: Date | undefined;\n isActive!: boolean;\n permissions?: PermissionCollectionResponse;\n validityPeriods?: ProjectTeamMemberValidityPeriodResponse[] | undefined;\n readonly isPm!: boolean;\n readonly isSubstitutePm!: boolean;\n readonly isPmOrSubstitutePm!: boolean;\n currentValidityPeriod?: ProjectTeamMemberValidityPeriodResponse;\n readonly rateValidFrom?: Date | undefined;\n readonly rateValidTo?: Date | undefined;\n readonly lastSalesRate?: number | undefined;\n readonly lastCostRate?: number | undefined;\n projectRoleName?: string | undefined;\n projectTeamName?: string | undefined;\n\n constructor(data?: IProjectTeamMemberResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.userId = _data[\"userId\"];\n this.projectId = _data[\"projectId\"];\n this.roleId = _data[\"roleId\"];\n this.projectRoleId = _data[\"projectRoleId\"];\n this.projectTeamId = _data[\"projectTeamId\"];\n this.statusId = _data[\"statusId\"];\n this.validUntil = _data[\"validUntil\"] ? new Date(_data[\"validUntil\"].toString()) : undefined;\n this.isActive = _data[\"isActive\"];\n this.permissions = _data[\"permissions\"] ? PermissionCollectionResponse.fromJS(_data[\"permissions\"]) : undefined;\n if (Array.isArray(_data[\"validityPeriods\"])) {\n this.validityPeriods = [] as any;\n for (let item of _data[\"validityPeriods\"])\n this.validityPeriods!.push(ProjectTeamMemberValidityPeriodResponse.fromJS(item));\n }\n (this).isPm = _data[\"isPm\"];\n (this).isSubstitutePm = _data[\"isSubstitutePm\"];\n (this).isPmOrSubstitutePm = _data[\"isPmOrSubstitutePm\"];\n this.currentValidityPeriod = _data[\"currentValidityPeriod\"] ? ProjectTeamMemberValidityPeriodResponse.fromJS(_data[\"currentValidityPeriod\"]) : undefined;\n (this).rateValidFrom = _data[\"rateValidFrom\"] ? new Date(_data[\"rateValidFrom\"].toString()) : undefined;\n (this).rateValidTo = _data[\"rateValidTo\"] ? new Date(_data[\"rateValidTo\"].toString()) : undefined;\n (this).lastSalesRate = _data[\"lastSalesRate\"];\n (this).lastCostRate = _data[\"lastCostRate\"];\n this.projectRoleName = _data[\"projectRoleName\"];\n this.projectTeamName = _data[\"projectTeamName\"];\n }\n }\n\n static fromJS(data: any): ProjectTeamMemberResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectTeamMemberResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"userId\"] = this.userId;\n data[\"projectId\"] = this.projectId;\n data[\"roleId\"] = this.roleId;\n data[\"projectRoleId\"] = this.projectRoleId;\n data[\"projectTeamId\"] = this.projectTeamId;\n data[\"statusId\"] = this.statusId;\n data[\"validUntil\"] = this.validUntil ? formatDate(this.validUntil) : undefined;\n data[\"isActive\"] = this.isActive;\n data[\"permissions\"] = this.permissions ? this.permissions.toJSON() : undefined;\n if (Array.isArray(this.validityPeriods)) {\n data[\"validityPeriods\"] = [];\n for (let item of this.validityPeriods)\n data[\"validityPeriods\"].push(item.toJSON());\n }\n data[\"isPm\"] = this.isPm;\n data[\"isSubstitutePm\"] = this.isSubstitutePm;\n data[\"isPmOrSubstitutePm\"] = this.isPmOrSubstitutePm;\n data[\"currentValidityPeriod\"] = this.currentValidityPeriod ? this.currentValidityPeriod.toJSON() : undefined;\n data[\"rateValidFrom\"] = this.rateValidFrom ? formatDate(this.rateValidFrom) : undefined;\n data[\"rateValidTo\"] = this.rateValidTo ? formatDate(this.rateValidTo) : undefined;\n data[\"lastSalesRate\"] = this.lastSalesRate;\n data[\"lastCostRate\"] = this.lastCostRate;\n data[\"projectRoleName\"] = this.projectRoleName;\n data[\"projectTeamName\"] = this.projectTeamName;\n return data;\n }\n}\n\nexport interface IProjectTeamMemberResponse {\n id: number;\n userId: number;\n projectId: number;\n roleId: TokenTypeEnum;\n projectRoleId?: number | undefined;\n projectTeamId?: number | undefined;\n statusId: number;\n validUntil?: Date | undefined;\n isActive: boolean;\n permissions?: PermissionCollectionResponse;\n validityPeriods?: ProjectTeamMemberValidityPeriodResponse[] | undefined;\n isPm: boolean;\n isSubstitutePm: boolean;\n isPmOrSubstitutePm: boolean;\n currentValidityPeriod?: ProjectTeamMemberValidityPeriodResponse;\n rateValidFrom?: Date | undefined;\n rateValidTo?: Date | undefined;\n lastSalesRate?: number | undefined;\n lastCostRate?: number | undefined;\n projectRoleName?: string | undefined;\n projectTeamName?: string | undefined;\n}\n\nexport class ProjectTeamMemberResponseItemsResponseModel implements IProjectTeamMemberResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectTeamMemberResponse[] | undefined;\n\n constructor(data?: IProjectTeamMemberResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectTeamMemberResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectTeamMemberResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectTeamMemberResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectTeamMemberResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectTeamMemberResponse[] | undefined;\n}\n\nexport class ProjectTeamMemberResponseSimpleResponseModel implements IProjectTeamMemberResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectTeamMemberResponse;\n\n constructor(data?: IProjectTeamMemberResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectTeamMemberResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectTeamMemberResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectTeamMemberResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectTeamMemberResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectTeamMemberResponse;\n}\n\nexport class ProjectTeamMemberUserResponse implements IProjectTeamMemberUserResponse {\n id!: number;\n userId!: number;\n projectId!: number;\n roleId!: TokenTypeEnum;\n projectRoleId?: number | undefined;\n projectTeamId?: number | undefined;\n statusId!: number;\n validUntil?: Date | undefined;\n isActive!: boolean;\n permissions?: PermissionCollectionResponse;\n validityPeriods?: ProjectTeamMemberValidityPeriodResponse[] | undefined;\n readonly isPm!: boolean;\n readonly isSubstitutePm!: boolean;\n readonly isPmOrSubstitutePm!: boolean;\n currentValidityPeriod?: ProjectTeamMemberValidityPeriodResponse;\n readonly rateValidFrom?: Date | undefined;\n readonly rateValidTo?: Date | undefined;\n readonly lastSalesRate?: number | undefined;\n readonly lastCostRate?: number | undefined;\n projectRoleName?: string | undefined;\n projectTeamName?: string | undefined;\n firstName!: string;\n lastName!: string;\n email!: string;\n birthDate?: Date | undefined;\n officePhone?: string | undefined;\n mobilePhone?: string | undefined;\n address?: string | undefined;\n city?: string | undefined;\n department?: string | undefined;\n username!: string;\n countryId?: number | undefined;\n partnerId?: number | undefined;\n organizationalUnitId?: number | undefined;\n readonly isGuest!: boolean;\n readonly fullName?: string | undefined;\n\n constructor(data?: IProjectTeamMemberUserResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.userId = _data[\"userId\"];\n this.projectId = _data[\"projectId\"];\n this.roleId = _data[\"roleId\"];\n this.projectRoleId = _data[\"projectRoleId\"];\n this.projectTeamId = _data[\"projectTeamId\"];\n this.statusId = _data[\"statusId\"];\n this.validUntil = _data[\"validUntil\"] ? new Date(_data[\"validUntil\"].toString()) : undefined;\n this.isActive = _data[\"isActive\"];\n this.permissions = _data[\"permissions\"] ? PermissionCollectionResponse.fromJS(_data[\"permissions\"]) : undefined;\n if (Array.isArray(_data[\"validityPeriods\"])) {\n this.validityPeriods = [] as any;\n for (let item of _data[\"validityPeriods\"])\n this.validityPeriods!.push(ProjectTeamMemberValidityPeriodResponse.fromJS(item));\n }\n (this).isPm = _data[\"isPm\"];\n (this).isSubstitutePm = _data[\"isSubstitutePm\"];\n (this).isPmOrSubstitutePm = _data[\"isPmOrSubstitutePm\"];\n this.currentValidityPeriod = _data[\"currentValidityPeriod\"] ? ProjectTeamMemberValidityPeriodResponse.fromJS(_data[\"currentValidityPeriod\"]) : undefined;\n (this).rateValidFrom = _data[\"rateValidFrom\"] ? new Date(_data[\"rateValidFrom\"].toString()) : undefined;\n (this).rateValidTo = _data[\"rateValidTo\"] ? new Date(_data[\"rateValidTo\"].toString()) : undefined;\n (this).lastSalesRate = _data[\"lastSalesRate\"];\n (this).lastCostRate = _data[\"lastCostRate\"];\n this.projectRoleName = _data[\"projectRoleName\"];\n this.projectTeamName = _data[\"projectTeamName\"];\n this.firstName = _data[\"firstName\"];\n this.lastName = _data[\"lastName\"];\n this.email = _data[\"email\"];\n this.birthDate = _data[\"birthDate\"] ? new Date(_data[\"birthDate\"].toString()) : undefined;\n this.officePhone = _data[\"officePhone\"];\n this.mobilePhone = _data[\"mobilePhone\"];\n this.address = _data[\"address\"];\n this.city = _data[\"city\"];\n this.department = _data[\"department\"];\n this.username = _data[\"username\"];\n this.countryId = _data[\"countryId\"];\n this.partnerId = _data[\"partnerId\"];\n this.organizationalUnitId = _data[\"organizationalUnitId\"];\n (this).isGuest = _data[\"isGuest\"];\n (this).fullName = _data[\"fullName\"];\n }\n }\n\n static fromJS(data: any): ProjectTeamMemberUserResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectTeamMemberUserResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"userId\"] = this.userId;\n data[\"projectId\"] = this.projectId;\n data[\"roleId\"] = this.roleId;\n data[\"projectRoleId\"] = this.projectRoleId;\n data[\"projectTeamId\"] = this.projectTeamId;\n data[\"statusId\"] = this.statusId;\n data[\"validUntil\"] = this.validUntil ? formatDate(this.validUntil) : undefined;\n data[\"isActive\"] = this.isActive;\n data[\"permissions\"] = this.permissions ? this.permissions.toJSON() : undefined;\n if (Array.isArray(this.validityPeriods)) {\n data[\"validityPeriods\"] = [];\n for (let item of this.validityPeriods)\n data[\"validityPeriods\"].push(item.toJSON());\n }\n data[\"isPm\"] = this.isPm;\n data[\"isSubstitutePm\"] = this.isSubstitutePm;\n data[\"isPmOrSubstitutePm\"] = this.isPmOrSubstitutePm;\n data[\"currentValidityPeriod\"] = this.currentValidityPeriod ? this.currentValidityPeriod.toJSON() : undefined;\n data[\"rateValidFrom\"] = this.rateValidFrom ? formatDate(this.rateValidFrom) : undefined;\n data[\"rateValidTo\"] = this.rateValidTo ? formatDate(this.rateValidTo) : undefined;\n data[\"lastSalesRate\"] = this.lastSalesRate;\n data[\"lastCostRate\"] = this.lastCostRate;\n data[\"projectRoleName\"] = this.projectRoleName;\n data[\"projectTeamName\"] = this.projectTeamName;\n data[\"firstName\"] = this.firstName;\n data[\"lastName\"] = this.lastName;\n data[\"email\"] = this.email;\n data[\"birthDate\"] = this.birthDate ? this.birthDate.toISOString() : undefined;\n data[\"officePhone\"] = this.officePhone;\n data[\"mobilePhone\"] = this.mobilePhone;\n data[\"address\"] = this.address;\n data[\"city\"] = this.city;\n data[\"department\"] = this.department;\n data[\"username\"] = this.username;\n data[\"countryId\"] = this.countryId;\n data[\"partnerId\"] = this.partnerId;\n data[\"organizationalUnitId\"] = this.organizationalUnitId;\n data[\"isGuest\"] = this.isGuest;\n data[\"fullName\"] = this.fullName;\n return data;\n }\n}\n\nexport interface IProjectTeamMemberUserResponse {\n id: number;\n userId: number;\n projectId: number;\n roleId: TokenTypeEnum;\n projectRoleId?: number | undefined;\n projectTeamId?: number | undefined;\n statusId: number;\n validUntil?: Date | undefined;\n isActive: boolean;\n permissions?: PermissionCollectionResponse;\n validityPeriods?: ProjectTeamMemberValidityPeriodResponse[] | undefined;\n isPm: boolean;\n isSubstitutePm: boolean;\n isPmOrSubstitutePm: boolean;\n currentValidityPeriod?: ProjectTeamMemberValidityPeriodResponse;\n rateValidFrom?: Date | undefined;\n rateValidTo?: Date | undefined;\n lastSalesRate?: number | undefined;\n lastCostRate?: number | undefined;\n projectRoleName?: string | undefined;\n projectTeamName?: string | undefined;\n firstName: string;\n lastName: string;\n email: string;\n birthDate?: Date | undefined;\n officePhone?: string | undefined;\n mobilePhone?: string | undefined;\n address?: string | undefined;\n city?: string | undefined;\n department?: string | undefined;\n username: string;\n countryId?: number | undefined;\n partnerId?: number | undefined;\n organizationalUnitId?: number | undefined;\n isGuest: boolean;\n fullName?: string | undefined;\n}\n\nexport class ProjectTeamMemberUserResponseItemsResponseModel implements IProjectTeamMemberUserResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectTeamMemberUserResponse[] | undefined;\n\n constructor(data?: IProjectTeamMemberUserResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectTeamMemberUserResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectTeamMemberUserResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectTeamMemberUserResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectTeamMemberUserResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectTeamMemberUserResponse[] | undefined;\n}\n\nexport class ProjectTeamMemberValidityPeriodDeltaRequest implements IProjectTeamMemberValidityPeriodDeltaRequest {\n insert?: InsertProjectTeamMemberValidityPeriodRequest[] | undefined;\n update?: UpdateProjectTeamMemberValidityPeriodRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n\n constructor(data?: IProjectTeamMemberValidityPeriodDeltaRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertProjectTeamMemberValidityPeriodRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateProjectTeamMemberValidityPeriodRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteTenantIndetifyRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectTeamMemberValidityPeriodDeltaRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectTeamMemberValidityPeriodDeltaRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectTeamMemberValidityPeriodDeltaRequest {\n insert?: InsertProjectTeamMemberValidityPeriodRequest[] | undefined;\n update?: UpdateProjectTeamMemberValidityPeriodRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n}\n\nexport class ProjectTeamMemberValidityPeriodResponse implements IProjectTeamMemberValidityPeriodResponse {\n id!: number;\n teamMemberId!: number;\n from!: Date;\n to!: Date;\n salesRate!: number;\n costRate!: number;\n\n constructor(data?: IProjectTeamMemberValidityPeriodResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.teamMemberId = _data[\"teamMemberId\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.salesRate = _data[\"salesRate\"];\n this.costRate = _data[\"costRate\"];\n }\n }\n\n static fromJS(data: any): ProjectTeamMemberValidityPeriodResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectTeamMemberValidityPeriodResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"teamMemberId\"] = this.teamMemberId;\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"salesRate\"] = this.salesRate;\n data[\"costRate\"] = this.costRate;\n return data;\n }\n}\n\nexport interface IProjectTeamMemberValidityPeriodResponse {\n id: number;\n teamMemberId: number;\n from: Date;\n to: Date;\n salesRate: number;\n costRate: number;\n}\n\nexport class ProjectTeamMemberValidityPeriodResponseItemsResponseModel implements IProjectTeamMemberValidityPeriodResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectTeamMemberValidityPeriodResponse[] | undefined;\n\n constructor(data?: IProjectTeamMemberValidityPeriodResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ProjectTeamMemberValidityPeriodResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectTeamMemberValidityPeriodResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectTeamMemberValidityPeriodResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectTeamMemberValidityPeriodResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ProjectTeamMemberValidityPeriodResponse[] | undefined;\n}\n\nexport class ProjectTeamProductivityDashboardResponse implements IProjectTeamProductivityDashboardResponse {\n hoursPerProject?: { [key: string]: number; } | undefined;\n hoursPerNonProjectCategory?: { [key: string]: number; } | undefined;\n hoursPerUserAndBillability?: { [key: string]: { [key: string]: number; }; } | undefined;\n hoursPerUserAndNotBillableNonProjectCategories?: { [key: string]: { [key: string]: number; }; } | undefined;\n hoursPerBillability?: { [key: string]: number; } | undefined;\n totalBillableTimesheetHours!: number;\n totalNonBillableTimesheetHours!: number;\n totalPotentialProductiveHours!: number;\n readonly totalNotProductiveHours!: number;\n totalTimesheetCostRate!: number;\n totalTimesheetBillingRate!: number;\n\n constructor(data?: IProjectTeamProductivityDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"hoursPerProject\"]) {\n this.hoursPerProject = {} as any;\n for (let key in _data[\"hoursPerProject\"]) {\n if (_data[\"hoursPerProject\"].hasOwnProperty(key))\n (this.hoursPerProject)![key] = _data[\"hoursPerProject\"][key];\n }\n }\n if (_data[\"hoursPerNonProjectCategory\"]) {\n this.hoursPerNonProjectCategory = {} as any;\n for (let key in _data[\"hoursPerNonProjectCategory\"]) {\n if (_data[\"hoursPerNonProjectCategory\"].hasOwnProperty(key))\n (this.hoursPerNonProjectCategory)![key] = _data[\"hoursPerNonProjectCategory\"][key];\n }\n }\n if (_data[\"hoursPerUserAndBillability\"]) {\n this.hoursPerUserAndBillability = {} as any;\n for (let key in _data[\"hoursPerUserAndBillability\"]) {\n if (_data[\"hoursPerUserAndBillability\"].hasOwnProperty(key))\n (this.hoursPerUserAndBillability)![key] = _data[\"hoursPerUserAndBillability\"][key] !== undefined ? _data[\"hoursPerUserAndBillability\"][key] : {};\n }\n }\n if (_data[\"hoursPerUserAndNotBillableNonProjectCategories\"]) {\n this.hoursPerUserAndNotBillableNonProjectCategories = {} as any;\n for (let key in _data[\"hoursPerUserAndNotBillableNonProjectCategories\"]) {\n if (_data[\"hoursPerUserAndNotBillableNonProjectCategories\"].hasOwnProperty(key))\n (this.hoursPerUserAndNotBillableNonProjectCategories)![key] = _data[\"hoursPerUserAndNotBillableNonProjectCategories\"][key] !== undefined ? _data[\"hoursPerUserAndNotBillableNonProjectCategories\"][key] : {};\n }\n }\n if (_data[\"hoursPerBillability\"]) {\n this.hoursPerBillability = {} as any;\n for (let key in _data[\"hoursPerBillability\"]) {\n if (_data[\"hoursPerBillability\"].hasOwnProperty(key))\n (this.hoursPerBillability)![key] = _data[\"hoursPerBillability\"][key];\n }\n }\n this.totalBillableTimesheetHours = _data[\"totalBillableTimesheetHours\"];\n this.totalNonBillableTimesheetHours = _data[\"totalNonBillableTimesheetHours\"];\n this.totalPotentialProductiveHours = _data[\"totalPotentialProductiveHours\"];\n (this).totalNotProductiveHours = _data[\"totalNotProductiveHours\"];\n this.totalTimesheetCostRate = _data[\"totalTimesheetCostRate\"];\n this.totalTimesheetBillingRate = _data[\"totalTimesheetBillingRate\"];\n }\n }\n\n static fromJS(data: any): ProjectTeamProductivityDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectTeamProductivityDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.hoursPerProject) {\n data[\"hoursPerProject\"] = {};\n for (let key in this.hoursPerProject) {\n if (this.hoursPerProject.hasOwnProperty(key))\n (data[\"hoursPerProject\"])[key] = (this.hoursPerProject)[key];\n }\n }\n if (this.hoursPerNonProjectCategory) {\n data[\"hoursPerNonProjectCategory\"] = {};\n for (let key in this.hoursPerNonProjectCategory) {\n if (this.hoursPerNonProjectCategory.hasOwnProperty(key))\n (data[\"hoursPerNonProjectCategory\"])[key] = (this.hoursPerNonProjectCategory)[key];\n }\n }\n if (this.hoursPerUserAndBillability) {\n data[\"hoursPerUserAndBillability\"] = {};\n for (let key in this.hoursPerUserAndBillability) {\n if (this.hoursPerUserAndBillability.hasOwnProperty(key))\n (data[\"hoursPerUserAndBillability\"])[key] = (this.hoursPerUserAndBillability)[key];\n }\n }\n if (this.hoursPerUserAndNotBillableNonProjectCategories) {\n data[\"hoursPerUserAndNotBillableNonProjectCategories\"] = {};\n for (let key in this.hoursPerUserAndNotBillableNonProjectCategories) {\n if (this.hoursPerUserAndNotBillableNonProjectCategories.hasOwnProperty(key))\n (data[\"hoursPerUserAndNotBillableNonProjectCategories\"])[key] = (this.hoursPerUserAndNotBillableNonProjectCategories)[key];\n }\n }\n if (this.hoursPerBillability) {\n data[\"hoursPerBillability\"] = {};\n for (let key in this.hoursPerBillability) {\n if (this.hoursPerBillability.hasOwnProperty(key))\n (data[\"hoursPerBillability\"])[key] = (this.hoursPerBillability)[key];\n }\n }\n data[\"totalBillableTimesheetHours\"] = this.totalBillableTimesheetHours;\n data[\"totalNonBillableTimesheetHours\"] = this.totalNonBillableTimesheetHours;\n data[\"totalPotentialProductiveHours\"] = this.totalPotentialProductiveHours;\n data[\"totalNotProductiveHours\"] = this.totalNotProductiveHours;\n data[\"totalTimesheetCostRate\"] = this.totalTimesheetCostRate;\n data[\"totalTimesheetBillingRate\"] = this.totalTimesheetBillingRate;\n return data;\n }\n}\n\nexport interface IProjectTeamProductivityDashboardResponse {\n hoursPerProject?: { [key: string]: number; } | undefined;\n hoursPerNonProjectCategory?: { [key: string]: number; } | undefined;\n hoursPerUserAndBillability?: { [key: string]: { [key: string]: number; }; } | undefined;\n hoursPerUserAndNotBillableNonProjectCategories?: { [key: string]: { [key: string]: number; }; } | undefined;\n hoursPerBillability?: { [key: string]: number; } | undefined;\n totalBillableTimesheetHours: number;\n totalNonBillableTimesheetHours: number;\n totalPotentialProductiveHours: number;\n totalNotProductiveHours: number;\n totalTimesheetCostRate: number;\n totalTimesheetBillingRate: number;\n}\n\nexport class ProjectTimesheetDashboardResponse implements IProjectTimesheetDashboardResponse {\n timesheetsPerStatusCounts?: { [key: string]: number; } | undefined;\n hoursPerPeriod?: { [key: string]: number; } | undefined;\n hourCostsPerPeriod?: { [key: string]: number; } | undefined;\n hourBillingsPerPeriod?: { [key: string]: number; } | undefined;\n hoursPerUserAndPeriod?: { [key: string]: { [key: string]: number; }; } | undefined;\n hourCostsPerUserAndPeriod?: { [key: string]: { [key: string]: number; }; } | undefined;\n hoursPerUserAndProject?: { [key: string]: { [key: string]: number; }; } | undefined;\n hourCostsPerUserAndProject?: { [key: string]: { [key: string]: number; }; } | undefined;\n hoursPerProject?: { [key: string]: number; } | undefined;\n hoursPerNonProjectCategory?: { [key: string]: number; } | undefined;\n totalTimesheetHours!: number;\n\n constructor(data?: IProjectTimesheetDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"timesheetsPerStatusCounts\"]) {\n this.timesheetsPerStatusCounts = {} as any;\n for (let key in _data[\"timesheetsPerStatusCounts\"]) {\n if (_data[\"timesheetsPerStatusCounts\"].hasOwnProperty(key))\n (this.timesheetsPerStatusCounts)![key] = _data[\"timesheetsPerStatusCounts\"][key];\n }\n }\n if (_data[\"hoursPerPeriod\"]) {\n this.hoursPerPeriod = {} as any;\n for (let key in _data[\"hoursPerPeriod\"]) {\n if (_data[\"hoursPerPeriod\"].hasOwnProperty(key))\n (this.hoursPerPeriod)![key] = _data[\"hoursPerPeriod\"][key];\n }\n }\n if (_data[\"hourCostsPerPeriod\"]) {\n this.hourCostsPerPeriod = {} as any;\n for (let key in _data[\"hourCostsPerPeriod\"]) {\n if (_data[\"hourCostsPerPeriod\"].hasOwnProperty(key))\n (this.hourCostsPerPeriod)![key] = _data[\"hourCostsPerPeriod\"][key];\n }\n }\n if (_data[\"hourBillingsPerPeriod\"]) {\n this.hourBillingsPerPeriod = {} as any;\n for (let key in _data[\"hourBillingsPerPeriod\"]) {\n if (_data[\"hourBillingsPerPeriod\"].hasOwnProperty(key))\n (this.hourBillingsPerPeriod)![key] = _data[\"hourBillingsPerPeriod\"][key];\n }\n }\n if (_data[\"hoursPerUserAndPeriod\"]) {\n this.hoursPerUserAndPeriod = {} as any;\n for (let key in _data[\"hoursPerUserAndPeriod\"]) {\n if (_data[\"hoursPerUserAndPeriod\"].hasOwnProperty(key))\n (this.hoursPerUserAndPeriod)![key] = _data[\"hoursPerUserAndPeriod\"][key] !== undefined ? _data[\"hoursPerUserAndPeriod\"][key] : {};\n }\n }\n if (_data[\"hourCostsPerUserAndPeriod\"]) {\n this.hourCostsPerUserAndPeriod = {} as any;\n for (let key in _data[\"hourCostsPerUserAndPeriod\"]) {\n if (_data[\"hourCostsPerUserAndPeriod\"].hasOwnProperty(key))\n (this.hourCostsPerUserAndPeriod)![key] = _data[\"hourCostsPerUserAndPeriod\"][key] !== undefined ? _data[\"hourCostsPerUserAndPeriod\"][key] : {};\n }\n }\n if (_data[\"hoursPerUserAndProject\"]) {\n this.hoursPerUserAndProject = {} as any;\n for (let key in _data[\"hoursPerUserAndProject\"]) {\n if (_data[\"hoursPerUserAndProject\"].hasOwnProperty(key))\n (this.hoursPerUserAndProject)![key] = _data[\"hoursPerUserAndProject\"][key] !== undefined ? _data[\"hoursPerUserAndProject\"][key] : {};\n }\n }\n if (_data[\"hourCostsPerUserAndProject\"]) {\n this.hourCostsPerUserAndProject = {} as any;\n for (let key in _data[\"hourCostsPerUserAndProject\"]) {\n if (_data[\"hourCostsPerUserAndProject\"].hasOwnProperty(key))\n (this.hourCostsPerUserAndProject)![key] = _data[\"hourCostsPerUserAndProject\"][key] !== undefined ? _data[\"hourCostsPerUserAndProject\"][key] : {};\n }\n }\n if (_data[\"hoursPerProject\"]) {\n this.hoursPerProject = {} as any;\n for (let key in _data[\"hoursPerProject\"]) {\n if (_data[\"hoursPerProject\"].hasOwnProperty(key))\n (this.hoursPerProject)![key] = _data[\"hoursPerProject\"][key];\n }\n }\n if (_data[\"hoursPerNonProjectCategory\"]) {\n this.hoursPerNonProjectCategory = {} as any;\n for (let key in _data[\"hoursPerNonProjectCategory\"]) {\n if (_data[\"hoursPerNonProjectCategory\"].hasOwnProperty(key))\n (this.hoursPerNonProjectCategory)![key] = _data[\"hoursPerNonProjectCategory\"][key];\n }\n }\n this.totalTimesheetHours = _data[\"totalTimesheetHours\"];\n }\n }\n\n static fromJS(data: any): ProjectTimesheetDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectTimesheetDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.timesheetsPerStatusCounts) {\n data[\"timesheetsPerStatusCounts\"] = {};\n for (let key in this.timesheetsPerStatusCounts) {\n if (this.timesheetsPerStatusCounts.hasOwnProperty(key))\n (data[\"timesheetsPerStatusCounts\"])[key] = (this.timesheetsPerStatusCounts)[key];\n }\n }\n if (this.hoursPerPeriod) {\n data[\"hoursPerPeriod\"] = {};\n for (let key in this.hoursPerPeriod) {\n if (this.hoursPerPeriod.hasOwnProperty(key))\n (data[\"hoursPerPeriod\"])[key] = (this.hoursPerPeriod)[key];\n }\n }\n if (this.hourCostsPerPeriod) {\n data[\"hourCostsPerPeriod\"] = {};\n for (let key in this.hourCostsPerPeriod) {\n if (this.hourCostsPerPeriod.hasOwnProperty(key))\n (data[\"hourCostsPerPeriod\"])[key] = (this.hourCostsPerPeriod)[key];\n }\n }\n if (this.hourBillingsPerPeriod) {\n data[\"hourBillingsPerPeriod\"] = {};\n for (let key in this.hourBillingsPerPeriod) {\n if (this.hourBillingsPerPeriod.hasOwnProperty(key))\n (data[\"hourBillingsPerPeriod\"])[key] = (this.hourBillingsPerPeriod)[key];\n }\n }\n if (this.hoursPerUserAndPeriod) {\n data[\"hoursPerUserAndPeriod\"] = {};\n for (let key in this.hoursPerUserAndPeriod) {\n if (this.hoursPerUserAndPeriod.hasOwnProperty(key))\n (data[\"hoursPerUserAndPeriod\"])[key] = (this.hoursPerUserAndPeriod)[key];\n }\n }\n if (this.hourCostsPerUserAndPeriod) {\n data[\"hourCostsPerUserAndPeriod\"] = {};\n for (let key in this.hourCostsPerUserAndPeriod) {\n if (this.hourCostsPerUserAndPeriod.hasOwnProperty(key))\n (data[\"hourCostsPerUserAndPeriod\"])[key] = (this.hourCostsPerUserAndPeriod)[key];\n }\n }\n if (this.hoursPerUserAndProject) {\n data[\"hoursPerUserAndProject\"] = {};\n for (let key in this.hoursPerUserAndProject) {\n if (this.hoursPerUserAndProject.hasOwnProperty(key))\n (data[\"hoursPerUserAndProject\"])[key] = (this.hoursPerUserAndProject)[key];\n }\n }\n if (this.hourCostsPerUserAndProject) {\n data[\"hourCostsPerUserAndProject\"] = {};\n for (let key in this.hourCostsPerUserAndProject) {\n if (this.hourCostsPerUserAndProject.hasOwnProperty(key))\n (data[\"hourCostsPerUserAndProject\"])[key] = (this.hourCostsPerUserAndProject)[key];\n }\n }\n if (this.hoursPerProject) {\n data[\"hoursPerProject\"] = {};\n for (let key in this.hoursPerProject) {\n if (this.hoursPerProject.hasOwnProperty(key))\n (data[\"hoursPerProject\"])[key] = (this.hoursPerProject)[key];\n }\n }\n if (this.hoursPerNonProjectCategory) {\n data[\"hoursPerNonProjectCategory\"] = {};\n for (let key in this.hoursPerNonProjectCategory) {\n if (this.hoursPerNonProjectCategory.hasOwnProperty(key))\n (data[\"hoursPerNonProjectCategory\"])[key] = (this.hoursPerNonProjectCategory)[key];\n }\n }\n data[\"totalTimesheetHours\"] = this.totalTimesheetHours;\n return data;\n }\n}\n\nexport interface IProjectTimesheetDashboardResponse {\n timesheetsPerStatusCounts?: { [key: string]: number; } | undefined;\n hoursPerPeriod?: { [key: string]: number; } | undefined;\n hourCostsPerPeriod?: { [key: string]: number; } | undefined;\n hourBillingsPerPeriod?: { [key: string]: number; } | undefined;\n hoursPerUserAndPeriod?: { [key: string]: { [key: string]: number; }; } | undefined;\n hourCostsPerUserAndPeriod?: { [key: string]: { [key: string]: number; }; } | undefined;\n hoursPerUserAndProject?: { [key: string]: { [key: string]: number; }; } | undefined;\n hourCostsPerUserAndProject?: { [key: string]: { [key: string]: number; }; } | undefined;\n hoursPerProject?: { [key: string]: number; } | undefined;\n hoursPerNonProjectCategory?: { [key: string]: number; } | undefined;\n totalTimesheetHours: number;\n}\n\nexport class ProjectTimeTravelDashboardFilterRequest implements IProjectTimeTravelDashboardFilterRequest {\n dateRange!: DateRangeRequest;\n projectIds?: number[] | undefined;\n nonProjectCategoryIds?: number[] | undefined;\n userIds?: number[] | undefined;\n partnerIds?: number[] | undefined;\n organizationalUnitIds?: number[] | undefined;\n\n constructor(data?: IProjectTimeTravelDashboardFilterRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.dateRange = new DateRangeRequest();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.dateRange = _data[\"dateRange\"] ? DateRangeRequest.fromJS(_data[\"dateRange\"]) : new DateRangeRequest();\n if (Array.isArray(_data[\"projectIds\"])) {\n this.projectIds = [] as any;\n for (let item of _data[\"projectIds\"])\n this.projectIds!.push(item);\n }\n if (Array.isArray(_data[\"nonProjectCategoryIds\"])) {\n this.nonProjectCategoryIds = [] as any;\n for (let item of _data[\"nonProjectCategoryIds\"])\n this.nonProjectCategoryIds!.push(item);\n }\n if (Array.isArray(_data[\"userIds\"])) {\n this.userIds = [] as any;\n for (let item of _data[\"userIds\"])\n this.userIds!.push(item);\n }\n if (Array.isArray(_data[\"partnerIds\"])) {\n this.partnerIds = [] as any;\n for (let item of _data[\"partnerIds\"])\n this.partnerIds!.push(item);\n }\n if (Array.isArray(_data[\"organizationalUnitIds\"])) {\n this.organizationalUnitIds = [] as any;\n for (let item of _data[\"organizationalUnitIds\"])\n this.organizationalUnitIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): ProjectTimeTravelDashboardFilterRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectTimeTravelDashboardFilterRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dateRange\"] = this.dateRange ? this.dateRange.toJSON() : undefined;\n if (Array.isArray(this.projectIds)) {\n data[\"projectIds\"] = [];\n for (let item of this.projectIds)\n data[\"projectIds\"].push(item);\n }\n if (Array.isArray(this.nonProjectCategoryIds)) {\n data[\"nonProjectCategoryIds\"] = [];\n for (let item of this.nonProjectCategoryIds)\n data[\"nonProjectCategoryIds\"].push(item);\n }\n if (Array.isArray(this.userIds)) {\n data[\"userIds\"] = [];\n for (let item of this.userIds)\n data[\"userIds\"].push(item);\n }\n if (Array.isArray(this.partnerIds)) {\n data[\"partnerIds\"] = [];\n for (let item of this.partnerIds)\n data[\"partnerIds\"].push(item);\n }\n if (Array.isArray(this.organizationalUnitIds)) {\n data[\"organizationalUnitIds\"] = [];\n for (let item of this.organizationalUnitIds)\n data[\"organizationalUnitIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IProjectTimeTravelDashboardFilterRequest {\n dateRange: DateRangeRequest;\n projectIds?: number[] | undefined;\n nonProjectCategoryIds?: number[] | undefined;\n userIds?: number[] | undefined;\n partnerIds?: number[] | undefined;\n organizationalUnitIds?: number[] | undefined;\n}\n\nexport class ProjectTimeTravelDashboardResponse implements IProjectTimeTravelDashboardResponse {\n timesheets?: ProjectTimesheetDashboardResponse;\n travelRequests?: ProjectTravelRequestsDashboardResponse;\n travelExpenses?: ProjectTravelExpenseDashboardResponse;\n vacationRequests?: ProjectVacationRequestDashboardResponse;\n teamProductivity?: ProjectTeamProductivityDashboardResponse;\n\n constructor(data?: IProjectTimeTravelDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.timesheets = _data[\"timesheets\"] ? ProjectTimesheetDashboardResponse.fromJS(_data[\"timesheets\"]) : undefined;\n this.travelRequests = _data[\"travelRequests\"] ? ProjectTravelRequestsDashboardResponse.fromJS(_data[\"travelRequests\"]) : undefined;\n this.travelExpenses = _data[\"travelExpenses\"] ? ProjectTravelExpenseDashboardResponse.fromJS(_data[\"travelExpenses\"]) : undefined;\n this.vacationRequests = _data[\"vacationRequests\"] ? ProjectVacationRequestDashboardResponse.fromJS(_data[\"vacationRequests\"]) : undefined;\n this.teamProductivity = _data[\"teamProductivity\"] ? ProjectTeamProductivityDashboardResponse.fromJS(_data[\"teamProductivity\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectTimeTravelDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectTimeTravelDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"timesheets\"] = this.timesheets ? this.timesheets.toJSON() : undefined;\n data[\"travelRequests\"] = this.travelRequests ? this.travelRequests.toJSON() : undefined;\n data[\"travelExpenses\"] = this.travelExpenses ? this.travelExpenses.toJSON() : undefined;\n data[\"vacationRequests\"] = this.vacationRequests ? this.vacationRequests.toJSON() : undefined;\n data[\"teamProductivity\"] = this.teamProductivity ? this.teamProductivity.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectTimeTravelDashboardResponse {\n timesheets?: ProjectTimesheetDashboardResponse;\n travelRequests?: ProjectTravelRequestsDashboardResponse;\n travelExpenses?: ProjectTravelExpenseDashboardResponse;\n vacationRequests?: ProjectVacationRequestDashboardResponse;\n teamProductivity?: ProjectTeamProductivityDashboardResponse;\n}\n\nexport class ProjectTimeTravelDashboardResponseSimpleResponseModel implements IProjectTimeTravelDashboardResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectTimeTravelDashboardResponse;\n\n constructor(data?: IProjectTimeTravelDashboardResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ProjectTimeTravelDashboardResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ProjectTimeTravelDashboardResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectTimeTravelDashboardResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IProjectTimeTravelDashboardResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ProjectTimeTravelDashboardResponse;\n}\n\nexport class ProjectTravelExpenseDashboardResponse implements IProjectTravelExpenseDashboardResponse {\n travelExpensesPerStatusCounts?: { [key: string]: number; } | undefined;\n travelExpensesPerPeriod?: { [key: string]: number; } | undefined;\n travelExpenses?: TravelExpenseResponse[] | undefined;\n groupedTravelExpenses?: TravelExpenseResponse[] | undefined;\n\n constructor(data?: IProjectTravelExpenseDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"travelExpensesPerStatusCounts\"]) {\n this.travelExpensesPerStatusCounts = {} as any;\n for (let key in _data[\"travelExpensesPerStatusCounts\"]) {\n if (_data[\"travelExpensesPerStatusCounts\"].hasOwnProperty(key))\n (this.travelExpensesPerStatusCounts)![key] = _data[\"travelExpensesPerStatusCounts\"][key];\n }\n }\n if (_data[\"travelExpensesPerPeriod\"]) {\n this.travelExpensesPerPeriod = {} as any;\n for (let key in _data[\"travelExpensesPerPeriod\"]) {\n if (_data[\"travelExpensesPerPeriod\"].hasOwnProperty(key))\n (this.travelExpensesPerPeriod)![key] = _data[\"travelExpensesPerPeriod\"][key];\n }\n }\n if (Array.isArray(_data[\"travelExpenses\"])) {\n this.travelExpenses = [] as any;\n for (let item of _data[\"travelExpenses\"])\n this.travelExpenses!.push(TravelExpenseResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"groupedTravelExpenses\"])) {\n this.groupedTravelExpenses = [] as any;\n for (let item of _data[\"groupedTravelExpenses\"])\n this.groupedTravelExpenses!.push(TravelExpenseResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectTravelExpenseDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectTravelExpenseDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.travelExpensesPerStatusCounts) {\n data[\"travelExpensesPerStatusCounts\"] = {};\n for (let key in this.travelExpensesPerStatusCounts) {\n if (this.travelExpensesPerStatusCounts.hasOwnProperty(key))\n (data[\"travelExpensesPerStatusCounts\"])[key] = (this.travelExpensesPerStatusCounts)[key];\n }\n }\n if (this.travelExpensesPerPeriod) {\n data[\"travelExpensesPerPeriod\"] = {};\n for (let key in this.travelExpensesPerPeriod) {\n if (this.travelExpensesPerPeriod.hasOwnProperty(key))\n (data[\"travelExpensesPerPeriod\"])[key] = (this.travelExpensesPerPeriod)[key];\n }\n }\n if (Array.isArray(this.travelExpenses)) {\n data[\"travelExpenses\"] = [];\n for (let item of this.travelExpenses)\n data[\"travelExpenses\"].push(item.toJSON());\n }\n if (Array.isArray(this.groupedTravelExpenses)) {\n data[\"groupedTravelExpenses\"] = [];\n for (let item of this.groupedTravelExpenses)\n data[\"groupedTravelExpenses\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectTravelExpenseDashboardResponse {\n travelExpensesPerStatusCounts?: { [key: string]: number; } | undefined;\n travelExpensesPerPeriod?: { [key: string]: number; } | undefined;\n travelExpenses?: TravelExpenseResponse[] | undefined;\n groupedTravelExpenses?: TravelExpenseResponse[] | undefined;\n}\n\nexport class ProjectTravelRequestsDashboardResponse implements IProjectTravelRequestsDashboardResponse {\n travelRequestsPerStatusCounts?: { [key: string]: number; } | undefined;\n\n constructor(data?: IProjectTravelRequestsDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"travelRequestsPerStatusCounts\"]) {\n this.travelRequestsPerStatusCounts = {} as any;\n for (let key in _data[\"travelRequestsPerStatusCounts\"]) {\n if (_data[\"travelRequestsPerStatusCounts\"].hasOwnProperty(key))\n (this.travelRequestsPerStatusCounts)![key] = _data[\"travelRequestsPerStatusCounts\"][key];\n }\n }\n }\n }\n\n static fromJS(data: any): ProjectTravelRequestsDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectTravelRequestsDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.travelRequestsPerStatusCounts) {\n data[\"travelRequestsPerStatusCounts\"] = {};\n for (let key in this.travelRequestsPerStatusCounts) {\n if (this.travelRequestsPerStatusCounts.hasOwnProperty(key))\n (data[\"travelRequestsPerStatusCounts\"])[key] = (this.travelRequestsPerStatusCounts)[key];\n }\n }\n return data;\n }\n}\n\nexport interface IProjectTravelRequestsDashboardResponse {\n travelRequestsPerStatusCounts?: { [key: string]: number; } | undefined;\n}\n\nexport class ProjectVacationRequestDashboardResponse implements IProjectVacationRequestDashboardResponse {\n vacationRequestsPerStatusCounts?: { [key: string]: number; } | undefined;\n vacationRequests?: VacationRequestResponse[] | undefined;\n calendar?: CommunicationCalendarResponse[] | undefined;\n\n constructor(data?: IProjectVacationRequestDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"vacationRequestsPerStatusCounts\"]) {\n this.vacationRequestsPerStatusCounts = {} as any;\n for (let key in _data[\"vacationRequestsPerStatusCounts\"]) {\n if (_data[\"vacationRequestsPerStatusCounts\"].hasOwnProperty(key))\n (this.vacationRequestsPerStatusCounts)![key] = _data[\"vacationRequestsPerStatusCounts\"][key];\n }\n }\n if (Array.isArray(_data[\"vacationRequests\"])) {\n this.vacationRequests = [] as any;\n for (let item of _data[\"vacationRequests\"])\n this.vacationRequests!.push(VacationRequestResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"calendar\"])) {\n this.calendar = [] as any;\n for (let item of _data[\"calendar\"])\n this.calendar!.push(CommunicationCalendarResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ProjectVacationRequestDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ProjectVacationRequestDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.vacationRequestsPerStatusCounts) {\n data[\"vacationRequestsPerStatusCounts\"] = {};\n for (let key in this.vacationRequestsPerStatusCounts) {\n if (this.vacationRequestsPerStatusCounts.hasOwnProperty(key))\n (data[\"vacationRequestsPerStatusCounts\"])[key] = (this.vacationRequestsPerStatusCounts)[key];\n }\n }\n if (Array.isArray(this.vacationRequests)) {\n data[\"vacationRequests\"] = [];\n for (let item of this.vacationRequests)\n data[\"vacationRequests\"].push(item.toJSON());\n }\n if (Array.isArray(this.calendar)) {\n data[\"calendar\"] = [];\n for (let item of this.calendar)\n data[\"calendar\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IProjectVacationRequestDashboardResponse {\n vacationRequestsPerStatusCounts?: { [key: string]: number; } | undefined;\n vacationRequests?: VacationRequestResponse[] | undefined;\n calendar?: CommunicationCalendarResponse[] | undefined;\n}\n\nexport class RatingPerQuestionDashboardResponse implements IRatingPerQuestionDashboardResponse {\n questionGroup?: string | undefined;\n ratingCount!: number;\n ratingSum!: number;\n readonly averageRating!: number;\n question!: string;\n\n constructor(data?: IRatingPerQuestionDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.questionGroup = _data[\"questionGroup\"];\n this.ratingCount = _data[\"ratingCount\"];\n this.ratingSum = _data[\"ratingSum\"];\n (this).averageRating = _data[\"averageRating\"];\n this.question = _data[\"question\"];\n }\n }\n\n static fromJS(data: any): RatingPerQuestionDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new RatingPerQuestionDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"questionGroup\"] = this.questionGroup;\n data[\"ratingCount\"] = this.ratingCount;\n data[\"ratingSum\"] = this.ratingSum;\n data[\"averageRating\"] = this.averageRating;\n data[\"question\"] = this.question;\n return data;\n }\n}\n\nexport interface IRatingPerQuestionDashboardResponse {\n questionGroup?: string | undefined;\n ratingCount: number;\n ratingSum: number;\n averageRating: number;\n question: string;\n}\n\nexport class RatingPerQuestionGroupDashboardResponse implements IRatingPerQuestionGroupDashboardResponse {\n questionGroup?: string | undefined;\n ratingCount!: number;\n ratingSum!: number;\n readonly averageRating!: number;\n\n constructor(data?: IRatingPerQuestionGroupDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.questionGroup = _data[\"questionGroup\"];\n this.ratingCount = _data[\"ratingCount\"];\n this.ratingSum = _data[\"ratingSum\"];\n (this).averageRating = _data[\"averageRating\"];\n }\n }\n\n static fromJS(data: any): RatingPerQuestionGroupDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new RatingPerQuestionGroupDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"questionGroup\"] = this.questionGroup;\n data[\"ratingCount\"] = this.ratingCount;\n data[\"ratingSum\"] = this.ratingSum;\n data[\"averageRating\"] = this.averageRating;\n return data;\n }\n}\n\nexport interface IRatingPerQuestionGroupDashboardResponse {\n questionGroup?: string | undefined;\n ratingCount: number;\n ratingSum: number;\n averageRating: number;\n}\n\nexport class RefreshTokenResponseModel implements IRefreshTokenResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n refreshToken?: string | undefined;\n\n constructor(data?: IRefreshTokenResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.refreshToken = _data[\"refreshToken\"];\n }\n }\n\n static fromJS(data: any): RefreshTokenResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new RefreshTokenResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"refreshToken\"] = this.refreshToken;\n return data;\n }\n}\n\nexport interface IRefreshTokenResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n refreshToken?: string | undefined;\n}\n\nexport class RefreshTokenWithTokenRequestModel implements IRefreshTokenWithTokenRequestModel {\n refreshToken!: string;\n\n constructor(data?: IRefreshTokenWithTokenRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.refreshToken = _data[\"refreshToken\"];\n }\n }\n\n static fromJS(data: any): RefreshTokenWithTokenRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new RefreshTokenWithTokenRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"refreshToken\"] = this.refreshToken;\n return data;\n }\n}\n\nexport interface IRefreshTokenWithTokenRequestModel {\n refreshToken: string;\n}\n\nexport class ReminderResponse implements IReminderResponse {\n id!: number;\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n userId!: number;\n subject!: string;\n startDate!: Date;\n endDate!: Date;\n isRepeat!: boolean;\n repeatInterval!: RepeatIntervalEnum;\n readonly repeatOnMonday!: boolean;\n readonly repeatOnTuesday!: boolean;\n readonly repeatOnWednesday!: boolean;\n readonly repeatOnThursday!: boolean;\n readonly repeatOnFriday!: boolean;\n readonly repeatOnSaturday!: boolean;\n readonly repeatOnSunday!: boolean;\n repeatOnDays!: WeeklyDaysEnum;\n isPrivate!: boolean;\n sendEmail!: boolean;\n projectTeamId?: number | undefined;\n recipientUserIds?: number[] | undefined;\n\n constructor(data?: IReminderResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.userId = _data[\"userId\"];\n this.subject = _data[\"subject\"];\n this.startDate = _data[\"startDate\"] ? new Date(_data[\"startDate\"].toString()) : undefined;\n this.endDate = _data[\"endDate\"] ? new Date(_data[\"endDate\"].toString()) : undefined;\n this.isRepeat = _data[\"isRepeat\"];\n this.repeatInterval = _data[\"repeatInterval\"];\n (this).repeatOnMonday = _data[\"repeatOnMonday\"];\n (this).repeatOnTuesday = _data[\"repeatOnTuesday\"];\n (this).repeatOnWednesday = _data[\"repeatOnWednesday\"];\n (this).repeatOnThursday = _data[\"repeatOnThursday\"];\n (this).repeatOnFriday = _data[\"repeatOnFriday\"];\n (this).repeatOnSaturday = _data[\"repeatOnSaturday\"];\n (this).repeatOnSunday = _data[\"repeatOnSunday\"];\n this.repeatOnDays = _data[\"repeatOnDays\"];\n this.isPrivate = _data[\"isPrivate\"];\n this.sendEmail = _data[\"sendEmail\"];\n this.projectTeamId = _data[\"projectTeamId\"];\n if (Array.isArray(_data[\"recipientUserIds\"])) {\n this.recipientUserIds = [] as any;\n for (let item of _data[\"recipientUserIds\"])\n this.recipientUserIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): ReminderResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ReminderResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"userId\"] = this.userId;\n data[\"subject\"] = this.subject;\n data[\"startDate\"] = this.startDate ? this.startDate.toISOString() : undefined;\n data[\"endDate\"] = this.endDate ? this.endDate.toISOString() : undefined;\n data[\"isRepeat\"] = this.isRepeat;\n data[\"repeatInterval\"] = this.repeatInterval;\n data[\"repeatOnMonday\"] = this.repeatOnMonday;\n data[\"repeatOnTuesday\"] = this.repeatOnTuesday;\n data[\"repeatOnWednesday\"] = this.repeatOnWednesday;\n data[\"repeatOnThursday\"] = this.repeatOnThursday;\n data[\"repeatOnFriday\"] = this.repeatOnFriday;\n data[\"repeatOnSaturday\"] = this.repeatOnSaturday;\n data[\"repeatOnSunday\"] = this.repeatOnSunday;\n data[\"repeatOnDays\"] = this.repeatOnDays;\n data[\"isPrivate\"] = this.isPrivate;\n data[\"sendEmail\"] = this.sendEmail;\n data[\"projectTeamId\"] = this.projectTeamId;\n if (Array.isArray(this.recipientUserIds)) {\n data[\"recipientUserIds\"] = [];\n for (let item of this.recipientUserIds)\n data[\"recipientUserIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IReminderResponse {\n id: number;\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n userId: number;\n subject: string;\n startDate: Date;\n endDate: Date;\n isRepeat: boolean;\n repeatInterval: RepeatIntervalEnum;\n repeatOnMonday: boolean;\n repeatOnTuesday: boolean;\n repeatOnWednesday: boolean;\n repeatOnThursday: boolean;\n repeatOnFriday: boolean;\n repeatOnSaturday: boolean;\n repeatOnSunday: boolean;\n repeatOnDays: WeeklyDaysEnum;\n isPrivate: boolean;\n sendEmail: boolean;\n projectTeamId?: number | undefined;\n recipientUserIds?: number[] | undefined;\n}\n\nexport class ReminderResponseItemsResponseModel implements IReminderResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ReminderResponse[] | undefined;\n\n constructor(data?: IReminderResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ReminderResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ReminderResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ReminderResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IReminderResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ReminderResponse[] | undefined;\n}\n\nexport class ReminderResponseSimpleResponseModel implements IReminderResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ReminderResponse;\n\n constructor(data?: IReminderResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ReminderResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ReminderResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ReminderResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IReminderResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ReminderResponse;\n}\n\nexport enum RepeatIntervalEnum {\n Daily = \"Daily\",\n Weekly = \"Weekly\",\n Monthly = \"Monthly\",\n Yearly = \"Yearly\",\n}\n\nexport class ReportInnerTestResponse implements IReportInnerTestResponse {\n id!: number;\n processStepId?: string | undefined;\n processStepName?: string | undefined;\n stepStatusId!: number;\n stepTesterUserId?: number | undefined;\n\n constructor(data?: IReportInnerTestResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.processStepId = _data[\"processStepId\"];\n this.processStepName = _data[\"processStepName\"];\n this.stepStatusId = _data[\"stepStatusId\"];\n this.stepTesterUserId = _data[\"stepTesterUserId\"];\n }\n }\n\n static fromJS(data: any): ReportInnerTestResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ReportInnerTestResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"processStepId\"] = this.processStepId;\n data[\"processStepName\"] = this.processStepName;\n data[\"stepStatusId\"] = this.stepStatusId;\n data[\"stepTesterUserId\"] = this.stepTesterUserId;\n return data;\n }\n}\n\nexport interface IReportInnerTestResponse {\n id: number;\n processStepId?: string | undefined;\n processStepName?: string | undefined;\n stepStatusId: number;\n stepTesterUserId?: number | undefined;\n}\n\nexport enum ReportItemStatusEnum {\n Open = \"Open\",\n InProgres = \"InProgres\",\n OnHold = \"OnHold\",\n Rejected = \"Rejected\",\n Closed = \"Closed\",\n}\n\nexport enum ReportStatusAreaEnum {\n Green = \"Green\",\n Yellow = \"Yellow\",\n Red = \"Red\",\n}\n\nexport class ReportStatusResponse implements IReportStatusResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n isReadonly!: boolean;\n color!: string;\n isInitial!: boolean;\n nextStates?: number[] | undefined;\n semantics!: ProjectReportStatusEnum;\n\n constructor(data?: IReportStatusResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.isReadonly = _data[\"isReadonly\"];\n this.color = _data[\"color\"];\n this.isInitial = _data[\"isInitial\"];\n if (Array.isArray(_data[\"nextStates\"])) {\n this.nextStates = [] as any;\n for (let item of _data[\"nextStates\"])\n this.nextStates!.push(item);\n }\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): ReportStatusResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ReportStatusResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"isReadonly\"] = this.isReadonly;\n data[\"color\"] = this.color;\n data[\"isInitial\"] = this.isInitial;\n if (Array.isArray(this.nextStates)) {\n data[\"nextStates\"] = [];\n for (let item of this.nextStates)\n data[\"nextStates\"].push(item);\n }\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface IReportStatusResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n isReadonly: boolean;\n color: string;\n isInitial: boolean;\n nextStates?: number[] | undefined;\n semantics: ProjectReportStatusEnum;\n}\n\nexport class ReportStatusResponseItemsResponseModel implements IReportStatusResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ReportStatusResponse[] | undefined;\n\n constructor(data?: IReportStatusResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ReportStatusResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ReportStatusResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ReportStatusResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IReportStatusResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ReportStatusResponse[] | undefined;\n}\n\nexport class ReportTestPlanResponse implements IReportTestPlanResponse {\n id!: number;\n level3ProcessId?: string | undefined;\n level3ProcessName?: string | undefined;\n processTesterUserId?: number | undefined;\n complexLevel2Id?: number | undefined;\n complexLevel2Name?: string | undefined;\n complexLevel2Description?: string | undefined;\n comment?: string | undefined;\n isComplex!: boolean;\n plannedDate?: Date | undefined;\n processStatusId!: number;\n tickets?: ReportTestTicketResponse[] | undefined;\n innerTestPlans?: ReportInnerTestResponse[] | undefined;\n ticketIds?: number[] | undefined;\n\n constructor(data?: IReportTestPlanResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.level3ProcessId = _data[\"level3ProcessId\"];\n this.level3ProcessName = _data[\"level3ProcessName\"];\n this.processTesterUserId = _data[\"processTesterUserId\"];\n this.complexLevel2Id = _data[\"complexLevel2Id\"];\n this.complexLevel2Name = _data[\"complexLevel2Name\"];\n this.complexLevel2Description = _data[\"complexLevel2Description\"];\n this.comment = _data[\"comment\"];\n this.isComplex = _data[\"isComplex\"];\n this.plannedDate = _data[\"plannedDate\"] ? new Date(_data[\"plannedDate\"].toString()) : undefined;\n this.processStatusId = _data[\"processStatusId\"];\n if (Array.isArray(_data[\"tickets\"])) {\n this.tickets = [] as any;\n for (let item of _data[\"tickets\"])\n this.tickets!.push(ReportTestTicketResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"innerTestPlans\"])) {\n this.innerTestPlans = [] as any;\n for (let item of _data[\"innerTestPlans\"])\n this.innerTestPlans!.push(ReportInnerTestResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"ticketIds\"])) {\n this.ticketIds = [] as any;\n for (let item of _data[\"ticketIds\"])\n this.ticketIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): ReportTestPlanResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ReportTestPlanResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"level3ProcessId\"] = this.level3ProcessId;\n data[\"level3ProcessName\"] = this.level3ProcessName;\n data[\"processTesterUserId\"] = this.processTesterUserId;\n data[\"complexLevel2Id\"] = this.complexLevel2Id;\n data[\"complexLevel2Name\"] = this.complexLevel2Name;\n data[\"complexLevel2Description\"] = this.complexLevel2Description;\n data[\"comment\"] = this.comment;\n data[\"isComplex\"] = this.isComplex;\n data[\"plannedDate\"] = this.plannedDate ? formatDate(this.plannedDate) : undefined;\n data[\"processStatusId\"] = this.processStatusId;\n if (Array.isArray(this.tickets)) {\n data[\"tickets\"] = [];\n for (let item of this.tickets)\n data[\"tickets\"].push(item.toJSON());\n }\n if (Array.isArray(this.innerTestPlans)) {\n data[\"innerTestPlans\"] = [];\n for (let item of this.innerTestPlans)\n data[\"innerTestPlans\"].push(item.toJSON());\n }\n if (Array.isArray(this.ticketIds)) {\n data[\"ticketIds\"] = [];\n for (let item of this.ticketIds)\n data[\"ticketIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IReportTestPlanResponse {\n id: number;\n level3ProcessId?: string | undefined;\n level3ProcessName?: string | undefined;\n processTesterUserId?: number | undefined;\n complexLevel2Id?: number | undefined;\n complexLevel2Name?: string | undefined;\n complexLevel2Description?: string | undefined;\n comment?: string | undefined;\n isComplex: boolean;\n plannedDate?: Date | undefined;\n processStatusId: number;\n tickets?: ReportTestTicketResponse[] | undefined;\n innerTestPlans?: ReportInnerTestResponse[] | undefined;\n ticketIds?: number[] | undefined;\n}\n\nexport class ReportTestPlanResponseItemsResponseModel implements IReportTestPlanResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ReportTestPlanResponse[] | undefined;\n\n constructor(data?: IReportTestPlanResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ReportTestPlanResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ReportTestPlanResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ReportTestPlanResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IReportTestPlanResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ReportTestPlanResponse[] | undefined;\n}\n\nexport class ReportTestTicketResponse implements IReportTestTicketResponse {\n ticketId!: number;\n ticketStatusId!: number;\n\n constructor(data?: IReportTestTicketResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.ticketId = _data[\"ticketId\"];\n this.ticketStatusId = _data[\"ticketStatusId\"];\n }\n }\n\n static fromJS(data: any): ReportTestTicketResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ReportTestTicketResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"ticketId\"] = this.ticketId;\n data[\"ticketStatusId\"] = this.ticketStatusId;\n return data;\n }\n}\n\nexport interface IReportTestTicketResponse {\n ticketId: number;\n ticketStatusId: number;\n}\n\nexport enum ResolutionTimeBasedOnEnum {\n Hours24 = \"Hours24\",\n RegularWorkingHours = \"RegularWorkingHours\",\n}\n\nexport class ResponseTimeResponse implements IResponseTimeResponse {\n id!: number;\n priority!: PriorityEnum;\n responseTime!: number;\n resolutionTime!: number;\n\n constructor(data?: IResponseTimeResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.priority = _data[\"priority\"];\n this.responseTime = _data[\"responseTime\"];\n this.resolutionTime = _data[\"resolutionTime\"];\n }\n }\n\n static fromJS(data: any): ResponseTimeResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ResponseTimeResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"priority\"] = this.priority;\n data[\"responseTime\"] = this.responseTime;\n data[\"resolutionTime\"] = this.resolutionTime;\n return data;\n }\n}\n\nexport interface IResponseTimeResponse {\n id: number;\n priority: PriorityEnum;\n responseTime: number;\n resolutionTime: number;\n}\n\nexport class RiskCountsResponse implements IRiskCountsResponse {\n grossImpactSum!: number;\n netImpactSum!: number;\n mitigationCostSum!: number;\n grossImpactAfterMitigationSum!: number;\n netImpactAfterMitigationSum!: number;\n costBenefitSum!: number;\n riskInclusionSum!: number;\n\n constructor(data?: IRiskCountsResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.grossImpactSum = _data[\"grossImpactSum\"];\n this.netImpactSum = _data[\"netImpactSum\"];\n this.mitigationCostSum = _data[\"mitigationCostSum\"];\n this.grossImpactAfterMitigationSum = _data[\"grossImpactAfterMitigationSum\"];\n this.netImpactAfterMitigationSum = _data[\"netImpactAfterMitigationSum\"];\n this.costBenefitSum = _data[\"costBenefitSum\"];\n this.riskInclusionSum = _data[\"riskInclusionSum\"];\n }\n }\n\n static fromJS(data: any): RiskCountsResponse {\n data = typeof data === 'object' ? data : {};\n let result = new RiskCountsResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"grossImpactSum\"] = this.grossImpactSum;\n data[\"netImpactSum\"] = this.netImpactSum;\n data[\"mitigationCostSum\"] = this.mitigationCostSum;\n data[\"grossImpactAfterMitigationSum\"] = this.grossImpactAfterMitigationSum;\n data[\"netImpactAfterMitigationSum\"] = this.netImpactAfterMitigationSum;\n data[\"costBenefitSum\"] = this.costBenefitSum;\n data[\"riskInclusionSum\"] = this.riskInclusionSum;\n return data;\n }\n}\n\nexport interface IRiskCountsResponse {\n grossImpactSum: number;\n netImpactSum: number;\n mitigationCostSum: number;\n grossImpactAfterMitigationSum: number;\n netImpactAfterMitigationSum: number;\n costBenefitSum: number;\n riskInclusionSum: number;\n}\n\nexport class RiskCountsResponseSimpleResponseModel implements IRiskCountsResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: RiskCountsResponse;\n\n constructor(data?: IRiskCountsResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? RiskCountsResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): RiskCountsResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new RiskCountsResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IRiskCountsResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: RiskCountsResponse;\n}\n\nexport class RiskDashboardFilterRequest implements IRiskDashboardFilterRequest {\n projectId!: number;\n dateRange!: DateRangeRequest;\n\n constructor(data?: IRiskDashboardFilterRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.dateRange = new DateRangeRequest();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectId = _data[\"projectId\"];\n this.dateRange = _data[\"dateRange\"] ? DateRangeRequest.fromJS(_data[\"dateRange\"]) : new DateRangeRequest();\n }\n }\n\n static fromJS(data: any): RiskDashboardFilterRequest {\n data = typeof data === 'object' ? data : {};\n let result = new RiskDashboardFilterRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectId\"] = this.projectId;\n data[\"dateRange\"] = this.dateRange ? this.dateRange.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IRiskDashboardFilterRequest {\n projectId: number;\n dateRange: DateRangeRequest;\n}\n\nexport class RiskDashboardResponse implements IRiskDashboardResponse {\n grossImpactPerMitigationType?: { [key: string]: number; } | undefined;\n risks?: RiskResponse[] | undefined;\n totalGrossImpact!: number;\n totalGrossImpactAfterMitigation!: number;\n totalNetImpact!: number;\n totalRiskForInclusion!: number;\n\n constructor(data?: IRiskDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"grossImpactPerMitigationType\"]) {\n this.grossImpactPerMitigationType = {} as any;\n for (let key in _data[\"grossImpactPerMitigationType\"]) {\n if (_data[\"grossImpactPerMitigationType\"].hasOwnProperty(key))\n (this.grossImpactPerMitigationType)![key] = _data[\"grossImpactPerMitigationType\"][key];\n }\n }\n if (Array.isArray(_data[\"risks\"])) {\n this.risks = [] as any;\n for (let item of _data[\"risks\"])\n this.risks!.push(RiskResponse.fromJS(item));\n }\n this.totalGrossImpact = _data[\"totalGrossImpact\"];\n this.totalGrossImpactAfterMitigation = _data[\"totalGrossImpactAfterMitigation\"];\n this.totalNetImpact = _data[\"totalNetImpact\"];\n this.totalRiskForInclusion = _data[\"totalRiskForInclusion\"];\n }\n }\n\n static fromJS(data: any): RiskDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new RiskDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.grossImpactPerMitigationType) {\n data[\"grossImpactPerMitigationType\"] = {};\n for (let key in this.grossImpactPerMitigationType) {\n if (this.grossImpactPerMitigationType.hasOwnProperty(key))\n (data[\"grossImpactPerMitigationType\"])[key] = (this.grossImpactPerMitigationType)[key];\n }\n }\n if (Array.isArray(this.risks)) {\n data[\"risks\"] = [];\n for (let item of this.risks)\n data[\"risks\"].push(item.toJSON());\n }\n data[\"totalGrossImpact\"] = this.totalGrossImpact;\n data[\"totalGrossImpactAfterMitigation\"] = this.totalGrossImpactAfterMitigation;\n data[\"totalNetImpact\"] = this.totalNetImpact;\n data[\"totalRiskForInclusion\"] = this.totalRiskForInclusion;\n return data;\n }\n}\n\nexport interface IRiskDashboardResponse {\n grossImpactPerMitigationType?: { [key: string]: number; } | undefined;\n risks?: RiskResponse[] | undefined;\n totalGrossImpact: number;\n totalGrossImpactAfterMitigation: number;\n totalNetImpact: number;\n totalRiskForInclusion: number;\n}\n\nexport class RiskDashboardResponseSimpleResponseModel implements IRiskDashboardResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: RiskDashboardResponse;\n\n constructor(data?: IRiskDashboardResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? RiskDashboardResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): RiskDashboardResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new RiskDashboardResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IRiskDashboardResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: RiskDashboardResponse;\n}\n\nexport enum RiskImpactEnum {\n Low = \"Low\",\n Medium = \"Medium\",\n High = \"High\",\n}\n\nexport class RiskPermission implements IRiskPermission {\n dashboards!: boolean;\n viewRisks!: boolean;\n maintainRisks!: boolean;\n\n constructor(data?: IRiskPermission) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.dashboards = _data[\"dashboards\"];\n this.viewRisks = _data[\"viewRisks\"];\n this.maintainRisks = _data[\"maintainRisks\"];\n }\n }\n\n static fromJS(data: any): RiskPermission {\n data = typeof data === 'object' ? data : {};\n let result = new RiskPermission();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dashboards\"] = this.dashboards;\n data[\"viewRisks\"] = this.viewRisks;\n data[\"maintainRisks\"] = this.maintainRisks;\n return data;\n }\n}\n\nexport interface IRiskPermission {\n dashboards: boolean;\n viewRisks: boolean;\n maintainRisks: boolean;\n}\n\nexport enum RiskProbabilityEnum {\n Low = \"Low\",\n Medium = \"Medium\",\n High = \"High\",\n}\n\nexport class RiskResponse implements IRiskResponse {\n id!: number;\n projectId!: number;\n name!: string;\n consequneces?: string | undefined;\n effects?: string | undefined;\n responsibleUserId!: number;\n statusId!: number;\n typeId?: number | undefined;\n dueDate!: Date;\n comment?: string | undefined;\n grossImpact?: number | undefined;\n probability?: number | undefined;\n mitigation?: string | undefined;\n mitigationType!: MitigationTypeEnum;\n mitigationCost?: number | undefined;\n grossImpactAfterMitigation?: number | undefined;\n probabilityAfterMitigation?: number | undefined;\n probabilityDescriptive?: RiskProbabilityEnum;\n impactDescriptive?: RiskImpactEnum;\n netImpact?: number | undefined;\n netImpactAfterMitigation?: number | undefined;\n costBenefitAnalysis?: number | undefined;\n riskForInclusionInBudget?: number | undefined;\n\n constructor(data?: IRiskResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.projectId = _data[\"projectId\"];\n this.name = _data[\"name\"];\n this.consequneces = _data[\"consequneces\"];\n this.effects = _data[\"effects\"];\n this.responsibleUserId = _data[\"responsibleUserId\"];\n this.statusId = _data[\"statusId\"];\n this.typeId = _data[\"typeId\"];\n this.dueDate = _data[\"dueDate\"] ? new Date(_data[\"dueDate\"].toString()) : undefined;\n this.comment = _data[\"comment\"];\n this.grossImpact = _data[\"grossImpact\"];\n this.probability = _data[\"probability\"];\n this.mitigation = _data[\"mitigation\"];\n this.mitigationType = _data[\"mitigationType\"];\n this.mitigationCost = _data[\"mitigationCost\"];\n this.grossImpactAfterMitigation = _data[\"grossImpactAfterMitigation\"];\n this.probabilityAfterMitigation = _data[\"probabilityAfterMitigation\"];\n this.probabilityDescriptive = _data[\"probabilityDescriptive\"];\n this.impactDescriptive = _data[\"impactDescriptive\"];\n this.netImpact = _data[\"netImpact\"];\n this.netImpactAfterMitigation = _data[\"netImpactAfterMitigation\"];\n this.costBenefitAnalysis = _data[\"costBenefitAnalysis\"];\n this.riskForInclusionInBudget = _data[\"riskForInclusionInBudget\"];\n }\n }\n\n static fromJS(data: any): RiskResponse {\n data = typeof data === 'object' ? data : {};\n let result = new RiskResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"projectId\"] = this.projectId;\n data[\"name\"] = this.name;\n data[\"consequneces\"] = this.consequneces;\n data[\"effects\"] = this.effects;\n data[\"responsibleUserId\"] = this.responsibleUserId;\n data[\"statusId\"] = this.statusId;\n data[\"typeId\"] = this.typeId;\n data[\"dueDate\"] = this.dueDate ? formatDate(this.dueDate) : undefined;\n data[\"comment\"] = this.comment;\n data[\"grossImpact\"] = this.grossImpact;\n data[\"probability\"] = this.probability;\n data[\"mitigation\"] = this.mitigation;\n data[\"mitigationType\"] = this.mitigationType;\n data[\"mitigationCost\"] = this.mitigationCost;\n data[\"grossImpactAfterMitigation\"] = this.grossImpactAfterMitigation;\n data[\"probabilityAfterMitigation\"] = this.probabilityAfterMitigation;\n data[\"probabilityDescriptive\"] = this.probabilityDescriptive;\n data[\"impactDescriptive\"] = this.impactDescriptive;\n data[\"netImpact\"] = this.netImpact;\n data[\"netImpactAfterMitigation\"] = this.netImpactAfterMitigation;\n data[\"costBenefitAnalysis\"] = this.costBenefitAnalysis;\n data[\"riskForInclusionInBudget\"] = this.riskForInclusionInBudget;\n return data;\n }\n}\n\nexport interface IRiskResponse {\n id: number;\n projectId: number;\n name: string;\n consequneces?: string | undefined;\n effects?: string | undefined;\n responsibleUserId: number;\n statusId: number;\n typeId?: number | undefined;\n dueDate: Date;\n comment?: string | undefined;\n grossImpact?: number | undefined;\n probability?: number | undefined;\n mitigation?: string | undefined;\n mitigationType: MitigationTypeEnum;\n mitigationCost?: number | undefined;\n grossImpactAfterMitigation?: number | undefined;\n probabilityAfterMitigation?: number | undefined;\n probabilityDescriptive?: RiskProbabilityEnum;\n impactDescriptive?: RiskImpactEnum;\n netImpact?: number | undefined;\n netImpactAfterMitigation?: number | undefined;\n costBenefitAnalysis?: number | undefined;\n riskForInclusionInBudget?: number | undefined;\n}\n\nexport class RiskResponseItemsResponseModel implements IRiskResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: RiskResponse[] | undefined;\n\n constructor(data?: IRiskResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(RiskResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): RiskResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new RiskResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IRiskResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: RiskResponse[] | undefined;\n}\n\nexport class RiskResponseSimpleResponseModel implements IRiskResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: RiskResponse;\n\n constructor(data?: IRiskResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? RiskResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): RiskResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new RiskResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IRiskResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: RiskResponse;\n}\n\nexport enum RiskStatusEnum {\n Open = \"Open\",\n InProgress = \"InProgress\",\n Completed = \"Completed\",\n}\n\nexport class RiskStatusResponse implements IRiskStatusResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n isReadonly!: boolean;\n color!: string;\n isInitial!: boolean;\n nextStates?: number[] | undefined;\n semantics!: RiskStatusEnum;\n\n constructor(data?: IRiskStatusResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.isReadonly = _data[\"isReadonly\"];\n this.color = _data[\"color\"];\n this.isInitial = _data[\"isInitial\"];\n if (Array.isArray(_data[\"nextStates\"])) {\n this.nextStates = [] as any;\n for (let item of _data[\"nextStates\"])\n this.nextStates!.push(item);\n }\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): RiskStatusResponse {\n data = typeof data === 'object' ? data : {};\n let result = new RiskStatusResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"isReadonly\"] = this.isReadonly;\n data[\"color\"] = this.color;\n data[\"isInitial\"] = this.isInitial;\n if (Array.isArray(this.nextStates)) {\n data[\"nextStates\"] = [];\n for (let item of this.nextStates)\n data[\"nextStates\"].push(item);\n }\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface IRiskStatusResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n isReadonly: boolean;\n color: string;\n isInitial: boolean;\n nextStates?: number[] | undefined;\n semantics: RiskStatusEnum;\n}\n\nexport class RiskStatusResponseItemsResponseModel implements IRiskStatusResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: RiskStatusResponse[] | undefined;\n\n constructor(data?: IRiskStatusResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(RiskStatusResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): RiskStatusResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new RiskStatusResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IRiskStatusResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: RiskStatusResponse[] | undefined;\n}\n\nexport class ScheduleConfigurationRequest implements IScheduleConfigurationRequest {\n durationIn!: ScheduleDurationEnum;\n skipWeekends!: boolean;\n calculateDayDurationFromSettings!: boolean;\n autocompleteTaskWhenSubtasksCompleted!: boolean;\n deriveTaskDatesFromSubtasks!: boolean;\n\n constructor(data?: IScheduleConfigurationRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.durationIn = _data[\"durationIn\"];\n this.skipWeekends = _data[\"skipWeekends\"];\n this.calculateDayDurationFromSettings = _data[\"calculateDayDurationFromSettings\"];\n this.autocompleteTaskWhenSubtasksCompleted = _data[\"autocompleteTaskWhenSubtasksCompleted\"];\n this.deriveTaskDatesFromSubtasks = _data[\"deriveTaskDatesFromSubtasks\"];\n }\n }\n\n static fromJS(data: any): ScheduleConfigurationRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleConfigurationRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"durationIn\"] = this.durationIn;\n data[\"skipWeekends\"] = this.skipWeekends;\n data[\"calculateDayDurationFromSettings\"] = this.calculateDayDurationFromSettings;\n data[\"autocompleteTaskWhenSubtasksCompleted\"] = this.autocompleteTaskWhenSubtasksCompleted;\n data[\"deriveTaskDatesFromSubtasks\"] = this.deriveTaskDatesFromSubtasks;\n return data;\n }\n}\n\nexport interface IScheduleConfigurationRequest {\n durationIn: ScheduleDurationEnum;\n skipWeekends: boolean;\n calculateDayDurationFromSettings: boolean;\n autocompleteTaskWhenSubtasksCompleted: boolean;\n deriveTaskDatesFromSubtasks: boolean;\n}\n\nexport class ScheduleConfigurationResponse implements IScheduleConfigurationResponse {\n projectId!: number;\n durationIn!: ScheduleDurationEnum;\n skipWeekends!: boolean;\n calculateDayDurationFromSettings!: boolean;\n autocompleteTaskWhenSubtasksCompleted!: boolean;\n deriveTaskDatesFromSubtasks!: boolean;\n\n constructor(data?: IScheduleConfigurationResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectId = _data[\"projectId\"];\n this.durationIn = _data[\"durationIn\"];\n this.skipWeekends = _data[\"skipWeekends\"];\n this.calculateDayDurationFromSettings = _data[\"calculateDayDurationFromSettings\"];\n this.autocompleteTaskWhenSubtasksCompleted = _data[\"autocompleteTaskWhenSubtasksCompleted\"];\n this.deriveTaskDatesFromSubtasks = _data[\"deriveTaskDatesFromSubtasks\"];\n }\n }\n\n static fromJS(data: any): ScheduleConfigurationResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleConfigurationResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectId\"] = this.projectId;\n data[\"durationIn\"] = this.durationIn;\n data[\"skipWeekends\"] = this.skipWeekends;\n data[\"calculateDayDurationFromSettings\"] = this.calculateDayDurationFromSettings;\n data[\"autocompleteTaskWhenSubtasksCompleted\"] = this.autocompleteTaskWhenSubtasksCompleted;\n data[\"deriveTaskDatesFromSubtasks\"] = this.deriveTaskDatesFromSubtasks;\n return data;\n }\n}\n\nexport interface IScheduleConfigurationResponse {\n projectId: number;\n durationIn: ScheduleDurationEnum;\n skipWeekends: boolean;\n calculateDayDurationFromSettings: boolean;\n autocompleteTaskWhenSubtasksCompleted: boolean;\n deriveTaskDatesFromSubtasks: boolean;\n}\n\nexport class ScheduleConfigurationResponseSimpleResponseModel implements IScheduleConfigurationResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ScheduleConfigurationResponse;\n\n constructor(data?: IScheduleConfigurationResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ScheduleConfigurationResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ScheduleConfigurationResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleConfigurationResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IScheduleConfigurationResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ScheduleConfigurationResponse;\n}\n\nexport class ScheduleDashboardFilterRequest implements IScheduleDashboardFilterRequest {\n projectId!: number;\n\n constructor(data?: IScheduleDashboardFilterRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectId = _data[\"projectId\"];\n }\n }\n\n static fromJS(data: any): ScheduleDashboardFilterRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleDashboardFilterRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectId\"] = this.projectId;\n return data;\n }\n}\n\nexport interface IScheduleDashboardFilterRequest {\n projectId: number;\n}\n\nexport class ScheduleDashboardResponse implements IScheduleDashboardResponse {\n projectDurationInDays!: number;\n percentOfCompletion!: number;\n plannedNumberOfManDays!: number;\n actualNumberOfManDays!: number;\n daysPerPlannedActualAndUser?: { [key: string]: { [key: string]: number; }; } | undefined;\n\n constructor(data?: IScheduleDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectDurationInDays = _data[\"projectDurationInDays\"];\n this.percentOfCompletion = _data[\"percentOfCompletion\"];\n this.plannedNumberOfManDays = _data[\"plannedNumberOfManDays\"];\n this.actualNumberOfManDays = _data[\"actualNumberOfManDays\"];\n if (_data[\"daysPerPlannedActualAndUser\"]) {\n this.daysPerPlannedActualAndUser = {} as any;\n for (let key in _data[\"daysPerPlannedActualAndUser\"]) {\n if (_data[\"daysPerPlannedActualAndUser\"].hasOwnProperty(key))\n (this.daysPerPlannedActualAndUser)![key] = _data[\"daysPerPlannedActualAndUser\"][key] !== undefined ? _data[\"daysPerPlannedActualAndUser\"][key] : {};\n }\n }\n }\n }\n\n static fromJS(data: any): ScheduleDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectDurationInDays\"] = this.projectDurationInDays;\n data[\"percentOfCompletion\"] = this.percentOfCompletion;\n data[\"plannedNumberOfManDays\"] = this.plannedNumberOfManDays;\n data[\"actualNumberOfManDays\"] = this.actualNumberOfManDays;\n if (this.daysPerPlannedActualAndUser) {\n data[\"daysPerPlannedActualAndUser\"] = {};\n for (let key in this.daysPerPlannedActualAndUser) {\n if (this.daysPerPlannedActualAndUser.hasOwnProperty(key))\n (data[\"daysPerPlannedActualAndUser\"])[key] = (this.daysPerPlannedActualAndUser)[key];\n }\n }\n return data;\n }\n}\n\nexport interface IScheduleDashboardResponse {\n projectDurationInDays: number;\n percentOfCompletion: number;\n plannedNumberOfManDays: number;\n actualNumberOfManDays: number;\n daysPerPlannedActualAndUser?: { [key: string]: { [key: string]: number; }; } | undefined;\n}\n\nexport class ScheduleDashboardResponseSimpleResponseModel implements IScheduleDashboardResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ScheduleDashboardResponse;\n\n constructor(data?: IScheduleDashboardResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ScheduleDashboardResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ScheduleDashboardResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleDashboardResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IScheduleDashboardResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ScheduleDashboardResponse;\n}\n\nexport class ScheduleDayUtilizationDashboardResponse implements IScheduleDayUtilizationDashboardResponse {\n plannedHours!: number;\n actualHours!: number;\n readonly difference!: number;\n date!: Date;\n utilizationPerProject?: { [key: string]: ScheduleUtilizationDashboardResponse; } | undefined;\n\n constructor(data?: IScheduleDayUtilizationDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.plannedHours = _data[\"plannedHours\"];\n this.actualHours = _data[\"actualHours\"];\n (this).difference = _data[\"difference\"];\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n if (_data[\"utilizationPerProject\"]) {\n this.utilizationPerProject = {} as any;\n for (let key in _data[\"utilizationPerProject\"]) {\n if (_data[\"utilizationPerProject\"].hasOwnProperty(key))\n (this.utilizationPerProject)![key] = _data[\"utilizationPerProject\"][key] ? ScheduleUtilizationDashboardResponse.fromJS(_data[\"utilizationPerProject\"][key]) : new ScheduleUtilizationDashboardResponse();\n }\n }\n }\n }\n\n static fromJS(data: any): ScheduleDayUtilizationDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleDayUtilizationDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"plannedHours\"] = this.plannedHours;\n data[\"actualHours\"] = this.actualHours;\n data[\"difference\"] = this.difference;\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n if (this.utilizationPerProject) {\n data[\"utilizationPerProject\"] = {};\n for (let key in this.utilizationPerProject) {\n if (this.utilizationPerProject.hasOwnProperty(key))\n (data[\"utilizationPerProject\"])[key] = this.utilizationPerProject[key] ? this.utilizationPerProject[key].toJSON() : undefined;\n }\n }\n return data;\n }\n}\n\nexport interface IScheduleDayUtilizationDashboardResponse {\n plannedHours: number;\n actualHours: number;\n difference: number;\n date: Date;\n utilizationPerProject?: { [key: string]: ScheduleUtilizationDashboardResponse; } | undefined;\n}\n\nexport enum ScheduleDurationEnum {\n Hours = \"Hours\",\n Days = \"Days\",\n Weeks = \"Weeks\",\n Months = \"Months\",\n}\n\nexport class ScheduleGanttDashboardFilterRequest implements IScheduleGanttDashboardFilterRequest {\n projectIds?: number[] | undefined;\n\n constructor(data?: IScheduleGanttDashboardFilterRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"projectIds\"])) {\n this.projectIds = [] as any;\n for (let item of _data[\"projectIds\"])\n this.projectIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): ScheduleGanttDashboardFilterRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleGanttDashboardFilterRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.projectIds)) {\n data[\"projectIds\"] = [];\n for (let item of this.projectIds)\n data[\"projectIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IScheduleGanttDashboardFilterRequest {\n projectIds?: number[] | undefined;\n}\n\nexport class ScheduleGanttDashboardResponse implements IScheduleGanttDashboardResponse {\n schedulesPerProject?: { [key: string]: ScheduleResponse[]; } | undefined;\n schedulesPredecessorsPerProject?: { [key: string]: SchedulePredecessorResponse[]; } | undefined;\n\n constructor(data?: IScheduleGanttDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"schedulesPerProject\"]) {\n this.schedulesPerProject = {} as any;\n for (let key in _data[\"schedulesPerProject\"]) {\n if (_data[\"schedulesPerProject\"].hasOwnProperty(key))\n (this.schedulesPerProject)![key] = _data[\"schedulesPerProject\"][key] ? _data[\"schedulesPerProject\"][key].map((i: any) => ScheduleResponse.fromJS(i)) : [];\n }\n }\n if (_data[\"schedulesPredecessorsPerProject\"]) {\n this.schedulesPredecessorsPerProject = {} as any;\n for (let key in _data[\"schedulesPredecessorsPerProject\"]) {\n if (_data[\"schedulesPredecessorsPerProject\"].hasOwnProperty(key))\n (this.schedulesPredecessorsPerProject)![key] = _data[\"schedulesPredecessorsPerProject\"][key] ? _data[\"schedulesPredecessorsPerProject\"][key].map((i: any) => SchedulePredecessorResponse.fromJS(i)) : [];\n }\n }\n }\n }\n\n static fromJS(data: any): ScheduleGanttDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleGanttDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.schedulesPerProject) {\n data[\"schedulesPerProject\"] = {};\n for (let key in this.schedulesPerProject) {\n if (this.schedulesPerProject.hasOwnProperty(key))\n (data[\"schedulesPerProject\"])[key] = (this.schedulesPerProject)[key];\n }\n }\n if (this.schedulesPredecessorsPerProject) {\n data[\"schedulesPredecessorsPerProject\"] = {};\n for (let key in this.schedulesPredecessorsPerProject) {\n if (this.schedulesPredecessorsPerProject.hasOwnProperty(key))\n (data[\"schedulesPredecessorsPerProject\"])[key] = (this.schedulesPredecessorsPerProject)[key];\n }\n }\n return data;\n }\n}\n\nexport interface IScheduleGanttDashboardResponse {\n schedulesPerProject?: { [key: string]: ScheduleResponse[]; } | undefined;\n schedulesPredecessorsPerProject?: { [key: string]: SchedulePredecessorResponse[]; } | undefined;\n}\n\nexport class ScheduleGanttDashboardResponseSimpleResponseModel implements IScheduleGanttDashboardResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ScheduleGanttDashboardResponse;\n\n constructor(data?: IScheduleGanttDashboardResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ScheduleGanttDashboardResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ScheduleGanttDashboardResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleGanttDashboardResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IScheduleGanttDashboardResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ScheduleGanttDashboardResponse;\n}\n\nexport class SchedulePermission implements ISchedulePermission {\n viewSchedule!: boolean;\n maintainSchedule!: boolean;\n\n constructor(data?: ISchedulePermission) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.viewSchedule = _data[\"viewSchedule\"];\n this.maintainSchedule = _data[\"maintainSchedule\"];\n }\n }\n\n static fromJS(data: any): SchedulePermission {\n data = typeof data === 'object' ? data : {};\n let result = new SchedulePermission();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"viewSchedule\"] = this.viewSchedule;\n data[\"maintainSchedule\"] = this.maintainSchedule;\n return data;\n }\n}\n\nexport interface ISchedulePermission {\n viewSchedule: boolean;\n maintainSchedule: boolean;\n}\n\nexport class SchedulePredecessorResponse implements ISchedulePredecessorResponse {\n id!: number;\n predecessorId!: number;\n descendantId!: number;\n type!: SchedulePredecessorTypeEnum;\n lag?: number | undefined;\n\n constructor(data?: ISchedulePredecessorResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.predecessorId = _data[\"predecessorId\"];\n this.descendantId = _data[\"descendantId\"];\n this.type = _data[\"type\"];\n this.lag = _data[\"lag\"];\n }\n }\n\n static fromJS(data: any): SchedulePredecessorResponse {\n data = typeof data === 'object' ? data : {};\n let result = new SchedulePredecessorResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"predecessorId\"] = this.predecessorId;\n data[\"descendantId\"] = this.descendantId;\n data[\"type\"] = this.type;\n data[\"lag\"] = this.lag;\n return data;\n }\n}\n\nexport interface ISchedulePredecessorResponse {\n id: number;\n predecessorId: number;\n descendantId: number;\n type: SchedulePredecessorTypeEnum;\n lag?: number | undefined;\n}\n\nexport class SchedulePredecessorResponseItemsResponseModel implements ISchedulePredecessorResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SchedulePredecessorResponse[] | undefined;\n\n constructor(data?: ISchedulePredecessorResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(SchedulePredecessorResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): SchedulePredecessorResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new SchedulePredecessorResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ISchedulePredecessorResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SchedulePredecessorResponse[] | undefined;\n}\n\nexport class SchedulePredecessorResponseSimpleResponseModel implements ISchedulePredecessorResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: SchedulePredecessorResponse;\n\n constructor(data?: ISchedulePredecessorResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? SchedulePredecessorResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): SchedulePredecessorResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new SchedulePredecessorResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ISchedulePredecessorResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: SchedulePredecessorResponse;\n}\n\nexport enum SchedulePredecessorTypeEnum {\n FinishToStart = \"FinishToStart\",\n StartToStart = \"StartToStart\",\n FinishToFinish = \"FinishToFinish\",\n StartToFinish = \"StartToFinish\",\n}\n\nexport class ScheduleProjectUtilizationDashboardFilterRequest implements IScheduleProjectUtilizationDashboardFilterRequest {\n projectIds?: number[] | undefined;\n\n constructor(data?: IScheduleProjectUtilizationDashboardFilterRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"projectIds\"])) {\n this.projectIds = [] as any;\n for (let item of _data[\"projectIds\"])\n this.projectIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): ScheduleProjectUtilizationDashboardFilterRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleProjectUtilizationDashboardFilterRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.projectIds)) {\n data[\"projectIds\"] = [];\n for (let item of this.projectIds)\n data[\"projectIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IScheduleProjectUtilizationDashboardFilterRequest {\n projectIds?: number[] | undefined;\n}\n\nexport class ScheduleResponse implements IScheduleResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n projectId!: number;\n wbs!: string;\n start!: Date;\n finish!: Date;\n duration!: number;\n parentId?: number | undefined;\n predecessorIds?: number[] | undefined;\n percentOfCompletion?: number | undefined;\n percentOfTaskCompletion?: number | undefined;\n achievedDate?: Date | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n customText3?: string | undefined;\n customText4?: string | undefined;\n customText5?: string | undefined;\n customText6?: string | undefined;\n customText7?: string | undefined;\n customText8?: string | undefined;\n customText9?: string | undefined;\n customText10?: string | undefined;\n projectRoleResponsibleId?: number | undefined;\n responsibleUserIds?: number[] | undefined;\n workloadForResponsibleUsers?: number | undefined;\n addAsTaskPerResponsibleUser!: boolean;\n projectRoleAccountableId?: number | undefined;\n accountableUserIds?: number[] | undefined;\n projectRoleConsultedId?: number | undefined;\n consultedUserIds?: number[] | undefined;\n projectRoleInformedId?: number | undefined;\n informedUserIds?: number[] | undefined;\n markAsMilestone!: boolean;\n markAsDeliverable!: boolean;\n markTaskForQualityGate!: boolean;\n\n constructor(data?: IScheduleResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.projectId = _data[\"projectId\"];\n this.wbs = _data[\"wbs\"];\n this.start = _data[\"start\"] ? new Date(_data[\"start\"].toString()) : undefined;\n this.finish = _data[\"finish\"] ? new Date(_data[\"finish\"].toString()) : undefined;\n this.duration = _data[\"duration\"];\n this.parentId = _data[\"parentId\"];\n if (Array.isArray(_data[\"predecessorIds\"])) {\n this.predecessorIds = [] as any;\n for (let item of _data[\"predecessorIds\"])\n this.predecessorIds!.push(item);\n }\n this.percentOfCompletion = _data[\"percentOfCompletion\"];\n this.percentOfTaskCompletion = _data[\"percentOfTaskCompletion\"];\n this.achievedDate = _data[\"achievedDate\"] ? new Date(_data[\"achievedDate\"].toString()) : undefined;\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.customText3 = _data[\"customText3\"];\n this.customText4 = _data[\"customText4\"];\n this.customText5 = _data[\"customText5\"];\n this.customText6 = _data[\"customText6\"];\n this.customText7 = _data[\"customText7\"];\n this.customText8 = _data[\"customText8\"];\n this.customText9 = _data[\"customText9\"];\n this.customText10 = _data[\"customText10\"];\n this.projectRoleResponsibleId = _data[\"projectRoleResponsibleId\"];\n if (Array.isArray(_data[\"responsibleUserIds\"])) {\n this.responsibleUserIds = [] as any;\n for (let item of _data[\"responsibleUserIds\"])\n this.responsibleUserIds!.push(item);\n }\n this.workloadForResponsibleUsers = _data[\"workloadForResponsibleUsers\"];\n this.addAsTaskPerResponsibleUser = _data[\"addAsTaskPerResponsibleUser\"];\n this.projectRoleAccountableId = _data[\"projectRoleAccountableId\"];\n if (Array.isArray(_data[\"accountableUserIds\"])) {\n this.accountableUserIds = [] as any;\n for (let item of _data[\"accountableUserIds\"])\n this.accountableUserIds!.push(item);\n }\n this.projectRoleConsultedId = _data[\"projectRoleConsultedId\"];\n if (Array.isArray(_data[\"consultedUserIds\"])) {\n this.consultedUserIds = [] as any;\n for (let item of _data[\"consultedUserIds\"])\n this.consultedUserIds!.push(item);\n }\n this.projectRoleInformedId = _data[\"projectRoleInformedId\"];\n if (Array.isArray(_data[\"informedUserIds\"])) {\n this.informedUserIds = [] as any;\n for (let item of _data[\"informedUserIds\"])\n this.informedUserIds!.push(item);\n }\n this.markAsMilestone = _data[\"markAsMilestone\"];\n this.markAsDeliverable = _data[\"markAsDeliverable\"];\n this.markTaskForQualityGate = _data[\"markTaskForQualityGate\"];\n }\n }\n\n static fromJS(data: any): ScheduleResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"projectId\"] = this.projectId;\n data[\"wbs\"] = this.wbs;\n data[\"start\"] = this.start ? this.start.toISOString() : undefined;\n data[\"finish\"] = this.finish ? this.finish.toISOString() : undefined;\n data[\"duration\"] = this.duration;\n data[\"parentId\"] = this.parentId;\n if (Array.isArray(this.predecessorIds)) {\n data[\"predecessorIds\"] = [];\n for (let item of this.predecessorIds)\n data[\"predecessorIds\"].push(item);\n }\n data[\"percentOfCompletion\"] = this.percentOfCompletion;\n data[\"percentOfTaskCompletion\"] = this.percentOfTaskCompletion;\n data[\"achievedDate\"] = this.achievedDate ? this.achievedDate.toISOString() : undefined;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"customText3\"] = this.customText3;\n data[\"customText4\"] = this.customText4;\n data[\"customText5\"] = this.customText5;\n data[\"customText6\"] = this.customText6;\n data[\"customText7\"] = this.customText7;\n data[\"customText8\"] = this.customText8;\n data[\"customText9\"] = this.customText9;\n data[\"customText10\"] = this.customText10;\n data[\"projectRoleResponsibleId\"] = this.projectRoleResponsibleId;\n if (Array.isArray(this.responsibleUserIds)) {\n data[\"responsibleUserIds\"] = [];\n for (let item of this.responsibleUserIds)\n data[\"responsibleUserIds\"].push(item);\n }\n data[\"workloadForResponsibleUsers\"] = this.workloadForResponsibleUsers;\n data[\"addAsTaskPerResponsibleUser\"] = this.addAsTaskPerResponsibleUser;\n data[\"projectRoleAccountableId\"] = this.projectRoleAccountableId;\n if (Array.isArray(this.accountableUserIds)) {\n data[\"accountableUserIds\"] = [];\n for (let item of this.accountableUserIds)\n data[\"accountableUserIds\"].push(item);\n }\n data[\"projectRoleConsultedId\"] = this.projectRoleConsultedId;\n if (Array.isArray(this.consultedUserIds)) {\n data[\"consultedUserIds\"] = [];\n for (let item of this.consultedUserIds)\n data[\"consultedUserIds\"].push(item);\n }\n data[\"projectRoleInformedId\"] = this.projectRoleInformedId;\n if (Array.isArray(this.informedUserIds)) {\n data[\"informedUserIds\"] = [];\n for (let item of this.informedUserIds)\n data[\"informedUserIds\"].push(item);\n }\n data[\"markAsMilestone\"] = this.markAsMilestone;\n data[\"markAsDeliverable\"] = this.markAsDeliverable;\n data[\"markTaskForQualityGate\"] = this.markTaskForQualityGate;\n return data;\n }\n}\n\nexport interface IScheduleResponse {\n id: number;\n name: string;\n description?: string | undefined;\n projectId: number;\n wbs: string;\n start: Date;\n finish: Date;\n duration: number;\n parentId?: number | undefined;\n predecessorIds?: number[] | undefined;\n percentOfCompletion?: number | undefined;\n percentOfTaskCompletion?: number | undefined;\n achievedDate?: Date | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n customText3?: string | undefined;\n customText4?: string | undefined;\n customText5?: string | undefined;\n customText6?: string | undefined;\n customText7?: string | undefined;\n customText8?: string | undefined;\n customText9?: string | undefined;\n customText10?: string | undefined;\n projectRoleResponsibleId?: number | undefined;\n responsibleUserIds?: number[] | undefined;\n workloadForResponsibleUsers?: number | undefined;\n addAsTaskPerResponsibleUser: boolean;\n projectRoleAccountableId?: number | undefined;\n accountableUserIds?: number[] | undefined;\n projectRoleConsultedId?: number | undefined;\n consultedUserIds?: number[] | undefined;\n projectRoleInformedId?: number | undefined;\n informedUserIds?: number[] | undefined;\n markAsMilestone: boolean;\n markAsDeliverable: boolean;\n markTaskForQualityGate: boolean;\n}\n\nexport class ScheduleResponseItemsResponseModel implements IScheduleResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ScheduleResponse[] | undefined;\n\n constructor(data?: IScheduleResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ScheduleResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ScheduleResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IScheduleResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ScheduleResponse[] | undefined;\n}\n\nexport class ScheduleResponseSimpleResponseModel implements IScheduleResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ScheduleResponse;\n\n constructor(data?: IScheduleResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ScheduleResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ScheduleResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IScheduleResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ScheduleResponse;\n}\n\nexport class ScheduleUtilizationDashboardFilterRequest implements IScheduleUtilizationDashboardFilterRequest {\n organizationalUnitIds?: number[] | undefined;\n\n constructor(data?: IScheduleUtilizationDashboardFilterRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"organizationalUnitIds\"])) {\n this.organizationalUnitIds = [] as any;\n for (let item of _data[\"organizationalUnitIds\"])\n this.organizationalUnitIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): ScheduleUtilizationDashboardFilterRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleUtilizationDashboardFilterRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.organizationalUnitIds)) {\n data[\"organizationalUnitIds\"] = [];\n for (let item of this.organizationalUnitIds)\n data[\"organizationalUnitIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IScheduleUtilizationDashboardFilterRequest {\n organizationalUnitIds?: number[] | undefined;\n}\n\nexport class ScheduleUtilizationDashboardResponse implements IScheduleUtilizationDashboardResponse {\n plannedHours!: number;\n actualHours!: number;\n readonly difference!: number;\n\n constructor(data?: IScheduleUtilizationDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.plannedHours = _data[\"plannedHours\"];\n this.actualHours = _data[\"actualHours\"];\n (this).difference = _data[\"difference\"];\n }\n }\n\n static fromJS(data: any): ScheduleUtilizationDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleUtilizationDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"plannedHours\"] = this.plannedHours;\n data[\"actualHours\"] = this.actualHours;\n data[\"difference\"] = this.difference;\n return data;\n }\n}\n\nexport interface IScheduleUtilizationDashboardResponse {\n plannedHours: number;\n actualHours: number;\n difference: number;\n}\n\nexport class ScheduleUtilizationRowDashboardResponse implements IScheduleUtilizationRowDashboardResponse {\n userId!: number;\n totalPotentialHours!: number;\n totalPlannedHours!: number;\n totalActualHours!: number;\n readonly plannedUtilization!: number;\n readonly actualUtilization!: number;\n daysHours?: ScheduleDayUtilizationDashboardResponse[] | undefined;\n\n constructor(data?: IScheduleUtilizationRowDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.userId = _data[\"userId\"];\n this.totalPotentialHours = _data[\"totalPotentialHours\"];\n this.totalPlannedHours = _data[\"totalPlannedHours\"];\n this.totalActualHours = _data[\"totalActualHours\"];\n (this).plannedUtilization = _data[\"plannedUtilization\"];\n (this).actualUtilization = _data[\"actualUtilization\"];\n if (Array.isArray(_data[\"daysHours\"])) {\n this.daysHours = [] as any;\n for (let item of _data[\"daysHours\"])\n this.daysHours!.push(ScheduleDayUtilizationDashboardResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ScheduleUtilizationRowDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleUtilizationRowDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"userId\"] = this.userId;\n data[\"totalPotentialHours\"] = this.totalPotentialHours;\n data[\"totalPlannedHours\"] = this.totalPlannedHours;\n data[\"totalActualHours\"] = this.totalActualHours;\n data[\"plannedUtilization\"] = this.plannedUtilization;\n data[\"actualUtilization\"] = this.actualUtilization;\n if (Array.isArray(this.daysHours)) {\n data[\"daysHours\"] = [];\n for (let item of this.daysHours)\n data[\"daysHours\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IScheduleUtilizationRowDashboardResponse {\n userId: number;\n totalPotentialHours: number;\n totalPlannedHours: number;\n totalActualHours: number;\n plannedUtilization: number;\n actualUtilization: number;\n daysHours?: ScheduleDayUtilizationDashboardResponse[] | undefined;\n}\n\nexport class ScheduleUtilizationRowDashboardResponseItemsResponseModel implements IScheduleUtilizationRowDashboardResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ScheduleUtilizationRowDashboardResponse[] | undefined;\n\n constructor(data?: IScheduleUtilizationRowDashboardResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ScheduleUtilizationRowDashboardResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ScheduleUtilizationRowDashboardResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ScheduleUtilizationRowDashboardResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IScheduleUtilizationRowDashboardResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ScheduleUtilizationRowDashboardResponse[] | undefined;\n}\n\nexport class ScopeChangeRequestsDashboardFilterRequest implements IScopeChangeRequestsDashboardFilterRequest {\n statusId?: number | undefined;\n typeId?: number | undefined;\n goLiveCritical?: boolean | undefined;\n priorityId?: number | undefined;\n\n constructor(data?: IScopeChangeRequestsDashboardFilterRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.statusId = _data[\"statusId\"];\n this.typeId = _data[\"typeId\"];\n this.goLiveCritical = _data[\"goLiveCritical\"];\n this.priorityId = _data[\"priorityId\"];\n }\n }\n\n static fromJS(data: any): ScopeChangeRequestsDashboardFilterRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ScopeChangeRequestsDashboardFilterRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"statusId\"] = this.statusId;\n data[\"typeId\"] = this.typeId;\n data[\"goLiveCritical\"] = this.goLiveCritical;\n data[\"priorityId\"] = this.priorityId;\n return data;\n }\n}\n\nexport interface IScopeChangeRequestsDashboardFilterRequest {\n statusId?: number | undefined;\n typeId?: number | undefined;\n goLiveCritical?: boolean | undefined;\n priorityId?: number | undefined;\n}\n\nexport class ScopeChangeRequestsDashboardResponse implements IScopeChangeRequestsDashboardResponse {\n countPerStatus?: { [key: string]: number; } | undefined;\n countPerType?: { [key: string]: number; } | undefined;\n countPerPriority?: { [key: string]: number; } | undefined;\n countPerCriticality?: { [key: string]: number; } | undefined;\n\n constructor(data?: IScopeChangeRequestsDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"countPerStatus\"]) {\n this.countPerStatus = {} as any;\n for (let key in _data[\"countPerStatus\"]) {\n if (_data[\"countPerStatus\"].hasOwnProperty(key))\n (this.countPerStatus)![key] = _data[\"countPerStatus\"][key];\n }\n }\n if (_data[\"countPerType\"]) {\n this.countPerType = {} as any;\n for (let key in _data[\"countPerType\"]) {\n if (_data[\"countPerType\"].hasOwnProperty(key))\n (this.countPerType)![key] = _data[\"countPerType\"][key];\n }\n }\n if (_data[\"countPerPriority\"]) {\n this.countPerPriority = {} as any;\n for (let key in _data[\"countPerPriority\"]) {\n if (_data[\"countPerPriority\"].hasOwnProperty(key))\n (this.countPerPriority)![key] = _data[\"countPerPriority\"][key];\n }\n }\n if (_data[\"countPerCriticality\"]) {\n this.countPerCriticality = {} as any;\n for (let key in _data[\"countPerCriticality\"]) {\n if (_data[\"countPerCriticality\"].hasOwnProperty(key))\n (this.countPerCriticality)![key] = _data[\"countPerCriticality\"][key];\n }\n }\n }\n }\n\n static fromJS(data: any): ScopeChangeRequestsDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ScopeChangeRequestsDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.countPerStatus) {\n data[\"countPerStatus\"] = {};\n for (let key in this.countPerStatus) {\n if (this.countPerStatus.hasOwnProperty(key))\n (data[\"countPerStatus\"])[key] = (this.countPerStatus)[key];\n }\n }\n if (this.countPerType) {\n data[\"countPerType\"] = {};\n for (let key in this.countPerType) {\n if (this.countPerType.hasOwnProperty(key))\n (data[\"countPerType\"])[key] = (this.countPerType)[key];\n }\n }\n if (this.countPerPriority) {\n data[\"countPerPriority\"] = {};\n for (let key in this.countPerPriority) {\n if (this.countPerPriority.hasOwnProperty(key))\n (data[\"countPerPriority\"])[key] = (this.countPerPriority)[key];\n }\n }\n if (this.countPerCriticality) {\n data[\"countPerCriticality\"] = {};\n for (let key in this.countPerCriticality) {\n if (this.countPerCriticality.hasOwnProperty(key))\n (data[\"countPerCriticality\"])[key] = (this.countPerCriticality)[key];\n }\n }\n return data;\n }\n}\n\nexport interface IScopeChangeRequestsDashboardResponse {\n countPerStatus?: { [key: string]: number; } | undefined;\n countPerType?: { [key: string]: number; } | undefined;\n countPerPriority?: { [key: string]: number; } | undefined;\n countPerCriticality?: { [key: string]: number; } | undefined;\n}\n\nexport class ScopeChangeRequestsDashboardResponseSimpleResponseModel implements IScopeChangeRequestsDashboardResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ScopeChangeRequestsDashboardResponse;\n\n constructor(data?: IScopeChangeRequestsDashboardResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ScopeChangeRequestsDashboardResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ScopeChangeRequestsDashboardResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ScopeChangeRequestsDashboardResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IScopeChangeRequestsDashboardResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ScopeChangeRequestsDashboardResponse;\n}\n\nexport class ScopeItemLevelReportResponse implements IScopeItemLevelReportResponse {\n id!: number;\n level1Id!: number;\n level1Name?: string | undefined;\n level1Description?: string | undefined;\n level1HasDiagram!: boolean;\n level2Id!: number;\n level2Name?: string | undefined;\n level2Description?: string | undefined;\n level2HasDiagram!: boolean;\n level3Name?: string | undefined;\n level3Description?: string | undefined;\n level3HasDiagram!: boolean;\n processDescription?: string | undefined;\n ticketId?: number | undefined;\n processVariant!: boolean;\n relatedScopeItemLevelId?: number | undefined;\n regressionRelevant!: boolean;\n regressionDependecies?: string | undefined;\n stressTestRelevant!: boolean;\n environmentId?: number | undefined;\n level3CustomText1?: string | undefined;\n level3CustomText2?: string | undefined;\n processId?: string | undefined;\n level4Id?: string | undefined;\n level4Name?: string | undefined;\n scopeDepartmentId?: number | undefined;\n scopeStepTypeId?: number | undefined;\n scopeUserRoleId?: number | undefined;\n level4InputDocument?: string | undefined;\n level4OutputDocument?: string | undefined;\n level4CustomText1?: string | undefined;\n level4CustomText2?: string | undefined;\n level1Order?: number | undefined;\n level2Order?: number | undefined;\n level3Order?: number | undefined;\n level4Order?: number | undefined;\n changeRequestIds?: number[] | undefined;\n attachments?: AttachmentResponse[] | undefined;\n\n constructor(data?: IScopeItemLevelReportResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.level1Id = _data[\"level1Id\"];\n this.level1Name = _data[\"level1Name\"];\n this.level1Description = _data[\"level1Description\"];\n this.level1HasDiagram = _data[\"level1HasDiagram\"];\n this.level2Id = _data[\"level2Id\"];\n this.level2Name = _data[\"level2Name\"];\n this.level2Description = _data[\"level2Description\"];\n this.level2HasDiagram = _data[\"level2HasDiagram\"];\n this.level3Name = _data[\"level3Name\"];\n this.level3Description = _data[\"level3Description\"];\n this.level3HasDiagram = _data[\"level3HasDiagram\"];\n this.processDescription = _data[\"processDescription\"];\n this.ticketId = _data[\"ticketId\"];\n this.processVariant = _data[\"processVariant\"];\n this.relatedScopeItemLevelId = _data[\"relatedScopeItemLevelId\"];\n this.regressionRelevant = _data[\"regressionRelevant\"];\n this.regressionDependecies = _data[\"regressionDependecies\"];\n this.stressTestRelevant = _data[\"stressTestRelevant\"];\n this.environmentId = _data[\"environmentId\"];\n this.level3CustomText1 = _data[\"level3CustomText1\"];\n this.level3CustomText2 = _data[\"level3CustomText2\"];\n this.processId = _data[\"processId\"];\n this.level4Id = _data[\"level4Id\"];\n this.level4Name = _data[\"level4Name\"];\n this.scopeDepartmentId = _data[\"scopeDepartmentId\"];\n this.scopeStepTypeId = _data[\"scopeStepTypeId\"];\n this.scopeUserRoleId = _data[\"scopeUserRoleId\"];\n this.level4InputDocument = _data[\"level4InputDocument\"];\n this.level4OutputDocument = _data[\"level4OutputDocument\"];\n this.level4CustomText1 = _data[\"level4CustomText1\"];\n this.level4CustomText2 = _data[\"level4CustomText2\"];\n this.level1Order = _data[\"level1Order\"];\n this.level2Order = _data[\"level2Order\"];\n this.level3Order = _data[\"level3Order\"];\n this.level4Order = _data[\"level4Order\"];\n if (Array.isArray(_data[\"changeRequestIds\"])) {\n this.changeRequestIds = [] as any;\n for (let item of _data[\"changeRequestIds\"])\n this.changeRequestIds!.push(item);\n }\n if (Array.isArray(_data[\"attachments\"])) {\n this.attachments = [] as any;\n for (let item of _data[\"attachments\"])\n this.attachments!.push(AttachmentResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ScopeItemLevelReportResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ScopeItemLevelReportResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"level1Id\"] = this.level1Id;\n data[\"level1Name\"] = this.level1Name;\n data[\"level1Description\"] = this.level1Description;\n data[\"level1HasDiagram\"] = this.level1HasDiagram;\n data[\"level2Id\"] = this.level2Id;\n data[\"level2Name\"] = this.level2Name;\n data[\"level2Description\"] = this.level2Description;\n data[\"level2HasDiagram\"] = this.level2HasDiagram;\n data[\"level3Name\"] = this.level3Name;\n data[\"level3Description\"] = this.level3Description;\n data[\"level3HasDiagram\"] = this.level3HasDiagram;\n data[\"processDescription\"] = this.processDescription;\n data[\"ticketId\"] = this.ticketId;\n data[\"processVariant\"] = this.processVariant;\n data[\"relatedScopeItemLevelId\"] = this.relatedScopeItemLevelId;\n data[\"regressionRelevant\"] = this.regressionRelevant;\n data[\"regressionDependecies\"] = this.regressionDependecies;\n data[\"stressTestRelevant\"] = this.stressTestRelevant;\n data[\"environmentId\"] = this.environmentId;\n data[\"level3CustomText1\"] = this.level3CustomText1;\n data[\"level3CustomText2\"] = this.level3CustomText2;\n data[\"processId\"] = this.processId;\n data[\"level4Id\"] = this.level4Id;\n data[\"level4Name\"] = this.level4Name;\n data[\"scopeDepartmentId\"] = this.scopeDepartmentId;\n data[\"scopeStepTypeId\"] = this.scopeStepTypeId;\n data[\"scopeUserRoleId\"] = this.scopeUserRoleId;\n data[\"level4InputDocument\"] = this.level4InputDocument;\n data[\"level4OutputDocument\"] = this.level4OutputDocument;\n data[\"level4CustomText1\"] = this.level4CustomText1;\n data[\"level4CustomText2\"] = this.level4CustomText2;\n data[\"level1Order\"] = this.level1Order;\n data[\"level2Order\"] = this.level2Order;\n data[\"level3Order\"] = this.level3Order;\n data[\"level4Order\"] = this.level4Order;\n if (Array.isArray(this.changeRequestIds)) {\n data[\"changeRequestIds\"] = [];\n for (let item of this.changeRequestIds)\n data[\"changeRequestIds\"].push(item);\n }\n if (Array.isArray(this.attachments)) {\n data[\"attachments\"] = [];\n for (let item of this.attachments)\n data[\"attachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IScopeItemLevelReportResponse {\n id: number;\n level1Id: number;\n level1Name?: string | undefined;\n level1Description?: string | undefined;\n level1HasDiagram: boolean;\n level2Id: number;\n level2Name?: string | undefined;\n level2Description?: string | undefined;\n level2HasDiagram: boolean;\n level3Name?: string | undefined;\n level3Description?: string | undefined;\n level3HasDiagram: boolean;\n processDescription?: string | undefined;\n ticketId?: number | undefined;\n processVariant: boolean;\n relatedScopeItemLevelId?: number | undefined;\n regressionRelevant: boolean;\n regressionDependecies?: string | undefined;\n stressTestRelevant: boolean;\n environmentId?: number | undefined;\n level3CustomText1?: string | undefined;\n level3CustomText2?: string | undefined;\n processId?: string | undefined;\n level4Id?: string | undefined;\n level4Name?: string | undefined;\n scopeDepartmentId?: number | undefined;\n scopeStepTypeId?: number | undefined;\n scopeUserRoleId?: number | undefined;\n level4InputDocument?: string | undefined;\n level4OutputDocument?: string | undefined;\n level4CustomText1?: string | undefined;\n level4CustomText2?: string | undefined;\n level1Order?: number | undefined;\n level2Order?: number | undefined;\n level3Order?: number | undefined;\n level4Order?: number | undefined;\n changeRequestIds?: number[] | undefined;\n attachments?: AttachmentResponse[] | undefined;\n}\n\nexport class ScopeItemLevelReportResponseItemsResponseModel implements IScopeItemLevelReportResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ScopeItemLevelReportResponse[] | undefined;\n\n constructor(data?: IScopeItemLevelReportResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ScopeItemLevelReportResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ScopeItemLevelReportResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ScopeItemLevelReportResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IScopeItemLevelReportResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ScopeItemLevelReportResponse[] | undefined;\n}\n\nexport class ScopeItemLevelResponse implements IScopeItemLevelResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n fullname?: string | undefined;\n parentId?: number | undefined;\n levelNumber!: number;\n processDescription?: string | undefined;\n ticketId?: number | undefined;\n processVariant!: boolean;\n relatedScopeItemLevelId?: number | undefined;\n regressionRelevant!: boolean;\n regressionDependecies?: string | undefined;\n stressTestRelevant!: boolean;\n environmentId?: number | undefined;\n inputDocument?: string | undefined;\n outputDocument?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n hasDiagram!: boolean;\n scopeDepartmentId?: number | undefined;\n scopeStepTypeId?: number | undefined;\n scopeUserRoleId?: number | undefined;\n isComplex!: boolean;\n order!: number;\n complexForScopeItemId?: number | undefined;\n changeRequestIds?: number[] | undefined;\n attachments?: AttachmentResponse[] | undefined;\n\n constructor(data?: IScopeItemLevelResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.fullname = _data[\"fullname\"];\n this.parentId = _data[\"parentId\"];\n this.levelNumber = _data[\"levelNumber\"];\n this.processDescription = _data[\"processDescription\"];\n this.ticketId = _data[\"ticketId\"];\n this.processVariant = _data[\"processVariant\"];\n this.relatedScopeItemLevelId = _data[\"relatedScopeItemLevelId\"];\n this.regressionRelevant = _data[\"regressionRelevant\"];\n this.regressionDependecies = _data[\"regressionDependecies\"];\n this.stressTestRelevant = _data[\"stressTestRelevant\"];\n this.environmentId = _data[\"environmentId\"];\n this.inputDocument = _data[\"inputDocument\"];\n this.outputDocument = _data[\"outputDocument\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.hasDiagram = _data[\"hasDiagram\"];\n this.scopeDepartmentId = _data[\"scopeDepartmentId\"];\n this.scopeStepTypeId = _data[\"scopeStepTypeId\"];\n this.scopeUserRoleId = _data[\"scopeUserRoleId\"];\n this.isComplex = _data[\"isComplex\"];\n this.order = _data[\"order\"];\n this.complexForScopeItemId = _data[\"complexForScopeItemId\"];\n if (Array.isArray(_data[\"changeRequestIds\"])) {\n this.changeRequestIds = [] as any;\n for (let item of _data[\"changeRequestIds\"])\n this.changeRequestIds!.push(item);\n }\n if (Array.isArray(_data[\"attachments\"])) {\n this.attachments = [] as any;\n for (let item of _data[\"attachments\"])\n this.attachments!.push(AttachmentResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ScopeItemLevelResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ScopeItemLevelResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"fullname\"] = this.fullname;\n data[\"parentId\"] = this.parentId;\n data[\"levelNumber\"] = this.levelNumber;\n data[\"processDescription\"] = this.processDescription;\n data[\"ticketId\"] = this.ticketId;\n data[\"processVariant\"] = this.processVariant;\n data[\"relatedScopeItemLevelId\"] = this.relatedScopeItemLevelId;\n data[\"regressionRelevant\"] = this.regressionRelevant;\n data[\"regressionDependecies\"] = this.regressionDependecies;\n data[\"stressTestRelevant\"] = this.stressTestRelevant;\n data[\"environmentId\"] = this.environmentId;\n data[\"inputDocument\"] = this.inputDocument;\n data[\"outputDocument\"] = this.outputDocument;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"hasDiagram\"] = this.hasDiagram;\n data[\"scopeDepartmentId\"] = this.scopeDepartmentId;\n data[\"scopeStepTypeId\"] = this.scopeStepTypeId;\n data[\"scopeUserRoleId\"] = this.scopeUserRoleId;\n data[\"isComplex\"] = this.isComplex;\n data[\"order\"] = this.order;\n data[\"complexForScopeItemId\"] = this.complexForScopeItemId;\n if (Array.isArray(this.changeRequestIds)) {\n data[\"changeRequestIds\"] = [];\n for (let item of this.changeRequestIds)\n data[\"changeRequestIds\"].push(item);\n }\n if (Array.isArray(this.attachments)) {\n data[\"attachments\"] = [];\n for (let item of this.attachments)\n data[\"attachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IScopeItemLevelResponse {\n id: number;\n name: string;\n description?: string | undefined;\n fullname?: string | undefined;\n parentId?: number | undefined;\n levelNumber: number;\n processDescription?: string | undefined;\n ticketId?: number | undefined;\n processVariant: boolean;\n relatedScopeItemLevelId?: number | undefined;\n regressionRelevant: boolean;\n regressionDependecies?: string | undefined;\n stressTestRelevant: boolean;\n environmentId?: number | undefined;\n inputDocument?: string | undefined;\n outputDocument?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n hasDiagram: boolean;\n scopeDepartmentId?: number | undefined;\n scopeStepTypeId?: number | undefined;\n scopeUserRoleId?: number | undefined;\n isComplex: boolean;\n order: number;\n complexForScopeItemId?: number | undefined;\n changeRequestIds?: number[] | undefined;\n attachments?: AttachmentResponse[] | undefined;\n}\n\nexport class ScopeItemLevelResponseItemsResponseModel implements IScopeItemLevelResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ScopeItemLevelResponse[] | undefined;\n\n constructor(data?: IScopeItemLevelResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(ScopeItemLevelResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): ScopeItemLevelResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ScopeItemLevelResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IScopeItemLevelResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: ScopeItemLevelResponse[] | undefined;\n}\n\nexport class ScopeItemLevelResponseSimpleResponseModel implements IScopeItemLevelResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ScopeItemLevelResponse;\n\n constructor(data?: IScopeItemLevelResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ScopeItemLevelResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ScopeItemLevelResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ScopeItemLevelResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IScopeItemLevelResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ScopeItemLevelResponse;\n}\n\nexport class ScopePermission implements IScopePermission {\n scope!: boolean;\n maintainScope!: boolean;\n viewAllChangeRequests!: boolean;\n\n constructor(data?: IScopePermission) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.scope = _data[\"scope\"];\n this.maintainScope = _data[\"maintainScope\"];\n this.viewAllChangeRequests = _data[\"viewAllChangeRequests\"];\n }\n }\n\n static fromJS(data: any): ScopePermission {\n data = typeof data === 'object' ? data : {};\n let result = new ScopePermission();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"scope\"] = this.scope;\n data[\"maintainScope\"] = this.maintainScope;\n data[\"viewAllChangeRequests\"] = this.viewAllChangeRequests;\n return data;\n }\n}\n\nexport interface IScopePermission {\n scope: boolean;\n maintainScope: boolean;\n viewAllChangeRequests: boolean;\n}\n\nexport class ScopeProcessesDashboardFilterRequest implements IScopeProcessesDashboardFilterRequest {\n lvl1Id?: number | undefined;\n lvl2Id?: number | undefined;\n\n constructor(data?: IScopeProcessesDashboardFilterRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.lvl1Id = _data[\"lvl1Id\"];\n this.lvl2Id = _data[\"lvl2Id\"];\n }\n }\n\n static fromJS(data: any): ScopeProcessesDashboardFilterRequest {\n data = typeof data === 'object' ? data : {};\n let result = new ScopeProcessesDashboardFilterRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"lvl1Id\"] = this.lvl1Id;\n data[\"lvl2Id\"] = this.lvl2Id;\n return data;\n }\n}\n\nexport interface IScopeProcessesDashboardFilterRequest {\n lvl1Id?: number | undefined;\n lvl2Id?: number | undefined;\n}\n\nexport class ScopeProcessesDashboardResponse implements IScopeProcessesDashboardResponse {\n processesPerLvl1?: { [key: string]: number; } | undefined;\n lvl1sCount!: number;\n lvl2sCount!: number;\n lvl3sCount!: number;\n lvl4sCount!: number;\n\n constructor(data?: IScopeProcessesDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"processesPerLvl1\"]) {\n this.processesPerLvl1 = {} as any;\n for (let key in _data[\"processesPerLvl1\"]) {\n if (_data[\"processesPerLvl1\"].hasOwnProperty(key))\n (this.processesPerLvl1)![key] = _data[\"processesPerLvl1\"][key];\n }\n }\n this.lvl1sCount = _data[\"lvl1sCount\"];\n this.lvl2sCount = _data[\"lvl2sCount\"];\n this.lvl3sCount = _data[\"lvl3sCount\"];\n this.lvl4sCount = _data[\"lvl4sCount\"];\n }\n }\n\n static fromJS(data: any): ScopeProcessesDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new ScopeProcessesDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.processesPerLvl1) {\n data[\"processesPerLvl1\"] = {};\n for (let key in this.processesPerLvl1) {\n if (this.processesPerLvl1.hasOwnProperty(key))\n (data[\"processesPerLvl1\"])[key] = (this.processesPerLvl1)[key];\n }\n }\n data[\"lvl1sCount\"] = this.lvl1sCount;\n data[\"lvl2sCount\"] = this.lvl2sCount;\n data[\"lvl3sCount\"] = this.lvl3sCount;\n data[\"lvl4sCount\"] = this.lvl4sCount;\n return data;\n }\n}\n\nexport interface IScopeProcessesDashboardResponse {\n processesPerLvl1?: { [key: string]: number; } | undefined;\n lvl1sCount: number;\n lvl2sCount: number;\n lvl3sCount: number;\n lvl4sCount: number;\n}\n\nexport class ScopeProcessesDashboardResponseSimpleResponseModel implements IScopeProcessesDashboardResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ScopeProcessesDashboardResponse;\n\n constructor(data?: IScopeProcessesDashboardResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? ScopeProcessesDashboardResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): ScopeProcessesDashboardResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new ScopeProcessesDashboardResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IScopeProcessesDashboardResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: ScopeProcessesDashboardResponse;\n}\n\nexport class SendEmailRequestModel implements ISendEmailRequestModel {\n templateName?: string | undefined;\n languageCode?: string | undefined;\n templateVariables?: { [key: string]: string; } | undefined;\n emails?: string[] | undefined;\n\n constructor(data?: ISendEmailRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.templateName = _data[\"templateName\"];\n this.languageCode = _data[\"languageCode\"];\n if (_data[\"templateVariables\"]) {\n this.templateVariables = {} as any;\n for (let key in _data[\"templateVariables\"]) {\n if (_data[\"templateVariables\"].hasOwnProperty(key))\n (this.templateVariables)![key] = _data[\"templateVariables\"][key];\n }\n }\n if (Array.isArray(_data[\"emails\"])) {\n this.emails = [] as any;\n for (let item of _data[\"emails\"])\n this.emails!.push(item);\n }\n }\n }\n\n static fromJS(data: any): SendEmailRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new SendEmailRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"templateName\"] = this.templateName;\n data[\"languageCode\"] = this.languageCode;\n if (this.templateVariables) {\n data[\"templateVariables\"] = {};\n for (let key in this.templateVariables) {\n if (this.templateVariables.hasOwnProperty(key))\n (data[\"templateVariables\"])[key] = (this.templateVariables)[key];\n }\n }\n if (Array.isArray(this.emails)) {\n data[\"emails\"] = [];\n for (let item of this.emails)\n data[\"emails\"].push(item);\n }\n return data;\n }\n}\n\nexport interface ISendEmailRequestModel {\n templateName?: string | undefined;\n languageCode?: string | undefined;\n templateVariables?: { [key: string]: string; } | undefined;\n emails?: string[] | undefined;\n}\n\nexport class SetDefaultProjectRequest implements ISetDefaultProjectRequest {\n userId!: number;\n projectId!: number;\n\n constructor(data?: ISetDefaultProjectRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.userId = _data[\"userId\"];\n this.projectId = _data[\"projectId\"];\n }\n }\n\n static fromJS(data: any): SetDefaultProjectRequest {\n data = typeof data === 'object' ? data : {};\n let result = new SetDefaultProjectRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"userId\"] = this.userId;\n data[\"projectId\"] = this.projectId;\n return data;\n }\n}\n\nexport interface ISetDefaultProjectRequest {\n userId: number;\n projectId: number;\n}\n\nexport enum ShowTestStatusEnum {\n ShowTestStatus = \"ShowTestStatus\",\n ShowProcessSteps = \"ShowProcessSteps\",\n ShowMultipleTickets = \"ShowMultipleTickets\",\n}\n\nexport class SimpleIdNameModel implements ISimpleIdNameModel {\n id!: number;\n name?: string | undefined;\n\n constructor(data?: ISimpleIdNameModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n }\n }\n\n static fromJS(data: any): SimpleIdNameModel {\n data = typeof data === 'object' ? data : {};\n let result = new SimpleIdNameModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n return data;\n }\n}\n\nexport interface ISimpleIdNameModel {\n id: number;\n name?: string | undefined;\n}\n\nexport class SimpleIdNameModelItemsResponseModel implements ISimpleIdNameModelItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SimpleIdNameModel[] | undefined;\n\n constructor(data?: ISimpleIdNameModelItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(SimpleIdNameModel.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): SimpleIdNameModelItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new SimpleIdNameModelItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ISimpleIdNameModelItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SimpleIdNameModel[] | undefined;\n}\n\nexport class SimpleProjectIdNameModel implements ISimpleProjectIdNameModel {\n id!: number;\n name?: string | undefined;\n projectId!: number;\n\n constructor(data?: ISimpleProjectIdNameModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.projectId = _data[\"projectId\"];\n }\n }\n\n static fromJS(data: any): SimpleProjectIdNameModel {\n data = typeof data === 'object' ? data : {};\n let result = new SimpleProjectIdNameModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"projectId\"] = this.projectId;\n return data;\n }\n}\n\nexport interface ISimpleProjectIdNameModel {\n id: number;\n name?: string | undefined;\n projectId: number;\n}\n\nexport class SimpleProjectIdNameModelItemsResponseModel implements ISimpleProjectIdNameModelItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SimpleProjectIdNameModel[] | undefined;\n\n constructor(data?: ISimpleProjectIdNameModelItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(SimpleProjectIdNameModel.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): SimpleProjectIdNameModelItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new SimpleProjectIdNameModelItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ISimpleProjectIdNameModelItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SimpleProjectIdNameModel[] | undefined;\n}\n\nexport class SimpleScheduleResponse implements ISimpleScheduleResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n wbs?: string | undefined;\n projectId!: number;\n\n constructor(data?: ISimpleScheduleResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.wbs = _data[\"wbs\"];\n this.projectId = _data[\"projectId\"];\n }\n }\n\n static fromJS(data: any): SimpleScheduleResponse {\n data = typeof data === 'object' ? data : {};\n let result = new SimpleScheduleResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"wbs\"] = this.wbs;\n data[\"projectId\"] = this.projectId;\n return data;\n }\n}\n\nexport interface ISimpleScheduleResponse {\n id: number;\n name: string;\n description?: string | undefined;\n wbs?: string | undefined;\n projectId: number;\n}\n\nexport class SimpleScheduleResponseItemsResponseModel implements ISimpleScheduleResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SimpleScheduleResponse[] | undefined;\n\n constructor(data?: ISimpleScheduleResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(SimpleScheduleResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): SimpleScheduleResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new SimpleScheduleResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ISimpleScheduleResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SimpleScheduleResponse[] | undefined;\n}\n\nexport class SimpleStatusRequest implements ISimpleStatusRequest {\n id!: number;\n description?: string | undefined;\n color!: string;\n\n constructor(data?: ISimpleStatusRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.description = _data[\"description\"];\n this.color = _data[\"color\"];\n }\n }\n\n static fromJS(data: any): SimpleStatusRequest {\n data = typeof data === 'object' ? data : {};\n let result = new SimpleStatusRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"description\"] = this.description;\n data[\"color\"] = this.color;\n return data;\n }\n}\n\nexport interface ISimpleStatusRequest {\n id: number;\n description?: string | undefined;\n color: string;\n}\n\nexport class SimpleStatusRequestUpdateSimpleStatusRequestItems implements ISimpleStatusRequestUpdateSimpleStatusRequestItems {\n statuses!: SimpleStatusRequest[];\n\n constructor(data?: ISimpleStatusRequestUpdateSimpleStatusRequestItems) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.statuses = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"statuses\"])) {\n this.statuses = [] as any;\n for (let item of _data[\"statuses\"])\n this.statuses!.push(SimpleStatusRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): SimpleStatusRequestUpdateSimpleStatusRequestItems {\n data = typeof data === 'object' ? data : {};\n let result = new SimpleStatusRequestUpdateSimpleStatusRequestItems();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.statuses)) {\n data[\"statuses\"] = [];\n for (let item of this.statuses)\n data[\"statuses\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ISimpleStatusRequestUpdateSimpleStatusRequestItems {\n statuses: SimpleStatusRequest[];\n}\n\nexport class SimpleUserIdProjectIdPair implements ISimpleUserIdProjectIdPair {\n userId!: number;\n projectId!: number;\n\n constructor(data?: ISimpleUserIdProjectIdPair) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.userId = _data[\"userId\"];\n this.projectId = _data[\"projectId\"];\n }\n }\n\n static fromJS(data: any): SimpleUserIdProjectIdPair {\n data = typeof data === 'object' ? data : {};\n let result = new SimpleUserIdProjectIdPair();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"userId\"] = this.userId;\n data[\"projectId\"] = this.projectId;\n return data;\n }\n}\n\nexport interface ISimpleUserIdProjectIdPair {\n userId: number;\n projectId: number;\n}\n\nexport class SimpleUserIdProjectIdPairItemsResponseModel implements ISimpleUserIdProjectIdPairItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SimpleUserIdProjectIdPair[] | undefined;\n\n constructor(data?: ISimpleUserIdProjectIdPairItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(SimpleUserIdProjectIdPair.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): SimpleUserIdProjectIdPairItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new SimpleUserIdProjectIdPairItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ISimpleUserIdProjectIdPairItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SimpleUserIdProjectIdPair[] | undefined;\n}\n\nexport class StatusDeltaRequest implements IStatusDeltaRequest {\n insert?: InsertStatusRequest[] | undefined;\n update?: UpdateStatusRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n\n constructor(data?: IStatusDeltaRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertStatusRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateStatusRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteTenantIndetifyRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): StatusDeltaRequest {\n data = typeof data === 'object' ? data : {};\n let result = new StatusDeltaRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IStatusDeltaRequest {\n insert?: InsertStatusRequest[] | undefined;\n update?: UpdateStatusRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n}\n\nexport class StatusReportGeneralConfigResponse implements IStatusReportGeneralConfigResponse {\n id!: number;\n enableNotifications!: boolean;\n\n constructor(data?: IStatusReportGeneralConfigResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.enableNotifications = _data[\"enableNotifications\"];\n }\n }\n\n static fromJS(data: any): StatusReportGeneralConfigResponse {\n data = typeof data === 'object' ? data : {};\n let result = new StatusReportGeneralConfigResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"enableNotifications\"] = this.enableNotifications;\n return data;\n }\n}\n\nexport interface IStatusReportGeneralConfigResponse {\n id: number;\n enableNotifications: boolean;\n}\n\nexport class StatusReportGeneralConfigResponseSimpleResponseModel implements IStatusReportGeneralConfigResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: StatusReportGeneralConfigResponse;\n\n constructor(data?: IStatusReportGeneralConfigResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? StatusReportGeneralConfigResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): StatusReportGeneralConfigResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new StatusReportGeneralConfigResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IStatusReportGeneralConfigResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: StatusReportGeneralConfigResponse;\n}\n\nexport class StatusReportResponse implements IStatusReportResponse {\n id!: number;\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n statusId!: number;\n projectTeamId?: number | undefined;\n reportDate!: Date;\n from?: Date | undefined;\n to?: Date | undefined;\n createdByUserId!: number;\n releasedByUserId?: number | undefined;\n alignedByUserId?: number | undefined;\n responsibleUserId?: number | undefined;\n notifyResponsibleUser!: boolean;\n openIssues!: string;\n keyRisks!: string;\n nextSteps!: string;\n overallStatus!: ReportStatusAreaEnum;\n overallStatusAndKeyAchievements!: string;\n\n constructor(data?: IStatusReportResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.statusId = _data[\"statusId\"];\n this.projectTeamId = _data[\"projectTeamId\"];\n this.reportDate = _data[\"reportDate\"] ? new Date(_data[\"reportDate\"].toString()) : undefined;\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.createdByUserId = _data[\"createdByUserId\"];\n this.releasedByUserId = _data[\"releasedByUserId\"];\n this.alignedByUserId = _data[\"alignedByUserId\"];\n this.responsibleUserId = _data[\"responsibleUserId\"];\n this.notifyResponsibleUser = _data[\"notifyResponsibleUser\"];\n this.openIssues = _data[\"openIssues\"];\n this.keyRisks = _data[\"keyRisks\"];\n this.nextSteps = _data[\"nextSteps\"];\n this.overallStatus = _data[\"overallStatus\"];\n this.overallStatusAndKeyAchievements = _data[\"overallStatusAndKeyAchievements\"];\n }\n }\n\n static fromJS(data: any): StatusReportResponse {\n data = typeof data === 'object' ? data : {};\n let result = new StatusReportResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"statusId\"] = this.statusId;\n data[\"projectTeamId\"] = this.projectTeamId;\n data[\"reportDate\"] = this.reportDate ? formatDate(this.reportDate) : undefined;\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"createdByUserId\"] = this.createdByUserId;\n data[\"releasedByUserId\"] = this.releasedByUserId;\n data[\"alignedByUserId\"] = this.alignedByUserId;\n data[\"responsibleUserId\"] = this.responsibleUserId;\n data[\"notifyResponsibleUser\"] = this.notifyResponsibleUser;\n data[\"openIssues\"] = this.openIssues;\n data[\"keyRisks\"] = this.keyRisks;\n data[\"nextSteps\"] = this.nextSteps;\n data[\"overallStatus\"] = this.overallStatus;\n data[\"overallStatusAndKeyAchievements\"] = this.overallStatusAndKeyAchievements;\n return data;\n }\n}\n\nexport interface IStatusReportResponse {\n id: number;\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n statusId: number;\n projectTeamId?: number | undefined;\n reportDate: Date;\n from?: Date | undefined;\n to?: Date | undefined;\n createdByUserId: number;\n releasedByUserId?: number | undefined;\n alignedByUserId?: number | undefined;\n responsibleUserId?: number | undefined;\n notifyResponsibleUser: boolean;\n openIssues: string;\n keyRisks: string;\n nextSteps: string;\n overallStatus: ReportStatusAreaEnum;\n overallStatusAndKeyAchievements: string;\n}\n\nexport class StatusReportResponseItemsResponseModel implements IStatusReportResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: StatusReportResponse[] | undefined;\n\n constructor(data?: IStatusReportResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(StatusReportResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): StatusReportResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new StatusReportResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IStatusReportResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: StatusReportResponse[] | undefined;\n}\n\nexport class StatusReportResponseSimpleResponseModel implements IStatusReportResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: StatusReportResponse;\n\n constructor(data?: IStatusReportResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? StatusReportResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): StatusReportResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new StatusReportResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IStatusReportResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: StatusReportResponse;\n}\n\nexport enum StatusReportStatusEnum {\n Created = \"Created\",\n Released = \"Released\",\n Aligned = \"Aligned\",\n}\n\nexport class StatusReportStatusResponse implements IStatusReportStatusResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n isReadonly!: boolean;\n color!: string;\n isInitial!: boolean;\n nextStates?: number[] | undefined;\n semantics!: StatusReportStatusEnum;\n\n constructor(data?: IStatusReportStatusResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.isReadonly = _data[\"isReadonly\"];\n this.color = _data[\"color\"];\n this.isInitial = _data[\"isInitial\"];\n if (Array.isArray(_data[\"nextStates\"])) {\n this.nextStates = [] as any;\n for (let item of _data[\"nextStates\"])\n this.nextStates!.push(item);\n }\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): StatusReportStatusResponse {\n data = typeof data === 'object' ? data : {};\n let result = new StatusReportStatusResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"isReadonly\"] = this.isReadonly;\n data[\"color\"] = this.color;\n data[\"isInitial\"] = this.isInitial;\n if (Array.isArray(this.nextStates)) {\n data[\"nextStates\"] = [];\n for (let item of this.nextStates)\n data[\"nextStates\"].push(item);\n }\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface IStatusReportStatusResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n isReadonly: boolean;\n color: string;\n isInitial: boolean;\n nextStates?: number[] | undefined;\n semantics: StatusReportStatusEnum;\n}\n\nexport class StatusReportStatusResponseItemsResponseModel implements IStatusReportStatusResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: StatusReportStatusResponse[] | undefined;\n\n constructor(data?: IStatusReportStatusResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(StatusReportStatusResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): StatusReportStatusResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new StatusReportStatusResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IStatusReportStatusResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: StatusReportStatusResponse[] | undefined;\n}\n\nexport class StringNewOld implements IStringNewOld {\n oldValue?: string | undefined;\n newValue?: string | undefined;\n\n constructor(data?: IStringNewOld) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.oldValue = _data[\"oldValue\"];\n this.newValue = _data[\"newValue\"];\n }\n }\n\n static fromJS(data: any): StringNewOld {\n data = typeof data === 'object' ? data : {};\n let result = new StringNewOld();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"oldValue\"] = this.oldValue;\n data[\"newValue\"] = this.newValue;\n return data;\n }\n}\n\nexport interface IStringNewOld {\n oldValue?: string | undefined;\n newValue?: string | undefined;\n}\n\nexport class StringSimpleResponseModel implements IStringSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: string | undefined;\n\n constructor(data?: IStringSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"];\n }\n }\n\n static fromJS(data: any): StringSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new StringSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value;\n return data;\n }\n}\n\nexport interface IStringSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: string | undefined;\n}\n\nexport class SubmitMySurveyRequest implements ISubmitMySurveyRequest {\n answers!: { [key: string]: InsertSurveyParticipantAnswerRequest[]; };\n\n constructor(data?: ISubmitMySurveyRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.answers = {};\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"answers\"]) {\n this.answers = {} as any;\n for (let key in _data[\"answers\"]) {\n if (_data[\"answers\"].hasOwnProperty(key))\n (this.answers)![key] = _data[\"answers\"][key] ? _data[\"answers\"][key].map((i: any) => InsertSurveyParticipantAnswerRequest.fromJS(i)) : [];\n }\n }\n }\n }\n\n static fromJS(data: any): SubmitMySurveyRequest {\n data = typeof data === 'object' ? data : {};\n let result = new SubmitMySurveyRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.answers) {\n data[\"answers\"] = {};\n for (let key in this.answers) {\n if (this.answers.hasOwnProperty(key))\n (data[\"answers\"])[key] = (this.answers)[key];\n }\n }\n return data;\n }\n}\n\nexport interface ISubmitMySurveyRequest {\n answers: { [key: string]: InsertSurveyParticipantAnswerRequest[]; };\n}\n\nexport class SurveyAnswerResponse implements ISurveyAnswerResponse {\n userId!: number;\n questionGroup?: string | undefined;\n question!: string;\n questionType!: SurveyQuestionTypeEnum;\n answer?: string | undefined;\n score?: number | undefined;\n\n constructor(data?: ISurveyAnswerResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.userId = _data[\"userId\"];\n this.questionGroup = _data[\"questionGroup\"];\n this.question = _data[\"question\"];\n this.questionType = _data[\"questionType\"];\n this.answer = _data[\"answer\"];\n this.score = _data[\"score\"];\n }\n }\n\n static fromJS(data: any): SurveyAnswerResponse {\n data = typeof data === 'object' ? data : {};\n let result = new SurveyAnswerResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"userId\"] = this.userId;\n data[\"questionGroup\"] = this.questionGroup;\n data[\"question\"] = this.question;\n data[\"questionType\"] = this.questionType;\n data[\"answer\"] = this.answer;\n data[\"score\"] = this.score;\n return data;\n }\n}\n\nexport interface ISurveyAnswerResponse {\n userId: number;\n questionGroup?: string | undefined;\n question: string;\n questionType: SurveyQuestionTypeEnum;\n answer?: string | undefined;\n score?: number | undefined;\n}\n\nexport class SurveyAnswerResponseItemsResponseModel implements ISurveyAnswerResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SurveyAnswerResponse[] | undefined;\n\n constructor(data?: ISurveyAnswerResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(SurveyAnswerResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): SurveyAnswerResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new SurveyAnswerResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ISurveyAnswerResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SurveyAnswerResponse[] | undefined;\n}\n\nexport class SurveyDashboardFilterRequest implements ISurveyDashboardFilterRequest {\n userIds?: number[] | undefined;\n projectTeamIds?: number[] | undefined;\n projectRoleIds?: number[] | undefined;\n\n constructor(data?: ISurveyDashboardFilterRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"userIds\"])) {\n this.userIds = [] as any;\n for (let item of _data[\"userIds\"])\n this.userIds!.push(item);\n }\n if (Array.isArray(_data[\"projectTeamIds\"])) {\n this.projectTeamIds = [] as any;\n for (let item of _data[\"projectTeamIds\"])\n this.projectTeamIds!.push(item);\n }\n if (Array.isArray(_data[\"projectRoleIds\"])) {\n this.projectRoleIds = [] as any;\n for (let item of _data[\"projectRoleIds\"])\n this.projectRoleIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): SurveyDashboardFilterRequest {\n data = typeof data === 'object' ? data : {};\n let result = new SurveyDashboardFilterRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.userIds)) {\n data[\"userIds\"] = [];\n for (let item of this.userIds)\n data[\"userIds\"].push(item);\n }\n if (Array.isArray(this.projectTeamIds)) {\n data[\"projectTeamIds\"] = [];\n for (let item of this.projectTeamIds)\n data[\"projectTeamIds\"].push(item);\n }\n if (Array.isArray(this.projectRoleIds)) {\n data[\"projectRoleIds\"] = [];\n for (let item of this.projectRoleIds)\n data[\"projectRoleIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface ISurveyDashboardFilterRequest {\n userIds?: number[] | undefined;\n projectTeamIds?: number[] | undefined;\n projectRoleIds?: number[] | undefined;\n}\n\nexport class SurveyDashboardResponse implements ISurveyDashboardResponse {\n surveyType!: SurveyTypeEnum;\n surveysStatusCounts?: { [key: string]: number; } | undefined;\n averageRatingPerTeam?: { [key: string]: number; } | undefined;\n averageRatingPerRole?: { [key: string]: number; } | undefined;\n averageRatings?: RatingPerQuestionDashboardResponse[] | undefined;\n questionGroupAverageRatings?: RatingPerQuestionGroupDashboardResponse[] | undefined;\n textAnswers?: TextAnswersDashboardResponse[] | undefined;\n overallRating!: number;\n\n constructor(data?: ISurveyDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.surveyType = _data[\"surveyType\"];\n if (_data[\"surveysStatusCounts\"]) {\n this.surveysStatusCounts = {} as any;\n for (let key in _data[\"surveysStatusCounts\"]) {\n if (_data[\"surveysStatusCounts\"].hasOwnProperty(key))\n (this.surveysStatusCounts)![key] = _data[\"surveysStatusCounts\"][key];\n }\n }\n if (_data[\"averageRatingPerTeam\"]) {\n this.averageRatingPerTeam = {} as any;\n for (let key in _data[\"averageRatingPerTeam\"]) {\n if (_data[\"averageRatingPerTeam\"].hasOwnProperty(key))\n (this.averageRatingPerTeam)![key] = _data[\"averageRatingPerTeam\"][key];\n }\n }\n if (_data[\"averageRatingPerRole\"]) {\n this.averageRatingPerRole = {} as any;\n for (let key in _data[\"averageRatingPerRole\"]) {\n if (_data[\"averageRatingPerRole\"].hasOwnProperty(key))\n (this.averageRatingPerRole)![key] = _data[\"averageRatingPerRole\"][key];\n }\n }\n if (Array.isArray(_data[\"averageRatings\"])) {\n this.averageRatings = [] as any;\n for (let item of _data[\"averageRatings\"])\n this.averageRatings!.push(RatingPerQuestionDashboardResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"questionGroupAverageRatings\"])) {\n this.questionGroupAverageRatings = [] as any;\n for (let item of _data[\"questionGroupAverageRatings\"])\n this.questionGroupAverageRatings!.push(RatingPerQuestionGroupDashboardResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"textAnswers\"])) {\n this.textAnswers = [] as any;\n for (let item of _data[\"textAnswers\"])\n this.textAnswers!.push(TextAnswersDashboardResponse.fromJS(item));\n }\n this.overallRating = _data[\"overallRating\"];\n }\n }\n\n static fromJS(data: any): SurveyDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new SurveyDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"surveyType\"] = this.surveyType;\n if (this.surveysStatusCounts) {\n data[\"surveysStatusCounts\"] = {};\n for (let key in this.surveysStatusCounts) {\n if (this.surveysStatusCounts.hasOwnProperty(key))\n (data[\"surveysStatusCounts\"])[key] = (this.surveysStatusCounts)[key];\n }\n }\n if (this.averageRatingPerTeam) {\n data[\"averageRatingPerTeam\"] = {};\n for (let key in this.averageRatingPerTeam) {\n if (this.averageRatingPerTeam.hasOwnProperty(key))\n (data[\"averageRatingPerTeam\"])[key] = (this.averageRatingPerTeam)[key];\n }\n }\n if (this.averageRatingPerRole) {\n data[\"averageRatingPerRole\"] = {};\n for (let key in this.averageRatingPerRole) {\n if (this.averageRatingPerRole.hasOwnProperty(key))\n (data[\"averageRatingPerRole\"])[key] = (this.averageRatingPerRole)[key];\n }\n }\n if (Array.isArray(this.averageRatings)) {\n data[\"averageRatings\"] = [];\n for (let item of this.averageRatings)\n data[\"averageRatings\"].push(item.toJSON());\n }\n if (Array.isArray(this.questionGroupAverageRatings)) {\n data[\"questionGroupAverageRatings\"] = [];\n for (let item of this.questionGroupAverageRatings)\n data[\"questionGroupAverageRatings\"].push(item.toJSON());\n }\n if (Array.isArray(this.textAnswers)) {\n data[\"textAnswers\"] = [];\n for (let item of this.textAnswers)\n data[\"textAnswers\"].push(item.toJSON());\n }\n data[\"overallRating\"] = this.overallRating;\n return data;\n }\n}\n\nexport interface ISurveyDashboardResponse {\n surveyType: SurveyTypeEnum;\n surveysStatusCounts?: { [key: string]: number; } | undefined;\n averageRatingPerTeam?: { [key: string]: number; } | undefined;\n averageRatingPerRole?: { [key: string]: number; } | undefined;\n averageRatings?: RatingPerQuestionDashboardResponse[] | undefined;\n questionGroupAverageRatings?: RatingPerQuestionGroupDashboardResponse[] | undefined;\n textAnswers?: TextAnswersDashboardResponse[] | undefined;\n overallRating: number;\n}\n\nexport class SurveyDashboardResponseSimpleResponseModel implements ISurveyDashboardResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: SurveyDashboardResponse;\n\n constructor(data?: ISurveyDashboardResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? SurveyDashboardResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): SurveyDashboardResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new SurveyDashboardResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ISurveyDashboardResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: SurveyDashboardResponse;\n}\n\nexport class SurveyParticipantAnswerResponse implements ISurveyParticipantAnswerResponse {\n id!: number;\n answer?: string | undefined;\n rating?: number | undefined;\n proposedAnswerId?: number | undefined;\n\n constructor(data?: ISurveyParticipantAnswerResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.answer = _data[\"answer\"];\n this.rating = _data[\"rating\"];\n this.proposedAnswerId = _data[\"proposedAnswerId\"];\n }\n }\n\n static fromJS(data: any): SurveyParticipantAnswerResponse {\n data = typeof data === 'object' ? data : {};\n let result = new SurveyParticipantAnswerResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"answer\"] = this.answer;\n data[\"rating\"] = this.rating;\n data[\"proposedAnswerId\"] = this.proposedAnswerId;\n return data;\n }\n}\n\nexport interface ISurveyParticipantAnswerResponse {\n id: number;\n answer?: string | undefined;\n rating?: number | undefined;\n proposedAnswerId?: number | undefined;\n}\n\nexport class SurveyParticipantResponse implements ISurveyParticipantResponse {\n id!: number;\n participantUserId!: number;\n statusId!: number;\n\n constructor(data?: ISurveyParticipantResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.participantUserId = _data[\"participantUserId\"];\n this.statusId = _data[\"statusId\"];\n }\n }\n\n static fromJS(data: any): SurveyParticipantResponse {\n data = typeof data === 'object' ? data : {};\n let result = new SurveyParticipantResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"participantUserId\"] = this.participantUserId;\n data[\"statusId\"] = this.statusId;\n return data;\n }\n}\n\nexport interface ISurveyParticipantResponse {\n id: number;\n participantUserId: number;\n statusId: number;\n}\n\nexport class SurveyParticipantResponseItemsResponseModel implements ISurveyParticipantResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SurveyParticipantResponse[] | undefined;\n\n constructor(data?: ISurveyParticipantResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(SurveyParticipantResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): SurveyParticipantResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new SurveyParticipantResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ISurveyParticipantResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SurveyParticipantResponse[] | undefined;\n}\n\nexport class SurveyProposedAnswerDeltaRequest implements ISurveyProposedAnswerDeltaRequest {\n insert?: InsertSurveyProposedAnswerRequest[] | undefined;\n update?: UpdateSurveyProposedAnswerRequest[] | undefined;\n delete?: DeleteSurveyProposedAnswerRequest[] | undefined;\n\n constructor(data?: ISurveyProposedAnswerDeltaRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertSurveyProposedAnswerRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateSurveyProposedAnswerRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteSurveyProposedAnswerRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): SurveyProposedAnswerDeltaRequest {\n data = typeof data === 'object' ? data : {};\n let result = new SurveyProposedAnswerDeltaRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ISurveyProposedAnswerDeltaRequest {\n insert?: InsertSurveyProposedAnswerRequest[] | undefined;\n update?: UpdateSurveyProposedAnswerRequest[] | undefined;\n delete?: DeleteSurveyProposedAnswerRequest[] | undefined;\n}\n\nexport class SurveyProposedAnswerResponse implements ISurveyProposedAnswerResponse {\n id!: number;\n answer!: string;\n points?: number | undefined;\n isCorrect!: boolean;\n\n constructor(data?: ISurveyProposedAnswerResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.answer = _data[\"answer\"];\n this.points = _data[\"points\"];\n this.isCorrect = _data[\"isCorrect\"];\n }\n }\n\n static fromJS(data: any): SurveyProposedAnswerResponse {\n data = typeof data === 'object' ? data : {};\n let result = new SurveyProposedAnswerResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"answer\"] = this.answer;\n data[\"points\"] = this.points;\n data[\"isCorrect\"] = this.isCorrect;\n return data;\n }\n}\n\nexport interface ISurveyProposedAnswerResponse {\n id: number;\n answer: string;\n points?: number | undefined;\n isCorrect: boolean;\n}\n\nexport class SurveyQuestionResponse implements ISurveyQuestionResponse {\n id!: number;\n questionGroup?: string | undefined;\n question!: string;\n surveyType!: SurveyQuestionTypeEnum;\n answerRequired!: boolean;\n scoreQuestion!: boolean;\n order!: number;\n proposedAnswers?: SurveyProposedAnswerResponse[] | undefined;\n\n constructor(data?: ISurveyQuestionResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.questionGroup = _data[\"questionGroup\"];\n this.question = _data[\"question\"];\n this.surveyType = _data[\"surveyType\"];\n this.answerRequired = _data[\"answerRequired\"];\n this.scoreQuestion = _data[\"scoreQuestion\"];\n this.order = _data[\"order\"];\n if (Array.isArray(_data[\"proposedAnswers\"])) {\n this.proposedAnswers = [] as any;\n for (let item of _data[\"proposedAnswers\"])\n this.proposedAnswers!.push(SurveyProposedAnswerResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): SurveyQuestionResponse {\n data = typeof data === 'object' ? data : {};\n let result = new SurveyQuestionResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"questionGroup\"] = this.questionGroup;\n data[\"question\"] = this.question;\n data[\"surveyType\"] = this.surveyType;\n data[\"answerRequired\"] = this.answerRequired;\n data[\"scoreQuestion\"] = this.scoreQuestion;\n data[\"order\"] = this.order;\n if (Array.isArray(this.proposedAnswers)) {\n data[\"proposedAnswers\"] = [];\n for (let item of this.proposedAnswers)\n data[\"proposedAnswers\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ISurveyQuestionResponse {\n id: number;\n questionGroup?: string | undefined;\n question: string;\n surveyType: SurveyQuestionTypeEnum;\n answerRequired: boolean;\n scoreQuestion: boolean;\n order: number;\n proposedAnswers?: SurveyProposedAnswerResponse[] | undefined;\n}\n\nexport class SurveyQuestionResponseItemsResponseModel implements ISurveyQuestionResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SurveyQuestionResponse[] | undefined;\n\n constructor(data?: ISurveyQuestionResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(SurveyQuestionResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): SurveyQuestionResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new SurveyQuestionResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ISurveyQuestionResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SurveyQuestionResponse[] | undefined;\n}\n\nexport class SurveyQuestionResponseSimpleResponseModel implements ISurveyQuestionResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: SurveyQuestionResponse;\n\n constructor(data?: ISurveyQuestionResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? SurveyQuestionResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): SurveyQuestionResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new SurveyQuestionResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ISurveyQuestionResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: SurveyQuestionResponse;\n}\n\nexport enum SurveyQuestionTypeEnum {\n Rating = \"Rating\",\n MultipleChoice = \"MultipleChoice\",\n SingleChoice = \"SingleChoice\",\n Answer = \"Answer\",\n}\n\nexport class SurveyReducedResponse implements ISurveyReducedResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n surveyType!: SurveyTypeEnum;\n\n constructor(data?: ISurveyReducedResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.surveyType = _data[\"surveyType\"];\n }\n }\n\n static fromJS(data: any): SurveyReducedResponse {\n data = typeof data === 'object' ? data : {};\n let result = new SurveyReducedResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"surveyType\"] = this.surveyType;\n return data;\n }\n}\n\nexport interface ISurveyReducedResponse {\n id: number;\n name: string;\n description?: string | undefined;\n surveyType: SurveyTypeEnum;\n}\n\nexport class SurveyReducedResponseItemsResponseModel implements ISurveyReducedResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SurveyReducedResponse[] | undefined;\n\n constructor(data?: ISurveyReducedResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(SurveyReducedResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): SurveyReducedResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new SurveyReducedResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ISurveyReducedResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SurveyReducedResponse[] | undefined;\n}\n\nexport class SurveyResponse implements ISurveyResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n surveyType!: SurveyTypeEnum;\n status!: SurveyStatusEnum;\n\n constructor(data?: ISurveyResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.surveyType = _data[\"surveyType\"];\n this.status = _data[\"status\"];\n }\n }\n\n static fromJS(data: any): SurveyResponse {\n data = typeof data === 'object' ? data : {};\n let result = new SurveyResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"surveyType\"] = this.surveyType;\n data[\"status\"] = this.status;\n return data;\n }\n}\n\nexport interface ISurveyResponse {\n id: number;\n name: string;\n description?: string | undefined;\n surveyType: SurveyTypeEnum;\n status: SurveyStatusEnum;\n}\n\nexport class SurveyResponseItemsResponseModel implements ISurveyResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SurveyResponse[] | undefined;\n\n constructor(data?: ISurveyResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(SurveyResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): SurveyResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new SurveyResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ISurveyResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: SurveyResponse[] | undefined;\n}\n\nexport class SurveyResponseSimpleResponseModel implements ISurveyResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: SurveyResponse;\n\n constructor(data?: ISurveyResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? SurveyResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): SurveyResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new SurveyResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ISurveyResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: SurveyResponse;\n}\n\nexport enum SurveyStatusEnum {\n Created = \"Created\",\n Released = \"Released\",\n}\n\nexport enum SurveyTypeEnum {\n Quiz = \"Quiz\",\n Survey = \"Survey\",\n}\n\nexport class TaskCommentResponse implements ITaskCommentResponse {\n id!: number;\n taskId!: number;\n comment!: string;\n userId!: number;\n createdOn!: Date;\n\n constructor(data?: ITaskCommentResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.taskId = _data[\"taskId\"];\n this.comment = _data[\"comment\"];\n this.userId = _data[\"userId\"];\n this.createdOn = _data[\"createdOn\"] ? new Date(_data[\"createdOn\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): TaskCommentResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TaskCommentResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"taskId\"] = this.taskId;\n data[\"comment\"] = this.comment;\n data[\"userId\"] = this.userId;\n data[\"createdOn\"] = this.createdOn ? this.createdOn.toISOString() : undefined;\n return data;\n }\n}\n\nexport interface ITaskCommentResponse {\n id: number;\n taskId: number;\n comment: string;\n userId: number;\n createdOn: Date;\n}\n\nexport class TaskCommentResponseItemsResponseModel implements ITaskCommentResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TaskCommentResponse[] | undefined;\n\n constructor(data?: ITaskCommentResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TaskCommentResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TaskCommentResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TaskCommentResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITaskCommentResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TaskCommentResponse[] | undefined;\n}\n\nexport class TaskCommentResponseSimpleResponseModel implements ITaskCommentResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TaskCommentResponse;\n\n constructor(data?: ITaskCommentResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TaskCommentResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TaskCommentResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TaskCommentResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITaskCommentResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TaskCommentResponse;\n}\n\nexport class TaskGeneralConfigResponse implements ITaskGeneralConfigResponse {\n id!: number;\n notifyWhenAssignedToUser!: boolean;\n enableEmailNotifications!: boolean;\n\n constructor(data?: ITaskGeneralConfigResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.notifyWhenAssignedToUser = _data[\"notifyWhenAssignedToUser\"];\n this.enableEmailNotifications = _data[\"enableEmailNotifications\"];\n }\n }\n\n static fromJS(data: any): TaskGeneralConfigResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TaskGeneralConfigResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"notifyWhenAssignedToUser\"] = this.notifyWhenAssignedToUser;\n data[\"enableEmailNotifications\"] = this.enableEmailNotifications;\n return data;\n }\n}\n\nexport interface ITaskGeneralConfigResponse {\n id: number;\n notifyWhenAssignedToUser: boolean;\n enableEmailNotifications: boolean;\n}\n\nexport class TaskGeneralConfigResponseSimpleResponseModel implements ITaskGeneralConfigResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TaskGeneralConfigResponse;\n\n constructor(data?: ITaskGeneralConfigResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TaskGeneralConfigResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TaskGeneralConfigResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TaskGeneralConfigResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITaskGeneralConfigResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TaskGeneralConfigResponse;\n}\n\nexport class TaskHistoryResponse implements ITaskHistoryResponse {\n taskId!: number;\n userId!: number;\n updatedOn!: Date;\n assignedToUserId?: IntNewOld;\n createdByUserId?: IntNewOld;\n closedByUserId?: IntNewOld;\n due?: DateTimeNewOld;\n createdOn?: DateTimeNewOld;\n closedOn?: DateTimeNewOld;\n isPrivate!: BoolNewOld;\n description!: StringNewOld;\n statusId?: IntNewOld;\n parentTaskId?: IntNewOld;\n riskId?: IntNewOld;\n scopeItemLevelId?: IntNewOld;\n changeRequestId?: IntNewOld;\n ticketId?: IntNewOld;\n meetingId?: IntNewOld;\n nonProjectCategoryId?: IntNewOld;\n\n constructor(data?: ITaskHistoryResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.isPrivate = new BoolNewOld();\n this.description = new StringNewOld();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.taskId = _data[\"taskId\"];\n this.userId = _data[\"userId\"];\n this.updatedOn = _data[\"updatedOn\"] ? new Date(_data[\"updatedOn\"].toString()) : undefined;\n this.assignedToUserId = _data[\"assignedToUserId\"] ? IntNewOld.fromJS(_data[\"assignedToUserId\"]) : undefined;\n this.createdByUserId = _data[\"createdByUserId\"] ? IntNewOld.fromJS(_data[\"createdByUserId\"]) : undefined;\n this.closedByUserId = _data[\"closedByUserId\"] ? IntNewOld.fromJS(_data[\"closedByUserId\"]) : undefined;\n this.due = _data[\"due\"] ? DateTimeNewOld.fromJS(_data[\"due\"]) : undefined;\n this.createdOn = _data[\"createdOn\"] ? DateTimeNewOld.fromJS(_data[\"createdOn\"]) : undefined;\n this.closedOn = _data[\"closedOn\"] ? DateTimeNewOld.fromJS(_data[\"closedOn\"]) : undefined;\n this.isPrivate = _data[\"isPrivate\"] ? BoolNewOld.fromJS(_data[\"isPrivate\"]) : new BoolNewOld();\n this.description = _data[\"description\"] ? StringNewOld.fromJS(_data[\"description\"]) : new StringNewOld();\n this.statusId = _data[\"statusId\"] ? IntNewOld.fromJS(_data[\"statusId\"]) : undefined;\n this.parentTaskId = _data[\"parentTaskId\"] ? IntNewOld.fromJS(_data[\"parentTaskId\"]) : undefined;\n this.riskId = _data[\"riskId\"] ? IntNewOld.fromJS(_data[\"riskId\"]) : undefined;\n this.scopeItemLevelId = _data[\"scopeItemLevelId\"] ? IntNewOld.fromJS(_data[\"scopeItemLevelId\"]) : undefined;\n this.changeRequestId = _data[\"changeRequestId\"] ? IntNewOld.fromJS(_data[\"changeRequestId\"]) : undefined;\n this.ticketId = _data[\"ticketId\"] ? IntNewOld.fromJS(_data[\"ticketId\"]) : undefined;\n this.meetingId = _data[\"meetingId\"] ? IntNewOld.fromJS(_data[\"meetingId\"]) : undefined;\n this.nonProjectCategoryId = _data[\"nonProjectCategoryId\"] ? IntNewOld.fromJS(_data[\"nonProjectCategoryId\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TaskHistoryResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TaskHistoryResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"taskId\"] = this.taskId;\n data[\"userId\"] = this.userId;\n data[\"updatedOn\"] = this.updatedOn ? this.updatedOn.toISOString() : undefined;\n data[\"assignedToUserId\"] = this.assignedToUserId ? this.assignedToUserId.toJSON() : undefined;\n data[\"createdByUserId\"] = this.createdByUserId ? this.createdByUserId.toJSON() : undefined;\n data[\"closedByUserId\"] = this.closedByUserId ? this.closedByUserId.toJSON() : undefined;\n data[\"due\"] = this.due ? this.due.toJSON() : undefined;\n data[\"createdOn\"] = this.createdOn ? this.createdOn.toJSON() : undefined;\n data[\"closedOn\"] = this.closedOn ? this.closedOn.toJSON() : undefined;\n data[\"isPrivate\"] = this.isPrivate ? this.isPrivate.toJSON() : undefined;\n data[\"description\"] = this.description ? this.description.toJSON() : undefined;\n data[\"statusId\"] = this.statusId ? this.statusId.toJSON() : undefined;\n data[\"parentTaskId\"] = this.parentTaskId ? this.parentTaskId.toJSON() : undefined;\n data[\"riskId\"] = this.riskId ? this.riskId.toJSON() : undefined;\n data[\"scopeItemLevelId\"] = this.scopeItemLevelId ? this.scopeItemLevelId.toJSON() : undefined;\n data[\"changeRequestId\"] = this.changeRequestId ? this.changeRequestId.toJSON() : undefined;\n data[\"ticketId\"] = this.ticketId ? this.ticketId.toJSON() : undefined;\n data[\"meetingId\"] = this.meetingId ? this.meetingId.toJSON() : undefined;\n data[\"nonProjectCategoryId\"] = this.nonProjectCategoryId ? this.nonProjectCategoryId.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITaskHistoryResponse {\n taskId: number;\n userId: number;\n updatedOn: Date;\n assignedToUserId?: IntNewOld;\n createdByUserId?: IntNewOld;\n closedByUserId?: IntNewOld;\n due?: DateTimeNewOld;\n createdOn?: DateTimeNewOld;\n closedOn?: DateTimeNewOld;\n isPrivate: BoolNewOld;\n description: StringNewOld;\n statusId?: IntNewOld;\n parentTaskId?: IntNewOld;\n riskId?: IntNewOld;\n scopeItemLevelId?: IntNewOld;\n changeRequestId?: IntNewOld;\n ticketId?: IntNewOld;\n meetingId?: IntNewOld;\n nonProjectCategoryId?: IntNewOld;\n}\n\nexport class TaskHistoryResponseItemsResponseModel implements ITaskHistoryResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TaskHistoryResponse[] | undefined;\n\n constructor(data?: ITaskHistoryResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TaskHistoryResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TaskHistoryResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TaskHistoryResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITaskHistoryResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TaskHistoryResponse[] | undefined;\n}\n\nexport enum TaskPriorityEnum {\n Low = \"Low\",\n Medium = \"Medium\",\n High = \"High\",\n VeryHigh = \"VeryHigh\",\n Critical = \"Critical\",\n}\n\nexport class TaskResponse implements ITaskResponse {\n id!: number;\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n assignedToUserId!: number;\n createdByUserId!: number;\n closedByUserId?: number | undefined;\n due!: Date;\n createdOn!: Date;\n closedOn?: Date | undefined;\n isPrivate!: boolean;\n description?: string | undefined;\n statusId!: number;\n parentTaskId?: number | undefined;\n riskId?: number | undefined;\n scopeItemLevelId?: number | undefined;\n changeRequestId?: number | undefined;\n ticketId?: number | undefined;\n meetingId?: number | undefined;\n scheduleId?: number | undefined;\n isScheduleGenerated!: boolean;\n isMeetingGenerated!: boolean;\n priority?: TaskPriorityEnum;\n estimatedEffort?: number | undefined;\n follow!: boolean;\n totalEffort!: number;\n projectTypeId?: number | undefined;\n projectCategoryId?: number | undefined;\n organizationalUnitId?: number | undefined;\n attachments?: AttachmentResponse[] | undefined;\n\n constructor(data?: ITaskResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.assignedToUserId = _data[\"assignedToUserId\"];\n this.createdByUserId = _data[\"createdByUserId\"];\n this.closedByUserId = _data[\"closedByUserId\"];\n this.due = _data[\"due\"] ? new Date(_data[\"due\"].toString()) : undefined;\n this.createdOn = _data[\"createdOn\"] ? new Date(_data[\"createdOn\"].toString()) : undefined;\n this.closedOn = _data[\"closedOn\"] ? new Date(_data[\"closedOn\"].toString()) : undefined;\n this.isPrivate = _data[\"isPrivate\"];\n this.description = _data[\"description\"];\n this.statusId = _data[\"statusId\"];\n this.parentTaskId = _data[\"parentTaskId\"];\n this.riskId = _data[\"riskId\"];\n this.scopeItemLevelId = _data[\"scopeItemLevelId\"];\n this.changeRequestId = _data[\"changeRequestId\"];\n this.ticketId = _data[\"ticketId\"];\n this.meetingId = _data[\"meetingId\"];\n this.scheduleId = _data[\"scheduleId\"];\n this.isScheduleGenerated = _data[\"isScheduleGenerated\"];\n this.isMeetingGenerated = _data[\"isMeetingGenerated\"];\n this.priority = _data[\"priority\"];\n this.estimatedEffort = _data[\"estimatedEffort\"];\n this.follow = _data[\"follow\"];\n this.totalEffort = _data[\"totalEffort\"];\n this.projectTypeId = _data[\"projectTypeId\"];\n this.projectCategoryId = _data[\"projectCategoryId\"];\n this.organizationalUnitId = _data[\"organizationalUnitId\"];\n if (Array.isArray(_data[\"attachments\"])) {\n this.attachments = [] as any;\n for (let item of _data[\"attachments\"])\n this.attachments!.push(AttachmentResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TaskResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TaskResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"assignedToUserId\"] = this.assignedToUserId;\n data[\"createdByUserId\"] = this.createdByUserId;\n data[\"closedByUserId\"] = this.closedByUserId;\n data[\"due\"] = this.due ? formatDate(this.due) : undefined;\n data[\"createdOn\"] = this.createdOn ? this.createdOn.toISOString() : undefined;\n data[\"closedOn\"] = this.closedOn ? this.closedOn.toISOString() : undefined;\n data[\"isPrivate\"] = this.isPrivate;\n data[\"description\"] = this.description;\n data[\"statusId\"] = this.statusId;\n data[\"parentTaskId\"] = this.parentTaskId;\n data[\"riskId\"] = this.riskId;\n data[\"scopeItemLevelId\"] = this.scopeItemLevelId;\n data[\"changeRequestId\"] = this.changeRequestId;\n data[\"ticketId\"] = this.ticketId;\n data[\"meetingId\"] = this.meetingId;\n data[\"scheduleId\"] = this.scheduleId;\n data[\"isScheduleGenerated\"] = this.isScheduleGenerated;\n data[\"isMeetingGenerated\"] = this.isMeetingGenerated;\n data[\"priority\"] = this.priority;\n data[\"estimatedEffort\"] = this.estimatedEffort;\n data[\"follow\"] = this.follow;\n data[\"totalEffort\"] = this.totalEffort;\n data[\"projectTypeId\"] = this.projectTypeId;\n data[\"projectCategoryId\"] = this.projectCategoryId;\n data[\"organizationalUnitId\"] = this.organizationalUnitId;\n if (Array.isArray(this.attachments)) {\n data[\"attachments\"] = [];\n for (let item of this.attachments)\n data[\"attachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITaskResponse {\n id: number;\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n assignedToUserId: number;\n createdByUserId: number;\n closedByUserId?: number | undefined;\n due: Date;\n createdOn: Date;\n closedOn?: Date | undefined;\n isPrivate: boolean;\n description?: string | undefined;\n statusId: number;\n parentTaskId?: number | undefined;\n riskId?: number | undefined;\n scopeItemLevelId?: number | undefined;\n changeRequestId?: number | undefined;\n ticketId?: number | undefined;\n meetingId?: number | undefined;\n scheduleId?: number | undefined;\n isScheduleGenerated: boolean;\n isMeetingGenerated: boolean;\n priority?: TaskPriorityEnum;\n estimatedEffort?: number | undefined;\n follow: boolean;\n totalEffort: number;\n projectTypeId?: number | undefined;\n projectCategoryId?: number | undefined;\n organizationalUnitId?: number | undefined;\n attachments?: AttachmentResponse[] | undefined;\n}\n\nexport class TaskResponseItemsResponseModel implements ITaskResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TaskResponse[] | undefined;\n\n constructor(data?: ITaskResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TaskResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TaskResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TaskResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITaskResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TaskResponse[] | undefined;\n}\n\nexport class TaskResponseSimpleResponseModel implements ITaskResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TaskResponse;\n\n constructor(data?: ITaskResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TaskResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TaskResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TaskResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITaskResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TaskResponse;\n}\n\nexport enum TaskStatusEnum {\n Open = \"Open\",\n InProgress = \"InProgress\",\n Completed = \"Completed\",\n}\n\nexport class TaskStatusResponse implements ITaskStatusResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n isReadonly!: boolean;\n color!: string;\n isInitial!: boolean;\n nextStates?: number[] | undefined;\n semantics!: TaskStatusEnum;\n\n constructor(data?: ITaskStatusResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.isReadonly = _data[\"isReadonly\"];\n this.color = _data[\"color\"];\n this.isInitial = _data[\"isInitial\"];\n if (Array.isArray(_data[\"nextStates\"])) {\n this.nextStates = [] as any;\n for (let item of _data[\"nextStates\"])\n this.nextStates!.push(item);\n }\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): TaskStatusResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TaskStatusResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"isReadonly\"] = this.isReadonly;\n data[\"color\"] = this.color;\n data[\"isInitial\"] = this.isInitial;\n if (Array.isArray(this.nextStates)) {\n data[\"nextStates\"] = [];\n for (let item of this.nextStates)\n data[\"nextStates\"].push(item);\n }\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface ITaskStatusResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n isReadonly: boolean;\n color: string;\n isInitial: boolean;\n nextStates?: number[] | undefined;\n semantics: TaskStatusEnum;\n}\n\nexport class TaskStatusResponseItemsResponseModel implements ITaskStatusResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TaskStatusResponse[] | undefined;\n\n constructor(data?: ITaskStatusResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TaskStatusResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TaskStatusResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TaskStatusResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITaskStatusResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TaskStatusResponse[] | undefined;\n}\n\nexport class TaskTimesheetDeltaRequest implements ITaskTimesheetDeltaRequest {\n insert?: InsertTaskTimesheetRequest[] | undefined;\n update?: UpdateTaskTimesheetRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n\n constructor(data?: ITaskTimesheetDeltaRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertTaskTimesheetRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateTaskTimesheetRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteTenantIndetifyRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TaskTimesheetDeltaRequest {\n data = typeof data === 'object' ? data : {};\n let result = new TaskTimesheetDeltaRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITaskTimesheetDeltaRequest {\n insert?: InsertTaskTimesheetRequest[] | undefined;\n update?: UpdateTaskTimesheetRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n}\n\nexport class TaskTimesheetResponse implements ITaskTimesheetResponse {\n id!: number;\n projectId!: number;\n userId!: number;\n date!: Date;\n statusId!: number;\n effort!: number;\n estimatedTime?: number | undefined;\n\n constructor(data?: ITaskTimesheetResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.projectId = _data[\"projectId\"];\n this.userId = _data[\"userId\"];\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.statusId = _data[\"statusId\"];\n this.effort = _data[\"effort\"];\n this.estimatedTime = _data[\"estimatedTime\"];\n }\n }\n\n static fromJS(data: any): TaskTimesheetResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TaskTimesheetResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"projectId\"] = this.projectId;\n data[\"userId\"] = this.userId;\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n data[\"statusId\"] = this.statusId;\n data[\"effort\"] = this.effort;\n data[\"estimatedTime\"] = this.estimatedTime;\n return data;\n }\n}\n\nexport interface ITaskTimesheetResponse {\n id: number;\n projectId: number;\n userId: number;\n date: Date;\n statusId: number;\n effort: number;\n estimatedTime?: number | undefined;\n}\n\nexport class TaskTimesheetResponseItemsResponseModel implements ITaskTimesheetResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TaskTimesheetResponse[] | undefined;\n\n constructor(data?: ITaskTimesheetResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TaskTimesheetResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TaskTimesheetResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TaskTimesheetResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITaskTimesheetResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TaskTimesheetResponse[] | undefined;\n}\n\nexport class TenantIsActiveDeltaRequest implements ITenantIsActiveDeltaRequest {\n insert?: InsertTenantIsActiveRequest[] | undefined;\n update?: UpdateTenantIsActiveRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n\n constructor(data?: ITenantIsActiveDeltaRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertTenantIsActiveRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateTenantIsActiveRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteTenantIndetifyRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TenantIsActiveDeltaRequest {\n data = typeof data === 'object' ? data : {};\n let result = new TenantIsActiveDeltaRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITenantIsActiveDeltaRequest {\n insert?: InsertTenantIsActiveRequest[] | undefined;\n update?: UpdateTenantIsActiveRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n}\n\nexport class TenantIsActiveResponse implements ITenantIsActiveResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n\n constructor(data?: ITenantIsActiveResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n }\n }\n\n static fromJS(data: any): TenantIsActiveResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TenantIsActiveResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n return data;\n }\n}\n\nexport interface ITenantIsActiveResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n}\n\nexport class TenantIsActiveResponseItemsResponseModel implements ITenantIsActiveResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TenantIsActiveResponse[] | undefined;\n\n constructor(data?: ITenantIsActiveResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TenantIsActiveResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TenantIsActiveResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TenantIsActiveResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITenantIsActiveResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TenantIsActiveResponse[] | undefined;\n}\n\nexport class TenantIsActiveResponseSimpleResponseModel implements ITenantIsActiveResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TenantIsActiveResponse;\n\n constructor(data?: ITenantIsActiveResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TenantIsActiveResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TenantIsActiveResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TenantIsActiveResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITenantIsActiveResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TenantIsActiveResponse;\n}\n\nexport class TenantRegistrationConfirmRequestModel implements ITenantRegistrationConfirmRequestModel {\n token!: string;\n userId!: number;\n tenantId!: number;\n\n constructor(data?: ITenantRegistrationConfirmRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.token = _data[\"token\"];\n this.userId = _data[\"userId\"];\n this.tenantId = _data[\"tenantId\"];\n }\n }\n\n static fromJS(data: any): TenantRegistrationConfirmRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new TenantRegistrationConfirmRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"token\"] = this.token;\n data[\"userId\"] = this.userId;\n data[\"tenantId\"] = this.tenantId;\n return data;\n }\n}\n\nexport interface ITenantRegistrationConfirmRequestModel {\n token: string;\n userId: number;\n tenantId: number;\n}\n\nexport class TenantRegistrationConfirmStatusResponseModel implements ITenantRegistrationConfirmStatusResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n isInProgress!: boolean;\n isFinished!: boolean;\n link!: string;\n\n constructor(data?: ITenantRegistrationConfirmStatusResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.isInProgress = _data[\"isInProgress\"];\n this.isFinished = _data[\"isFinished\"];\n this.link = _data[\"link\"];\n }\n }\n\n static fromJS(data: any): TenantRegistrationConfirmStatusResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TenantRegistrationConfirmStatusResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"isInProgress\"] = this.isInProgress;\n data[\"isFinished\"] = this.isFinished;\n data[\"link\"] = this.link;\n return data;\n }\n}\n\nexport interface ITenantRegistrationConfirmStatusResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n isInProgress: boolean;\n isFinished: boolean;\n link: string;\n}\n\nexport class TenantRegistrationRequestModel implements ITenantRegistrationRequestModel {\n domain!: string;\n email!: string;\n teamSizeId!: number;\n phone?: string | undefined;\n password?: string | undefined;\n username!: string;\n\n constructor(data?: ITenantRegistrationRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.domain = _data[\"domain\"];\n this.email = _data[\"email\"];\n this.teamSizeId = _data[\"teamSizeId\"];\n this.phone = _data[\"phone\"];\n this.password = _data[\"password\"];\n this.username = _data[\"username\"];\n }\n }\n\n static fromJS(data: any): TenantRegistrationRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new TenantRegistrationRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"domain\"] = this.domain;\n data[\"email\"] = this.email;\n data[\"teamSizeId\"] = this.teamSizeId;\n data[\"phone\"] = this.phone;\n data[\"password\"] = this.password;\n data[\"username\"] = this.username;\n return data;\n }\n}\n\nexport interface ITenantRegistrationRequestModel {\n domain: string;\n email: string;\n teamSizeId: number;\n phone?: string | undefined;\n password?: string | undefined;\n username: string;\n}\n\nexport class TenantResponseModel implements ITenantResponseModel {\n id!: number;\n domain!: string;\n industryId!: number;\n countryId!: number;\n currencyId!: number;\n teamSizeId!: number;\n language!: LanguagesEnum;\n datePatternId!: number;\n timePatternId!: number;\n timeZoneIncrement!: number;\n timeZoneName?: string | undefined;\n numberFormat?: string | undefined;\n isInitialized!: boolean;\n datePattern?: DateTimePatternResponse;\n timePattern?: DateTimePatternResponse;\n\n constructor(data?: ITenantResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.domain = _data[\"domain\"];\n this.industryId = _data[\"industryId\"];\n this.countryId = _data[\"countryId\"];\n this.currencyId = _data[\"currencyId\"];\n this.teamSizeId = _data[\"teamSizeId\"];\n this.language = _data[\"language\"];\n this.datePatternId = _data[\"datePatternId\"];\n this.timePatternId = _data[\"timePatternId\"];\n this.timeZoneIncrement = _data[\"timeZoneIncrement\"];\n this.timeZoneName = _data[\"timeZoneName\"];\n this.numberFormat = _data[\"numberFormat\"];\n this.isInitialized = _data[\"isInitialized\"];\n this.datePattern = _data[\"datePattern\"] ? DateTimePatternResponse.fromJS(_data[\"datePattern\"]) : undefined;\n this.timePattern = _data[\"timePattern\"] ? DateTimePatternResponse.fromJS(_data[\"timePattern\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TenantResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TenantResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"domain\"] = this.domain;\n data[\"industryId\"] = this.industryId;\n data[\"countryId\"] = this.countryId;\n data[\"currencyId\"] = this.currencyId;\n data[\"teamSizeId\"] = this.teamSizeId;\n data[\"language\"] = this.language;\n data[\"datePatternId\"] = this.datePatternId;\n data[\"timePatternId\"] = this.timePatternId;\n data[\"timeZoneIncrement\"] = this.timeZoneIncrement;\n data[\"timeZoneName\"] = this.timeZoneName;\n data[\"numberFormat\"] = this.numberFormat;\n data[\"isInitialized\"] = this.isInitialized;\n data[\"datePattern\"] = this.datePattern ? this.datePattern.toJSON() : undefined;\n data[\"timePattern\"] = this.timePattern ? this.timePattern.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITenantResponseModel {\n id: number;\n domain: string;\n industryId: number;\n countryId: number;\n currencyId: number;\n teamSizeId: number;\n language: LanguagesEnum;\n datePatternId: number;\n timePatternId: number;\n timeZoneIncrement: number;\n timeZoneName?: string | undefined;\n numberFormat?: string | undefined;\n isInitialized: boolean;\n datePattern?: DateTimePatternResponse;\n timePattern?: DateTimePatternResponse;\n}\n\nexport class TenantResponseModelSimpleResponseModel implements ITenantResponseModelSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TenantResponseModel;\n\n constructor(data?: ITenantResponseModelSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TenantResponseModel.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TenantResponseModelSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TenantResponseModelSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITenantResponseModelSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TenantResponseModel;\n}\n\nexport class TenantUpdateRequestModel implements ITenantUpdateRequestModel {\n id!: number;\n industryId!: number;\n countryId!: number;\n currencyId!: number;\n teamSizeId!: number;\n timeZoneIncrement!: number;\n timeZoneName!: string;\n numberFormat!: string;\n language!: LanguagesEnum;\n datePatternId!: number;\n timePatternId!: number;\n\n constructor(data?: ITenantUpdateRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.industryId = _data[\"industryId\"];\n this.countryId = _data[\"countryId\"];\n this.currencyId = _data[\"currencyId\"];\n this.teamSizeId = _data[\"teamSizeId\"];\n this.timeZoneIncrement = _data[\"timeZoneIncrement\"];\n this.timeZoneName = _data[\"timeZoneName\"];\n this.numberFormat = _data[\"numberFormat\"];\n this.language = _data[\"language\"];\n this.datePatternId = _data[\"datePatternId\"];\n this.timePatternId = _data[\"timePatternId\"];\n }\n }\n\n static fromJS(data: any): TenantUpdateRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new TenantUpdateRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"industryId\"] = this.industryId;\n data[\"countryId\"] = this.countryId;\n data[\"currencyId\"] = this.currencyId;\n data[\"teamSizeId\"] = this.teamSizeId;\n data[\"timeZoneIncrement\"] = this.timeZoneIncrement;\n data[\"timeZoneName\"] = this.timeZoneName;\n data[\"numberFormat\"] = this.numberFormat;\n data[\"language\"] = this.language;\n data[\"datePatternId\"] = this.datePatternId;\n data[\"timePatternId\"] = this.timePatternId;\n return data;\n }\n}\n\nexport interface ITenantUpdateRequestModel {\n id: number;\n industryId: number;\n countryId: number;\n currencyId: number;\n teamSizeId: number;\n timeZoneIncrement: number;\n timeZoneName: string;\n numberFormat: string;\n language: LanguagesEnum;\n datePatternId: number;\n timePatternId: number;\n}\n\nexport class TestCycleDeltaRequest implements ITestCycleDeltaRequest {\n insert?: InsertTestCycleRequest[] | undefined;\n update?: UpdateTestCycleRequest[] | undefined;\n delete?: DeleteTestCycleRequest[] | undefined;\n\n constructor(data?: ITestCycleDeltaRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertTestCycleRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateTestCycleRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteTestCycleRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TestCycleDeltaRequest {\n data = typeof data === 'object' ? data : {};\n let result = new TestCycleDeltaRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITestCycleDeltaRequest {\n insert?: InsertTestCycleRequest[] | undefined;\n update?: UpdateTestCycleRequest[] | undefined;\n delete?: DeleteTestCycleRequest[] | undefined;\n}\n\nexport class TestDashboardFilterRequest implements ITestDashboardFilterRequest {\n level1Ids?: number[] | undefined;\n level2Ids?: number[] | undefined;\n processTesterIds?: number[] | undefined;\n stepTesterIds?: number[] | undefined;\n\n constructor(data?: ITestDashboardFilterRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"level1Ids\"])) {\n this.level1Ids = [] as any;\n for (let item of _data[\"level1Ids\"])\n this.level1Ids!.push(item);\n }\n if (Array.isArray(_data[\"level2Ids\"])) {\n this.level2Ids = [] as any;\n for (let item of _data[\"level2Ids\"])\n this.level2Ids!.push(item);\n }\n if (Array.isArray(_data[\"processTesterIds\"])) {\n this.processTesterIds = [] as any;\n for (let item of _data[\"processTesterIds\"])\n this.processTesterIds!.push(item);\n }\n if (Array.isArray(_data[\"stepTesterIds\"])) {\n this.stepTesterIds = [] as any;\n for (let item of _data[\"stepTesterIds\"])\n this.stepTesterIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): TestDashboardFilterRequest {\n data = typeof data === 'object' ? data : {};\n let result = new TestDashboardFilterRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.level1Ids)) {\n data[\"level1Ids\"] = [];\n for (let item of this.level1Ids)\n data[\"level1Ids\"].push(item);\n }\n if (Array.isArray(this.level2Ids)) {\n data[\"level2Ids\"] = [];\n for (let item of this.level2Ids)\n data[\"level2Ids\"].push(item);\n }\n if (Array.isArray(this.processTesterIds)) {\n data[\"processTesterIds\"] = [];\n for (let item of this.processTesterIds)\n data[\"processTesterIds\"].push(item);\n }\n if (Array.isArray(this.stepTesterIds)) {\n data[\"stepTesterIds\"] = [];\n for (let item of this.stepTesterIds)\n data[\"stepTesterIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface ITestDashboardFilterRequest {\n level1Ids?: number[] | undefined;\n level2Ids?: number[] | undefined;\n processTesterIds?: number[] | undefined;\n stepTesterIds?: number[] | undefined;\n}\n\nexport class TestDashboardResponse implements ITestDashboardResponse {\n statuses?: TestDashboardStatusesResponse[] | undefined;\n testCasesCount!: number;\n processTestersCount!: number;\n stepTestersCount!: number;\n ticketsCount!: number;\n plannedDateCount!: number;\n actualDateCount!: number;\n\n constructor(data?: ITestDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"statuses\"])) {\n this.statuses = [] as any;\n for (let item of _data[\"statuses\"])\n this.statuses!.push(TestDashboardStatusesResponse.fromJS(item));\n }\n this.testCasesCount = _data[\"testCasesCount\"];\n this.processTestersCount = _data[\"processTestersCount\"];\n this.stepTestersCount = _data[\"stepTestersCount\"];\n this.ticketsCount = _data[\"ticketsCount\"];\n this.plannedDateCount = _data[\"plannedDateCount\"];\n this.actualDateCount = _data[\"actualDateCount\"];\n }\n }\n\n static fromJS(data: any): TestDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TestDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.statuses)) {\n data[\"statuses\"] = [];\n for (let item of this.statuses)\n data[\"statuses\"].push(item.toJSON());\n }\n data[\"testCasesCount\"] = this.testCasesCount;\n data[\"processTestersCount\"] = this.processTestersCount;\n data[\"stepTestersCount\"] = this.stepTestersCount;\n data[\"ticketsCount\"] = this.ticketsCount;\n data[\"plannedDateCount\"] = this.plannedDateCount;\n data[\"actualDateCount\"] = this.actualDateCount;\n return data;\n }\n}\n\nexport interface ITestDashboardResponse {\n statuses?: TestDashboardStatusesResponse[] | undefined;\n testCasesCount: number;\n processTestersCount: number;\n stepTestersCount: number;\n ticketsCount: number;\n plannedDateCount: number;\n actualDateCount: number;\n}\n\nexport class TestDashboardResponseSimpleResponseModel implements ITestDashboardResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TestDashboardResponse;\n\n constructor(data?: ITestDashboardResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TestDashboardResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TestDashboardResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TestDashboardResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITestDashboardResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TestDashboardResponse;\n}\n\nexport class TestDashboardStatusesResponse implements ITestDashboardStatusesResponse {\n level1Id!: number;\n level1Name?: string | undefined;\n statusCounts?: { [key: string]: number; } | undefined;\n\n constructor(data?: ITestDashboardStatusesResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.level1Id = _data[\"level1Id\"];\n this.level1Name = _data[\"level1Name\"];\n if (_data[\"statusCounts\"]) {\n this.statusCounts = {} as any;\n for (let key in _data[\"statusCounts\"]) {\n if (_data[\"statusCounts\"].hasOwnProperty(key))\n (this.statusCounts)![key] = _data[\"statusCounts\"][key];\n }\n }\n }\n }\n\n static fromJS(data: any): TestDashboardStatusesResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TestDashboardStatusesResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"level1Id\"] = this.level1Id;\n data[\"level1Name\"] = this.level1Name;\n if (this.statusCounts) {\n data[\"statusCounts\"] = {};\n for (let key in this.statusCounts) {\n if (this.statusCounts.hasOwnProperty(key))\n (data[\"statusCounts\"])[key] = (this.statusCounts)[key];\n }\n }\n return data;\n }\n}\n\nexport interface ITestDashboardStatusesResponse {\n level1Id: number;\n level1Name?: string | undefined;\n statusCounts?: { [key: string]: number; } | undefined;\n}\n\nexport class TestingPermission implements ITestingPermission {\n testing!: boolean;\n createTestCycle!: boolean;\n maintainTestPlan!: boolean;\n\n constructor(data?: ITestingPermission) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.testing = _data[\"testing\"];\n this.createTestCycle = _data[\"createTestCycle\"];\n this.maintainTestPlan = _data[\"maintainTestPlan\"];\n }\n }\n\n static fromJS(data: any): TestingPermission {\n data = typeof data === 'object' ? data : {};\n let result = new TestingPermission();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"testing\"] = this.testing;\n data[\"createTestCycle\"] = this.createTestCycle;\n data[\"maintainTestPlan\"] = this.maintainTestPlan;\n return data;\n }\n}\n\nexport interface ITestingPermission {\n testing: boolean;\n createTestCycle: boolean;\n maintainTestPlan: boolean;\n}\n\nexport class TestPlanHistoryResponse implements ITestPlanHistoryResponse {\n testPlanId!: number;\n processOrStepId?: string | undefined;\n userId!: number;\n updatedOn!: Date;\n statusId?: IntNewOld;\n\n constructor(data?: ITestPlanHistoryResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.testPlanId = _data[\"testPlanId\"];\n this.processOrStepId = _data[\"processOrStepId\"];\n this.userId = _data[\"userId\"];\n this.updatedOn = _data[\"updatedOn\"] ? new Date(_data[\"updatedOn\"].toString()) : undefined;\n this.statusId = _data[\"statusId\"] ? IntNewOld.fromJS(_data[\"statusId\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TestPlanHistoryResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TestPlanHistoryResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"testPlanId\"] = this.testPlanId;\n data[\"processOrStepId\"] = this.processOrStepId;\n data[\"userId\"] = this.userId;\n data[\"updatedOn\"] = this.updatedOn ? this.updatedOn.toISOString() : undefined;\n data[\"statusId\"] = this.statusId ? this.statusId.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITestPlanHistoryResponse {\n testPlanId: number;\n processOrStepId?: string | undefined;\n userId: number;\n updatedOn: Date;\n statusId?: IntNewOld;\n}\n\nexport class TestPlanHistoryResponseItemsResponseModel implements ITestPlanHistoryResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TestPlanHistoryResponse[] | undefined;\n\n constructor(data?: ITestPlanHistoryResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TestPlanHistoryResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TestPlanHistoryResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TestPlanHistoryResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITestPlanHistoryResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TestPlanHistoryResponse[] | undefined;\n}\n\nexport class TestPlanResponse implements ITestPlanResponse {\n id!: number;\n testCycleId!: number;\n level1Id?: string | undefined;\n level1Name?: string | undefined;\n level2Id?: string | undefined;\n level2Name?: string | undefined;\n level3ProcessId?: string | undefined;\n level3ProcessName?: string | undefined;\n processDescription?: string | undefined;\n processTesterUserId?: number | undefined;\n processStatusId!: number;\n comments?: string | undefined;\n lastChangedByUserId?: number | undefined;\n lastChanged?: Date | undefined;\n plannedDate?: Date | undefined;\n plannedTime?: number | undefined;\n plannedTimeTo?: number | undefined;\n duration?: number | undefined;\n changeRequestIds?: number[] | undefined;\n ticketIds?: number[] | undefined;\n scopeAttachments?: AttachmentResponse[] | undefined;\n testPlanAttachments?: AttachmentResponse[] | undefined;\n innerTestPlans?: InnerTestPlanResponse[] | undefined;\n\n constructor(data?: ITestPlanResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.testCycleId = _data[\"testCycleId\"];\n this.level1Id = _data[\"level1Id\"];\n this.level1Name = _data[\"level1Name\"];\n this.level2Id = _data[\"level2Id\"];\n this.level2Name = _data[\"level2Name\"];\n this.level3ProcessId = _data[\"level3ProcessId\"];\n this.level3ProcessName = _data[\"level3ProcessName\"];\n this.processDescription = _data[\"processDescription\"];\n this.processTesterUserId = _data[\"processTesterUserId\"];\n this.processStatusId = _data[\"processStatusId\"];\n this.comments = _data[\"comments\"];\n this.lastChangedByUserId = _data[\"lastChangedByUserId\"];\n this.lastChanged = _data[\"lastChanged\"] ? new Date(_data[\"lastChanged\"].toString()) : undefined;\n this.plannedDate = _data[\"plannedDate\"] ? new Date(_data[\"plannedDate\"].toString()) : undefined;\n this.plannedTime = _data[\"plannedTime\"];\n this.plannedTimeTo = _data[\"plannedTimeTo\"];\n this.duration = _data[\"duration\"];\n if (Array.isArray(_data[\"changeRequestIds\"])) {\n this.changeRequestIds = [] as any;\n for (let item of _data[\"changeRequestIds\"])\n this.changeRequestIds!.push(item);\n }\n if (Array.isArray(_data[\"ticketIds\"])) {\n this.ticketIds = [] as any;\n for (let item of _data[\"ticketIds\"])\n this.ticketIds!.push(item);\n }\n if (Array.isArray(_data[\"scopeAttachments\"])) {\n this.scopeAttachments = [] as any;\n for (let item of _data[\"scopeAttachments\"])\n this.scopeAttachments!.push(AttachmentResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"testPlanAttachments\"])) {\n this.testPlanAttachments = [] as any;\n for (let item of _data[\"testPlanAttachments\"])\n this.testPlanAttachments!.push(AttachmentResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"innerTestPlans\"])) {\n this.innerTestPlans = [] as any;\n for (let item of _data[\"innerTestPlans\"])\n this.innerTestPlans!.push(InnerTestPlanResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TestPlanResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TestPlanResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"testCycleId\"] = this.testCycleId;\n data[\"level1Id\"] = this.level1Id;\n data[\"level1Name\"] = this.level1Name;\n data[\"level2Id\"] = this.level2Id;\n data[\"level2Name\"] = this.level2Name;\n data[\"level3ProcessId\"] = this.level3ProcessId;\n data[\"level3ProcessName\"] = this.level3ProcessName;\n data[\"processDescription\"] = this.processDescription;\n data[\"processTesterUserId\"] = this.processTesterUserId;\n data[\"processStatusId\"] = this.processStatusId;\n data[\"comments\"] = this.comments;\n data[\"lastChangedByUserId\"] = this.lastChangedByUserId;\n data[\"lastChanged\"] = this.lastChanged ? formatDate(this.lastChanged) : undefined;\n data[\"plannedDate\"] = this.plannedDate ? formatDate(this.plannedDate) : undefined;\n data[\"plannedTime\"] = this.plannedTime;\n data[\"plannedTimeTo\"] = this.plannedTimeTo;\n data[\"duration\"] = this.duration;\n if (Array.isArray(this.changeRequestIds)) {\n data[\"changeRequestIds\"] = [];\n for (let item of this.changeRequestIds)\n data[\"changeRequestIds\"].push(item);\n }\n if (Array.isArray(this.ticketIds)) {\n data[\"ticketIds\"] = [];\n for (let item of this.ticketIds)\n data[\"ticketIds\"].push(item);\n }\n if (Array.isArray(this.scopeAttachments)) {\n data[\"scopeAttachments\"] = [];\n for (let item of this.scopeAttachments)\n data[\"scopeAttachments\"].push(item.toJSON());\n }\n if (Array.isArray(this.testPlanAttachments)) {\n data[\"testPlanAttachments\"] = [];\n for (let item of this.testPlanAttachments)\n data[\"testPlanAttachments\"].push(item.toJSON());\n }\n if (Array.isArray(this.innerTestPlans)) {\n data[\"innerTestPlans\"] = [];\n for (let item of this.innerTestPlans)\n data[\"innerTestPlans\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITestPlanResponse {\n id: number;\n testCycleId: number;\n level1Id?: string | undefined;\n level1Name?: string | undefined;\n level2Id?: string | undefined;\n level2Name?: string | undefined;\n level3ProcessId?: string | undefined;\n level3ProcessName?: string | undefined;\n processDescription?: string | undefined;\n processTesterUserId?: number | undefined;\n processStatusId: number;\n comments?: string | undefined;\n lastChangedByUserId?: number | undefined;\n lastChanged?: Date | undefined;\n plannedDate?: Date | undefined;\n plannedTime?: number | undefined;\n plannedTimeTo?: number | undefined;\n duration?: number | undefined;\n changeRequestIds?: number[] | undefined;\n ticketIds?: number[] | undefined;\n scopeAttachments?: AttachmentResponse[] | undefined;\n testPlanAttachments?: AttachmentResponse[] | undefined;\n innerTestPlans?: InnerTestPlanResponse[] | undefined;\n}\n\nexport class TestPlanResponseSimpleResponseModel implements ITestPlanResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TestPlanResponse;\n\n constructor(data?: ITestPlanResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TestPlanResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TestPlanResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TestPlanResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITestPlanResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TestPlanResponse;\n}\n\nexport class TestPlanRowResponse implements ITestPlanRowResponse {\n id!: number;\n testCycleId!: number;\n isActive!: boolean;\n processTesterUserId?: number | undefined;\n location?: string | undefined;\n plannedDate?: Date | undefined;\n plannedTime?: number | undefined;\n plannedTimeTo?: number | undefined;\n duration?: number | undefined;\n complexLevel2Id?: number | undefined;\n complexLevel2Name?: string | undefined;\n complexLevel2Description?: string | undefined;\n isComplex!: boolean;\n complexForScopeItemLevel3Id?: number | undefined;\n level3Id?: number | undefined;\n level3ProcessId?: string | undefined;\n level3ProcessName?: string | undefined;\n innerTestPlans?: InnerTestRowPlanResponse[] | undefined;\n\n constructor(data?: ITestPlanRowResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.testCycleId = _data[\"testCycleId\"];\n this.isActive = _data[\"isActive\"];\n this.processTesterUserId = _data[\"processTesterUserId\"];\n this.location = _data[\"location\"];\n this.plannedDate = _data[\"plannedDate\"] ? new Date(_data[\"plannedDate\"].toString()) : undefined;\n this.plannedTime = _data[\"plannedTime\"];\n this.plannedTimeTo = _data[\"plannedTimeTo\"];\n this.duration = _data[\"duration\"];\n this.complexLevel2Id = _data[\"complexLevel2Id\"];\n this.complexLevel2Name = _data[\"complexLevel2Name\"];\n this.complexLevel2Description = _data[\"complexLevel2Description\"];\n this.isComplex = _data[\"isComplex\"];\n this.complexForScopeItemLevel3Id = _data[\"complexForScopeItemLevel3Id\"];\n this.level3Id = _data[\"level3Id\"];\n this.level3ProcessId = _data[\"level3ProcessId\"];\n this.level3ProcessName = _data[\"level3ProcessName\"];\n if (Array.isArray(_data[\"innerTestPlans\"])) {\n this.innerTestPlans = [] as any;\n for (let item of _data[\"innerTestPlans\"])\n this.innerTestPlans!.push(InnerTestRowPlanResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TestPlanRowResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TestPlanRowResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"testCycleId\"] = this.testCycleId;\n data[\"isActive\"] = this.isActive;\n data[\"processTesterUserId\"] = this.processTesterUserId;\n data[\"location\"] = this.location;\n data[\"plannedDate\"] = this.plannedDate ? formatDate(this.plannedDate) : undefined;\n data[\"plannedTime\"] = this.plannedTime;\n data[\"plannedTimeTo\"] = this.plannedTimeTo;\n data[\"duration\"] = this.duration;\n data[\"complexLevel2Id\"] = this.complexLevel2Id;\n data[\"complexLevel2Name\"] = this.complexLevel2Name;\n data[\"complexLevel2Description\"] = this.complexLevel2Description;\n data[\"isComplex\"] = this.isComplex;\n data[\"complexForScopeItemLevel3Id\"] = this.complexForScopeItemLevel3Id;\n data[\"level3Id\"] = this.level3Id;\n data[\"level3ProcessId\"] = this.level3ProcessId;\n data[\"level3ProcessName\"] = this.level3ProcessName;\n if (Array.isArray(this.innerTestPlans)) {\n data[\"innerTestPlans\"] = [];\n for (let item of this.innerTestPlans)\n data[\"innerTestPlans\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITestPlanRowResponse {\n id: number;\n testCycleId: number;\n isActive: boolean;\n processTesterUserId?: number | undefined;\n location?: string | undefined;\n plannedDate?: Date | undefined;\n plannedTime?: number | undefined;\n plannedTimeTo?: number | undefined;\n duration?: number | undefined;\n complexLevel2Id?: number | undefined;\n complexLevel2Name?: string | undefined;\n complexLevel2Description?: string | undefined;\n isComplex: boolean;\n complexForScopeItemLevel3Id?: number | undefined;\n level3Id?: number | undefined;\n level3ProcessId?: string | undefined;\n level3ProcessName?: string | undefined;\n innerTestPlans?: InnerTestRowPlanResponse[] | undefined;\n}\n\nexport class TestPlanRowResponseItemsResponseModel implements ITestPlanRowResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TestPlanRowResponse[] | undefined;\n\n constructor(data?: ITestPlanRowResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TestPlanRowResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TestPlanRowResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TestPlanRowResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITestPlanRowResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TestPlanRowResponse[] | undefined;\n}\n\nexport class TestStatusDeltaRequest implements ITestStatusDeltaRequest {\n insert?: InsertTestStatusRequest[] | undefined;\n update?: UpdateTestStatusRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n\n constructor(data?: ITestStatusDeltaRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertTestStatusRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateTestStatusRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteTenantIndetifyRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TestStatusDeltaRequest {\n data = typeof data === 'object' ? data : {};\n let result = new TestStatusDeltaRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITestStatusDeltaRequest {\n insert?: InsertTestStatusRequest[] | undefined;\n update?: UpdateTestStatusRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n}\n\nexport enum TestStatusEnum {\n NotStarted = \"NotStarted\",\n InProgress = \"InProgress\",\n Passed = \"Passed\",\n Failed = \"Failed\",\n}\n\nexport class TestStatusResponse implements ITestStatusResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n isReadonly!: boolean;\n color!: string;\n isInitial!: boolean;\n nextStates?: number[] | undefined;\n semantics!: TestStatusEnum;\n\n constructor(data?: ITestStatusResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.isReadonly = _data[\"isReadonly\"];\n this.color = _data[\"color\"];\n this.isInitial = _data[\"isInitial\"];\n if (Array.isArray(_data[\"nextStates\"])) {\n this.nextStates = [] as any;\n for (let item of _data[\"nextStates\"])\n this.nextStates!.push(item);\n }\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): TestStatusResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TestStatusResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"isReadonly\"] = this.isReadonly;\n data[\"color\"] = this.color;\n data[\"isInitial\"] = this.isInitial;\n if (Array.isArray(this.nextStates)) {\n data[\"nextStates\"] = [];\n for (let item of this.nextStates)\n data[\"nextStates\"].push(item);\n }\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface ITestStatusResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n isReadonly: boolean;\n color: string;\n isInitial: boolean;\n nextStates?: number[] | undefined;\n semantics: TestStatusEnum;\n}\n\nexport class TestStatusResponseItemsResponseModel implements ITestStatusResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TestStatusResponse[] | undefined;\n\n constructor(data?: ITestStatusResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TestStatusResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TestStatusResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TestStatusResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITestStatusResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TestStatusResponse[] | undefined;\n}\n\nexport class TextAnswersDashboardResponse implements ITextAnswersDashboardResponse {\n questionGroup?: string | undefined;\n question!: string;\n userId!: number;\n textAnswer?: string | undefined;\n\n constructor(data?: ITextAnswersDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.questionGroup = _data[\"questionGroup\"];\n this.question = _data[\"question\"];\n this.userId = _data[\"userId\"];\n this.textAnswer = _data[\"textAnswer\"];\n }\n }\n\n static fromJS(data: any): TextAnswersDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TextAnswersDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"questionGroup\"] = this.questionGroup;\n data[\"question\"] = this.question;\n data[\"userId\"] = this.userId;\n data[\"textAnswer\"] = this.textAnswer;\n return data;\n }\n}\n\nexport interface ITextAnswersDashboardResponse {\n questionGroup?: string | undefined;\n question: string;\n userId: number;\n textAnswer?: string | undefined;\n}\n\nexport class TicketAssignedGroupDeltaRequest implements ITicketAssignedGroupDeltaRequest {\n insert?: InsertTicketAssignedGroupRequest[] | undefined;\n update?: UpdateTicketAssignedGroupRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n\n constructor(data?: ITicketAssignedGroupDeltaRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertTicketAssignedGroupRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateTicketAssignedGroupRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteTenantIndetifyRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TicketAssignedGroupDeltaRequest {\n data = typeof data === 'object' ? data : {};\n let result = new TicketAssignedGroupDeltaRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITicketAssignedGroupDeltaRequest {\n insert?: InsertTicketAssignedGroupRequest[] | undefined;\n update?: UpdateTicketAssignedGroupRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n}\n\nexport class TicketAssignedGroupsResponse implements ITicketAssignedGroupsResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n emails?: string | undefined;\n\n constructor(data?: ITicketAssignedGroupsResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.emails = _data[\"emails\"];\n }\n }\n\n static fromJS(data: any): TicketAssignedGroupsResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TicketAssignedGroupsResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"emails\"] = this.emails;\n return data;\n }\n}\n\nexport interface ITicketAssignedGroupsResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n emails?: string | undefined;\n}\n\nexport class TicketAssignedGroupsResponseItemsResponseModel implements ITicketAssignedGroupsResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TicketAssignedGroupsResponse[] | undefined;\n\n constructor(data?: ITicketAssignedGroupsResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TicketAssignedGroupsResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TicketAssignedGroupsResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TicketAssignedGroupsResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITicketAssignedGroupsResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TicketAssignedGroupsResponse[] | undefined;\n}\n\nexport class TicketBreach implements ITicketBreach {\n satisfied!: number;\n breach!: number;\n\n constructor(data?: ITicketBreach) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.satisfied = _data[\"satisfied\"];\n this.breach = _data[\"breach\"];\n }\n }\n\n static fromJS(data: any): TicketBreach {\n data = typeof data === 'object' ? data : {};\n let result = new TicketBreach();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"satisfied\"] = this.satisfied;\n data[\"breach\"] = this.breach;\n return data;\n }\n}\n\nexport interface ITicketBreach {\n satisfied: number;\n breach: number;\n}\n\nexport class TicketCategoryResponse implements ITicketCategoryResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n parentId?: number | undefined;\n levelNumber!: number;\n order!: number;\n\n constructor(data?: ITicketCategoryResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.parentId = _data[\"parentId\"];\n this.levelNumber = _data[\"levelNumber\"];\n this.order = _data[\"order\"];\n }\n }\n\n static fromJS(data: any): TicketCategoryResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TicketCategoryResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"parentId\"] = this.parentId;\n data[\"levelNumber\"] = this.levelNumber;\n data[\"order\"] = this.order;\n return data;\n }\n}\n\nexport interface ITicketCategoryResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n parentId?: number | undefined;\n levelNumber: number;\n order: number;\n}\n\nexport class TicketCategoryResponseItemsResponseModel implements ITicketCategoryResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TicketCategoryResponse[] | undefined;\n\n constructor(data?: ITicketCategoryResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TicketCategoryResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TicketCategoryResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TicketCategoryResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITicketCategoryResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TicketCategoryResponse[] | undefined;\n}\n\nexport class TicketCategoryResponseSimpleResponseModel implements ITicketCategoryResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TicketCategoryResponse;\n\n constructor(data?: ITicketCategoryResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TicketCategoryResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TicketCategoryResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TicketCategoryResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITicketCategoryResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TicketCategoryResponse;\n}\n\nexport class TicketCommnetResponse implements ITicketCommnetResponse {\n id!: number;\n ticketId!: number;\n comment!: string;\n userId!: number;\n createdOn!: Date;\n taskUserId?: number | undefined;\n taskDate?: Date | undefined;\n taskStatusId?: number | undefined;\n taskId?: number | undefined;\n attachments?: AttachmentResponse[] | undefined;\n\n constructor(data?: ITicketCommnetResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.ticketId = _data[\"ticketId\"];\n this.comment = _data[\"comment\"];\n this.userId = _data[\"userId\"];\n this.createdOn = _data[\"createdOn\"] ? new Date(_data[\"createdOn\"].toString()) : undefined;\n this.taskUserId = _data[\"taskUserId\"];\n this.taskDate = _data[\"taskDate\"] ? new Date(_data[\"taskDate\"].toString()) : undefined;\n this.taskStatusId = _data[\"taskStatusId\"];\n this.taskId = _data[\"taskId\"];\n if (Array.isArray(_data[\"attachments\"])) {\n this.attachments = [] as any;\n for (let item of _data[\"attachments\"])\n this.attachments!.push(AttachmentResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TicketCommnetResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TicketCommnetResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"ticketId\"] = this.ticketId;\n data[\"comment\"] = this.comment;\n data[\"userId\"] = this.userId;\n data[\"createdOn\"] = this.createdOn ? this.createdOn.toISOString() : undefined;\n data[\"taskUserId\"] = this.taskUserId;\n data[\"taskDate\"] = this.taskDate ? formatDate(this.taskDate) : undefined;\n data[\"taskStatusId\"] = this.taskStatusId;\n data[\"taskId\"] = this.taskId;\n if (Array.isArray(this.attachments)) {\n data[\"attachments\"] = [];\n for (let item of this.attachments)\n data[\"attachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITicketCommnetResponse {\n id: number;\n ticketId: number;\n comment: string;\n userId: number;\n createdOn: Date;\n taskUserId?: number | undefined;\n taskDate?: Date | undefined;\n taskStatusId?: number | undefined;\n taskId?: number | undefined;\n attachments?: AttachmentResponse[] | undefined;\n}\n\nexport class TicketCommnetResponseItemsResponseModel implements ITicketCommnetResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TicketCommnetResponse[] | undefined;\n\n constructor(data?: ITicketCommnetResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TicketCommnetResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TicketCommnetResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TicketCommnetResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITicketCommnetResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TicketCommnetResponse[] | undefined;\n}\n\nexport class TicketCommnetResponseSimpleResponseModel implements ITicketCommnetResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TicketCommnetResponse;\n\n constructor(data?: ITicketCommnetResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TicketCommnetResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TicketCommnetResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TicketCommnetResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITicketCommnetResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TicketCommnetResponse;\n}\n\nexport class TicketDashboardFilterRequest implements ITicketDashboardFilterRequest {\n projectStatusIds?: number[] | undefined;\n projectIds?: number[] | undefined;\n ticketIds?: number[] | undefined;\n ticketStatusIds?: number[] | undefined;\n ticketTypeIds?: number[] | undefined;\n ticketPriorities?: PriorityEnum[] | undefined;\n assignedToUserIds?: number[] | undefined;\n assignedGroupIds?: number[] | undefined;\n categoryLevel1Ids?: number[] | undefined;\n categoryLevel2Ids?: number[] | undefined;\n testCycleIds?: number[] | undefined;\n organizationalUnitIds?: number[] | undefined;\n dateRange!: DateRangeRequest;\n\n constructor(data?: ITicketDashboardFilterRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.dateRange = new DateRangeRequest();\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"projectStatusIds\"])) {\n this.projectStatusIds = [] as any;\n for (let item of _data[\"projectStatusIds\"])\n this.projectStatusIds!.push(item);\n }\n if (Array.isArray(_data[\"projectIds\"])) {\n this.projectIds = [] as any;\n for (let item of _data[\"projectIds\"])\n this.projectIds!.push(item);\n }\n if (Array.isArray(_data[\"ticketIds\"])) {\n this.ticketIds = [] as any;\n for (let item of _data[\"ticketIds\"])\n this.ticketIds!.push(item);\n }\n if (Array.isArray(_data[\"ticketStatusIds\"])) {\n this.ticketStatusIds = [] as any;\n for (let item of _data[\"ticketStatusIds\"])\n this.ticketStatusIds!.push(item);\n }\n if (Array.isArray(_data[\"ticketTypeIds\"])) {\n this.ticketTypeIds = [] as any;\n for (let item of _data[\"ticketTypeIds\"])\n this.ticketTypeIds!.push(item);\n }\n if (Array.isArray(_data[\"ticketPriorities\"])) {\n this.ticketPriorities = [] as any;\n for (let item of _data[\"ticketPriorities\"])\n this.ticketPriorities!.push(item);\n }\n if (Array.isArray(_data[\"assignedToUserIds\"])) {\n this.assignedToUserIds = [] as any;\n for (let item of _data[\"assignedToUserIds\"])\n this.assignedToUserIds!.push(item);\n }\n if (Array.isArray(_data[\"assignedGroupIds\"])) {\n this.assignedGroupIds = [] as any;\n for (let item of _data[\"assignedGroupIds\"])\n this.assignedGroupIds!.push(item);\n }\n if (Array.isArray(_data[\"categoryLevel1Ids\"])) {\n this.categoryLevel1Ids = [] as any;\n for (let item of _data[\"categoryLevel1Ids\"])\n this.categoryLevel1Ids!.push(item);\n }\n if (Array.isArray(_data[\"categoryLevel2Ids\"])) {\n this.categoryLevel2Ids = [] as any;\n for (let item of _data[\"categoryLevel2Ids\"])\n this.categoryLevel2Ids!.push(item);\n }\n if (Array.isArray(_data[\"testCycleIds\"])) {\n this.testCycleIds = [] as any;\n for (let item of _data[\"testCycleIds\"])\n this.testCycleIds!.push(item);\n }\n if (Array.isArray(_data[\"organizationalUnitIds\"])) {\n this.organizationalUnitIds = [] as any;\n for (let item of _data[\"organizationalUnitIds\"])\n this.organizationalUnitIds!.push(item);\n }\n this.dateRange = _data[\"dateRange\"] ? DateRangeRequest.fromJS(_data[\"dateRange\"]) : new DateRangeRequest();\n }\n }\n\n static fromJS(data: any): TicketDashboardFilterRequest {\n data = typeof data === 'object' ? data : {};\n let result = new TicketDashboardFilterRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.projectStatusIds)) {\n data[\"projectStatusIds\"] = [];\n for (let item of this.projectStatusIds)\n data[\"projectStatusIds\"].push(item);\n }\n if (Array.isArray(this.projectIds)) {\n data[\"projectIds\"] = [];\n for (let item of this.projectIds)\n data[\"projectIds\"].push(item);\n }\n if (Array.isArray(this.ticketIds)) {\n data[\"ticketIds\"] = [];\n for (let item of this.ticketIds)\n data[\"ticketIds\"].push(item);\n }\n if (Array.isArray(this.ticketStatusIds)) {\n data[\"ticketStatusIds\"] = [];\n for (let item of this.ticketStatusIds)\n data[\"ticketStatusIds\"].push(item);\n }\n if (Array.isArray(this.ticketTypeIds)) {\n data[\"ticketTypeIds\"] = [];\n for (let item of this.ticketTypeIds)\n data[\"ticketTypeIds\"].push(item);\n }\n if (Array.isArray(this.ticketPriorities)) {\n data[\"ticketPriorities\"] = [];\n for (let item of this.ticketPriorities)\n data[\"ticketPriorities\"].push(item);\n }\n if (Array.isArray(this.assignedToUserIds)) {\n data[\"assignedToUserIds\"] = [];\n for (let item of this.assignedToUserIds)\n data[\"assignedToUserIds\"].push(item);\n }\n if (Array.isArray(this.assignedGroupIds)) {\n data[\"assignedGroupIds\"] = [];\n for (let item of this.assignedGroupIds)\n data[\"assignedGroupIds\"].push(item);\n }\n if (Array.isArray(this.categoryLevel1Ids)) {\n data[\"categoryLevel1Ids\"] = [];\n for (let item of this.categoryLevel1Ids)\n data[\"categoryLevel1Ids\"].push(item);\n }\n if (Array.isArray(this.categoryLevel2Ids)) {\n data[\"categoryLevel2Ids\"] = [];\n for (let item of this.categoryLevel2Ids)\n data[\"categoryLevel2Ids\"].push(item);\n }\n if (Array.isArray(this.testCycleIds)) {\n data[\"testCycleIds\"] = [];\n for (let item of this.testCycleIds)\n data[\"testCycleIds\"].push(item);\n }\n if (Array.isArray(this.organizationalUnitIds)) {\n data[\"organizationalUnitIds\"] = [];\n for (let item of this.organizationalUnitIds)\n data[\"organizationalUnitIds\"].push(item);\n }\n data[\"dateRange\"] = this.dateRange ? this.dateRange.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITicketDashboardFilterRequest {\n projectStatusIds?: number[] | undefined;\n projectIds?: number[] | undefined;\n ticketIds?: number[] | undefined;\n ticketStatusIds?: number[] | undefined;\n ticketTypeIds?: number[] | undefined;\n ticketPriorities?: PriorityEnum[] | undefined;\n assignedToUserIds?: number[] | undefined;\n assignedGroupIds?: number[] | undefined;\n categoryLevel1Ids?: number[] | undefined;\n categoryLevel2Ids?: number[] | undefined;\n testCycleIds?: number[] | undefined;\n organizationalUnitIds?: number[] | undefined;\n dateRange: DateRangeRequest;\n}\n\nexport class TicketDashboardResponse implements ITicketDashboardResponse {\n ticketsPerStatusCounts?: { [key: string]: number; } | undefined;\n ticketsPerTypeCounts?: { [key: string]: number; } | undefined;\n ticketsPerProjectAndPriorityCounts?: { [key: string]: { [key: string]: number; }; } | undefined;\n ticketsPerAssignedUserAndStatusCounts?: { [key: string]: { [key: string]: number; }; } | undefined;\n ticketsPerAssignedGroupAndStatusCounts?: { [key: string]: { [key: string]: number; }; } | undefined;\n responseTime?: TicketBreach;\n resolutionTime?: TicketBreach;\n averageResponseTimeInMinutes!: number;\n averageResolutionTimeInMinutes!: number;\n newTicketsCount!: number;\n openTicketsCount!: number;\n closedTicketsCount!: number;\n totalTicketCount!: number;\n\n constructor(data?: ITicketDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"ticketsPerStatusCounts\"]) {\n this.ticketsPerStatusCounts = {} as any;\n for (let key in _data[\"ticketsPerStatusCounts\"]) {\n if (_data[\"ticketsPerStatusCounts\"].hasOwnProperty(key))\n (this.ticketsPerStatusCounts)![key] = _data[\"ticketsPerStatusCounts\"][key];\n }\n }\n if (_data[\"ticketsPerTypeCounts\"]) {\n this.ticketsPerTypeCounts = {} as any;\n for (let key in _data[\"ticketsPerTypeCounts\"]) {\n if (_data[\"ticketsPerTypeCounts\"].hasOwnProperty(key))\n (this.ticketsPerTypeCounts)![key] = _data[\"ticketsPerTypeCounts\"][key];\n }\n }\n if (_data[\"ticketsPerProjectAndPriorityCounts\"]) {\n this.ticketsPerProjectAndPriorityCounts = {} as any;\n for (let key in _data[\"ticketsPerProjectAndPriorityCounts\"]) {\n if (_data[\"ticketsPerProjectAndPriorityCounts\"].hasOwnProperty(key))\n (this.ticketsPerProjectAndPriorityCounts)![key] = _data[\"ticketsPerProjectAndPriorityCounts\"][key] !== undefined ? _data[\"ticketsPerProjectAndPriorityCounts\"][key] : {};\n }\n }\n if (_data[\"ticketsPerAssignedUserAndStatusCounts\"]) {\n this.ticketsPerAssignedUserAndStatusCounts = {} as any;\n for (let key in _data[\"ticketsPerAssignedUserAndStatusCounts\"]) {\n if (_data[\"ticketsPerAssignedUserAndStatusCounts\"].hasOwnProperty(key))\n (this.ticketsPerAssignedUserAndStatusCounts)![key] = _data[\"ticketsPerAssignedUserAndStatusCounts\"][key] !== undefined ? _data[\"ticketsPerAssignedUserAndStatusCounts\"][key] : {};\n }\n }\n if (_data[\"ticketsPerAssignedGroupAndStatusCounts\"]) {\n this.ticketsPerAssignedGroupAndStatusCounts = {} as any;\n for (let key in _data[\"ticketsPerAssignedGroupAndStatusCounts\"]) {\n if (_data[\"ticketsPerAssignedGroupAndStatusCounts\"].hasOwnProperty(key))\n (this.ticketsPerAssignedGroupAndStatusCounts)![key] = _data[\"ticketsPerAssignedGroupAndStatusCounts\"][key] !== undefined ? _data[\"ticketsPerAssignedGroupAndStatusCounts\"][key] : {};\n }\n }\n this.responseTime = _data[\"responseTime\"] ? TicketBreach.fromJS(_data[\"responseTime\"]) : undefined;\n this.resolutionTime = _data[\"resolutionTime\"] ? TicketBreach.fromJS(_data[\"resolutionTime\"]) : undefined;\n this.averageResponseTimeInMinutes = _data[\"averageResponseTimeInMinutes\"];\n this.averageResolutionTimeInMinutes = _data[\"averageResolutionTimeInMinutes\"];\n this.newTicketsCount = _data[\"newTicketsCount\"];\n this.openTicketsCount = _data[\"openTicketsCount\"];\n this.closedTicketsCount = _data[\"closedTicketsCount\"];\n this.totalTicketCount = _data[\"totalTicketCount\"];\n }\n }\n\n static fromJS(data: any): TicketDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TicketDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.ticketsPerStatusCounts) {\n data[\"ticketsPerStatusCounts\"] = {};\n for (let key in this.ticketsPerStatusCounts) {\n if (this.ticketsPerStatusCounts.hasOwnProperty(key))\n (data[\"ticketsPerStatusCounts\"])[key] = (this.ticketsPerStatusCounts)[key];\n }\n }\n if (this.ticketsPerTypeCounts) {\n data[\"ticketsPerTypeCounts\"] = {};\n for (let key in this.ticketsPerTypeCounts) {\n if (this.ticketsPerTypeCounts.hasOwnProperty(key))\n (data[\"ticketsPerTypeCounts\"])[key] = (this.ticketsPerTypeCounts)[key];\n }\n }\n if (this.ticketsPerProjectAndPriorityCounts) {\n data[\"ticketsPerProjectAndPriorityCounts\"] = {};\n for (let key in this.ticketsPerProjectAndPriorityCounts) {\n if (this.ticketsPerProjectAndPriorityCounts.hasOwnProperty(key))\n (data[\"ticketsPerProjectAndPriorityCounts\"])[key] = (this.ticketsPerProjectAndPriorityCounts)[key];\n }\n }\n if (this.ticketsPerAssignedUserAndStatusCounts) {\n data[\"ticketsPerAssignedUserAndStatusCounts\"] = {};\n for (let key in this.ticketsPerAssignedUserAndStatusCounts) {\n if (this.ticketsPerAssignedUserAndStatusCounts.hasOwnProperty(key))\n (data[\"ticketsPerAssignedUserAndStatusCounts\"])[key] = (this.ticketsPerAssignedUserAndStatusCounts)[key];\n }\n }\n if (this.ticketsPerAssignedGroupAndStatusCounts) {\n data[\"ticketsPerAssignedGroupAndStatusCounts\"] = {};\n for (let key in this.ticketsPerAssignedGroupAndStatusCounts) {\n if (this.ticketsPerAssignedGroupAndStatusCounts.hasOwnProperty(key))\n (data[\"ticketsPerAssignedGroupAndStatusCounts\"])[key] = (this.ticketsPerAssignedGroupAndStatusCounts)[key];\n }\n }\n data[\"responseTime\"] = this.responseTime ? this.responseTime.toJSON() : undefined;\n data[\"resolutionTime\"] = this.resolutionTime ? this.resolutionTime.toJSON() : undefined;\n data[\"averageResponseTimeInMinutes\"] = this.averageResponseTimeInMinutes;\n data[\"averageResolutionTimeInMinutes\"] = this.averageResolutionTimeInMinutes;\n data[\"newTicketsCount\"] = this.newTicketsCount;\n data[\"openTicketsCount\"] = this.openTicketsCount;\n data[\"closedTicketsCount\"] = this.closedTicketsCount;\n data[\"totalTicketCount\"] = this.totalTicketCount;\n return data;\n }\n}\n\nexport interface ITicketDashboardResponse {\n ticketsPerStatusCounts?: { [key: string]: number; } | undefined;\n ticketsPerTypeCounts?: { [key: string]: number; } | undefined;\n ticketsPerProjectAndPriorityCounts?: { [key: string]: { [key: string]: number; }; } | undefined;\n ticketsPerAssignedUserAndStatusCounts?: { [key: string]: { [key: string]: number; }; } | undefined;\n ticketsPerAssignedGroupAndStatusCounts?: { [key: string]: { [key: string]: number; }; } | undefined;\n responseTime?: TicketBreach;\n resolutionTime?: TicketBreach;\n averageResponseTimeInMinutes: number;\n averageResolutionTimeInMinutes: number;\n newTicketsCount: number;\n openTicketsCount: number;\n closedTicketsCount: number;\n totalTicketCount: number;\n}\n\nexport class TicketDashboardResponseSimpleResponseModel implements ITicketDashboardResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TicketDashboardResponse;\n\n constructor(data?: ITicketDashboardResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TicketDashboardResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TicketDashboardResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TicketDashboardResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITicketDashboardResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TicketDashboardResponse;\n}\n\nexport class TicketHistoryResponse implements ITicketHistoryResponse {\n ticketId!: number;\n userId!: number;\n updatedOn!: Date;\n createdByUserId?: IntNewOld;\n projectId?: IntNewOld;\n reportedBy?: StringNewOld;\n reportedOn?: DateTimeNewOld;\n typeId?: IntNewOld;\n environmentId?: IntNewOld;\n scheduleId?: IntNewOld;\n categoryLevel1Id?: IntNewOld;\n categoryLevel2Id?: IntNewOld;\n categoryLevel3Id?: IntNewOld;\n numberExt?: StringNewOld;\n statusId?: IntNewOld;\n impactId?: IntNewOld;\n urgencyId?: IntNewOld;\n priority?: PriorityNewOld;\n effort?: FloatOldNew;\n effortUnit?: TimeMeasureNewOld;\n assignedGroupId?: IntNewOld;\n assignedToUserId?: IntNewOld;\n createdOn?: DateTimeNewOld;\n closingId?: IntNewOld;\n closingNote?: StringNewOld;\n workaround?: StringNewOld;\n parentTicketId?: IntNewOld;\n changeRequestId?: IntNewOld;\n\n constructor(data?: ITicketHistoryResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.ticketId = _data[\"ticketId\"];\n this.userId = _data[\"userId\"];\n this.updatedOn = _data[\"updatedOn\"] ? new Date(_data[\"updatedOn\"].toString()) : undefined;\n this.createdByUserId = _data[\"createdByUserId\"] ? IntNewOld.fromJS(_data[\"createdByUserId\"]) : undefined;\n this.projectId = _data[\"projectId\"] ? IntNewOld.fromJS(_data[\"projectId\"]) : undefined;\n this.reportedBy = _data[\"reportedBy\"] ? StringNewOld.fromJS(_data[\"reportedBy\"]) : undefined;\n this.reportedOn = _data[\"reportedOn\"] ? DateTimeNewOld.fromJS(_data[\"reportedOn\"]) : undefined;\n this.typeId = _data[\"typeId\"] ? IntNewOld.fromJS(_data[\"typeId\"]) : undefined;\n this.environmentId = _data[\"environmentId\"] ? IntNewOld.fromJS(_data[\"environmentId\"]) : undefined;\n this.scheduleId = _data[\"scheduleId\"] ? IntNewOld.fromJS(_data[\"scheduleId\"]) : undefined;\n this.categoryLevel1Id = _data[\"categoryLevel1Id\"] ? IntNewOld.fromJS(_data[\"categoryLevel1Id\"]) : undefined;\n this.categoryLevel2Id = _data[\"categoryLevel2Id\"] ? IntNewOld.fromJS(_data[\"categoryLevel2Id\"]) : undefined;\n this.categoryLevel3Id = _data[\"categoryLevel3Id\"] ? IntNewOld.fromJS(_data[\"categoryLevel3Id\"]) : undefined;\n this.numberExt = _data[\"numberExt\"] ? StringNewOld.fromJS(_data[\"numberExt\"]) : undefined;\n this.statusId = _data[\"statusId\"] ? IntNewOld.fromJS(_data[\"statusId\"]) : undefined;\n this.impactId = _data[\"impactId\"] ? IntNewOld.fromJS(_data[\"impactId\"]) : undefined;\n this.urgencyId = _data[\"urgencyId\"] ? IntNewOld.fromJS(_data[\"urgencyId\"]) : undefined;\n this.priority = _data[\"priority\"] ? PriorityNewOld.fromJS(_data[\"priority\"]) : undefined;\n this.effort = _data[\"effort\"] ? FloatOldNew.fromJS(_data[\"effort\"]) : undefined;\n this.effortUnit = _data[\"effortUnit\"] ? TimeMeasureNewOld.fromJS(_data[\"effortUnit\"]) : undefined;\n this.assignedGroupId = _data[\"assignedGroupId\"] ? IntNewOld.fromJS(_data[\"assignedGroupId\"]) : undefined;\n this.assignedToUserId = _data[\"assignedToUserId\"] ? IntNewOld.fromJS(_data[\"assignedToUserId\"]) : undefined;\n this.createdOn = _data[\"createdOn\"] ? DateTimeNewOld.fromJS(_data[\"createdOn\"]) : undefined;\n this.closingId = _data[\"closingId\"] ? IntNewOld.fromJS(_data[\"closingId\"]) : undefined;\n this.closingNote = _data[\"closingNote\"] ? StringNewOld.fromJS(_data[\"closingNote\"]) : undefined;\n this.workaround = _data[\"workaround\"] ? StringNewOld.fromJS(_data[\"workaround\"]) : undefined;\n this.parentTicketId = _data[\"parentTicketId\"] ? IntNewOld.fromJS(_data[\"parentTicketId\"]) : undefined;\n this.changeRequestId = _data[\"changeRequestId\"] ? IntNewOld.fromJS(_data[\"changeRequestId\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TicketHistoryResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TicketHistoryResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"ticketId\"] = this.ticketId;\n data[\"userId\"] = this.userId;\n data[\"updatedOn\"] = this.updatedOn ? this.updatedOn.toISOString() : undefined;\n data[\"createdByUserId\"] = this.createdByUserId ? this.createdByUserId.toJSON() : undefined;\n data[\"projectId\"] = this.projectId ? this.projectId.toJSON() : undefined;\n data[\"reportedBy\"] = this.reportedBy ? this.reportedBy.toJSON() : undefined;\n data[\"reportedOn\"] = this.reportedOn ? this.reportedOn.toJSON() : undefined;\n data[\"typeId\"] = this.typeId ? this.typeId.toJSON() : undefined;\n data[\"environmentId\"] = this.environmentId ? this.environmentId.toJSON() : undefined;\n data[\"scheduleId\"] = this.scheduleId ? this.scheduleId.toJSON() : undefined;\n data[\"categoryLevel1Id\"] = this.categoryLevel1Id ? this.categoryLevel1Id.toJSON() : undefined;\n data[\"categoryLevel2Id\"] = this.categoryLevel2Id ? this.categoryLevel2Id.toJSON() : undefined;\n data[\"categoryLevel3Id\"] = this.categoryLevel3Id ? this.categoryLevel3Id.toJSON() : undefined;\n data[\"numberExt\"] = this.numberExt ? this.numberExt.toJSON() : undefined;\n data[\"statusId\"] = this.statusId ? this.statusId.toJSON() : undefined;\n data[\"impactId\"] = this.impactId ? this.impactId.toJSON() : undefined;\n data[\"urgencyId\"] = this.urgencyId ? this.urgencyId.toJSON() : undefined;\n data[\"priority\"] = this.priority ? this.priority.toJSON() : undefined;\n data[\"effort\"] = this.effort ? this.effort.toJSON() : undefined;\n data[\"effortUnit\"] = this.effortUnit ? this.effortUnit.toJSON() : undefined;\n data[\"assignedGroupId\"] = this.assignedGroupId ? this.assignedGroupId.toJSON() : undefined;\n data[\"assignedToUserId\"] = this.assignedToUserId ? this.assignedToUserId.toJSON() : undefined;\n data[\"createdOn\"] = this.createdOn ? this.createdOn.toJSON() : undefined;\n data[\"closingId\"] = this.closingId ? this.closingId.toJSON() : undefined;\n data[\"closingNote\"] = this.closingNote ? this.closingNote.toJSON() : undefined;\n data[\"workaround\"] = this.workaround ? this.workaround.toJSON() : undefined;\n data[\"parentTicketId\"] = this.parentTicketId ? this.parentTicketId.toJSON() : undefined;\n data[\"changeRequestId\"] = this.changeRequestId ? this.changeRequestId.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITicketHistoryResponse {\n ticketId: number;\n userId: number;\n updatedOn: Date;\n createdByUserId?: IntNewOld;\n projectId?: IntNewOld;\n reportedBy?: StringNewOld;\n reportedOn?: DateTimeNewOld;\n typeId?: IntNewOld;\n environmentId?: IntNewOld;\n scheduleId?: IntNewOld;\n categoryLevel1Id?: IntNewOld;\n categoryLevel2Id?: IntNewOld;\n categoryLevel3Id?: IntNewOld;\n numberExt?: StringNewOld;\n statusId?: IntNewOld;\n impactId?: IntNewOld;\n urgencyId?: IntNewOld;\n priority?: PriorityNewOld;\n effort?: FloatOldNew;\n effortUnit?: TimeMeasureNewOld;\n assignedGroupId?: IntNewOld;\n assignedToUserId?: IntNewOld;\n createdOn?: DateTimeNewOld;\n closingId?: IntNewOld;\n closingNote?: StringNewOld;\n workaround?: StringNewOld;\n parentTicketId?: IntNewOld;\n changeRequestId?: IntNewOld;\n}\n\nexport class TicketHistoryResponseItemsResponseModel implements ITicketHistoryResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TicketHistoryResponse[] | undefined;\n\n constructor(data?: ITicketHistoryResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TicketHistoryResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TicketHistoryResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TicketHistoryResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITicketHistoryResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TicketHistoryResponse[] | undefined;\n}\n\nexport class TicketPermission implements ITicketPermission {\n tickets!: boolean;\n\n constructor(data?: ITicketPermission) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.tickets = _data[\"tickets\"];\n }\n }\n\n static fromJS(data: any): TicketPermission {\n data = typeof data === 'object' ? data : {};\n let result = new TicketPermission();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"tickets\"] = this.tickets;\n return data;\n }\n}\n\nexport interface ITicketPermission {\n tickets: boolean;\n}\n\nexport class TicketPriorityDescriptionRequest implements ITicketPriorityDescriptionRequest {\n impactHighDescription!: string;\n impactMediumDescription!: string;\n impactLowDescription!: string;\n urgencyUrgentDescription!: string;\n urgencyNormalDescription!: string;\n\n constructor(data?: ITicketPriorityDescriptionRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.impactHighDescription = _data[\"impactHighDescription\"];\n this.impactMediumDescription = _data[\"impactMediumDescription\"];\n this.impactLowDescription = _data[\"impactLowDescription\"];\n this.urgencyUrgentDescription = _data[\"urgencyUrgentDescription\"];\n this.urgencyNormalDescription = _data[\"urgencyNormalDescription\"];\n }\n }\n\n static fromJS(data: any): TicketPriorityDescriptionRequest {\n data = typeof data === 'object' ? data : {};\n let result = new TicketPriorityDescriptionRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"impactHighDescription\"] = this.impactHighDescription;\n data[\"impactMediumDescription\"] = this.impactMediumDescription;\n data[\"impactLowDescription\"] = this.impactLowDescription;\n data[\"urgencyUrgentDescription\"] = this.urgencyUrgentDescription;\n data[\"urgencyNormalDescription\"] = this.urgencyNormalDescription;\n return data;\n }\n}\n\nexport interface ITicketPriorityDescriptionRequest {\n impactHighDescription: string;\n impactMediumDescription: string;\n impactLowDescription: string;\n urgencyUrgentDescription: string;\n urgencyNormalDescription: string;\n}\n\nexport class TicketPriorityDescriptionResponse implements ITicketPriorityDescriptionResponse {\n impactHighDescription!: string;\n impactMediumDescription!: string;\n impactLowDescription!: string;\n urgencyUrgentDescription!: string;\n urgencyNormalDescription!: string;\n\n constructor(data?: ITicketPriorityDescriptionResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.impactHighDescription = _data[\"impactHighDescription\"];\n this.impactMediumDescription = _data[\"impactMediumDescription\"];\n this.impactLowDescription = _data[\"impactLowDescription\"];\n this.urgencyUrgentDescription = _data[\"urgencyUrgentDescription\"];\n this.urgencyNormalDescription = _data[\"urgencyNormalDescription\"];\n }\n }\n\n static fromJS(data: any): TicketPriorityDescriptionResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TicketPriorityDescriptionResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"impactHighDescription\"] = this.impactHighDescription;\n data[\"impactMediumDescription\"] = this.impactMediumDescription;\n data[\"impactLowDescription\"] = this.impactLowDescription;\n data[\"urgencyUrgentDescription\"] = this.urgencyUrgentDescription;\n data[\"urgencyNormalDescription\"] = this.urgencyNormalDescription;\n return data;\n }\n}\n\nexport interface ITicketPriorityDescriptionResponse {\n impactHighDescription: string;\n impactMediumDescription: string;\n impactLowDescription: string;\n urgencyUrgentDescription: string;\n urgencyNormalDescription: string;\n}\n\nexport class TicketPriorityDescriptionResponseSimpleResponseModel implements ITicketPriorityDescriptionResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TicketPriorityDescriptionResponse;\n\n constructor(data?: ITicketPriorityDescriptionResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TicketPriorityDescriptionResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TicketPriorityDescriptionResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TicketPriorityDescriptionResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITicketPriorityDescriptionResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TicketPriorityDescriptionResponse;\n}\n\nexport class TicketResponse implements ITicketResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n projectId!: number;\n createdByUserId!: number;\n reportedBy!: string;\n reportedOn?: Date | undefined;\n typeId!: number;\n categoryLevel1Id!: number;\n categoryLevel2Id?: number | undefined;\n categoryLevel3Id?: number | undefined;\n ticketNumberExt?: string | undefined;\n statusId!: number;\n impactId!: number;\n urgencyId!: number;\n priority!: PriorityEnum;\n assignedGroupId?: number | undefined;\n assignedToUserId!: number;\n createdOn!: Date;\n parentTicketId?: number | undefined;\n effort?: number | undefined;\n effortUnit?: TimeMeasureEnum;\n acceptedOn?: Date | undefined;\n resolvedOn?: Date | undefined;\n expectedResolutionDate?: Date | undefined;\n environmentId?: number | undefined;\n scheduleId?: number | undefined;\n closingId?: number | undefined;\n closingNote?: string | undefined;\n workaround?: string | undefined;\n closedByUserId?: number | undefined;\n testCycleNames?: string[] | undefined;\n changeRequestIds?: number[] | undefined;\n projectTypeId?: number | undefined;\n projectCategoryId?: number | undefined;\n organizationalUnitId?: number | undefined;\n timesheets?: TicketTimesheetResponse[] | undefined;\n followTicket!: boolean;\n attachments?: AttachmentResponse[] | undefined;\n testPlans?: TicketTestPlansResponse[] | undefined;\n statusDurations?: TicketStatusDurationResponse[] | undefined;\n isSlaActive!: boolean;\n timeMeasure?: TimeMeasureEnum;\n dayDurationInMinutes?: number | undefined;\n responseTimeInMinutes?: number | undefined;\n resolutionTimeInMinutes?: number | undefined;\n responseTimeBreachInMinutes?: number | undefined;\n resolutionTimeBreachInMinutes?: number | undefined;\n onHoldInMinutes?: number | undefined;\n\n constructor(data?: ITicketResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.projectId = _data[\"projectId\"];\n this.createdByUserId = _data[\"createdByUserId\"];\n this.reportedBy = _data[\"reportedBy\"];\n this.reportedOn = _data[\"reportedOn\"] ? new Date(_data[\"reportedOn\"].toString()) : undefined;\n this.typeId = _data[\"typeId\"];\n this.categoryLevel1Id = _data[\"categoryLevel1Id\"];\n this.categoryLevel2Id = _data[\"categoryLevel2Id\"];\n this.categoryLevel3Id = _data[\"categoryLevel3Id\"];\n this.ticketNumberExt = _data[\"ticketNumberExt\"];\n this.statusId = _data[\"statusId\"];\n this.impactId = _data[\"impactId\"];\n this.urgencyId = _data[\"urgencyId\"];\n this.priority = _data[\"priority\"];\n this.assignedGroupId = _data[\"assignedGroupId\"];\n this.assignedToUserId = _data[\"assignedToUserId\"];\n this.createdOn = _data[\"createdOn\"] ? new Date(_data[\"createdOn\"].toString()) : undefined;\n this.parentTicketId = _data[\"parentTicketId\"];\n this.effort = _data[\"effort\"];\n this.effortUnit = _data[\"effortUnit\"];\n this.acceptedOn = _data[\"acceptedOn\"] ? new Date(_data[\"acceptedOn\"].toString()) : undefined;\n this.resolvedOn = _data[\"resolvedOn\"] ? new Date(_data[\"resolvedOn\"].toString()) : undefined;\n this.expectedResolutionDate = _data[\"expectedResolutionDate\"] ? new Date(_data[\"expectedResolutionDate\"].toString()) : undefined;\n this.environmentId = _data[\"environmentId\"];\n this.scheduleId = _data[\"scheduleId\"];\n this.closingId = _data[\"closingId\"];\n this.closingNote = _data[\"closingNote\"];\n this.workaround = _data[\"workaround\"];\n this.closedByUserId = _data[\"closedByUserId\"];\n if (Array.isArray(_data[\"testCycleNames\"])) {\n this.testCycleNames = [] as any;\n for (let item of _data[\"testCycleNames\"])\n this.testCycleNames!.push(item);\n }\n if (Array.isArray(_data[\"changeRequestIds\"])) {\n this.changeRequestIds = [] as any;\n for (let item of _data[\"changeRequestIds\"])\n this.changeRequestIds!.push(item);\n }\n this.projectTypeId = _data[\"projectTypeId\"];\n this.projectCategoryId = _data[\"projectCategoryId\"];\n this.organizationalUnitId = _data[\"organizationalUnitId\"];\n if (Array.isArray(_data[\"timesheets\"])) {\n this.timesheets = [] as any;\n for (let item of _data[\"timesheets\"])\n this.timesheets!.push(TicketTimesheetResponse.fromJS(item));\n }\n this.followTicket = _data[\"followTicket\"];\n if (Array.isArray(_data[\"attachments\"])) {\n this.attachments = [] as any;\n for (let item of _data[\"attachments\"])\n this.attachments!.push(AttachmentResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"testPlans\"])) {\n this.testPlans = [] as any;\n for (let item of _data[\"testPlans\"])\n this.testPlans!.push(TicketTestPlansResponse.fromJS(item));\n }\n if (Array.isArray(_data[\"statusDurations\"])) {\n this.statusDurations = [] as any;\n for (let item of _data[\"statusDurations\"])\n this.statusDurations!.push(TicketStatusDurationResponse.fromJS(item));\n }\n this.isSlaActive = _data[\"isSlaActive\"];\n this.timeMeasure = _data[\"timeMeasure\"];\n this.dayDurationInMinutes = _data[\"dayDurationInMinutes\"];\n this.responseTimeInMinutes = _data[\"responseTimeInMinutes\"];\n this.resolutionTimeInMinutes = _data[\"resolutionTimeInMinutes\"];\n this.responseTimeBreachInMinutes = _data[\"responseTimeBreachInMinutes\"];\n this.resolutionTimeBreachInMinutes = _data[\"resolutionTimeBreachInMinutes\"];\n this.onHoldInMinutes = _data[\"onHoldInMinutes\"];\n }\n }\n\n static fromJS(data: any): TicketResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TicketResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"projectId\"] = this.projectId;\n data[\"createdByUserId\"] = this.createdByUserId;\n data[\"reportedBy\"] = this.reportedBy;\n data[\"reportedOn\"] = this.reportedOn ? formatDate(this.reportedOn) : undefined;\n data[\"typeId\"] = this.typeId;\n data[\"categoryLevel1Id\"] = this.categoryLevel1Id;\n data[\"categoryLevel2Id\"] = this.categoryLevel2Id;\n data[\"categoryLevel3Id\"] = this.categoryLevel3Id;\n data[\"ticketNumberExt\"] = this.ticketNumberExt;\n data[\"statusId\"] = this.statusId;\n data[\"impactId\"] = this.impactId;\n data[\"urgencyId\"] = this.urgencyId;\n data[\"priority\"] = this.priority;\n data[\"assignedGroupId\"] = this.assignedGroupId;\n data[\"assignedToUserId\"] = this.assignedToUserId;\n data[\"createdOn\"] = this.createdOn ? this.createdOn.toISOString() : undefined;\n data[\"parentTicketId\"] = this.parentTicketId;\n data[\"effort\"] = this.effort;\n data[\"effortUnit\"] = this.effortUnit;\n data[\"acceptedOn\"] = this.acceptedOn ? this.acceptedOn.toISOString() : undefined;\n data[\"resolvedOn\"] = this.resolvedOn ? this.resolvedOn.toISOString() : undefined;\n data[\"expectedResolutionDate\"] = this.expectedResolutionDate ? formatDate(this.expectedResolutionDate) : undefined;\n data[\"environmentId\"] = this.environmentId;\n data[\"scheduleId\"] = this.scheduleId;\n data[\"closingId\"] = this.closingId;\n data[\"closingNote\"] = this.closingNote;\n data[\"workaround\"] = this.workaround;\n data[\"closedByUserId\"] = this.closedByUserId;\n if (Array.isArray(this.testCycleNames)) {\n data[\"testCycleNames\"] = [];\n for (let item of this.testCycleNames)\n data[\"testCycleNames\"].push(item);\n }\n if (Array.isArray(this.changeRequestIds)) {\n data[\"changeRequestIds\"] = [];\n for (let item of this.changeRequestIds)\n data[\"changeRequestIds\"].push(item);\n }\n data[\"projectTypeId\"] = this.projectTypeId;\n data[\"projectCategoryId\"] = this.projectCategoryId;\n data[\"organizationalUnitId\"] = this.organizationalUnitId;\n if (Array.isArray(this.timesheets)) {\n data[\"timesheets\"] = [];\n for (let item of this.timesheets)\n data[\"timesheets\"].push(item.toJSON());\n }\n data[\"followTicket\"] = this.followTicket;\n if (Array.isArray(this.attachments)) {\n data[\"attachments\"] = [];\n for (let item of this.attachments)\n data[\"attachments\"].push(item.toJSON());\n }\n if (Array.isArray(this.testPlans)) {\n data[\"testPlans\"] = [];\n for (let item of this.testPlans)\n data[\"testPlans\"].push(item.toJSON());\n }\n if (Array.isArray(this.statusDurations)) {\n data[\"statusDurations\"] = [];\n for (let item of this.statusDurations)\n data[\"statusDurations\"].push(item.toJSON());\n }\n data[\"isSlaActive\"] = this.isSlaActive;\n data[\"timeMeasure\"] = this.timeMeasure;\n data[\"dayDurationInMinutes\"] = this.dayDurationInMinutes;\n data[\"responseTimeInMinutes\"] = this.responseTimeInMinutes;\n data[\"resolutionTimeInMinutes\"] = this.resolutionTimeInMinutes;\n data[\"responseTimeBreachInMinutes\"] = this.responseTimeBreachInMinutes;\n data[\"resolutionTimeBreachInMinutes\"] = this.resolutionTimeBreachInMinutes;\n data[\"onHoldInMinutes\"] = this.onHoldInMinutes;\n return data;\n }\n}\n\nexport interface ITicketResponse {\n id: number;\n name: string;\n description?: string | undefined;\n projectId: number;\n createdByUserId: number;\n reportedBy: string;\n reportedOn?: Date | undefined;\n typeId: number;\n categoryLevel1Id: number;\n categoryLevel2Id?: number | undefined;\n categoryLevel3Id?: number | undefined;\n ticketNumberExt?: string | undefined;\n statusId: number;\n impactId: number;\n urgencyId: number;\n priority: PriorityEnum;\n assignedGroupId?: number | undefined;\n assignedToUserId: number;\n createdOn: Date;\n parentTicketId?: number | undefined;\n effort?: number | undefined;\n effortUnit?: TimeMeasureEnum;\n acceptedOn?: Date | undefined;\n resolvedOn?: Date | undefined;\n expectedResolutionDate?: Date | undefined;\n environmentId?: number | undefined;\n scheduleId?: number | undefined;\n closingId?: number | undefined;\n closingNote?: string | undefined;\n workaround?: string | undefined;\n closedByUserId?: number | undefined;\n testCycleNames?: string[] | undefined;\n changeRequestIds?: number[] | undefined;\n projectTypeId?: number | undefined;\n projectCategoryId?: number | undefined;\n organizationalUnitId?: number | undefined;\n timesheets?: TicketTimesheetResponse[] | undefined;\n followTicket: boolean;\n attachments?: AttachmentResponse[] | undefined;\n testPlans?: TicketTestPlansResponse[] | undefined;\n statusDurations?: TicketStatusDurationResponse[] | undefined;\n isSlaActive: boolean;\n timeMeasure?: TimeMeasureEnum;\n dayDurationInMinutes?: number | undefined;\n responseTimeInMinutes?: number | undefined;\n resolutionTimeInMinutes?: number | undefined;\n responseTimeBreachInMinutes?: number | undefined;\n resolutionTimeBreachInMinutes?: number | undefined;\n onHoldInMinutes?: number | undefined;\n}\n\nexport class TicketResponseGetAll implements ITicketResponseGetAll {\n id!: number;\n name!: string;\n description?: string | undefined;\n projectId!: number;\n createdByUserId!: number;\n reportedBy!: string;\n reportedOn?: Date | undefined;\n typeId!: number;\n categoryLevel1Id!: number;\n categoryLevel2Id?: number | undefined;\n categoryLevel3Id?: number | undefined;\n ticketNumberExt?: string | undefined;\n statusId!: number;\n impactId!: number;\n urgencyId!: number;\n priority!: PriorityEnum;\n assignedGroupId?: number | undefined;\n assignedToUserId!: number;\n createdOn!: Date;\n parentTicketId?: number | undefined;\n effort?: number | undefined;\n effortUnit?: TimeMeasureEnum;\n acceptedOn?: Date | undefined;\n resolvedOn?: Date | undefined;\n expectedResolutionDate?: Date | undefined;\n environmentId?: number | undefined;\n scheduleId?: number | undefined;\n closingId?: number | undefined;\n closingNote?: string | undefined;\n workaround?: string | undefined;\n closedByUserId?: number | undefined;\n testCycleNames?: string[] | undefined;\n changeRequestIds?: number[] | undefined;\n projectTypeId?: number | undefined;\n projectCategoryId?: number | undefined;\n organizationalUnitId?: number | undefined;\n timesheets?: TicketTimesheetResponse[] | undefined;\n\n constructor(data?: ITicketResponseGetAll) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.projectId = _data[\"projectId\"];\n this.createdByUserId = _data[\"createdByUserId\"];\n this.reportedBy = _data[\"reportedBy\"];\n this.reportedOn = _data[\"reportedOn\"] ? new Date(_data[\"reportedOn\"].toString()) : undefined;\n this.typeId = _data[\"typeId\"];\n this.categoryLevel1Id = _data[\"categoryLevel1Id\"];\n this.categoryLevel2Id = _data[\"categoryLevel2Id\"];\n this.categoryLevel3Id = _data[\"categoryLevel3Id\"];\n this.ticketNumberExt = _data[\"ticketNumberExt\"];\n this.statusId = _data[\"statusId\"];\n this.impactId = _data[\"impactId\"];\n this.urgencyId = _data[\"urgencyId\"];\n this.priority = _data[\"priority\"];\n this.assignedGroupId = _data[\"assignedGroupId\"];\n this.assignedToUserId = _data[\"assignedToUserId\"];\n this.createdOn = _data[\"createdOn\"] ? new Date(_data[\"createdOn\"].toString()) : undefined;\n this.parentTicketId = _data[\"parentTicketId\"];\n this.effort = _data[\"effort\"];\n this.effortUnit = _data[\"effortUnit\"];\n this.acceptedOn = _data[\"acceptedOn\"] ? new Date(_data[\"acceptedOn\"].toString()) : undefined;\n this.resolvedOn = _data[\"resolvedOn\"] ? new Date(_data[\"resolvedOn\"].toString()) : undefined;\n this.expectedResolutionDate = _data[\"expectedResolutionDate\"] ? new Date(_data[\"expectedResolutionDate\"].toString()) : undefined;\n this.environmentId = _data[\"environmentId\"];\n this.scheduleId = _data[\"scheduleId\"];\n this.closingId = _data[\"closingId\"];\n this.closingNote = _data[\"closingNote\"];\n this.workaround = _data[\"workaround\"];\n this.closedByUserId = _data[\"closedByUserId\"];\n if (Array.isArray(_data[\"testCycleNames\"])) {\n this.testCycleNames = [] as any;\n for (let item of _data[\"testCycleNames\"])\n this.testCycleNames!.push(item);\n }\n if (Array.isArray(_data[\"changeRequestIds\"])) {\n this.changeRequestIds = [] as any;\n for (let item of _data[\"changeRequestIds\"])\n this.changeRequestIds!.push(item);\n }\n this.projectTypeId = _data[\"projectTypeId\"];\n this.projectCategoryId = _data[\"projectCategoryId\"];\n this.organizationalUnitId = _data[\"organizationalUnitId\"];\n if (Array.isArray(_data[\"timesheets\"])) {\n this.timesheets = [] as any;\n for (let item of _data[\"timesheets\"])\n this.timesheets!.push(TicketTimesheetResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TicketResponseGetAll {\n data = typeof data === 'object' ? data : {};\n let result = new TicketResponseGetAll();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"projectId\"] = this.projectId;\n data[\"createdByUserId\"] = this.createdByUserId;\n data[\"reportedBy\"] = this.reportedBy;\n data[\"reportedOn\"] = this.reportedOn ? formatDate(this.reportedOn) : undefined;\n data[\"typeId\"] = this.typeId;\n data[\"categoryLevel1Id\"] = this.categoryLevel1Id;\n data[\"categoryLevel2Id\"] = this.categoryLevel2Id;\n data[\"categoryLevel3Id\"] = this.categoryLevel3Id;\n data[\"ticketNumberExt\"] = this.ticketNumberExt;\n data[\"statusId\"] = this.statusId;\n data[\"impactId\"] = this.impactId;\n data[\"urgencyId\"] = this.urgencyId;\n data[\"priority\"] = this.priority;\n data[\"assignedGroupId\"] = this.assignedGroupId;\n data[\"assignedToUserId\"] = this.assignedToUserId;\n data[\"createdOn\"] = this.createdOn ? this.createdOn.toISOString() : undefined;\n data[\"parentTicketId\"] = this.parentTicketId;\n data[\"effort\"] = this.effort;\n data[\"effortUnit\"] = this.effortUnit;\n data[\"acceptedOn\"] = this.acceptedOn ? this.acceptedOn.toISOString() : undefined;\n data[\"resolvedOn\"] = this.resolvedOn ? this.resolvedOn.toISOString() : undefined;\n data[\"expectedResolutionDate\"] = this.expectedResolutionDate ? formatDate(this.expectedResolutionDate) : undefined;\n data[\"environmentId\"] = this.environmentId;\n data[\"scheduleId\"] = this.scheduleId;\n data[\"closingId\"] = this.closingId;\n data[\"closingNote\"] = this.closingNote;\n data[\"workaround\"] = this.workaround;\n data[\"closedByUserId\"] = this.closedByUserId;\n if (Array.isArray(this.testCycleNames)) {\n data[\"testCycleNames\"] = [];\n for (let item of this.testCycleNames)\n data[\"testCycleNames\"].push(item);\n }\n if (Array.isArray(this.changeRequestIds)) {\n data[\"changeRequestIds\"] = [];\n for (let item of this.changeRequestIds)\n data[\"changeRequestIds\"].push(item);\n }\n data[\"projectTypeId\"] = this.projectTypeId;\n data[\"projectCategoryId\"] = this.projectCategoryId;\n data[\"organizationalUnitId\"] = this.organizationalUnitId;\n if (Array.isArray(this.timesheets)) {\n data[\"timesheets\"] = [];\n for (let item of this.timesheets)\n data[\"timesheets\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITicketResponseGetAll {\n id: number;\n name: string;\n description?: string | undefined;\n projectId: number;\n createdByUserId: number;\n reportedBy: string;\n reportedOn?: Date | undefined;\n typeId: number;\n categoryLevel1Id: number;\n categoryLevel2Id?: number | undefined;\n categoryLevel3Id?: number | undefined;\n ticketNumberExt?: string | undefined;\n statusId: number;\n impactId: number;\n urgencyId: number;\n priority: PriorityEnum;\n assignedGroupId?: number | undefined;\n assignedToUserId: number;\n createdOn: Date;\n parentTicketId?: number | undefined;\n effort?: number | undefined;\n effortUnit?: TimeMeasureEnum;\n acceptedOn?: Date | undefined;\n resolvedOn?: Date | undefined;\n expectedResolutionDate?: Date | undefined;\n environmentId?: number | undefined;\n scheduleId?: number | undefined;\n closingId?: number | undefined;\n closingNote?: string | undefined;\n workaround?: string | undefined;\n closedByUserId?: number | undefined;\n testCycleNames?: string[] | undefined;\n changeRequestIds?: number[] | undefined;\n projectTypeId?: number | undefined;\n projectCategoryId?: number | undefined;\n organizationalUnitId?: number | undefined;\n timesheets?: TicketTimesheetResponse[] | undefined;\n}\n\nexport class TicketResponseGetAllItemsResponseModel implements ITicketResponseGetAllItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TicketResponseGetAll[] | undefined;\n\n constructor(data?: ITicketResponseGetAllItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TicketResponseGetAll.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TicketResponseGetAllItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TicketResponseGetAllItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITicketResponseGetAllItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TicketResponseGetAll[] | undefined;\n}\n\nexport class TicketResponseItemsResponseModel implements ITicketResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TicketResponse[] | undefined;\n\n constructor(data?: ITicketResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TicketResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TicketResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TicketResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITicketResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TicketResponse[] | undefined;\n}\n\nexport class TicketResponseSimpleResponseModel implements ITicketResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TicketResponse;\n\n constructor(data?: ITicketResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TicketResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TicketResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TicketResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITicketResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TicketResponse;\n}\n\nexport class TicketStatusDurationResponse implements ITicketStatusDurationResponse {\n userId!: number;\n statusId!: number;\n duration!: number;\n\n constructor(data?: ITicketStatusDurationResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.userId = _data[\"userId\"];\n this.statusId = _data[\"statusId\"];\n this.duration = _data[\"duration\"];\n }\n }\n\n static fromJS(data: any): TicketStatusDurationResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TicketStatusDurationResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"userId\"] = this.userId;\n data[\"statusId\"] = this.statusId;\n data[\"duration\"] = this.duration;\n return data;\n }\n}\n\nexport interface ITicketStatusDurationResponse {\n userId: number;\n statusId: number;\n duration: number;\n}\n\nexport enum TicketStatusEnum {\n New = \"New\",\n Accepted = \"Accepted\",\n InProgress = \"InProgress\",\n OnHold = \"OnHold\",\n Resolved = \"Resolved\",\n Rejected = \"Rejected\",\n Closed = \"Closed\",\n}\n\nexport class TicketStatusResponse implements ITicketStatusResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n isReadonly!: boolean;\n color!: string;\n isInitial!: boolean;\n nextStates?: number[] | undefined;\n semantics!: TicketStatusEnum;\n\n constructor(data?: ITicketStatusResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.isReadonly = _data[\"isReadonly\"];\n this.color = _data[\"color\"];\n this.isInitial = _data[\"isInitial\"];\n if (Array.isArray(_data[\"nextStates\"])) {\n this.nextStates = [] as any;\n for (let item of _data[\"nextStates\"])\n this.nextStates!.push(item);\n }\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): TicketStatusResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TicketStatusResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"isReadonly\"] = this.isReadonly;\n data[\"color\"] = this.color;\n data[\"isInitial\"] = this.isInitial;\n if (Array.isArray(this.nextStates)) {\n data[\"nextStates\"] = [];\n for (let item of this.nextStates)\n data[\"nextStates\"].push(item);\n }\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface ITicketStatusResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n isReadonly: boolean;\n color: string;\n isInitial: boolean;\n nextStates?: number[] | undefined;\n semantics: TicketStatusEnum;\n}\n\nexport class TicketStatusResponseItemsResponseModel implements ITicketStatusResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TicketStatusResponse[] | undefined;\n\n constructor(data?: ITicketStatusResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TicketStatusResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TicketStatusResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TicketStatusResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITicketStatusResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TicketStatusResponse[] | undefined;\n}\n\nexport class TicketTestPlansResponse implements ITicketTestPlansResponse {\n testPlanId!: number;\n testCycleId!: number;\n projectId!: number;\n level3ProcessId?: string | undefined;\n testCycleName?: string | undefined;\n\n constructor(data?: ITicketTestPlansResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.testPlanId = _data[\"testPlanId\"];\n this.testCycleId = _data[\"testCycleId\"];\n this.projectId = _data[\"projectId\"];\n this.level3ProcessId = _data[\"level3ProcessId\"];\n this.testCycleName = _data[\"testCycleName\"];\n }\n }\n\n static fromJS(data: any): TicketTestPlansResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TicketTestPlansResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"testPlanId\"] = this.testPlanId;\n data[\"testCycleId\"] = this.testCycleId;\n data[\"projectId\"] = this.projectId;\n data[\"level3ProcessId\"] = this.level3ProcessId;\n data[\"testCycleName\"] = this.testCycleName;\n return data;\n }\n}\n\nexport interface ITicketTestPlansResponse {\n testPlanId: number;\n testCycleId: number;\n projectId: number;\n level3ProcessId?: string | undefined;\n testCycleName?: string | undefined;\n}\n\nexport class TicketTimesheetResponse implements ITicketTimesheetResponse {\n id!: number;\n userId!: number;\n date!: Date;\n effort!: number;\n statusId!: number;\n\n constructor(data?: ITicketTimesheetResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.userId = _data[\"userId\"];\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.effort = _data[\"effort\"];\n this.statusId = _data[\"statusId\"];\n }\n }\n\n static fromJS(data: any): TicketTimesheetResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TicketTimesheetResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"userId\"] = this.userId;\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n data[\"effort\"] = this.effort;\n data[\"statusId\"] = this.statusId;\n return data;\n }\n}\n\nexport interface ITicketTimesheetResponse {\n id: number;\n userId: number;\n date: Date;\n effort: number;\n statusId: number;\n}\n\nexport enum TimeFrequency {\n Daily = \"Daily\",\n Weekly = \"Weekly\",\n Monthly = \"Monthly\",\n}\n\nexport enum TimeMeasureEnum {\n Days = \"Days\",\n Minutes = \"Minutes\",\n Hours = \"Hours\",\n}\n\nexport class TimeMeasureNewOld implements ITimeMeasureNewOld {\n oldValue?: TimeMeasureEnum;\n newValue?: TimeMeasureEnum;\n\n constructor(data?: ITimeMeasureNewOld) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.oldValue = _data[\"oldValue\"];\n this.newValue = _data[\"newValue\"];\n }\n }\n\n static fromJS(data: any): TimeMeasureNewOld {\n data = typeof data === 'object' ? data : {};\n let result = new TimeMeasureNewOld();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"oldValue\"] = this.oldValue;\n data[\"newValue\"] = this.newValue;\n return data;\n }\n}\n\nexport interface ITimeMeasureNewOld {\n oldValue?: TimeMeasureEnum;\n newValue?: TimeMeasureEnum;\n}\n\nexport class TimesheetDashboardResponse implements ITimesheetDashboardResponse {\n date!: Date;\n userId!: number;\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n description?: string | undefined;\n hours!: number;\n hourCostRate!: number;\n hourSalesRate!: number;\n customText1?: string | undefined;\n customText2?: string | undefined;\n customText3?: string | undefined;\n readonly totalCost!: number;\n readonly totalSales!: number;\n changeRequestId?: number | undefined;\n ticketId?: number | undefined;\n taskId?: number | undefined;\n scheduleId?: number | undefined;\n\n constructor(data?: ITimesheetDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.userId = _data[\"userId\"];\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.description = _data[\"description\"];\n this.hours = _data[\"hours\"];\n this.hourCostRate = _data[\"hourCostRate\"];\n this.hourSalesRate = _data[\"hourSalesRate\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.customText3 = _data[\"customText3\"];\n (this).totalCost = _data[\"totalCost\"];\n (this).totalSales = _data[\"totalSales\"];\n this.changeRequestId = _data[\"changeRequestId\"];\n this.ticketId = _data[\"ticketId\"];\n this.taskId = _data[\"taskId\"];\n this.scheduleId = _data[\"scheduleId\"];\n }\n }\n\n static fromJS(data: any): TimesheetDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n data[\"userId\"] = this.userId;\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"description\"] = this.description;\n data[\"hours\"] = this.hours;\n data[\"hourCostRate\"] = this.hourCostRate;\n data[\"hourSalesRate\"] = this.hourSalesRate;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"customText3\"] = this.customText3;\n data[\"totalCost\"] = this.totalCost;\n data[\"totalSales\"] = this.totalSales;\n data[\"changeRequestId\"] = this.changeRequestId;\n data[\"ticketId\"] = this.ticketId;\n data[\"taskId\"] = this.taskId;\n data[\"scheduleId\"] = this.scheduleId;\n return data;\n }\n}\n\nexport interface ITimesheetDashboardResponse {\n date: Date;\n userId: number;\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n description?: string | undefined;\n hours: number;\n hourCostRate: number;\n hourSalesRate: number;\n customText1?: string | undefined;\n customText2?: string | undefined;\n customText3?: string | undefined;\n totalCost: number;\n totalSales: number;\n changeRequestId?: number | undefined;\n ticketId?: number | undefined;\n taskId?: number | undefined;\n scheduleId?: number | undefined;\n}\n\nexport class TimesheetDashboardResponseItemsResponseModel implements ITimesheetDashboardResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TimesheetDashboardResponse[] | undefined;\n\n constructor(data?: ITimesheetDashboardResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TimesheetDashboardResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TimesheetDashboardResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetDashboardResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITimesheetDashboardResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TimesheetDashboardResponse[] | undefined;\n}\n\nexport class TimesheetDeltaRequest implements ITimesheetDeltaRequest {\n insert?: InsertTimesheetRequest[] | undefined;\n update?: UpdateTimesheetRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n\n constructor(data?: ITimesheetDeltaRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertTimesheetRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateTimesheetRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteTenantIndetifyRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TimesheetDeltaRequest {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetDeltaRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITimesheetDeltaRequest {\n insert?: InsertTimesheetRequest[] | undefined;\n update?: UpdateTimesheetRequest[] | undefined;\n delete?: DeleteTenantIndetifyRequest[] | undefined;\n}\n\nexport class TimesheetImportedFileResponse implements ITimesheetImportedFileResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n createdAt!: Date;\n\n constructor(data?: ITimesheetImportedFileResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.createdAt = _data[\"createdAt\"] ? new Date(_data[\"createdAt\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): TimesheetImportedFileResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetImportedFileResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"createdAt\"] = this.createdAt ? this.createdAt.toISOString() : undefined;\n return data;\n }\n}\n\nexport interface ITimesheetImportedFileResponse {\n id: number;\n name: string;\n description?: string | undefined;\n createdAt: Date;\n}\n\nexport class TimesheetImportedFileResponseItemsResponseModel implements ITimesheetImportedFileResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TimesheetImportedFileResponse[] | undefined;\n\n constructor(data?: ITimesheetImportedFileResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TimesheetImportedFileResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TimesheetImportedFileResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetImportedFileResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITimesheetImportedFileResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TimesheetImportedFileResponse[] | undefined;\n}\n\nexport class TimesheetMergedResponse implements ITimesheetMergedResponse {\n userId!: number;\n projectId!: number;\n statusId!: number;\n totalEffort!: number;\n\n constructor(data?: ITimesheetMergedResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.userId = _data[\"userId\"];\n this.projectId = _data[\"projectId\"];\n this.statusId = _data[\"statusId\"];\n this.totalEffort = _data[\"totalEffort\"];\n }\n }\n\n static fromJS(data: any): TimesheetMergedResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetMergedResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"userId\"] = this.userId;\n data[\"projectId\"] = this.projectId;\n data[\"statusId\"] = this.statusId;\n data[\"totalEffort\"] = this.totalEffort;\n return data;\n }\n}\n\nexport interface ITimesheetMergedResponse {\n userId: number;\n projectId: number;\n statusId: number;\n totalEffort: number;\n}\n\nexport class TimesheetMergedResponseItemsResponseModel implements ITimesheetMergedResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TimesheetMergedResponse[] | undefined;\n\n constructor(data?: ITimesheetMergedResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TimesheetMergedResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TimesheetMergedResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetMergedResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITimesheetMergedResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TimesheetMergedResponse[] | undefined;\n}\n\nexport class TimesheetRecordedStatusResponse implements ITimesheetRecordedStatusResponse {\n date!: Date;\n totalEffort!: number;\n isFinished!: boolean;\n isWorkingDay!: boolean;\n isReleaseable!: boolean;\n\n constructor(data?: ITimesheetRecordedStatusResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.totalEffort = _data[\"totalEffort\"];\n this.isFinished = _data[\"isFinished\"];\n this.isWorkingDay = _data[\"isWorkingDay\"];\n this.isReleaseable = _data[\"isReleaseable\"];\n }\n }\n\n static fromJS(data: any): TimesheetRecordedStatusResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetRecordedStatusResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n data[\"totalEffort\"] = this.totalEffort;\n data[\"isFinished\"] = this.isFinished;\n data[\"isWorkingDay\"] = this.isWorkingDay;\n data[\"isReleaseable\"] = this.isReleaseable;\n return data;\n }\n}\n\nexport interface ITimesheetRecordedStatusResponse {\n date: Date;\n totalEffort: number;\n isFinished: boolean;\n isWorkingDay: boolean;\n isReleaseable: boolean;\n}\n\nexport class TimesheetRecordedStatusResponseItemsResponseModel implements ITimesheetRecordedStatusResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TimesheetRecordedStatusResponse[] | undefined;\n\n constructor(data?: ITimesheetRecordedStatusResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TimesheetRecordedStatusResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TimesheetRecordedStatusResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetRecordedStatusResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITimesheetRecordedStatusResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TimesheetRecordedStatusResponse[] | undefined;\n}\n\nexport class TimesheetRequiredFieldsRequest implements ITimesheetRequiredFieldsRequest {\n description!: boolean;\n changeRequestId!: boolean;\n ticketId!: boolean;\n taskId!: boolean;\n scheduleId!: boolean;\n\n constructor(data?: ITimesheetRequiredFieldsRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.description = _data[\"description\"];\n this.changeRequestId = _data[\"changeRequestId\"];\n this.ticketId = _data[\"ticketId\"];\n this.taskId = _data[\"taskId\"];\n this.scheduleId = _data[\"scheduleId\"];\n }\n }\n\n static fromJS(data: any): TimesheetRequiredFieldsRequest {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetRequiredFieldsRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"description\"] = this.description;\n data[\"changeRequestId\"] = this.changeRequestId;\n data[\"ticketId\"] = this.ticketId;\n data[\"taskId\"] = this.taskId;\n data[\"scheduleId\"] = this.scheduleId;\n return data;\n }\n}\n\nexport interface ITimesheetRequiredFieldsRequest {\n description: boolean;\n changeRequestId: boolean;\n ticketId: boolean;\n taskId: boolean;\n scheduleId: boolean;\n}\n\nexport class TimesheetRequiredFieldsResponse implements ITimesheetRequiredFieldsResponse {\n projectId!: number;\n description!: boolean;\n changeRequestId!: boolean;\n ticketId!: boolean;\n taskId!: boolean;\n scheduleId!: boolean;\n\n constructor(data?: ITimesheetRequiredFieldsResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectId = _data[\"projectId\"];\n this.description = _data[\"description\"];\n this.changeRequestId = _data[\"changeRequestId\"];\n this.ticketId = _data[\"ticketId\"];\n this.taskId = _data[\"taskId\"];\n this.scheduleId = _data[\"scheduleId\"];\n }\n }\n\n static fromJS(data: any): TimesheetRequiredFieldsResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetRequiredFieldsResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectId\"] = this.projectId;\n data[\"description\"] = this.description;\n data[\"changeRequestId\"] = this.changeRequestId;\n data[\"ticketId\"] = this.ticketId;\n data[\"taskId\"] = this.taskId;\n data[\"scheduleId\"] = this.scheduleId;\n return data;\n }\n}\n\nexport interface ITimesheetRequiredFieldsResponse {\n projectId: number;\n description: boolean;\n changeRequestId: boolean;\n ticketId: boolean;\n taskId: boolean;\n scheduleId: boolean;\n}\n\nexport class TimesheetRequiredFieldsResponseSimpleResponseModel implements ITimesheetRequiredFieldsResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TimesheetRequiredFieldsResponse;\n\n constructor(data?: ITimesheetRequiredFieldsResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TimesheetRequiredFieldsResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TimesheetRequiredFieldsResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetRequiredFieldsResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITimesheetRequiredFieldsResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TimesheetRequiredFieldsResponse;\n}\n\nexport class TimesheetResponse implements ITimesheetResponse {\n id!: number;\n date!: Date;\n userId!: number;\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n effort!: number;\n description?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n customText3?: string | undefined;\n changeRequestId?: number | undefined;\n ticketId?: number | undefined;\n statusId?: number | undefined;\n taskId?: number | undefined;\n scheduleId?: number | undefined;\n approvedOrRejectedByUserId?: number | undefined;\n\n constructor(data?: ITimesheetResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.userId = _data[\"userId\"];\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.effort = _data[\"effort\"];\n this.description = _data[\"description\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.customText3 = _data[\"customText3\"];\n this.changeRequestId = _data[\"changeRequestId\"];\n this.ticketId = _data[\"ticketId\"];\n this.statusId = _data[\"statusId\"];\n this.taskId = _data[\"taskId\"];\n this.scheduleId = _data[\"scheduleId\"];\n this.approvedOrRejectedByUserId = _data[\"approvedOrRejectedByUserId\"];\n }\n }\n\n static fromJS(data: any): TimesheetResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n data[\"userId\"] = this.userId;\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"effort\"] = this.effort;\n data[\"description\"] = this.description;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"customText3\"] = this.customText3;\n data[\"changeRequestId\"] = this.changeRequestId;\n data[\"ticketId\"] = this.ticketId;\n data[\"statusId\"] = this.statusId;\n data[\"taskId\"] = this.taskId;\n data[\"scheduleId\"] = this.scheduleId;\n data[\"approvedOrRejectedByUserId\"] = this.approvedOrRejectedByUserId;\n return data;\n }\n}\n\nexport interface ITimesheetResponse {\n id: number;\n date: Date;\n userId: number;\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n effort: number;\n description?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n customText3?: string | undefined;\n changeRequestId?: number | undefined;\n ticketId?: number | undefined;\n statusId?: number | undefined;\n taskId?: number | undefined;\n scheduleId?: number | undefined;\n approvedOrRejectedByUserId?: number | undefined;\n}\n\nexport class TimesheetResponseItemsResponseModel implements ITimesheetResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TimesheetResponse[] | undefined;\n\n constructor(data?: ITimesheetResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TimesheetResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TimesheetResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITimesheetResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TimesheetResponse[] | undefined;\n}\n\nexport class TimesheetResponseSimpleResponseModel implements ITimesheetResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TimesheetResponse;\n\n constructor(data?: ITimesheetResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TimesheetResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TimesheetResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITimesheetResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TimesheetResponse;\n}\n\nexport class TimesheetsConfigResponse implements ITimesheetsConfigResponse {\n id!: number;\n enableApprovalProcess!: boolean;\n enableEmailNotifications!: boolean;\n notifyWhenSubmitted!: boolean;\n notifyWhenApproved!: boolean;\n notifyWhenRejected!: boolean;\n requireCommentsWhenRejecting!: boolean;\n approvalFrequency!: TimeFrequency;\n minimumRecord!: number;\n minimumWorkingHoursPerDay!: number;\n allowOvertimeWeekendHolidayWork!: boolean;\n\n constructor(data?: ITimesheetsConfigResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.enableApprovalProcess = _data[\"enableApprovalProcess\"];\n this.enableEmailNotifications = _data[\"enableEmailNotifications\"];\n this.notifyWhenSubmitted = _data[\"notifyWhenSubmitted\"];\n this.notifyWhenApproved = _data[\"notifyWhenApproved\"];\n this.notifyWhenRejected = _data[\"notifyWhenRejected\"];\n this.requireCommentsWhenRejecting = _data[\"requireCommentsWhenRejecting\"];\n this.approvalFrequency = _data[\"approvalFrequency\"];\n this.minimumRecord = _data[\"minimumRecord\"];\n this.minimumWorkingHoursPerDay = _data[\"minimumWorkingHoursPerDay\"];\n this.allowOvertimeWeekendHolidayWork = _data[\"allowOvertimeWeekendHolidayWork\"];\n }\n }\n\n static fromJS(data: any): TimesheetsConfigResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetsConfigResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"enableApprovalProcess\"] = this.enableApprovalProcess;\n data[\"enableEmailNotifications\"] = this.enableEmailNotifications;\n data[\"notifyWhenSubmitted\"] = this.notifyWhenSubmitted;\n data[\"notifyWhenApproved\"] = this.notifyWhenApproved;\n data[\"notifyWhenRejected\"] = this.notifyWhenRejected;\n data[\"requireCommentsWhenRejecting\"] = this.requireCommentsWhenRejecting;\n data[\"approvalFrequency\"] = this.approvalFrequency;\n data[\"minimumRecord\"] = this.minimumRecord;\n data[\"minimumWorkingHoursPerDay\"] = this.minimumWorkingHoursPerDay;\n data[\"allowOvertimeWeekendHolidayWork\"] = this.allowOvertimeWeekendHolidayWork;\n return data;\n }\n}\n\nexport interface ITimesheetsConfigResponse {\n id: number;\n enableApprovalProcess: boolean;\n enableEmailNotifications: boolean;\n notifyWhenSubmitted: boolean;\n notifyWhenApproved: boolean;\n notifyWhenRejected: boolean;\n requireCommentsWhenRejecting: boolean;\n approvalFrequency: TimeFrequency;\n minimumRecord: number;\n minimumWorkingHoursPerDay: number;\n allowOvertimeWeekendHolidayWork: boolean;\n}\n\nexport class TimesheetsConfigResponseSimpleResponseModel implements ITimesheetsConfigResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TimesheetsConfigResponse;\n\n constructor(data?: ITimesheetsConfigResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TimesheetsConfigResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TimesheetsConfigResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetsConfigResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITimesheetsConfigResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TimesheetsConfigResponse;\n}\n\nexport class TimesheetsOneDayRequest implements ITimesheetsOneDayRequest {\n date!: Date;\n\n constructor(data?: ITimesheetsOneDayRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): TimesheetsOneDayRequest {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetsOneDayRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n return data;\n }\n}\n\nexport interface ITimesheetsOneDayRequest {\n date: Date;\n}\n\nexport class TimesheetsPeriodRequest implements ITimesheetsPeriodRequest {\n from!: Date;\n to!: Date;\n\n constructor(data?: ITimesheetsPeriodRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): TimesheetsPeriodRequest {\n data = typeof data === 'object' ? data : {};\n let result = new TimesheetsPeriodRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n return data;\n }\n}\n\nexport interface ITimesheetsPeriodRequest {\n from: Date;\n to: Date;\n}\n\nexport class TimeTravelConfigResponse implements ITimeTravelConfigResponse {\n id!: number;\n enableApprovalProcess!: boolean;\n enableEmailNotifications!: boolean;\n notifyWhenSubmitted!: boolean;\n notifyWhenApproved!: boolean;\n notifyWhenRejected!: boolean;\n requireCommentsWhenRejecting!: boolean;\n\n constructor(data?: ITimeTravelConfigResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.enableApprovalProcess = _data[\"enableApprovalProcess\"];\n this.enableEmailNotifications = _data[\"enableEmailNotifications\"];\n this.notifyWhenSubmitted = _data[\"notifyWhenSubmitted\"];\n this.notifyWhenApproved = _data[\"notifyWhenApproved\"];\n this.notifyWhenRejected = _data[\"notifyWhenRejected\"];\n this.requireCommentsWhenRejecting = _data[\"requireCommentsWhenRejecting\"];\n }\n }\n\n static fromJS(data: any): TimeTravelConfigResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TimeTravelConfigResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"enableApprovalProcess\"] = this.enableApprovalProcess;\n data[\"enableEmailNotifications\"] = this.enableEmailNotifications;\n data[\"notifyWhenSubmitted\"] = this.notifyWhenSubmitted;\n data[\"notifyWhenApproved\"] = this.notifyWhenApproved;\n data[\"notifyWhenRejected\"] = this.notifyWhenRejected;\n data[\"requireCommentsWhenRejecting\"] = this.requireCommentsWhenRejecting;\n return data;\n }\n}\n\nexport interface ITimeTravelConfigResponse {\n id: number;\n enableApprovalProcess: boolean;\n enableEmailNotifications: boolean;\n notifyWhenSubmitted: boolean;\n notifyWhenApproved: boolean;\n notifyWhenRejected: boolean;\n requireCommentsWhenRejecting: boolean;\n}\n\nexport class TimeTravelConfigResponseSimpleResponseModel implements ITimeTravelConfigResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TimeTravelConfigResponse;\n\n constructor(data?: ITimeTravelConfigResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TimeTravelConfigResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TimeTravelConfigResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TimeTravelConfigResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITimeTravelConfigResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TimeTravelConfigResponse;\n}\n\nexport class TimeTravelDashboardRowResponse implements ITimeTravelDashboardRowResponse {\n id!: number;\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n year!: number;\n month!: MonthEnum;\n startDate?: Date | undefined;\n endDate?: Date | undefined;\n amount!: number;\n\n constructor(data?: ITimeTravelDashboardRowResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.year = _data[\"year\"];\n this.month = _data[\"month\"];\n this.startDate = _data[\"startDate\"] ? new Date(_data[\"startDate\"].toString()) : undefined;\n this.endDate = _data[\"endDate\"] ? new Date(_data[\"endDate\"].toString()) : undefined;\n this.amount = _data[\"amount\"];\n }\n }\n\n static fromJS(data: any): TimeTravelDashboardRowResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TimeTravelDashboardRowResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"year\"] = this.year;\n data[\"month\"] = this.month;\n data[\"startDate\"] = this.startDate ? this.startDate.toISOString() : undefined;\n data[\"endDate\"] = this.endDate ? this.endDate.toISOString() : undefined;\n data[\"amount\"] = this.amount;\n return data;\n }\n}\n\nexport interface ITimeTravelDashboardRowResponse {\n id: number;\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n year: number;\n month: MonthEnum;\n startDate?: Date | undefined;\n endDate?: Date | undefined;\n amount: number;\n}\n\nexport class TimeTravelPermission implements ITimeTravelPermission {\n timeAndTravel!: boolean;\n\n constructor(data?: ITimeTravelPermission) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.timeAndTravel = _data[\"timeAndTravel\"];\n }\n }\n\n static fromJS(data: any): TimeTravelPermission {\n data = typeof data === 'object' ? data : {};\n let result = new TimeTravelPermission();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"timeAndTravel\"] = this.timeAndTravel;\n return data;\n }\n}\n\nexport interface ITimeTravelPermission {\n timeAndTravel: boolean;\n}\n\nexport enum TimeTravelStatusEnum {\n Created = \"Created\",\n Released = \"Released\",\n Approved = \"Approved\",\n Rejected = \"Rejected\",\n}\n\nexport class TimeTravelStatusResponse implements ITimeTravelStatusResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n isReadonly!: boolean;\n color!: string;\n isInitial!: boolean;\n nextStates?: number[] | undefined;\n semantics!: TimeTravelStatusEnum;\n\n constructor(data?: ITimeTravelStatusResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.isReadonly = _data[\"isReadonly\"];\n this.color = _data[\"color\"];\n this.isInitial = _data[\"isInitial\"];\n if (Array.isArray(_data[\"nextStates\"])) {\n this.nextStates = [] as any;\n for (let item of _data[\"nextStates\"])\n this.nextStates!.push(item);\n }\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): TimeTravelStatusResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TimeTravelStatusResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"isReadonly\"] = this.isReadonly;\n data[\"color\"] = this.color;\n data[\"isInitial\"] = this.isInitial;\n if (Array.isArray(this.nextStates)) {\n data[\"nextStates\"] = [];\n for (let item of this.nextStates)\n data[\"nextStates\"].push(item);\n }\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface ITimeTravelStatusResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n isReadonly: boolean;\n color: string;\n isInitial: boolean;\n nextStates?: number[] | undefined;\n semantics: TimeTravelStatusEnum;\n}\n\nexport class TimeTravelStatusResponseItemsResponseModel implements ITimeTravelStatusResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TimeTravelStatusResponse[] | undefined;\n\n constructor(data?: ITimeTravelStatusResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TimeTravelStatusResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TimeTravelStatusResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TimeTravelStatusResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITimeTravelStatusResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TimeTravelStatusResponse[] | undefined;\n}\n\nexport class TokenResponseModel implements ITokenResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n token?: string | undefined;\n isTenantInitialized?: boolean | undefined;\n user?: UserModel;\n\n constructor(data?: ITokenResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.token = _data[\"token\"];\n this.isTenantInitialized = _data[\"isTenantInitialized\"];\n this.user = _data[\"user\"] ? UserModel.fromJS(_data[\"user\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TokenResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TokenResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"token\"] = this.token;\n data[\"isTenantInitialized\"] = this.isTenantInitialized;\n data[\"user\"] = this.user ? this.user.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITokenResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n token?: string | undefined;\n isTenantInitialized?: boolean | undefined;\n user?: UserModel;\n}\n\nexport enum TokenTypeEnum {\n Guest = \"Guest\",\n User = \"User\",\n ServerAdmin = \"ServerAdmin\",\n SiteAdmin = \"SiteAdmin\",\n ProjectManager = \"ProjectManager\",\n ProjectManagerSubstitute = \"ProjectManagerSubstitute\",\n}\n\nexport class TotalTimesheetDashboardResponse implements ITotalTimesheetDashboardResponse {\n hours!: number;\n cost!: number;\n sales!: number;\n\n constructor(data?: ITotalTimesheetDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.hours = _data[\"hours\"];\n this.cost = _data[\"cost\"];\n this.sales = _data[\"sales\"];\n }\n }\n\n static fromJS(data: any): TotalTimesheetDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TotalTimesheetDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"hours\"] = this.hours;\n data[\"cost\"] = this.cost;\n data[\"sales\"] = this.sales;\n return data;\n }\n}\n\nexport interface ITotalTimesheetDashboardResponse {\n hours: number;\n cost: number;\n sales: number;\n}\n\nexport class TotalTimesheetDashboardResponseSimpleResponseModel implements ITotalTimesheetDashboardResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TotalTimesheetDashboardResponse;\n\n constructor(data?: ITotalTimesheetDashboardResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TotalTimesheetDashboardResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TotalTimesheetDashboardResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TotalTimesheetDashboardResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITotalTimesheetDashboardResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TotalTimesheetDashboardResponse;\n}\n\nexport class TrainingCycleDeltaRequest implements ITrainingCycleDeltaRequest {\n insert?: InsertTrainingCycleRequest[] | undefined;\n update?: UpdateTrainingCycleRequest[] | undefined;\n delete?: DeleteTrainingCycleRequest[] | undefined;\n\n constructor(data?: ITrainingCycleDeltaRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insert\"])) {\n this.insert = [] as any;\n for (let item of _data[\"insert\"])\n this.insert!.push(InsertTrainingCycleRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"update\"])) {\n this.update = [] as any;\n for (let item of _data[\"update\"])\n this.update!.push(UpdateTrainingCycleRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"delete\"])) {\n this.delete = [] as any;\n for (let item of _data[\"delete\"])\n this.delete!.push(DeleteTrainingCycleRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TrainingCycleDeltaRequest {\n data = typeof data === 'object' ? data : {};\n let result = new TrainingCycleDeltaRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insert)) {\n data[\"insert\"] = [];\n for (let item of this.insert)\n data[\"insert\"].push(item.toJSON());\n }\n if (Array.isArray(this.update)) {\n data[\"update\"] = [];\n for (let item of this.update)\n data[\"update\"].push(item.toJSON());\n }\n if (Array.isArray(this.delete)) {\n data[\"delete\"] = [];\n for (let item of this.delete)\n data[\"delete\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITrainingCycleDeltaRequest {\n insert?: InsertTrainingCycleRequest[] | undefined;\n update?: UpdateTrainingCycleRequest[] | undefined;\n delete?: DeleteTrainingCycleRequest[] | undefined;\n}\n\nexport class TrainingDashboardFilterRequest implements ITrainingDashboardFilterRequest {\n participants?: number[] | undefined;\n projectTeamIds?: number[] | undefined;\n projectRoleIds?: number[] | undefined;\n\n constructor(data?: ITrainingDashboardFilterRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"participants\"])) {\n this.participants = [] as any;\n for (let item of _data[\"participants\"])\n this.participants!.push(item);\n }\n if (Array.isArray(_data[\"projectTeamIds\"])) {\n this.projectTeamIds = [] as any;\n for (let item of _data[\"projectTeamIds\"])\n this.projectTeamIds!.push(item);\n }\n if (Array.isArray(_data[\"projectRoleIds\"])) {\n this.projectRoleIds = [] as any;\n for (let item of _data[\"projectRoleIds\"])\n this.projectRoleIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): TrainingDashboardFilterRequest {\n data = typeof data === 'object' ? data : {};\n let result = new TrainingDashboardFilterRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.participants)) {\n data[\"participants\"] = [];\n for (let item of this.participants)\n data[\"participants\"].push(item);\n }\n if (Array.isArray(this.projectTeamIds)) {\n data[\"projectTeamIds\"] = [];\n for (let item of this.projectTeamIds)\n data[\"projectTeamIds\"].push(item);\n }\n if (Array.isArray(this.projectRoleIds)) {\n data[\"projectRoleIds\"] = [];\n for (let item of this.projectRoleIds)\n data[\"projectRoleIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface ITrainingDashboardFilterRequest {\n participants?: number[] | undefined;\n projectTeamIds?: number[] | undefined;\n projectRoleIds?: number[] | undefined;\n}\n\nexport class TrainingDashboardResponse implements ITrainingDashboardResponse {\n trainingsPerStatusCounts?: { [key: string]: number; } | undefined;\n trainingsPerParticipantsAndStatusCounts?: { [key: string]: { [key: string]: number; }; } | undefined;\n participantsCount!: number;\n\n constructor(data?: ITrainingDashboardResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (_data[\"trainingsPerStatusCounts\"]) {\n this.trainingsPerStatusCounts = {} as any;\n for (let key in _data[\"trainingsPerStatusCounts\"]) {\n if (_data[\"trainingsPerStatusCounts\"].hasOwnProperty(key))\n (this.trainingsPerStatusCounts)![key] = _data[\"trainingsPerStatusCounts\"][key];\n }\n }\n if (_data[\"trainingsPerParticipantsAndStatusCounts\"]) {\n this.trainingsPerParticipantsAndStatusCounts = {} as any;\n for (let key in _data[\"trainingsPerParticipantsAndStatusCounts\"]) {\n if (_data[\"trainingsPerParticipantsAndStatusCounts\"].hasOwnProperty(key))\n (this.trainingsPerParticipantsAndStatusCounts)![key] = _data[\"trainingsPerParticipantsAndStatusCounts\"][key] !== undefined ? _data[\"trainingsPerParticipantsAndStatusCounts\"][key] : {};\n }\n }\n this.participantsCount = _data[\"participantsCount\"];\n }\n }\n\n static fromJS(data: any): TrainingDashboardResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TrainingDashboardResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (this.trainingsPerStatusCounts) {\n data[\"trainingsPerStatusCounts\"] = {};\n for (let key in this.trainingsPerStatusCounts) {\n if (this.trainingsPerStatusCounts.hasOwnProperty(key))\n (data[\"trainingsPerStatusCounts\"])[key] = (this.trainingsPerStatusCounts)[key];\n }\n }\n if (this.trainingsPerParticipantsAndStatusCounts) {\n data[\"trainingsPerParticipantsAndStatusCounts\"] = {};\n for (let key in this.trainingsPerParticipantsAndStatusCounts) {\n if (this.trainingsPerParticipantsAndStatusCounts.hasOwnProperty(key))\n (data[\"trainingsPerParticipantsAndStatusCounts\"])[key] = (this.trainingsPerParticipantsAndStatusCounts)[key];\n }\n }\n data[\"participantsCount\"] = this.participantsCount;\n return data;\n }\n}\n\nexport interface ITrainingDashboardResponse {\n trainingsPerStatusCounts?: { [key: string]: number; } | undefined;\n trainingsPerParticipantsAndStatusCounts?: { [key: string]: { [key: string]: number; }; } | undefined;\n participantsCount: number;\n}\n\nexport class TrainingDashboardResponseSimpleResponseModel implements ITrainingDashboardResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TrainingDashboardResponse;\n\n constructor(data?: ITrainingDashboardResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TrainingDashboardResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TrainingDashboardResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TrainingDashboardResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITrainingDashboardResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TrainingDashboardResponse;\n}\n\nexport class TrainingPermission implements ITrainingPermission {\n training!: boolean;\n createTrainingCycle!: boolean;\n maintainTrainingPlan!: boolean;\n createSurveys!: boolean;\n\n constructor(data?: ITrainingPermission) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.training = _data[\"training\"];\n this.createTrainingCycle = _data[\"createTrainingCycle\"];\n this.maintainTrainingPlan = _data[\"maintainTrainingPlan\"];\n this.createSurveys = _data[\"createSurveys\"];\n }\n }\n\n static fromJS(data: any): TrainingPermission {\n data = typeof data === 'object' ? data : {};\n let result = new TrainingPermission();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"training\"] = this.training;\n data[\"createTrainingCycle\"] = this.createTrainingCycle;\n data[\"maintainTrainingPlan\"] = this.maintainTrainingPlan;\n data[\"createSurveys\"] = this.createSurveys;\n return data;\n }\n}\n\nexport interface ITrainingPermission {\n training: boolean;\n createTrainingCycle: boolean;\n maintainTrainingPlan: boolean;\n createSurveys: boolean;\n}\n\nexport class TrainingPlanRowResponse implements ITrainingPlanRowResponse {\n id!: number;\n isActive!: boolean;\n trainingCycleId!: number;\n trainerUserId?: number | undefined;\n location?: string | undefined;\n plannedDate?: Date | undefined;\n plannedTime?: number | undefined;\n plannedTimeTo?: number | undefined;\n duration?: number | undefined;\n linkToMaterial?: string | undefined;\n linkToVideo?: string | undefined;\n level3ProcessId?: string | undefined;\n level3ProcessName?: string | undefined;\n participantUserIds?: number[] | undefined;\n\n constructor(data?: ITrainingPlanRowResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.trainingCycleId = _data[\"trainingCycleId\"];\n this.trainerUserId = _data[\"trainerUserId\"];\n this.location = _data[\"location\"];\n this.plannedDate = _data[\"plannedDate\"] ? new Date(_data[\"plannedDate\"].toString()) : undefined;\n this.plannedTime = _data[\"plannedTime\"];\n this.plannedTimeTo = _data[\"plannedTimeTo\"];\n this.duration = _data[\"duration\"];\n this.linkToMaterial = _data[\"linkToMaterial\"];\n this.linkToVideo = _data[\"linkToVideo\"];\n this.level3ProcessId = _data[\"level3ProcessId\"];\n this.level3ProcessName = _data[\"level3ProcessName\"];\n if (Array.isArray(_data[\"participantUserIds\"])) {\n this.participantUserIds = [] as any;\n for (let item of _data[\"participantUserIds\"])\n this.participantUserIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): TrainingPlanRowResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TrainingPlanRowResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"trainingCycleId\"] = this.trainingCycleId;\n data[\"trainerUserId\"] = this.trainerUserId;\n data[\"location\"] = this.location;\n data[\"plannedDate\"] = this.plannedDate ? formatDate(this.plannedDate) : undefined;\n data[\"plannedTime\"] = this.plannedTime;\n data[\"plannedTimeTo\"] = this.plannedTimeTo;\n data[\"duration\"] = this.duration;\n data[\"linkToMaterial\"] = this.linkToMaterial;\n data[\"linkToVideo\"] = this.linkToVideo;\n data[\"level3ProcessId\"] = this.level3ProcessId;\n data[\"level3ProcessName\"] = this.level3ProcessName;\n if (Array.isArray(this.participantUserIds)) {\n data[\"participantUserIds\"] = [];\n for (let item of this.participantUserIds)\n data[\"participantUserIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface ITrainingPlanRowResponse {\n id: number;\n isActive: boolean;\n trainingCycleId: number;\n trainerUserId?: number | undefined;\n location?: string | undefined;\n plannedDate?: Date | undefined;\n plannedTime?: number | undefined;\n plannedTimeTo?: number | undefined;\n duration?: number | undefined;\n linkToMaterial?: string | undefined;\n linkToVideo?: string | undefined;\n level3ProcessId?: string | undefined;\n level3ProcessName?: string | undefined;\n participantUserIds?: number[] | undefined;\n}\n\nexport class TrainingPlanRowResponseItemsResponseModel implements ITrainingPlanRowResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TrainingPlanRowResponse[] | undefined;\n\n constructor(data?: ITrainingPlanRowResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TrainingPlanRowResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TrainingPlanRowResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TrainingPlanRowResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITrainingPlanRowResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TrainingPlanRowResponse[] | undefined;\n}\n\nexport class TrainingPlanRowResponseSimpleResponseModel implements ITrainingPlanRowResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TrainingPlanRowResponse;\n\n constructor(data?: ITrainingPlanRowResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TrainingPlanRowResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TrainingPlanRowResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TrainingPlanRowResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITrainingPlanRowResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TrainingPlanRowResponse;\n}\n\nexport enum TrainingStatusEnum {\n NotStarted = \"NotStarted\",\n InProgress = \"InProgress\",\n Completed = \"Completed\",\n}\n\nexport class TrainingStatusResponse implements ITrainingStatusResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n isReadonly!: boolean;\n color!: string;\n isInitial!: boolean;\n nextStates?: number[] | undefined;\n semantics!: TrainingStatusEnum;\n\n constructor(data?: ITrainingStatusResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.isReadonly = _data[\"isReadonly\"];\n this.color = _data[\"color\"];\n this.isInitial = _data[\"isInitial\"];\n if (Array.isArray(_data[\"nextStates\"])) {\n this.nextStates = [] as any;\n for (let item of _data[\"nextStates\"])\n this.nextStates!.push(item);\n }\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): TrainingStatusResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TrainingStatusResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"isReadonly\"] = this.isReadonly;\n data[\"color\"] = this.color;\n data[\"isInitial\"] = this.isInitial;\n if (Array.isArray(this.nextStates)) {\n data[\"nextStates\"] = [];\n for (let item of this.nextStates)\n data[\"nextStates\"].push(item);\n }\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface ITrainingStatusResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n isReadonly: boolean;\n color: string;\n isInitial: boolean;\n nextStates?: number[] | undefined;\n semantics: TrainingStatusEnum;\n}\n\nexport class TrainingStatusResponseItemsResponseModel implements ITrainingStatusResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TrainingStatusResponse[] | undefined;\n\n constructor(data?: ITrainingStatusResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TrainingStatusResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TrainingStatusResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TrainingStatusResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITrainingStatusResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TrainingStatusResponse[] | undefined;\n}\n\nexport enum TravelByEnum {\n CompanyCar = \"CompanyCar\",\n Bus = \"Bus\",\n Train = \"Train\",\n Plane = \"Plane\",\n PrivateCar = \"PrivateCar\",\n Other = \"Other\",\n}\n\nexport class TravelExpenseItemResponse implements ITravelExpenseItemResponse {\n id!: number;\n costTypeId!: number;\n amountProjectCurrency!: number;\n receiptCurrencyId?: number | undefined;\n amountReceiptCurrency?: number | undefined;\n attachments?: AttachmentResponse[] | undefined;\n\n constructor(data?: ITravelExpenseItemResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.costTypeId = _data[\"costTypeId\"];\n this.amountProjectCurrency = _data[\"amountProjectCurrency\"];\n this.receiptCurrencyId = _data[\"receiptCurrencyId\"];\n this.amountReceiptCurrency = _data[\"amountReceiptCurrency\"];\n if (Array.isArray(_data[\"attachments\"])) {\n this.attachments = [] as any;\n for (let item of _data[\"attachments\"])\n this.attachments!.push(AttachmentResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TravelExpenseItemResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TravelExpenseItemResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"costTypeId\"] = this.costTypeId;\n data[\"amountProjectCurrency\"] = this.amountProjectCurrency;\n data[\"receiptCurrencyId\"] = this.receiptCurrencyId;\n data[\"amountReceiptCurrency\"] = this.amountReceiptCurrency;\n if (Array.isArray(this.attachments)) {\n data[\"attachments\"] = [];\n for (let item of this.attachments)\n data[\"attachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITravelExpenseItemResponse {\n id: number;\n costTypeId: number;\n amountProjectCurrency: number;\n receiptCurrencyId?: number | undefined;\n amountReceiptCurrency?: number | undefined;\n attachments?: AttachmentResponse[] | undefined;\n}\n\nexport class TravelExpenseResponse implements ITravelExpenseResponse {\n id!: number;\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n description!: string;\n customText1?: string | undefined;\n customText2?: string | undefined;\n statusId!: number;\n userId!: number;\n approvedOrRejectedByUserId?: number | undefined;\n approvedOrRejectedOn?: Date | undefined;\n travelRequestId?: number | undefined;\n destinationCountryId!: number;\n destinationCity!: string;\n estimatedCosts?: number | undefined;\n advancePayment?: number | undefined;\n amount!: number;\n freeMeals!: boolean;\n freeAccommodation!: boolean;\n travelBy!: TravelByEnum;\n regNumber?: string | undefined;\n distance?: string | undefined;\n startKilemeter?: string | undefined;\n endKilometer?: string | undefined;\n leaveDepartureDate!: Date;\n leaveDepartureTime!: number;\n leaveBorderCrossDate?: Date | undefined;\n leaveBorderCrossTime?: number | undefined;\n leaveArrivalDate?: Date | undefined;\n leaveArrivalTime?: number | undefined;\n readonly leaveTravelTimeInMinutes?: number | undefined;\n returnDepartureDate?: Date | undefined;\n returnDepartureTime?: number | undefined;\n returnBorderCrossDate?: Date | undefined;\n returnBorderCrossTime?: number | undefined;\n returnArrivalDate!: Date;\n returnArrivalTime!: number;\n readonly returnTravelTimeInMinutes?: number | undefined;\n readonly totalTravelDurationInMinutes!: number;\n travelExpenseItems?: TravelExpenseItemResponse[] | undefined;\n\n constructor(data?: ITravelExpenseResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.description = _data[\"description\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.statusId = _data[\"statusId\"];\n this.userId = _data[\"userId\"];\n this.approvedOrRejectedByUserId = _data[\"approvedOrRejectedByUserId\"];\n this.approvedOrRejectedOn = _data[\"approvedOrRejectedOn\"] ? new Date(_data[\"approvedOrRejectedOn\"].toString()) : undefined;\n this.travelRequestId = _data[\"travelRequestId\"];\n this.destinationCountryId = _data[\"destinationCountryId\"];\n this.destinationCity = _data[\"destinationCity\"];\n this.estimatedCosts = _data[\"estimatedCosts\"];\n this.advancePayment = _data[\"advancePayment\"];\n this.amount = _data[\"amount\"];\n this.freeMeals = _data[\"freeMeals\"];\n this.freeAccommodation = _data[\"freeAccommodation\"];\n this.travelBy = _data[\"travelBy\"];\n this.regNumber = _data[\"regNumber\"];\n this.distance = _data[\"distance\"];\n this.startKilemeter = _data[\"startKilemeter\"];\n this.endKilometer = _data[\"endKilometer\"];\n this.leaveDepartureDate = _data[\"leaveDepartureDate\"] ? new Date(_data[\"leaveDepartureDate\"].toString()) : undefined;\n this.leaveDepartureTime = _data[\"leaveDepartureTime\"];\n this.leaveBorderCrossDate = _data[\"leaveBorderCrossDate\"] ? new Date(_data[\"leaveBorderCrossDate\"].toString()) : undefined;\n this.leaveBorderCrossTime = _data[\"leaveBorderCrossTime\"];\n this.leaveArrivalDate = _data[\"leaveArrivalDate\"] ? new Date(_data[\"leaveArrivalDate\"].toString()) : undefined;\n this.leaveArrivalTime = _data[\"leaveArrivalTime\"];\n (this).leaveTravelTimeInMinutes = _data[\"leaveTravelTimeInMinutes\"];\n this.returnDepartureDate = _data[\"returnDepartureDate\"] ? new Date(_data[\"returnDepartureDate\"].toString()) : undefined;\n this.returnDepartureTime = _data[\"returnDepartureTime\"];\n this.returnBorderCrossDate = _data[\"returnBorderCrossDate\"] ? new Date(_data[\"returnBorderCrossDate\"].toString()) : undefined;\n this.returnBorderCrossTime = _data[\"returnBorderCrossTime\"];\n this.returnArrivalDate = _data[\"returnArrivalDate\"] ? new Date(_data[\"returnArrivalDate\"].toString()) : undefined;\n this.returnArrivalTime = _data[\"returnArrivalTime\"];\n (this).returnTravelTimeInMinutes = _data[\"returnTravelTimeInMinutes\"];\n (this).totalTravelDurationInMinutes = _data[\"totalTravelDurationInMinutes\"];\n if (Array.isArray(_data[\"travelExpenseItems\"])) {\n this.travelExpenseItems = [] as any;\n for (let item of _data[\"travelExpenseItems\"])\n this.travelExpenseItems!.push(TravelExpenseItemResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TravelExpenseResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TravelExpenseResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"description\"] = this.description;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"statusId\"] = this.statusId;\n data[\"userId\"] = this.userId;\n data[\"approvedOrRejectedByUserId\"] = this.approvedOrRejectedByUserId;\n data[\"approvedOrRejectedOn\"] = this.approvedOrRejectedOn ? this.approvedOrRejectedOn.toISOString() : undefined;\n data[\"travelRequestId\"] = this.travelRequestId;\n data[\"destinationCountryId\"] = this.destinationCountryId;\n data[\"destinationCity\"] = this.destinationCity;\n data[\"estimatedCosts\"] = this.estimatedCosts;\n data[\"advancePayment\"] = this.advancePayment;\n data[\"amount\"] = this.amount;\n data[\"freeMeals\"] = this.freeMeals;\n data[\"freeAccommodation\"] = this.freeAccommodation;\n data[\"travelBy\"] = this.travelBy;\n data[\"regNumber\"] = this.regNumber;\n data[\"distance\"] = this.distance;\n data[\"startKilemeter\"] = this.startKilemeter;\n data[\"endKilometer\"] = this.endKilometer;\n data[\"leaveDepartureDate\"] = this.leaveDepartureDate ? formatDate(this.leaveDepartureDate) : undefined;\n data[\"leaveDepartureTime\"] = this.leaveDepartureTime;\n data[\"leaveBorderCrossDate\"] = this.leaveBorderCrossDate ? formatDate(this.leaveBorderCrossDate) : undefined;\n data[\"leaveBorderCrossTime\"] = this.leaveBorderCrossTime;\n data[\"leaveArrivalDate\"] = this.leaveArrivalDate ? formatDate(this.leaveArrivalDate) : undefined;\n data[\"leaveArrivalTime\"] = this.leaveArrivalTime;\n data[\"leaveTravelTimeInMinutes\"] = this.leaveTravelTimeInMinutes;\n data[\"returnDepartureDate\"] = this.returnDepartureDate ? formatDate(this.returnDepartureDate) : undefined;\n data[\"returnDepartureTime\"] = this.returnDepartureTime;\n data[\"returnBorderCrossDate\"] = this.returnBorderCrossDate ? formatDate(this.returnBorderCrossDate) : undefined;\n data[\"returnBorderCrossTime\"] = this.returnBorderCrossTime;\n data[\"returnArrivalDate\"] = this.returnArrivalDate ? formatDate(this.returnArrivalDate) : undefined;\n data[\"returnArrivalTime\"] = this.returnArrivalTime;\n data[\"returnTravelTimeInMinutes\"] = this.returnTravelTimeInMinutes;\n data[\"totalTravelDurationInMinutes\"] = this.totalTravelDurationInMinutes;\n if (Array.isArray(this.travelExpenseItems)) {\n data[\"travelExpenseItems\"] = [];\n for (let item of this.travelExpenseItems)\n data[\"travelExpenseItems\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITravelExpenseResponse {\n id: number;\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n description: string;\n customText1?: string | undefined;\n customText2?: string | undefined;\n statusId: number;\n userId: number;\n approvedOrRejectedByUserId?: number | undefined;\n approvedOrRejectedOn?: Date | undefined;\n travelRequestId?: number | undefined;\n destinationCountryId: number;\n destinationCity: string;\n estimatedCosts?: number | undefined;\n advancePayment?: number | undefined;\n amount: number;\n freeMeals: boolean;\n freeAccommodation: boolean;\n travelBy: TravelByEnum;\n regNumber?: string | undefined;\n distance?: string | undefined;\n startKilemeter?: string | undefined;\n endKilometer?: string | undefined;\n leaveDepartureDate: Date;\n leaveDepartureTime: number;\n leaveBorderCrossDate?: Date | undefined;\n leaveBorderCrossTime?: number | undefined;\n leaveArrivalDate?: Date | undefined;\n leaveArrivalTime?: number | undefined;\n leaveTravelTimeInMinutes?: number | undefined;\n returnDepartureDate?: Date | undefined;\n returnDepartureTime?: number | undefined;\n returnBorderCrossDate?: Date | undefined;\n returnBorderCrossTime?: number | undefined;\n returnArrivalDate: Date;\n returnArrivalTime: number;\n returnTravelTimeInMinutes?: number | undefined;\n totalTravelDurationInMinutes: number;\n travelExpenseItems?: TravelExpenseItemResponse[] | undefined;\n}\n\nexport class TravelExpenseResponseItemsResponseModel implements ITravelExpenseResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TravelExpenseResponse[] | undefined;\n\n constructor(data?: ITravelExpenseResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TravelExpenseResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TravelExpenseResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TravelExpenseResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITravelExpenseResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TravelExpenseResponse[] | undefined;\n}\n\nexport class TravelExpenseResponseSimpleResponseModel implements ITravelExpenseResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TravelExpenseResponse;\n\n constructor(data?: ITravelExpenseResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TravelExpenseResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TravelExpenseResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TravelExpenseResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITravelExpenseResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TravelExpenseResponse;\n}\n\nexport class TravelExpenseTotalsResponse implements ITravelExpenseTotalsResponse {\n totalEstimatedCosts!: number;\n totalAmounts!: number;\n totalTravelDurationInMinutes!: number;\n totalLeaveTravelTimeInMinutes!: number;\n totalReturnTravelTimeInMinutes!: number;\n\n constructor(data?: ITravelExpenseTotalsResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.totalEstimatedCosts = _data[\"totalEstimatedCosts\"];\n this.totalAmounts = _data[\"totalAmounts\"];\n this.totalTravelDurationInMinutes = _data[\"totalTravelDurationInMinutes\"];\n this.totalLeaveTravelTimeInMinutes = _data[\"totalLeaveTravelTimeInMinutes\"];\n this.totalReturnTravelTimeInMinutes = _data[\"totalReturnTravelTimeInMinutes\"];\n }\n }\n\n static fromJS(data: any): TravelExpenseTotalsResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TravelExpenseTotalsResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"totalEstimatedCosts\"] = this.totalEstimatedCosts;\n data[\"totalAmounts\"] = this.totalAmounts;\n data[\"totalTravelDurationInMinutes\"] = this.totalTravelDurationInMinutes;\n data[\"totalLeaveTravelTimeInMinutes\"] = this.totalLeaveTravelTimeInMinutes;\n data[\"totalReturnTravelTimeInMinutes\"] = this.totalReturnTravelTimeInMinutes;\n return data;\n }\n}\n\nexport interface ITravelExpenseTotalsResponse {\n totalEstimatedCosts: number;\n totalAmounts: number;\n totalTravelDurationInMinutes: number;\n totalLeaveTravelTimeInMinutes: number;\n totalReturnTravelTimeInMinutes: number;\n}\n\nexport class TravelExpenseTotalsResponseSimpleResponseModel implements ITravelExpenseTotalsResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TravelExpenseTotalsResponse;\n\n constructor(data?: ITravelExpenseTotalsResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TravelExpenseTotalsResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TravelExpenseTotalsResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TravelExpenseTotalsResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITravelExpenseTotalsResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TravelExpenseTotalsResponse;\n}\n\nexport class TravelRequestResponse implements ITravelRequestResponse {\n id!: number;\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n description!: string;\n customText1?: string | undefined;\n customText2?: string | undefined;\n statusId!: number;\n userId!: number;\n approvedOrRejectedByUserId?: number | undefined;\n approvedOrRejectedOn?: Date | undefined;\n destinationCountryId!: number;\n destinationCity!: string;\n departure!: Date;\n return!: Date;\n estimatedCosts!: number;\n advancePayment?: number | undefined;\n freeMeals!: boolean;\n freeAccommodation!: boolean;\n travelBy!: TravelByEnum;\n\n constructor(data?: ITravelRequestResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.description = _data[\"description\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.statusId = _data[\"statusId\"];\n this.userId = _data[\"userId\"];\n this.approvedOrRejectedByUserId = _data[\"approvedOrRejectedByUserId\"];\n this.approvedOrRejectedOn = _data[\"approvedOrRejectedOn\"] ? new Date(_data[\"approvedOrRejectedOn\"].toString()) : undefined;\n this.destinationCountryId = _data[\"destinationCountryId\"];\n this.destinationCity = _data[\"destinationCity\"];\n this.departure = _data[\"departure\"] ? new Date(_data[\"departure\"].toString()) : undefined;\n this.return = _data[\"return\"] ? new Date(_data[\"return\"].toString()) : undefined;\n this.estimatedCosts = _data[\"estimatedCosts\"];\n this.advancePayment = _data[\"advancePayment\"];\n this.freeMeals = _data[\"freeMeals\"];\n this.freeAccommodation = _data[\"freeAccommodation\"];\n this.travelBy = _data[\"travelBy\"];\n }\n }\n\n static fromJS(data: any): TravelRequestResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TravelRequestResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"description\"] = this.description;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"statusId\"] = this.statusId;\n data[\"userId\"] = this.userId;\n data[\"approvedOrRejectedByUserId\"] = this.approvedOrRejectedByUserId;\n data[\"approvedOrRejectedOn\"] = this.approvedOrRejectedOn ? this.approvedOrRejectedOn.toISOString() : undefined;\n data[\"destinationCountryId\"] = this.destinationCountryId;\n data[\"destinationCity\"] = this.destinationCity;\n data[\"departure\"] = this.departure ? formatDate(this.departure) : undefined;\n data[\"return\"] = this.return ? formatDate(this.return) : undefined;\n data[\"estimatedCosts\"] = this.estimatedCosts;\n data[\"advancePayment\"] = this.advancePayment;\n data[\"freeMeals\"] = this.freeMeals;\n data[\"freeAccommodation\"] = this.freeAccommodation;\n data[\"travelBy\"] = this.travelBy;\n return data;\n }\n}\n\nexport interface ITravelRequestResponse {\n id: number;\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n description: string;\n customText1?: string | undefined;\n customText2?: string | undefined;\n statusId: number;\n userId: number;\n approvedOrRejectedByUserId?: number | undefined;\n approvedOrRejectedOn?: Date | undefined;\n destinationCountryId: number;\n destinationCity: string;\n departure: Date;\n return: Date;\n estimatedCosts: number;\n advancePayment?: number | undefined;\n freeMeals: boolean;\n freeAccommodation: boolean;\n travelBy: TravelByEnum;\n}\n\nexport class TravelRequestResponseItemsResponseModel implements ITravelRequestResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TravelRequestResponse[] | undefined;\n\n constructor(data?: ITravelRequestResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(TravelRequestResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): TravelRequestResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TravelRequestResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface ITravelRequestResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: TravelRequestResponse[] | undefined;\n}\n\nexport class TravelRequestResponseSimpleResponseModel implements ITravelRequestResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TravelRequestResponse;\n\n constructor(data?: ITravelRequestResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TravelRequestResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TravelRequestResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TravelRequestResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITravelRequestResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TravelRequestResponse;\n}\n\nexport class TravelRequestTotalsResponse implements ITravelRequestTotalsResponse {\n totalEstimatedCosts!: number;\n\n constructor(data?: ITravelRequestTotalsResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.totalEstimatedCosts = _data[\"totalEstimatedCosts\"];\n }\n }\n\n static fromJS(data: any): TravelRequestTotalsResponse {\n data = typeof data === 'object' ? data : {};\n let result = new TravelRequestTotalsResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"totalEstimatedCosts\"] = this.totalEstimatedCosts;\n return data;\n }\n}\n\nexport interface ITravelRequestTotalsResponse {\n totalEstimatedCosts: number;\n}\n\nexport class TravelRequestTotalsResponseSimpleResponseModel implements ITravelRequestTotalsResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TravelRequestTotalsResponse;\n\n constructor(data?: ITravelRequestTotalsResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? TravelRequestTotalsResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): TravelRequestTotalsResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new TravelRequestTotalsResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface ITravelRequestTotalsResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: TravelRequestTotalsResponse;\n}\n\nexport class UpdateBudgetConfigurationRequest implements IUpdateBudgetConfigurationRequest {\n planFrom!: Date;\n planTo!: Date;\n includeRiskInBudget!: boolean;\n includePlannedInvoicesInBudget!: boolean;\n includeApprovedChangeRequestsInBudget!: boolean;\n includeCompletedChangeRequests!: boolean;\n includeApprovedTimesheetsInActual!: boolean;\n includeApprovedGuestTimesheetsInActual!: boolean;\n includeApprovedTravelExpensesInActual!: boolean;\n includeIssuedReceivedAndPayedInvoicesInActual!: boolean;\n actualsTimesheetsPerUser!: boolean;\n actualsTravelExpensesPerUser!: boolean;\n actualsInvoicesPerPartner!: boolean;\n id!: number;\n\n constructor(data?: IUpdateBudgetConfigurationRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.planFrom = _data[\"planFrom\"] ? new Date(_data[\"planFrom\"].toString()) : undefined;\n this.planTo = _data[\"planTo\"] ? new Date(_data[\"planTo\"].toString()) : undefined;\n this.includeRiskInBudget = _data[\"includeRiskInBudget\"];\n this.includePlannedInvoicesInBudget = _data[\"includePlannedInvoicesInBudget\"];\n this.includeApprovedChangeRequestsInBudget = _data[\"includeApprovedChangeRequestsInBudget\"];\n this.includeCompletedChangeRequests = _data[\"includeCompletedChangeRequests\"];\n this.includeApprovedTimesheetsInActual = _data[\"includeApprovedTimesheetsInActual\"];\n this.includeApprovedGuestTimesheetsInActual = _data[\"includeApprovedGuestTimesheetsInActual\"];\n this.includeApprovedTravelExpensesInActual = _data[\"includeApprovedTravelExpensesInActual\"];\n this.includeIssuedReceivedAndPayedInvoicesInActual = _data[\"includeIssuedReceivedAndPayedInvoicesInActual\"];\n this.actualsTimesheetsPerUser = _data[\"actualsTimesheetsPerUser\"];\n this.actualsTravelExpensesPerUser = _data[\"actualsTravelExpensesPerUser\"];\n this.actualsInvoicesPerPartner = _data[\"actualsInvoicesPerPartner\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateBudgetConfigurationRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateBudgetConfigurationRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"planFrom\"] = this.planFrom ? formatDate(this.planFrom) : undefined;\n data[\"planTo\"] = this.planTo ? formatDate(this.planTo) : undefined;\n data[\"includeRiskInBudget\"] = this.includeRiskInBudget;\n data[\"includePlannedInvoicesInBudget\"] = this.includePlannedInvoicesInBudget;\n data[\"includeApprovedChangeRequestsInBudget\"] = this.includeApprovedChangeRequestsInBudget;\n data[\"includeCompletedChangeRequests\"] = this.includeCompletedChangeRequests;\n data[\"includeApprovedTimesheetsInActual\"] = this.includeApprovedTimesheetsInActual;\n data[\"includeApprovedGuestTimesheetsInActual\"] = this.includeApprovedGuestTimesheetsInActual;\n data[\"includeApprovedTravelExpensesInActual\"] = this.includeApprovedTravelExpensesInActual;\n data[\"includeIssuedReceivedAndPayedInvoicesInActual\"] = this.includeIssuedReceivedAndPayedInvoicesInActual;\n data[\"actualsTimesheetsPerUser\"] = this.actualsTimesheetsPerUser;\n data[\"actualsTravelExpensesPerUser\"] = this.actualsTravelExpensesPerUser;\n data[\"actualsInvoicesPerPartner\"] = this.actualsInvoicesPerPartner;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateBudgetConfigurationRequest {\n planFrom: Date;\n planTo: Date;\n includeRiskInBudget: boolean;\n includePlannedInvoicesInBudget: boolean;\n includeApprovedChangeRequestsInBudget: boolean;\n includeCompletedChangeRequests: boolean;\n includeApprovedTimesheetsInActual: boolean;\n includeApprovedGuestTimesheetsInActual: boolean;\n includeApprovedTravelExpensesInActual: boolean;\n includeIssuedReceivedAndPayedInvoicesInActual: boolean;\n actualsTimesheetsPerUser: boolean;\n actualsTravelExpensesPerUser: boolean;\n actualsInvoicesPerPartner: boolean;\n id: number;\n}\n\nexport class UpdateBudgetRowRequest implements IUpdateBudgetRowRequest {\n financeCategoryId!: number;\n userId?: number | undefined;\n partnerId?: number | undefined;\n incomeExpense!: IncomeExpenseEnum;\n customField?: string | undefined;\n budgetDateValues?: BudgetDateValueRequest[] | undefined;\n id!: number;\n\n constructor(data?: IUpdateBudgetRowRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.financeCategoryId = _data[\"financeCategoryId\"];\n this.userId = _data[\"userId\"];\n this.partnerId = _data[\"partnerId\"];\n this.incomeExpense = _data[\"incomeExpense\"];\n this.customField = _data[\"customField\"];\n if (Array.isArray(_data[\"budgetDateValues\"])) {\n this.budgetDateValues = [] as any;\n for (let item of _data[\"budgetDateValues\"])\n this.budgetDateValues!.push(BudgetDateValueRequest.fromJS(item));\n }\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateBudgetRowRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateBudgetRowRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"financeCategoryId\"] = this.financeCategoryId;\n data[\"userId\"] = this.userId;\n data[\"partnerId\"] = this.partnerId;\n data[\"incomeExpense\"] = this.incomeExpense;\n data[\"customField\"] = this.customField;\n if (Array.isArray(this.budgetDateValues)) {\n data[\"budgetDateValues\"] = [];\n for (let item of this.budgetDateValues)\n data[\"budgetDateValues\"].push(item.toJSON());\n }\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateBudgetRowRequest {\n financeCategoryId: number;\n userId?: number | undefined;\n partnerId?: number | undefined;\n incomeExpense: IncomeExpenseEnum;\n customField?: string | undefined;\n budgetDateValues?: BudgetDateValueRequest[] | undefined;\n id: number;\n}\n\nexport class UpdateChangeRequestActivityRequest implements IUpdateChangeRequestActivityRequest {\n name!: string;\n expectedDeliveryOn?: Date | undefined;\n effortInHours?: number | undefined;\n cost?: number | undefined;\n order!: number;\n id!: number;\n\n constructor(data?: IUpdateChangeRequestActivityRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.expectedDeliveryOn = _data[\"expectedDeliveryOn\"] ? new Date(_data[\"expectedDeliveryOn\"].toString()) : undefined;\n this.effortInHours = _data[\"effortInHours\"];\n this.cost = _data[\"cost\"];\n this.order = _data[\"order\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateChangeRequestActivityRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateChangeRequestActivityRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"expectedDeliveryOn\"] = this.expectedDeliveryOn ? formatDate(this.expectedDeliveryOn) : undefined;\n data[\"effortInHours\"] = this.effortInHours;\n data[\"cost\"] = this.cost;\n data[\"order\"] = this.order;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateChangeRequestActivityRequest {\n name: string;\n expectedDeliveryOn?: Date | undefined;\n effortInHours?: number | undefined;\n cost?: number | undefined;\n order: number;\n id: number;\n}\n\nexport class UpdateChangeRequestRequest implements IUpdateChangeRequestRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n analysisUserId?: number | undefined;\n initiatedBy?: string | undefined;\n requestedOn?: Date | undefined;\n typeId?: number | undefined;\n goLiveCritical!: boolean;\n impactId!: number;\n urgencyId!: number;\n expectedCompletionDate?: Date | undefined;\n scopeItemLevelIdsToAdd?: number[] | undefined;\n scopeItemLevelIdsToRemove?: number[] | undefined;\n ticketIdsToAdd?: number[] | undefined;\n ticketIdsToRemove?: number[] | undefined;\n reasonOfChange?: string | undefined;\n expectedBenefit?: string | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n isInitiate!: boolean;\n sendEmail!: boolean;\n\n constructor(data?: IUpdateChangeRequestRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.analysisUserId = _data[\"analysisUserId\"];\n this.initiatedBy = _data[\"initiatedBy\"];\n this.requestedOn = _data[\"requestedOn\"] ? new Date(_data[\"requestedOn\"].toString()) : undefined;\n this.typeId = _data[\"typeId\"];\n this.goLiveCritical = _data[\"goLiveCritical\"];\n this.impactId = _data[\"impactId\"];\n this.urgencyId = _data[\"urgencyId\"];\n this.expectedCompletionDate = _data[\"expectedCompletionDate\"] ? new Date(_data[\"expectedCompletionDate\"].toString()) : undefined;\n if (Array.isArray(_data[\"scopeItemLevelIdsToAdd\"])) {\n this.scopeItemLevelIdsToAdd = [] as any;\n for (let item of _data[\"scopeItemLevelIdsToAdd\"])\n this.scopeItemLevelIdsToAdd!.push(item);\n }\n if (Array.isArray(_data[\"scopeItemLevelIdsToRemove\"])) {\n this.scopeItemLevelIdsToRemove = [] as any;\n for (let item of _data[\"scopeItemLevelIdsToRemove\"])\n this.scopeItemLevelIdsToRemove!.push(item);\n }\n if (Array.isArray(_data[\"ticketIdsToAdd\"])) {\n this.ticketIdsToAdd = [] as any;\n for (let item of _data[\"ticketIdsToAdd\"])\n this.ticketIdsToAdd!.push(item);\n }\n if (Array.isArray(_data[\"ticketIdsToRemove\"])) {\n this.ticketIdsToRemove = [] as any;\n for (let item of _data[\"ticketIdsToRemove\"])\n this.ticketIdsToRemove!.push(item);\n }\n this.reasonOfChange = _data[\"reasonOfChange\"];\n this.expectedBenefit = _data[\"expectedBenefit\"];\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n this.isInitiate = _data[\"isInitiate\"];\n this.sendEmail = _data[\"sendEmail\"];\n }\n }\n\n static fromJS(data: any): UpdateChangeRequestRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateChangeRequestRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"analysisUserId\"] = this.analysisUserId;\n data[\"initiatedBy\"] = this.initiatedBy;\n data[\"requestedOn\"] = this.requestedOn ? formatDate(this.requestedOn) : undefined;\n data[\"typeId\"] = this.typeId;\n data[\"goLiveCritical\"] = this.goLiveCritical;\n data[\"impactId\"] = this.impactId;\n data[\"urgencyId\"] = this.urgencyId;\n data[\"expectedCompletionDate\"] = this.expectedCompletionDate ? formatDate(this.expectedCompletionDate) : undefined;\n if (Array.isArray(this.scopeItemLevelIdsToAdd)) {\n data[\"scopeItemLevelIdsToAdd\"] = [];\n for (let item of this.scopeItemLevelIdsToAdd)\n data[\"scopeItemLevelIdsToAdd\"].push(item);\n }\n if (Array.isArray(this.scopeItemLevelIdsToRemove)) {\n data[\"scopeItemLevelIdsToRemove\"] = [];\n for (let item of this.scopeItemLevelIdsToRemove)\n data[\"scopeItemLevelIdsToRemove\"].push(item);\n }\n if (Array.isArray(this.ticketIdsToAdd)) {\n data[\"ticketIdsToAdd\"] = [];\n for (let item of this.ticketIdsToAdd)\n data[\"ticketIdsToAdd\"].push(item);\n }\n if (Array.isArray(this.ticketIdsToRemove)) {\n data[\"ticketIdsToRemove\"] = [];\n for (let item of this.ticketIdsToRemove)\n data[\"ticketIdsToRemove\"].push(item);\n }\n data[\"reasonOfChange\"] = this.reasonOfChange;\n data[\"expectedBenefit\"] = this.expectedBenefit;\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n data[\"isInitiate\"] = this.isInitiate;\n data[\"sendEmail\"] = this.sendEmail;\n return data;\n }\n}\n\nexport interface IUpdateChangeRequestRequest {\n name: string;\n description?: string | undefined;\n id: number;\n analysisUserId?: number | undefined;\n initiatedBy?: string | undefined;\n requestedOn?: Date | undefined;\n typeId?: number | undefined;\n goLiveCritical: boolean;\n impactId: number;\n urgencyId: number;\n expectedCompletionDate?: Date | undefined;\n scopeItemLevelIdsToAdd?: number[] | undefined;\n scopeItemLevelIdsToRemove?: number[] | undefined;\n ticketIdsToAdd?: number[] | undefined;\n ticketIdsToRemove?: number[] | undefined;\n reasonOfChange?: string | undefined;\n expectedBenefit?: string | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n isInitiate: boolean;\n sendEmail: boolean;\n}\n\nexport class UpdateCostExpenseTypeRequest implements IUpdateCostExpenseTypeRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n isActive!: boolean;\n mandatoryAttachments!: boolean;\n\n constructor(data?: IUpdateCostExpenseTypeRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.mandatoryAttachments = _data[\"mandatoryAttachments\"];\n }\n }\n\n static fromJS(data: any): UpdateCostExpenseTypeRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateCostExpenseTypeRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"mandatoryAttachments\"] = this.mandatoryAttachments;\n return data;\n }\n}\n\nexport interface IUpdateCostExpenseTypeRequest {\n name: string;\n description?: string | undefined;\n id: number;\n isActive: boolean;\n mandatoryAttachments: boolean;\n}\n\nexport class UpdateEmailTemplateRequestModel implements IUpdateEmailTemplateRequestModel {\n id!: number;\n name?: string | undefined;\n readonly pKs?: any[] | undefined;\n\n constructor(data?: IUpdateEmailTemplateRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n if (Array.isArray(_data[\"pKs\"])) {\n (this).pKs = [] as any;\n for (let item of _data[\"pKs\"])\n (this).pKs!.push(item);\n }\n }\n }\n\n static fromJS(data: any): UpdateEmailTemplateRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateEmailTemplateRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n if (Array.isArray(this.pKs)) {\n data[\"pKs\"] = [];\n for (let item of this.pKs)\n data[\"pKs\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IUpdateEmailTemplateRequestModel {\n id: number;\n name?: string | undefined;\n pKs?: any[] | undefined;\n}\n\nexport class UpdateExpenseItemRequest implements IUpdateExpenseItemRequest {\n expenseTypeId!: number;\n amountProjectCurrency!: number;\n receiptCurrencyId?: number | undefined;\n amountReceiptCurrency?: number | undefined;\n comment?: string | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n id!: number;\n removedAttachments?: number[] | undefined;\n\n constructor(data?: IUpdateExpenseItemRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.expenseTypeId = _data[\"expenseTypeId\"];\n this.amountProjectCurrency = _data[\"amountProjectCurrency\"];\n this.receiptCurrencyId = _data[\"receiptCurrencyId\"];\n this.amountReceiptCurrency = _data[\"amountReceiptCurrency\"];\n this.comment = _data[\"comment\"];\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n this.id = _data[\"id\"];\n if (Array.isArray(_data[\"removedAttachments\"])) {\n this.removedAttachments = [] as any;\n for (let item of _data[\"removedAttachments\"])\n this.removedAttachments!.push(item);\n }\n }\n }\n\n static fromJS(data: any): UpdateExpenseItemRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateExpenseItemRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"expenseTypeId\"] = this.expenseTypeId;\n data[\"amountProjectCurrency\"] = this.amountProjectCurrency;\n data[\"receiptCurrencyId\"] = this.receiptCurrencyId;\n data[\"amountReceiptCurrency\"] = this.amountReceiptCurrency;\n data[\"comment\"] = this.comment;\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n data[\"id\"] = this.id;\n if (Array.isArray(this.removedAttachments)) {\n data[\"removedAttachments\"] = [];\n for (let item of this.removedAttachments)\n data[\"removedAttachments\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IUpdateExpenseItemRequest {\n expenseTypeId: number;\n amountProjectCurrency: number;\n receiptCurrencyId?: number | undefined;\n amountReceiptCurrency?: number | undefined;\n comment?: string | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n id: number;\n removedAttachments?: number[] | undefined;\n}\n\nexport class UpdateExpenseRequest implements IUpdateExpenseRequest {\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n description!: string;\n customText1?: string | undefined;\n customText2?: string | undefined;\n isRelease!: boolean;\n id!: number;\n date!: Date;\n expenseItemsDelta?: InsertExpenseItemRequestUpdateExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel;\n\n constructor(data?: IUpdateExpenseRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.description = _data[\"description\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.isRelease = _data[\"isRelease\"];\n this.id = _data[\"id\"];\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.expenseItemsDelta = _data[\"expenseItemsDelta\"] ? InsertExpenseItemRequestUpdateExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel.fromJS(_data[\"expenseItemsDelta\"]) : undefined;\n }\n }\n\n static fromJS(data: any): UpdateExpenseRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateExpenseRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"description\"] = this.description;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"isRelease\"] = this.isRelease;\n data[\"id\"] = this.id;\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n data[\"expenseItemsDelta\"] = this.expenseItemsDelta ? this.expenseItemsDelta.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IUpdateExpenseRequest {\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n description: string;\n customText1?: string | undefined;\n customText2?: string | undefined;\n isRelease: boolean;\n id: number;\n date: Date;\n expenseItemsDelta?: InsertExpenseItemRequestUpdateExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel;\n}\n\nexport class UpdateFinanceGeneralConfigRequest implements IUpdateFinanceGeneralConfigRequest {\n planingInterval!: FinancePlaningIntervalEnum;\n id!: number;\n\n constructor(data?: IUpdateFinanceGeneralConfigRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.planingInterval = _data[\"planingInterval\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateFinanceGeneralConfigRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateFinanceGeneralConfigRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"planingInterval\"] = this.planingInterval;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateFinanceGeneralConfigRequest {\n planingInterval: FinancePlaningIntervalEnum;\n id: number;\n}\n\nexport class UpdateGeneratedProjectMilestoneRequest implements IUpdateGeneratedProjectMilestoneRequest {\n id!: number;\n milestoneDeviation?: string | undefined;\n\n constructor(data?: IUpdateGeneratedProjectMilestoneRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.milestoneDeviation = _data[\"milestoneDeviation\"];\n }\n }\n\n static fromJS(data: any): UpdateGeneratedProjectMilestoneRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateGeneratedProjectMilestoneRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"milestoneDeviation\"] = this.milestoneDeviation;\n return data;\n }\n}\n\nexport interface IUpdateGeneratedProjectMilestoneRequest {\n id: number;\n milestoneDeviation?: string | undefined;\n}\n\nexport class UpdateGeneratedProjectQualityRequest implements IUpdateGeneratedProjectQualityRequest {\n id!: number;\n actions?: string | undefined;\n status!: ReportItemStatusEnum;\n\n constructor(data?: IUpdateGeneratedProjectQualityRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.actions = _data[\"actions\"];\n this.status = _data[\"status\"];\n }\n }\n\n static fromJS(data: any): UpdateGeneratedProjectQualityRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateGeneratedProjectQualityRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"actions\"] = this.actions;\n data[\"status\"] = this.status;\n return data;\n }\n}\n\nexport interface IUpdateGeneratedProjectQualityRequest {\n id: number;\n actions?: string | undefined;\n status: ReportItemStatusEnum;\n}\n\nexport class UpdateHolidayRequest implements IUpdateHolidayRequest {\n isActive!: boolean;\n name!: string;\n from!: Date;\n to!: Date;\n reccuringEntry!: boolean;\n id!: number;\n\n constructor(data?: IUpdateHolidayRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.isActive = _data[\"isActive\"];\n this.name = _data[\"name\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.reccuringEntry = _data[\"reccuringEntry\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateHolidayRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateHolidayRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"isActive\"] = this.isActive;\n data[\"name\"] = this.name;\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"reccuringEntry\"] = this.reccuringEntry;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateHolidayRequest {\n isActive: boolean;\n name: string;\n from: Date;\n to: Date;\n reccuringEntry: boolean;\n id: number;\n}\n\nexport class UpdateInnerTestPlanRequest implements IUpdateInnerTestPlanRequest {\n id!: number;\n expectedResults?: string | undefined;\n documentsCreated?: string | undefined;\n comment?: string | undefined;\n stepStatusId!: number;\n rejectionComment?: string | undefined;\n\n constructor(data?: IUpdateInnerTestPlanRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.expectedResults = _data[\"expectedResults\"];\n this.documentsCreated = _data[\"documentsCreated\"];\n this.comment = _data[\"comment\"];\n this.stepStatusId = _data[\"stepStatusId\"];\n this.rejectionComment = _data[\"rejectionComment\"];\n }\n }\n\n static fromJS(data: any): UpdateInnerTestPlanRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateInnerTestPlanRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"expectedResults\"] = this.expectedResults;\n data[\"documentsCreated\"] = this.documentsCreated;\n data[\"comment\"] = this.comment;\n data[\"stepStatusId\"] = this.stepStatusId;\n data[\"rejectionComment\"] = this.rejectionComment;\n return data;\n }\n}\n\nexport interface IUpdateInnerTestPlanRequest {\n id: number;\n expectedResults?: string | undefined;\n documentsCreated?: string | undefined;\n comment?: string | undefined;\n stepStatusId: number;\n rejectionComment?: string | undefined;\n}\n\nexport class UpdateInvoiceItemRequest implements IUpdateInvoiceItemRequest {\n description!: string;\n amount!: number;\n taxAmount!: number;\n localCurrencyAmount?: number | undefined;\n localCurrencyTaxAmount?: number | undefined;\n id!: number;\n\n constructor(data?: IUpdateInvoiceItemRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.description = _data[\"description\"];\n this.amount = _data[\"amount\"];\n this.taxAmount = _data[\"taxAmount\"];\n this.localCurrencyAmount = _data[\"localCurrencyAmount\"];\n this.localCurrencyTaxAmount = _data[\"localCurrencyTaxAmount\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateInvoiceItemRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateInvoiceItemRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"description\"] = this.description;\n data[\"amount\"] = this.amount;\n data[\"taxAmount\"] = this.taxAmount;\n data[\"localCurrencyAmount\"] = this.localCurrencyAmount;\n data[\"localCurrencyTaxAmount\"] = this.localCurrencyTaxAmount;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateInvoiceItemRequest {\n description: string;\n amount: number;\n taxAmount: number;\n localCurrencyAmount?: number | undefined;\n localCurrencyTaxAmount?: number | undefined;\n id: number;\n}\n\nexport class UpdateInvoiceRequest implements IUpdateInvoiceRequest {\n partnerId!: number;\n invoiceNumber!: string;\n description?: string | undefined;\n invoiceType!: InvoiceTypeEnum;\n issueDate!: Date;\n due!: Date;\n overdueDays?: number | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n excludeFromBudget!: boolean;\n amount!: number;\n taxAmount!: number;\n localCurrencyId?: number | undefined;\n localCurrencyAmount?: number | undefined;\n localCurrencyTaxAmount?: number | undefined;\n comment?: string | undefined;\n changeRequestId?: number | undefined;\n financeCategoryId!: number;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n invoiceItemsDelta?: InsertInvoiceItemRequestUpdateInvoiceItemRequestDeleteTenantIndetifyRequestDeltaModel;\n id!: number;\n statusId!: number;\n\n constructor(data?: IUpdateInvoiceRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.partnerId = _data[\"partnerId\"];\n this.invoiceNumber = _data[\"invoiceNumber\"];\n this.description = _data[\"description\"];\n this.invoiceType = _data[\"invoiceType\"];\n this.issueDate = _data[\"issueDate\"] ? new Date(_data[\"issueDate\"].toString()) : undefined;\n this.due = _data[\"due\"] ? new Date(_data[\"due\"].toString()) : undefined;\n this.overdueDays = _data[\"overdueDays\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.excludeFromBudget = _data[\"excludeFromBudget\"];\n this.amount = _data[\"amount\"];\n this.taxAmount = _data[\"taxAmount\"];\n this.localCurrencyId = _data[\"localCurrencyId\"];\n this.localCurrencyAmount = _data[\"localCurrencyAmount\"];\n this.localCurrencyTaxAmount = _data[\"localCurrencyTaxAmount\"];\n this.comment = _data[\"comment\"];\n this.changeRequestId = _data[\"changeRequestId\"];\n this.financeCategoryId = _data[\"financeCategoryId\"];\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n this.invoiceItemsDelta = _data[\"invoiceItemsDelta\"] ? InsertInvoiceItemRequestUpdateInvoiceItemRequestDeleteTenantIndetifyRequestDeltaModel.fromJS(_data[\"invoiceItemsDelta\"]) : undefined;\n this.id = _data[\"id\"];\n this.statusId = _data[\"statusId\"];\n }\n }\n\n static fromJS(data: any): UpdateInvoiceRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateInvoiceRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"partnerId\"] = this.partnerId;\n data[\"invoiceNumber\"] = this.invoiceNumber;\n data[\"description\"] = this.description;\n data[\"invoiceType\"] = this.invoiceType;\n data[\"issueDate\"] = this.issueDate ? formatDate(this.issueDate) : undefined;\n data[\"due\"] = this.due ? formatDate(this.due) : undefined;\n data[\"overdueDays\"] = this.overdueDays;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"excludeFromBudget\"] = this.excludeFromBudget;\n data[\"amount\"] = this.amount;\n data[\"taxAmount\"] = this.taxAmount;\n data[\"localCurrencyId\"] = this.localCurrencyId;\n data[\"localCurrencyAmount\"] = this.localCurrencyAmount;\n data[\"localCurrencyTaxAmount\"] = this.localCurrencyTaxAmount;\n data[\"comment\"] = this.comment;\n data[\"changeRequestId\"] = this.changeRequestId;\n data[\"financeCategoryId\"] = this.financeCategoryId;\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n data[\"invoiceItemsDelta\"] = this.invoiceItemsDelta ? this.invoiceItemsDelta.toJSON() : undefined;\n data[\"id\"] = this.id;\n data[\"statusId\"] = this.statusId;\n return data;\n }\n}\n\nexport interface IUpdateInvoiceRequest {\n partnerId: number;\n invoiceNumber: string;\n description?: string | undefined;\n invoiceType: InvoiceTypeEnum;\n issueDate: Date;\n due: Date;\n overdueDays?: number | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n excludeFromBudget: boolean;\n amount: number;\n taxAmount: number;\n localCurrencyId?: number | undefined;\n localCurrencyAmount?: number | undefined;\n localCurrencyTaxAmount?: number | undefined;\n comment?: string | undefined;\n changeRequestId?: number | undefined;\n financeCategoryId: number;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n invoiceItemsDelta?: InsertInvoiceItemRequestUpdateInvoiceItemRequestDeleteTenantIndetifyRequestDeltaModel;\n id: number;\n statusId: number;\n}\n\nexport class UpdateLevel3TestPlanRequest implements IUpdateLevel3TestPlanRequest {\n id!: number;\n isActive!: boolean;\n processTesterUserId?: number | undefined;\n location?: string | undefined;\n plannedDate?: Date | undefined;\n plannedTime?: number | undefined;\n plannedTimeTo?: number | undefined;\n\n constructor(data?: IUpdateLevel3TestPlanRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.processTesterUserId = _data[\"processTesterUserId\"];\n this.location = _data[\"location\"];\n this.plannedDate = _data[\"plannedDate\"] ? new Date(_data[\"plannedDate\"].toString()) : undefined;\n this.plannedTime = _data[\"plannedTime\"];\n this.plannedTimeTo = _data[\"plannedTimeTo\"];\n }\n }\n\n static fromJS(data: any): UpdateLevel3TestPlanRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateLevel3TestPlanRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"processTesterUserId\"] = this.processTesterUserId;\n data[\"location\"] = this.location;\n data[\"plannedDate\"] = this.plannedDate ? formatDate(this.plannedDate) : undefined;\n data[\"plannedTime\"] = this.plannedTime;\n data[\"plannedTimeTo\"] = this.plannedTimeTo;\n return data;\n }\n}\n\nexport interface IUpdateLevel3TestPlanRequest {\n id: number;\n isActive: boolean;\n processTesterUserId?: number | undefined;\n location?: string | undefined;\n plannedDate?: Date | undefined;\n plannedTime?: number | undefined;\n plannedTimeTo?: number | undefined;\n}\n\nexport class UpdateLevel4TestPlanRequest implements IUpdateLevel4TestPlanRequest {\n id!: number;\n stepTesterUserId?: number | undefined;\n\n constructor(data?: IUpdateLevel4TestPlanRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.stepTesterUserId = _data[\"stepTesterUserId\"];\n }\n }\n\n static fromJS(data: any): UpdateLevel4TestPlanRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateLevel4TestPlanRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"stepTesterUserId\"] = this.stepTesterUserId;\n return data;\n }\n}\n\nexport interface IUpdateLevel4TestPlanRequest {\n id: number;\n stepTesterUserId?: number | undefined;\n}\n\nexport class UpdateMeetingCommentRequest implements IUpdateMeetingCommentRequest {\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n meetingId!: number;\n comment!: string;\n meetingTopicId!: number;\n meetingTopicType!: MeetingTopicTypeEnum;\n id!: number;\n\n constructor(data?: IUpdateMeetingCommentRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.meetingId = _data[\"meetingId\"];\n this.comment = _data[\"comment\"];\n this.meetingTopicId = _data[\"meetingTopicId\"];\n this.meetingTopicType = _data[\"meetingTopicType\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateMeetingCommentRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateMeetingCommentRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"meetingId\"] = this.meetingId;\n data[\"comment\"] = this.comment;\n data[\"meetingTopicId\"] = this.meetingTopicId;\n data[\"meetingTopicType\"] = this.meetingTopicType;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateMeetingCommentRequest {\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n meetingId: number;\n comment: string;\n meetingTopicId: number;\n meetingTopicType: MeetingTopicTypeEnum;\n id: number;\n}\n\nexport class UpdateMeetingGeneralConfigRequest implements IUpdateMeetingGeneralConfigRequest {\n notifyWhenReleased!: boolean;\n enableEmailNotifications!: boolean;\n id!: number;\n\n constructor(data?: IUpdateMeetingGeneralConfigRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.notifyWhenReleased = _data[\"notifyWhenReleased\"];\n this.enableEmailNotifications = _data[\"enableEmailNotifications\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateMeetingGeneralConfigRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateMeetingGeneralConfigRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"notifyWhenReleased\"] = this.notifyWhenReleased;\n data[\"enableEmailNotifications\"] = this.enableEmailNotifications;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateMeetingGeneralConfigRequest {\n notifyWhenReleased: boolean;\n enableEmailNotifications: boolean;\n id: number;\n}\n\nexport class UpdateMeetingRequest implements IUpdateMeetingRequest {\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n subject!: string;\n location?: string | undefined;\n duration?: number | undefined;\n starts!: Date;\n ends!: Date;\n agenda!: string;\n additionallParticipants?: string | undefined;\n isPrivate!: boolean;\n meetingTypeId?: number | undefined;\n projectTeamId?: number | undefined;\n participantUserIds?: number[] | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n topicsDelta?: InsertMeetingTopicRequestUpdateMeetingTopicRequestDeleteMeetingTopicRequestDeltaModel;\n id!: number;\n\n constructor(data?: IUpdateMeetingRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.subject = _data[\"subject\"];\n this.location = _data[\"location\"];\n this.duration = _data[\"duration\"];\n this.starts = _data[\"starts\"] ? new Date(_data[\"starts\"].toString()) : undefined;\n this.ends = _data[\"ends\"] ? new Date(_data[\"ends\"].toString()) : undefined;\n this.agenda = _data[\"agenda\"];\n this.additionallParticipants = _data[\"additionallParticipants\"];\n this.isPrivate = _data[\"isPrivate\"];\n this.meetingTypeId = _data[\"meetingTypeId\"];\n this.projectTeamId = _data[\"projectTeamId\"];\n if (Array.isArray(_data[\"participantUserIds\"])) {\n this.participantUserIds = [] as any;\n for (let item of _data[\"participantUserIds\"])\n this.participantUserIds!.push(item);\n }\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n this.topicsDelta = _data[\"topicsDelta\"] ? InsertMeetingTopicRequestUpdateMeetingTopicRequestDeleteMeetingTopicRequestDeltaModel.fromJS(_data[\"topicsDelta\"]) : undefined;\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateMeetingRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateMeetingRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"subject\"] = this.subject;\n data[\"location\"] = this.location;\n data[\"duration\"] = this.duration;\n data[\"starts\"] = this.starts ? this.starts.toISOString() : undefined;\n data[\"ends\"] = this.ends ? this.ends.toISOString() : undefined;\n data[\"agenda\"] = this.agenda;\n data[\"additionallParticipants\"] = this.additionallParticipants;\n data[\"isPrivate\"] = this.isPrivate;\n data[\"meetingTypeId\"] = this.meetingTypeId;\n data[\"projectTeamId\"] = this.projectTeamId;\n if (Array.isArray(this.participantUserIds)) {\n data[\"participantUserIds\"] = [];\n for (let item of this.participantUserIds)\n data[\"participantUserIds\"].push(item);\n }\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n data[\"topicsDelta\"] = this.topicsDelta ? this.topicsDelta.toJSON() : undefined;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateMeetingRequest {\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n subject: string;\n location?: string | undefined;\n duration?: number | undefined;\n starts: Date;\n ends: Date;\n agenda: string;\n additionallParticipants?: string | undefined;\n isPrivate: boolean;\n meetingTypeId?: number | undefined;\n projectTeamId?: number | undefined;\n participantUserIds?: number[] | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n topicsDelta?: InsertMeetingTopicRequestUpdateMeetingTopicRequestDeleteMeetingTopicRequestDeltaModel;\n id: number;\n}\n\nexport class UpdateMeetingTopicRequest implements IUpdateMeetingTopicRequest {\n description!: string;\n type!: MeetingTopicTypeEnum;\n order!: number;\n userId?: number | undefined;\n due?: Date | undefined;\n statusId?: number | undefined;\n id!: number;\n initialType!: MeetingTopicTypeEnum;\n\n constructor(data?: IUpdateMeetingTopicRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.description = _data[\"description\"];\n this.type = _data[\"type\"];\n this.order = _data[\"order\"];\n this.userId = _data[\"userId\"];\n this.due = _data[\"due\"] ? new Date(_data[\"due\"].toString()) : undefined;\n this.statusId = _data[\"statusId\"];\n this.id = _data[\"id\"];\n this.initialType = _data[\"initialType\"];\n }\n }\n\n static fromJS(data: any): UpdateMeetingTopicRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateMeetingTopicRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"description\"] = this.description;\n data[\"type\"] = this.type;\n data[\"order\"] = this.order;\n data[\"userId\"] = this.userId;\n data[\"due\"] = this.due ? formatDate(this.due) : undefined;\n data[\"statusId\"] = this.statusId;\n data[\"id\"] = this.id;\n data[\"initialType\"] = this.initialType;\n return data;\n }\n}\n\nexport interface IUpdateMeetingTopicRequest {\n description: string;\n type: MeetingTopicTypeEnum;\n order: number;\n userId?: number | undefined;\n due?: Date | undefined;\n statusId?: number | undefined;\n id: number;\n initialType: MeetingTopicTypeEnum;\n}\n\nexport class UpdateNonProjectCategoryRequest implements IUpdateNonProjectCategoryRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n isActive!: boolean;\n billable!: boolean;\n\n constructor(data?: IUpdateNonProjectCategoryRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.billable = _data[\"billable\"];\n }\n }\n\n static fromJS(data: any): UpdateNonProjectCategoryRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateNonProjectCategoryRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"billable\"] = this.billable;\n return data;\n }\n}\n\nexport interface IUpdateNonProjectCategoryRequest {\n name: string;\n description?: string | undefined;\n id: number;\n isActive: boolean;\n billable: boolean;\n}\n\nexport class UpdateOrderRequest implements IUpdateOrderRequest {\n id!: number;\n order!: number;\n\n constructor(data?: IUpdateOrderRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.order = _data[\"order\"];\n }\n }\n\n static fromJS(data: any): UpdateOrderRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateOrderRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"order\"] = this.order;\n return data;\n }\n}\n\nexport interface IUpdateOrderRequest {\n id: number;\n order: number;\n}\n\nexport class UpdateOrganizationalUnitManagerRequest implements IUpdateOrganizationalUnitManagerRequest {\n userId!: number;\n organizationalUnitId!: number;\n validUntil!: Date;\n isResourceManager!: boolean;\n id!: number;\n\n constructor(data?: IUpdateOrganizationalUnitManagerRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.userId = _data[\"userId\"];\n this.organizationalUnitId = _data[\"organizationalUnitId\"];\n this.validUntil = _data[\"validUntil\"] ? new Date(_data[\"validUntil\"].toString()) : undefined;\n this.isResourceManager = _data[\"isResourceManager\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateOrganizationalUnitManagerRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateOrganizationalUnitManagerRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"userId\"] = this.userId;\n data[\"organizationalUnitId\"] = this.organizationalUnitId;\n data[\"validUntil\"] = this.validUntil ? formatDate(this.validUntil) : undefined;\n data[\"isResourceManager\"] = this.isResourceManager;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateOrganizationalUnitManagerRequest {\n userId: number;\n organizationalUnitId: number;\n validUntil: Date;\n isResourceManager: boolean;\n id: number;\n}\n\nexport class UpdateOrganizationalUnitRequest implements IUpdateOrganizationalUnitRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n order!: number;\n\n constructor(data?: IUpdateOrganizationalUnitRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.order = _data[\"order\"];\n }\n }\n\n static fromJS(data: any): UpdateOrganizationalUnitRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateOrganizationalUnitRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"order\"] = this.order;\n return data;\n }\n}\n\nexport interface IUpdateOrganizationalUnitRequest {\n name: string;\n description?: string | undefined;\n id: number;\n order: number;\n}\n\nexport class UpdateProjectAccomplishmentRequest implements IUpdateProjectAccomplishmentRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n isActive!: boolean;\n plannedDate?: Date | undefined;\n status!: ReportItemStatusEnum;\n\n constructor(data?: IUpdateProjectAccomplishmentRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.plannedDate = _data[\"plannedDate\"] ? new Date(_data[\"plannedDate\"].toString()) : undefined;\n this.status = _data[\"status\"];\n }\n }\n\n static fromJS(data: any): UpdateProjectAccomplishmentRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectAccomplishmentRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"plannedDate\"] = this.plannedDate ? formatDate(this.plannedDate) : undefined;\n data[\"status\"] = this.status;\n return data;\n }\n}\n\nexport interface IUpdateProjectAccomplishmentRequest {\n name: string;\n description?: string | undefined;\n id: number;\n isActive: boolean;\n plannedDate?: Date | undefined;\n status: ReportItemStatusEnum;\n}\n\nexport class UpdateProjectActionRequest implements IUpdateProjectActionRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n isActive!: boolean;\n reportId!: number;\n status!: ReportItemStatusEnum;\n\n constructor(data?: IUpdateProjectActionRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.reportId = _data[\"reportId\"];\n this.status = _data[\"status\"];\n }\n }\n\n static fromJS(data: any): UpdateProjectActionRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectActionRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"reportId\"] = this.reportId;\n data[\"status\"] = this.status;\n return data;\n }\n}\n\nexport interface IUpdateProjectActionRequest {\n name: string;\n description?: string | undefined;\n id: number;\n isActive: boolean;\n reportId: number;\n status: ReportItemStatusEnum;\n}\n\nexport class UpdateProjectBusinessRequest implements IUpdateProjectBusinessRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n isActive!: boolean;\n value?: number | undefined;\n\n constructor(data?: IUpdateProjectBusinessRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.value = _data[\"value\"];\n }\n }\n\n static fromJS(data: any): UpdateProjectBusinessRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectBusinessRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"value\"] = this.value;\n return data;\n }\n}\n\nexport interface IUpdateProjectBusinessRequest {\n name: string;\n description?: string | undefined;\n id: number;\n isActive: boolean;\n value?: number | undefined;\n}\n\nexport class UpdateProjectChangeRequestRequest implements IUpdateProjectChangeRequestRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n initiatedBy?: string | undefined;\n approvedByUserId?: number | undefined;\n requestedOn?: Date | undefined;\n priority!: ChangeRequestPriorityEnum;\n completitionOn?: Date | undefined;\n statusId!: number;\n effortInHours?: number | undefined;\n totalCost?: number | undefined;\n estimatedEffortInHours?: number | undefined;\n estimatedTotalCost?: number | undefined;\n goLiveCritical!: boolean;\n\n constructor(data?: IUpdateProjectChangeRequestRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.initiatedBy = _data[\"initiatedBy\"];\n this.approvedByUserId = _data[\"approvedByUserId\"];\n this.requestedOn = _data[\"requestedOn\"] ? new Date(_data[\"requestedOn\"].toString()) : undefined;\n this.priority = _data[\"priority\"];\n this.completitionOn = _data[\"completitionOn\"] ? new Date(_data[\"completitionOn\"].toString()) : undefined;\n this.statusId = _data[\"statusId\"];\n this.effortInHours = _data[\"effortInHours\"];\n this.totalCost = _data[\"totalCost\"];\n this.estimatedEffortInHours = _data[\"estimatedEffortInHours\"];\n this.estimatedTotalCost = _data[\"estimatedTotalCost\"];\n this.goLiveCritical = _data[\"goLiveCritical\"];\n }\n }\n\n static fromJS(data: any): UpdateProjectChangeRequestRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectChangeRequestRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"initiatedBy\"] = this.initiatedBy;\n data[\"approvedByUserId\"] = this.approvedByUserId;\n data[\"requestedOn\"] = this.requestedOn ? formatDate(this.requestedOn) : undefined;\n data[\"priority\"] = this.priority;\n data[\"completitionOn\"] = this.completitionOn ? formatDate(this.completitionOn) : undefined;\n data[\"statusId\"] = this.statusId;\n data[\"effortInHours\"] = this.effortInHours;\n data[\"totalCost\"] = this.totalCost;\n data[\"estimatedEffortInHours\"] = this.estimatedEffortInHours;\n data[\"estimatedTotalCost\"] = this.estimatedTotalCost;\n data[\"goLiveCritical\"] = this.goLiveCritical;\n return data;\n }\n}\n\nexport interface IUpdateProjectChangeRequestRequest {\n name: string;\n description?: string | undefined;\n id: number;\n initiatedBy?: string | undefined;\n approvedByUserId?: number | undefined;\n requestedOn?: Date | undefined;\n priority: ChangeRequestPriorityEnum;\n completitionOn?: Date | undefined;\n statusId: number;\n effortInHours?: number | undefined;\n totalCost?: number | undefined;\n estimatedEffortInHours?: number | undefined;\n estimatedTotalCost?: number | undefined;\n goLiveCritical: boolean;\n}\n\nexport class UpdateProjectConfigOrderRequest implements IUpdateProjectConfigOrderRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n isActive!: boolean;\n order!: number;\n\n constructor(data?: IUpdateProjectConfigOrderRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.order = _data[\"order\"];\n }\n }\n\n static fromJS(data: any): UpdateProjectConfigOrderRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectConfigOrderRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"order\"] = this.order;\n return data;\n }\n}\n\nexport interface IUpdateProjectConfigOrderRequest {\n name: string;\n description?: string | undefined;\n id: number;\n isActive: boolean;\n order: number;\n}\n\nexport class UpdateProjectConfigRequest implements IUpdateProjectConfigRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n isActive!: boolean;\n\n constructor(data?: IUpdateProjectConfigRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n }\n }\n\n static fromJS(data: any): UpdateProjectConfigRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectConfigRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n return data;\n }\n}\n\nexport interface IUpdateProjectConfigRequest {\n name: string;\n description?: string | undefined;\n id: number;\n isActive: boolean;\n}\n\nexport class UpdateProjectDataRequest implements IUpdateProjectDataRequest {\n projectId!: number;\n name!: string;\n description?: string | undefined;\n projectStatusId!: number;\n projectCategoryId?: number | undefined;\n projectTypeId?: number | undefined;\n organizationalUnitId?: number | undefined;\n from?: Date | undefined;\n to?: Date | undefined;\n activeModules?: ActiveModule[] | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n\n constructor(data?: IUpdateProjectDataRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectId = _data[\"projectId\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.projectStatusId = _data[\"projectStatusId\"];\n this.projectCategoryId = _data[\"projectCategoryId\"];\n this.projectTypeId = _data[\"projectTypeId\"];\n this.organizationalUnitId = _data[\"organizationalUnitId\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n if (Array.isArray(_data[\"activeModules\"])) {\n this.activeModules = [] as any;\n for (let item of _data[\"activeModules\"])\n this.activeModules!.push(ActiveModule.fromJS(item));\n }\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): UpdateProjectDataRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectDataRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectId\"] = this.projectId;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"projectStatusId\"] = this.projectStatusId;\n data[\"projectCategoryId\"] = this.projectCategoryId;\n data[\"projectTypeId\"] = this.projectTypeId;\n data[\"organizationalUnitId\"] = this.organizationalUnitId;\n data[\"from\"] = this.from ? this.from.toISOString() : undefined;\n data[\"to\"] = this.to ? this.to.toISOString() : undefined;\n if (Array.isArray(this.activeModules)) {\n data[\"activeModules\"] = [];\n for (let item of this.activeModules)\n data[\"activeModules\"].push(item.toJSON());\n }\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IUpdateProjectDataRequest {\n projectId: number;\n name: string;\n description?: string | undefined;\n projectStatusId: number;\n projectCategoryId?: number | undefined;\n projectTypeId?: number | undefined;\n organizationalUnitId?: number | undefined;\n from?: Date | undefined;\n to?: Date | undefined;\n activeModules?: ActiveModule[] | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n}\n\nexport class UpdateProjectDeliverableRequest implements IUpdateProjectDeliverableRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n wbs!: string;\n complete?: number | undefined;\n finish?: Date | undefined;\n achievedDate?: Date | undefined;\n\n constructor(data?: IUpdateProjectDeliverableRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.wbs = _data[\"wbs\"];\n this.complete = _data[\"complete\"];\n this.finish = _data[\"finish\"] ? new Date(_data[\"finish\"].toString()) : undefined;\n this.achievedDate = _data[\"achievedDate\"] ? new Date(_data[\"achievedDate\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): UpdateProjectDeliverableRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectDeliverableRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"wbs\"] = this.wbs;\n data[\"complete\"] = this.complete;\n data[\"finish\"] = this.finish ? formatDate(this.finish) : undefined;\n data[\"achievedDate\"] = this.achievedDate ? formatDate(this.achievedDate) : undefined;\n return data;\n }\n}\n\nexport interface IUpdateProjectDeliverableRequest {\n name: string;\n description?: string | undefined;\n id: number;\n wbs: string;\n complete?: number | undefined;\n finish?: Date | undefined;\n achievedDate?: Date | undefined;\n}\n\nexport class UpdateProjectFinanceRequest implements IUpdateProjectFinanceRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n invoiceType!: InvoiceTypeEnum;\n invoiceNumber!: string;\n partnerId!: number;\n issueDate!: Date;\n due!: Date;\n amount!: number;\n taxAmount!: number;\n statusId!: number;\n\n constructor(data?: IUpdateProjectFinanceRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.invoiceType = _data[\"invoiceType\"];\n this.invoiceNumber = _data[\"invoiceNumber\"];\n this.partnerId = _data[\"partnerId\"];\n this.issueDate = _data[\"issueDate\"] ? new Date(_data[\"issueDate\"].toString()) : undefined;\n this.due = _data[\"due\"] ? new Date(_data[\"due\"].toString()) : undefined;\n this.amount = _data[\"amount\"];\n this.taxAmount = _data[\"taxAmount\"];\n this.statusId = _data[\"statusId\"];\n }\n }\n\n static fromJS(data: any): UpdateProjectFinanceRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectFinanceRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"invoiceType\"] = this.invoiceType;\n data[\"invoiceNumber\"] = this.invoiceNumber;\n data[\"partnerId\"] = this.partnerId;\n data[\"issueDate\"] = this.issueDate ? formatDate(this.issueDate) : undefined;\n data[\"due\"] = this.due ? formatDate(this.due) : undefined;\n data[\"amount\"] = this.amount;\n data[\"taxAmount\"] = this.taxAmount;\n data[\"statusId\"] = this.statusId;\n return data;\n }\n}\n\nexport interface IUpdateProjectFinanceRequest {\n name: string;\n description?: string | undefined;\n id: number;\n invoiceType: InvoiceTypeEnum;\n invoiceNumber: string;\n partnerId: number;\n issueDate: Date;\n due: Date;\n amount: number;\n taxAmount: number;\n statusId: number;\n}\n\nexport class UpdateProjectInformationRequest implements IUpdateProjectInformationRequest {\n information?: string | undefined;\n\n constructor(data?: IUpdateProjectInformationRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.information = _data[\"information\"];\n }\n }\n\n static fromJS(data: any): UpdateProjectInformationRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectInformationRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"information\"] = this.information;\n return data;\n }\n}\n\nexport interface IUpdateProjectInformationRequest {\n information?: string | undefined;\n}\n\nexport class UpdateProjectIssueRequest implements IUpdateProjectIssueRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n isActive!: boolean;\n impact?: string | undefined;\n solution?: string | undefined;\n resolution?: string | undefined;\n\n constructor(data?: IUpdateProjectIssueRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.impact = _data[\"impact\"];\n this.solution = _data[\"solution\"];\n this.resolution = _data[\"resolution\"];\n }\n }\n\n static fromJS(data: any): UpdateProjectIssueRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectIssueRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"impact\"] = this.impact;\n data[\"solution\"] = this.solution;\n data[\"resolution\"] = this.resolution;\n return data;\n }\n}\n\nexport interface IUpdateProjectIssueRequest {\n name: string;\n description?: string | undefined;\n id: number;\n isActive: boolean;\n impact?: string | undefined;\n solution?: string | undefined;\n resolution?: string | undefined;\n}\n\nexport class UpdateProjectMilestoneRequest implements IUpdateProjectMilestoneRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n wbs!: string;\n duration?: number | undefined;\n complete?: number | undefined;\n start?: Date | undefined;\n finish?: Date | undefined;\n achievedDate?: Date | undefined;\n milestoneDeviation?: string | undefined;\n\n constructor(data?: IUpdateProjectMilestoneRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.wbs = _data[\"wbs\"];\n this.duration = _data[\"duration\"];\n this.complete = _data[\"complete\"];\n this.start = _data[\"start\"] ? new Date(_data[\"start\"].toString()) : undefined;\n this.finish = _data[\"finish\"] ? new Date(_data[\"finish\"].toString()) : undefined;\n this.achievedDate = _data[\"achievedDate\"] ? new Date(_data[\"achievedDate\"].toString()) : undefined;\n this.milestoneDeviation = _data[\"milestoneDeviation\"];\n }\n }\n\n static fromJS(data: any): UpdateProjectMilestoneRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectMilestoneRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"wbs\"] = this.wbs;\n data[\"duration\"] = this.duration;\n data[\"complete\"] = this.complete;\n data[\"start\"] = this.start ? formatDate(this.start) : undefined;\n data[\"finish\"] = this.finish ? formatDate(this.finish) : undefined;\n data[\"achievedDate\"] = this.achievedDate ? formatDate(this.achievedDate) : undefined;\n data[\"milestoneDeviation\"] = this.milestoneDeviation;\n return data;\n }\n}\n\nexport interface IUpdateProjectMilestoneRequest {\n name: string;\n description?: string | undefined;\n id: number;\n wbs: string;\n duration?: number | undefined;\n complete?: number | undefined;\n start?: Date | undefined;\n finish?: Date | undefined;\n achievedDate?: Date | undefined;\n milestoneDeviation?: string | undefined;\n}\n\nexport class UpdateProjectQualityRequest implements IUpdateProjectQualityRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n wbs!: string;\n finish?: Date | undefined;\n achievedData?: Date | undefined;\n actions?: string | undefined;\n status!: ReportItemStatusEnum;\n\n constructor(data?: IUpdateProjectQualityRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.wbs = _data[\"wbs\"];\n this.finish = _data[\"finish\"] ? new Date(_data[\"finish\"].toString()) : undefined;\n this.achievedData = _data[\"achievedData\"] ? new Date(_data[\"achievedData\"].toString()) : undefined;\n this.actions = _data[\"actions\"];\n this.status = _data[\"status\"];\n }\n }\n\n static fromJS(data: any): UpdateProjectQualityRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectQualityRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"wbs\"] = this.wbs;\n data[\"finish\"] = this.finish ? formatDate(this.finish) : undefined;\n data[\"achievedData\"] = this.achievedData ? formatDate(this.achievedData) : undefined;\n data[\"actions\"] = this.actions;\n data[\"status\"] = this.status;\n return data;\n }\n}\n\nexport interface IUpdateProjectQualityRequest {\n name: string;\n description?: string | undefined;\n id: number;\n wbs: string;\n finish?: Date | undefined;\n achievedData?: Date | undefined;\n actions?: string | undefined;\n status: ReportItemStatusEnum;\n}\n\nexport class UpdateProjectReportRequest implements IUpdateProjectReportRequest {\n id!: number;\n projectId!: number;\n from!: Date;\n to!: Date;\n statusId!: number;\n relationshipStatus?: string | undefined;\n staffing?: string | undefined;\n areaStatuses!: ProjectReportAreaRequest[];\n\n constructor(data?: IUpdateProjectReportRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n if (!data) {\n this.areaStatuses = [];\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.projectId = _data[\"projectId\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.statusId = _data[\"statusId\"];\n this.relationshipStatus = _data[\"relationshipStatus\"];\n this.staffing = _data[\"staffing\"];\n if (Array.isArray(_data[\"areaStatuses\"])) {\n this.areaStatuses = [] as any;\n for (let item of _data[\"areaStatuses\"])\n this.areaStatuses!.push(ProjectReportAreaRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): UpdateProjectReportRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectReportRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"projectId\"] = this.projectId;\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"statusId\"] = this.statusId;\n data[\"relationshipStatus\"] = this.relationshipStatus;\n data[\"staffing\"] = this.staffing;\n if (Array.isArray(this.areaStatuses)) {\n data[\"areaStatuses\"] = [];\n for (let item of this.areaStatuses)\n data[\"areaStatuses\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IUpdateProjectReportRequest {\n id: number;\n projectId: number;\n from: Date;\n to: Date;\n statusId: number;\n relationshipStatus?: string | undefined;\n staffing?: string | undefined;\n areaStatuses: ProjectReportAreaRequest[];\n}\n\nexport class UpdateProjectRequest implements IUpdateProjectRequest {\n id!: number;\n name!: string;\n pmId?: number | undefined;\n description?: string | undefined;\n from?: Date | undefined;\n to?: Date | undefined;\n\n constructor(data?: IUpdateProjectRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.pmId = _data[\"pmId\"];\n this.description = _data[\"description\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): UpdateProjectRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"pmId\"] = this.pmId;\n data[\"description\"] = this.description;\n data[\"from\"] = this.from ? this.from.toISOString() : undefined;\n data[\"to\"] = this.to ? this.to.toISOString() : undefined;\n return data;\n }\n}\n\nexport interface IUpdateProjectRequest {\n id: number;\n name: string;\n pmId?: number | undefined;\n description?: string | undefined;\n from?: Date | undefined;\n to?: Date | undefined;\n}\n\nexport class UpdateProjectRiskRequest implements IUpdateProjectRiskRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n consequneces?: string | undefined;\n effects?: string | undefined;\n grossImpact?: number | undefined;\n probability?: number | undefined;\n mitigation!: string;\n mitigationType!: MitigationTypeEnum;\n grossImpactAfterMitigation?: number | undefined;\n probabilityAfterMitigation?: number | undefined;\n responsibleUserId?: number | undefined;\n statusId!: number;\n dueDate?: Date | undefined;\n costOfMitigation?: number | undefined;\n\n constructor(data?: IUpdateProjectRiskRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.consequneces = _data[\"consequneces\"];\n this.effects = _data[\"effects\"];\n this.grossImpact = _data[\"grossImpact\"];\n this.probability = _data[\"probability\"];\n this.mitigation = _data[\"mitigation\"];\n this.mitigationType = _data[\"mitigationType\"];\n this.grossImpactAfterMitigation = _data[\"grossImpactAfterMitigation\"];\n this.probabilityAfterMitigation = _data[\"probabilityAfterMitigation\"];\n this.responsibleUserId = _data[\"responsibleUserId\"];\n this.statusId = _data[\"statusId\"];\n this.dueDate = _data[\"dueDate\"] ? new Date(_data[\"dueDate\"].toString()) : undefined;\n this.costOfMitigation = _data[\"costOfMitigation\"];\n }\n }\n\n static fromJS(data: any): UpdateProjectRiskRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectRiskRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"consequneces\"] = this.consequneces;\n data[\"effects\"] = this.effects;\n data[\"grossImpact\"] = this.grossImpact;\n data[\"probability\"] = this.probability;\n data[\"mitigation\"] = this.mitigation;\n data[\"mitigationType\"] = this.mitigationType;\n data[\"grossImpactAfterMitigation\"] = this.grossImpactAfterMitigation;\n data[\"probabilityAfterMitigation\"] = this.probabilityAfterMitigation;\n data[\"responsibleUserId\"] = this.responsibleUserId;\n data[\"statusId\"] = this.statusId;\n data[\"dueDate\"] = this.dueDate ? formatDate(this.dueDate) : undefined;\n data[\"costOfMitigation\"] = this.costOfMitigation;\n return data;\n }\n}\n\nexport interface IUpdateProjectRiskRequest {\n name: string;\n description?: string | undefined;\n id: number;\n consequneces?: string | undefined;\n effects?: string | undefined;\n grossImpact?: number | undefined;\n probability?: number | undefined;\n mitigation: string;\n mitigationType: MitigationTypeEnum;\n grossImpactAfterMitigation?: number | undefined;\n probabilityAfterMitigation?: number | undefined;\n responsibleUserId?: number | undefined;\n statusId: number;\n dueDate?: Date | undefined;\n costOfMitigation?: number | undefined;\n}\n\nexport class UpdateProjectSLARequest implements IUpdateProjectSLARequest {\n isActive!: boolean;\n timeMeasure!: TimeMeasureEnum;\n closingStatus!: TicketStatusEnum;\n resolutionTimeCalculationStatus!: TicketStatusEnum;\n resolutionTimeBasedOn!: ResolutionTimeBasedOnEnum;\n excludeOnHoldTime!: boolean;\n workWeekFrom!: WeekDayEnum;\n workWeekTo!: WeekDayEnum;\n workTimeFrom!: number;\n workTimeTo!: number;\n times?: UpdateSLAResponseTimeRequest[] | undefined;\n\n constructor(data?: IUpdateProjectSLARequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.isActive = _data[\"isActive\"];\n this.timeMeasure = _data[\"timeMeasure\"];\n this.closingStatus = _data[\"closingStatus\"];\n this.resolutionTimeCalculationStatus = _data[\"resolutionTimeCalculationStatus\"];\n this.resolutionTimeBasedOn = _data[\"resolutionTimeBasedOn\"];\n this.excludeOnHoldTime = _data[\"excludeOnHoldTime\"];\n this.workWeekFrom = _data[\"workWeekFrom\"];\n this.workWeekTo = _data[\"workWeekTo\"];\n this.workTimeFrom = _data[\"workTimeFrom\"];\n this.workTimeTo = _data[\"workTimeTo\"];\n if (Array.isArray(_data[\"times\"])) {\n this.times = [] as any;\n for (let item of _data[\"times\"])\n this.times!.push(UpdateSLAResponseTimeRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): UpdateProjectSLARequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectSLARequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"isActive\"] = this.isActive;\n data[\"timeMeasure\"] = this.timeMeasure;\n data[\"closingStatus\"] = this.closingStatus;\n data[\"resolutionTimeCalculationStatus\"] = this.resolutionTimeCalculationStatus;\n data[\"resolutionTimeBasedOn\"] = this.resolutionTimeBasedOn;\n data[\"excludeOnHoldTime\"] = this.excludeOnHoldTime;\n data[\"workWeekFrom\"] = this.workWeekFrom;\n data[\"workWeekTo\"] = this.workWeekTo;\n data[\"workTimeFrom\"] = this.workTimeFrom;\n data[\"workTimeTo\"] = this.workTimeTo;\n if (Array.isArray(this.times)) {\n data[\"times\"] = [];\n for (let item of this.times)\n data[\"times\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IUpdateProjectSLARequest {\n isActive: boolean;\n timeMeasure: TimeMeasureEnum;\n closingStatus: TicketStatusEnum;\n resolutionTimeCalculationStatus: TicketStatusEnum;\n resolutionTimeBasedOn: ResolutionTimeBasedOnEnum;\n excludeOnHoldTime: boolean;\n workWeekFrom: WeekDayEnum;\n workWeekTo: WeekDayEnum;\n workTimeFrom: number;\n workTimeTo: number;\n times?: UpdateSLAResponseTimeRequest[] | undefined;\n}\n\nexport class UpdateProjectSubcontractorRequest implements IUpdateProjectSubcontractorRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n isActive!: boolean;\n deliverable!: string;\n status!: ReportItemStatusEnum;\n issue!: string;\n solution?: string | undefined;\n resolution?: string | undefined;\n achievedDate?: Date | undefined;\n\n constructor(data?: IUpdateProjectSubcontractorRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.deliverable = _data[\"deliverable\"];\n this.status = _data[\"status\"];\n this.issue = _data[\"issue\"];\n this.solution = _data[\"solution\"];\n this.resolution = _data[\"resolution\"];\n this.achievedDate = _data[\"achievedDate\"] ? new Date(_data[\"achievedDate\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): UpdateProjectSubcontractorRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectSubcontractorRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"deliverable\"] = this.deliverable;\n data[\"status\"] = this.status;\n data[\"issue\"] = this.issue;\n data[\"solution\"] = this.solution;\n data[\"resolution\"] = this.resolution;\n data[\"achievedDate\"] = this.achievedDate ? formatDate(this.achievedDate) : undefined;\n return data;\n }\n}\n\nexport interface IUpdateProjectSubcontractorRequest {\n name: string;\n description?: string | undefined;\n id: number;\n isActive: boolean;\n deliverable: string;\n status: ReportItemStatusEnum;\n issue: string;\n solution?: string | undefined;\n resolution?: string | undefined;\n achievedDate?: Date | undefined;\n}\n\nexport class UpdateProjectTeamMemberRequest implements IUpdateProjectTeamMemberRequest {\n userId!: number;\n projectRoleId!: number;\n projectTeamId!: number;\n statusId!: number;\n validUntil!: Date;\n id!: number;\n\n constructor(data?: IUpdateProjectTeamMemberRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.userId = _data[\"userId\"];\n this.projectRoleId = _data[\"projectRoleId\"];\n this.projectTeamId = _data[\"projectTeamId\"];\n this.statusId = _data[\"statusId\"];\n this.validUntil = _data[\"validUntil\"] ? new Date(_data[\"validUntil\"].toString()) : undefined;\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateProjectTeamMemberRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectTeamMemberRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"userId\"] = this.userId;\n data[\"projectRoleId\"] = this.projectRoleId;\n data[\"projectTeamId\"] = this.projectTeamId;\n data[\"statusId\"] = this.statusId;\n data[\"validUntil\"] = this.validUntil ? formatDate(this.validUntil) : undefined;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateProjectTeamMemberRequest {\n userId: number;\n projectRoleId: number;\n projectTeamId: number;\n statusId: number;\n validUntil: Date;\n id: number;\n}\n\nexport class UpdateProjectTeamMemberValidityPeriodRequest implements IUpdateProjectTeamMemberValidityPeriodRequest {\n teamMemberId!: number;\n from!: Date;\n to!: Date;\n salesRate!: number;\n costRate!: number;\n id!: number;\n\n constructor(data?: IUpdateProjectTeamMemberValidityPeriodRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.teamMemberId = _data[\"teamMemberId\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.salesRate = _data[\"salesRate\"];\n this.costRate = _data[\"costRate\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateProjectTeamMemberValidityPeriodRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateProjectTeamMemberValidityPeriodRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"teamMemberId\"] = this.teamMemberId;\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"salesRate\"] = this.salesRate;\n data[\"costRate\"] = this.costRate;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateProjectTeamMemberValidityPeriodRequest {\n teamMemberId: number;\n from: Date;\n to: Date;\n salesRate: number;\n costRate: number;\n id: number;\n}\n\nexport class UpdateReminderRequest implements IUpdateReminderRequest {\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n subject!: string;\n startDate!: Date;\n endDate!: Date;\n isRepeat!: boolean;\n repeatInterval!: RepeatIntervalEnum;\n repeatOnMonday!: boolean;\n repeatOnTuesday!: boolean;\n repeatOnWednesday!: boolean;\n repeatOnThursday!: boolean;\n repeatOnFriday!: boolean;\n repeatOnSaturday!: boolean;\n repeatOnSunday!: boolean;\n isPrivate!: boolean;\n sendEmail!: boolean;\n projectTeamId?: number | undefined;\n recipientUserIds?: number[] | undefined;\n id!: number;\n\n constructor(data?: IUpdateReminderRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.subject = _data[\"subject\"];\n this.startDate = _data[\"startDate\"] ? new Date(_data[\"startDate\"].toString()) : undefined;\n this.endDate = _data[\"endDate\"] ? new Date(_data[\"endDate\"].toString()) : undefined;\n this.isRepeat = _data[\"isRepeat\"];\n this.repeatInterval = _data[\"repeatInterval\"];\n this.repeatOnMonday = _data[\"repeatOnMonday\"];\n this.repeatOnTuesday = _data[\"repeatOnTuesday\"];\n this.repeatOnWednesday = _data[\"repeatOnWednesday\"];\n this.repeatOnThursday = _data[\"repeatOnThursday\"];\n this.repeatOnFriday = _data[\"repeatOnFriday\"];\n this.repeatOnSaturday = _data[\"repeatOnSaturday\"];\n this.repeatOnSunday = _data[\"repeatOnSunday\"];\n this.isPrivate = _data[\"isPrivate\"];\n this.sendEmail = _data[\"sendEmail\"];\n this.projectTeamId = _data[\"projectTeamId\"];\n if (Array.isArray(_data[\"recipientUserIds\"])) {\n this.recipientUserIds = [] as any;\n for (let item of _data[\"recipientUserIds\"])\n this.recipientUserIds!.push(item);\n }\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateReminderRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateReminderRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"subject\"] = this.subject;\n data[\"startDate\"] = this.startDate ? this.startDate.toISOString() : undefined;\n data[\"endDate\"] = this.endDate ? this.endDate.toISOString() : undefined;\n data[\"isRepeat\"] = this.isRepeat;\n data[\"repeatInterval\"] = this.repeatInterval;\n data[\"repeatOnMonday\"] = this.repeatOnMonday;\n data[\"repeatOnTuesday\"] = this.repeatOnTuesday;\n data[\"repeatOnWednesday\"] = this.repeatOnWednesday;\n data[\"repeatOnThursday\"] = this.repeatOnThursday;\n data[\"repeatOnFriday\"] = this.repeatOnFriday;\n data[\"repeatOnSaturday\"] = this.repeatOnSaturday;\n data[\"repeatOnSunday\"] = this.repeatOnSunday;\n data[\"isPrivate\"] = this.isPrivate;\n data[\"sendEmail\"] = this.sendEmail;\n data[\"projectTeamId\"] = this.projectTeamId;\n if (Array.isArray(this.recipientUserIds)) {\n data[\"recipientUserIds\"] = [];\n for (let item of this.recipientUserIds)\n data[\"recipientUserIds\"].push(item);\n }\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateReminderRequest {\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n subject: string;\n startDate: Date;\n endDate: Date;\n isRepeat: boolean;\n repeatInterval: RepeatIntervalEnum;\n repeatOnMonday: boolean;\n repeatOnTuesday: boolean;\n repeatOnWednesday: boolean;\n repeatOnThursday: boolean;\n repeatOnFriday: boolean;\n repeatOnSaturday: boolean;\n repeatOnSunday: boolean;\n isPrivate: boolean;\n sendEmail: boolean;\n projectTeamId?: number | undefined;\n recipientUserIds?: number[] | undefined;\n id: number;\n}\n\nexport class UpdateRiskRequest implements IUpdateRiskRequest {\n name!: string;\n typeId?: number | undefined;\n consequneces?: string | undefined;\n effects?: string | undefined;\n responsibleUserId!: number;\n statusId!: number;\n dueDate!: Date;\n comment?: string | undefined;\n grossImpact?: number | undefined;\n probability?: number | undefined;\n mitigation?: string | undefined;\n mitigationType!: MitigationTypeEnum;\n mitigationCost?: number | undefined;\n grossImpactAfterMitigation?: number | undefined;\n probabilityAfterMitigation?: number | undefined;\n probabilityDescriptive?: RiskProbabilityEnum;\n impactDescriptive?: RiskImpactEnum;\n id!: number;\n\n constructor(data?: IUpdateRiskRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.typeId = _data[\"typeId\"];\n this.consequneces = _data[\"consequneces\"];\n this.effects = _data[\"effects\"];\n this.responsibleUserId = _data[\"responsibleUserId\"];\n this.statusId = _data[\"statusId\"];\n this.dueDate = _data[\"dueDate\"] ? new Date(_data[\"dueDate\"].toString()) : undefined;\n this.comment = _data[\"comment\"];\n this.grossImpact = _data[\"grossImpact\"];\n this.probability = _data[\"probability\"];\n this.mitigation = _data[\"mitigation\"];\n this.mitigationType = _data[\"mitigationType\"];\n this.mitigationCost = _data[\"mitigationCost\"];\n this.grossImpactAfterMitigation = _data[\"grossImpactAfterMitigation\"];\n this.probabilityAfterMitigation = _data[\"probabilityAfterMitigation\"];\n this.probabilityDescriptive = _data[\"probabilityDescriptive\"];\n this.impactDescriptive = _data[\"impactDescriptive\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateRiskRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateRiskRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"typeId\"] = this.typeId;\n data[\"consequneces\"] = this.consequneces;\n data[\"effects\"] = this.effects;\n data[\"responsibleUserId\"] = this.responsibleUserId;\n data[\"statusId\"] = this.statusId;\n data[\"dueDate\"] = this.dueDate ? formatDate(this.dueDate) : undefined;\n data[\"comment\"] = this.comment;\n data[\"grossImpact\"] = this.grossImpact;\n data[\"probability\"] = this.probability;\n data[\"mitigation\"] = this.mitigation;\n data[\"mitigationType\"] = this.mitigationType;\n data[\"mitigationCost\"] = this.mitigationCost;\n data[\"grossImpactAfterMitigation\"] = this.grossImpactAfterMitigation;\n data[\"probabilityAfterMitigation\"] = this.probabilityAfterMitigation;\n data[\"probabilityDescriptive\"] = this.probabilityDescriptive;\n data[\"impactDescriptive\"] = this.impactDescriptive;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateRiskRequest {\n name: string;\n typeId?: number | undefined;\n consequneces?: string | undefined;\n effects?: string | undefined;\n responsibleUserId: number;\n statusId: number;\n dueDate: Date;\n comment?: string | undefined;\n grossImpact?: number | undefined;\n probability?: number | undefined;\n mitigation?: string | undefined;\n mitigationType: MitigationTypeEnum;\n mitigationCost?: number | undefined;\n grossImpactAfterMitigation?: number | undefined;\n probabilityAfterMitigation?: number | undefined;\n probabilityDescriptive?: RiskProbabilityEnum;\n impactDescriptive?: RiskImpactEnum;\n id: number;\n}\n\nexport class UpdateScheduleRequest implements IUpdateScheduleRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n wbs!: string;\n start!: Date;\n finish!: Date;\n parentId?: number | undefined;\n percentOfCompletion?: number | undefined;\n achievedDate?: Date | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n customText3?: string | undefined;\n customText4?: string | undefined;\n customText5?: string | undefined;\n customText6?: string | undefined;\n customText7?: string | undefined;\n customText8?: string | undefined;\n customText9?: string | undefined;\n customText10?: string | undefined;\n projectRoleResponsibleId?: number | undefined;\n insertedResponsibleUserIds?: number[] | undefined;\n workloadForResponsibleUsers?: number | undefined;\n addAsTaskPerResponsibleUser!: boolean;\n projectRoleAccountableId?: number | undefined;\n insertedAccountableUserIds?: number[] | undefined;\n projectRoleConsultedId?: number | undefined;\n insertedConsultedUserIds?: number[] | undefined;\n projectRoleInformedId?: number | undefined;\n insertedInformedUserIds?: number[] | undefined;\n markAsMilestone!: boolean;\n markAsDeliverable!: boolean;\n markTaskForQualityGate!: boolean;\n removedResponsibleUserIds?: number[] | undefined;\n removedAccountableUserIds?: number[] | undefined;\n removedConsultedUserIds?: number[] | undefined;\n removedInformedUserIds?: number[] | undefined;\n\n constructor(data?: IUpdateScheduleRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.wbs = _data[\"wbs\"];\n this.start = _data[\"start\"] ? new Date(_data[\"start\"].toString()) : undefined;\n this.finish = _data[\"finish\"] ? new Date(_data[\"finish\"].toString()) : undefined;\n this.parentId = _data[\"parentId\"];\n this.percentOfCompletion = _data[\"percentOfCompletion\"];\n this.achievedDate = _data[\"achievedDate\"] ? new Date(_data[\"achievedDate\"].toString()) : undefined;\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.customText3 = _data[\"customText3\"];\n this.customText4 = _data[\"customText4\"];\n this.customText5 = _data[\"customText5\"];\n this.customText6 = _data[\"customText6\"];\n this.customText7 = _data[\"customText7\"];\n this.customText8 = _data[\"customText8\"];\n this.customText9 = _data[\"customText9\"];\n this.customText10 = _data[\"customText10\"];\n this.projectRoleResponsibleId = _data[\"projectRoleResponsibleId\"];\n if (Array.isArray(_data[\"insertedResponsibleUserIds\"])) {\n this.insertedResponsibleUserIds = [] as any;\n for (let item of _data[\"insertedResponsibleUserIds\"])\n this.insertedResponsibleUserIds!.push(item);\n }\n this.workloadForResponsibleUsers = _data[\"workloadForResponsibleUsers\"];\n this.addAsTaskPerResponsibleUser = _data[\"addAsTaskPerResponsibleUser\"];\n this.projectRoleAccountableId = _data[\"projectRoleAccountableId\"];\n if (Array.isArray(_data[\"insertedAccountableUserIds\"])) {\n this.insertedAccountableUserIds = [] as any;\n for (let item of _data[\"insertedAccountableUserIds\"])\n this.insertedAccountableUserIds!.push(item);\n }\n this.projectRoleConsultedId = _data[\"projectRoleConsultedId\"];\n if (Array.isArray(_data[\"insertedConsultedUserIds\"])) {\n this.insertedConsultedUserIds = [] as any;\n for (let item of _data[\"insertedConsultedUserIds\"])\n this.insertedConsultedUserIds!.push(item);\n }\n this.projectRoleInformedId = _data[\"projectRoleInformedId\"];\n if (Array.isArray(_data[\"insertedInformedUserIds\"])) {\n this.insertedInformedUserIds = [] as any;\n for (let item of _data[\"insertedInformedUserIds\"])\n this.insertedInformedUserIds!.push(item);\n }\n this.markAsMilestone = _data[\"markAsMilestone\"];\n this.markAsDeliverable = _data[\"markAsDeliverable\"];\n this.markTaskForQualityGate = _data[\"markTaskForQualityGate\"];\n if (Array.isArray(_data[\"removedResponsibleUserIds\"])) {\n this.removedResponsibleUserIds = [] as any;\n for (let item of _data[\"removedResponsibleUserIds\"])\n this.removedResponsibleUserIds!.push(item);\n }\n if (Array.isArray(_data[\"removedAccountableUserIds\"])) {\n this.removedAccountableUserIds = [] as any;\n for (let item of _data[\"removedAccountableUserIds\"])\n this.removedAccountableUserIds!.push(item);\n }\n if (Array.isArray(_data[\"removedConsultedUserIds\"])) {\n this.removedConsultedUserIds = [] as any;\n for (let item of _data[\"removedConsultedUserIds\"])\n this.removedConsultedUserIds!.push(item);\n }\n if (Array.isArray(_data[\"removedInformedUserIds\"])) {\n this.removedInformedUserIds = [] as any;\n for (let item of _data[\"removedInformedUserIds\"])\n this.removedInformedUserIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): UpdateScheduleRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateScheduleRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"wbs\"] = this.wbs;\n data[\"start\"] = this.start ? this.start.toISOString() : undefined;\n data[\"finish\"] = this.finish ? this.finish.toISOString() : undefined;\n data[\"parentId\"] = this.parentId;\n data[\"percentOfCompletion\"] = this.percentOfCompletion;\n data[\"achievedDate\"] = this.achievedDate ? this.achievedDate.toISOString() : undefined;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"customText3\"] = this.customText3;\n data[\"customText4\"] = this.customText4;\n data[\"customText5\"] = this.customText5;\n data[\"customText6\"] = this.customText6;\n data[\"customText7\"] = this.customText7;\n data[\"customText8\"] = this.customText8;\n data[\"customText9\"] = this.customText9;\n data[\"customText10\"] = this.customText10;\n data[\"projectRoleResponsibleId\"] = this.projectRoleResponsibleId;\n if (Array.isArray(this.insertedResponsibleUserIds)) {\n data[\"insertedResponsibleUserIds\"] = [];\n for (let item of this.insertedResponsibleUserIds)\n data[\"insertedResponsibleUserIds\"].push(item);\n }\n data[\"workloadForResponsibleUsers\"] = this.workloadForResponsibleUsers;\n data[\"addAsTaskPerResponsibleUser\"] = this.addAsTaskPerResponsibleUser;\n data[\"projectRoleAccountableId\"] = this.projectRoleAccountableId;\n if (Array.isArray(this.insertedAccountableUserIds)) {\n data[\"insertedAccountableUserIds\"] = [];\n for (let item of this.insertedAccountableUserIds)\n data[\"insertedAccountableUserIds\"].push(item);\n }\n data[\"projectRoleConsultedId\"] = this.projectRoleConsultedId;\n if (Array.isArray(this.insertedConsultedUserIds)) {\n data[\"insertedConsultedUserIds\"] = [];\n for (let item of this.insertedConsultedUserIds)\n data[\"insertedConsultedUserIds\"].push(item);\n }\n data[\"projectRoleInformedId\"] = this.projectRoleInformedId;\n if (Array.isArray(this.insertedInformedUserIds)) {\n data[\"insertedInformedUserIds\"] = [];\n for (let item of this.insertedInformedUserIds)\n data[\"insertedInformedUserIds\"].push(item);\n }\n data[\"markAsMilestone\"] = this.markAsMilestone;\n data[\"markAsDeliverable\"] = this.markAsDeliverable;\n data[\"markTaskForQualityGate\"] = this.markTaskForQualityGate;\n if (Array.isArray(this.removedResponsibleUserIds)) {\n data[\"removedResponsibleUserIds\"] = [];\n for (let item of this.removedResponsibleUserIds)\n data[\"removedResponsibleUserIds\"].push(item);\n }\n if (Array.isArray(this.removedAccountableUserIds)) {\n data[\"removedAccountableUserIds\"] = [];\n for (let item of this.removedAccountableUserIds)\n data[\"removedAccountableUserIds\"].push(item);\n }\n if (Array.isArray(this.removedConsultedUserIds)) {\n data[\"removedConsultedUserIds\"] = [];\n for (let item of this.removedConsultedUserIds)\n data[\"removedConsultedUserIds\"].push(item);\n }\n if (Array.isArray(this.removedInformedUserIds)) {\n data[\"removedInformedUserIds\"] = [];\n for (let item of this.removedInformedUserIds)\n data[\"removedInformedUserIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IUpdateScheduleRequest {\n name: string;\n description?: string | undefined;\n id: number;\n wbs: string;\n start: Date;\n finish: Date;\n parentId?: number | undefined;\n percentOfCompletion?: number | undefined;\n achievedDate?: Date | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n customText3?: string | undefined;\n customText4?: string | undefined;\n customText5?: string | undefined;\n customText6?: string | undefined;\n customText7?: string | undefined;\n customText8?: string | undefined;\n customText9?: string | undefined;\n customText10?: string | undefined;\n projectRoleResponsibleId?: number | undefined;\n insertedResponsibleUserIds?: number[] | undefined;\n workloadForResponsibleUsers?: number | undefined;\n addAsTaskPerResponsibleUser: boolean;\n projectRoleAccountableId?: number | undefined;\n insertedAccountableUserIds?: number[] | undefined;\n projectRoleConsultedId?: number | undefined;\n insertedConsultedUserIds?: number[] | undefined;\n projectRoleInformedId?: number | undefined;\n insertedInformedUserIds?: number[] | undefined;\n markAsMilestone: boolean;\n markAsDeliverable: boolean;\n markTaskForQualityGate: boolean;\n removedResponsibleUserIds?: number[] | undefined;\n removedAccountableUserIds?: number[] | undefined;\n removedConsultedUserIds?: number[] | undefined;\n removedInformedUserIds?: number[] | undefined;\n}\n\nexport class UpdateScopeItemLevelRequest implements IUpdateScopeItemLevelRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n processDescription?: string | undefined;\n ticketId?: number | undefined;\n processVariant!: boolean;\n relatedScopeItemLevelId?: number | undefined;\n regressionRelevant!: boolean;\n regressionDependecies?: string | undefined;\n stressTestRelevant!: boolean;\n environmentId?: number | undefined;\n inputDocument?: string | undefined;\n outputDocument?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n scopeDepartmentId?: number | undefined;\n scopeStepTypeId?: number | undefined;\n scopeUserRoleId?: number | undefined;\n isComplex!: boolean;\n complexForScopeItemId?: number | undefined;\n order!: number;\n insertedChangeRequestIds?: number[] | undefined;\n removedChangeRequestIds?: number[] | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n\n constructor(data?: IUpdateScopeItemLevelRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.processDescription = _data[\"processDescription\"];\n this.ticketId = _data[\"ticketId\"];\n this.processVariant = _data[\"processVariant\"];\n this.relatedScopeItemLevelId = _data[\"relatedScopeItemLevelId\"];\n this.regressionRelevant = _data[\"regressionRelevant\"];\n this.regressionDependecies = _data[\"regressionDependecies\"];\n this.stressTestRelevant = _data[\"stressTestRelevant\"];\n this.environmentId = _data[\"environmentId\"];\n this.inputDocument = _data[\"inputDocument\"];\n this.outputDocument = _data[\"outputDocument\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.scopeDepartmentId = _data[\"scopeDepartmentId\"];\n this.scopeStepTypeId = _data[\"scopeStepTypeId\"];\n this.scopeUserRoleId = _data[\"scopeUserRoleId\"];\n this.isComplex = _data[\"isComplex\"];\n this.complexForScopeItemId = _data[\"complexForScopeItemId\"];\n this.order = _data[\"order\"];\n if (Array.isArray(_data[\"insertedChangeRequestIds\"])) {\n this.insertedChangeRequestIds = [] as any;\n for (let item of _data[\"insertedChangeRequestIds\"])\n this.insertedChangeRequestIds!.push(item);\n }\n if (Array.isArray(_data[\"removedChangeRequestIds\"])) {\n this.removedChangeRequestIds = [] as any;\n for (let item of _data[\"removedChangeRequestIds\"])\n this.removedChangeRequestIds!.push(item);\n }\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): UpdateScopeItemLevelRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateScopeItemLevelRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"processDescription\"] = this.processDescription;\n data[\"ticketId\"] = this.ticketId;\n data[\"processVariant\"] = this.processVariant;\n data[\"relatedScopeItemLevelId\"] = this.relatedScopeItemLevelId;\n data[\"regressionRelevant\"] = this.regressionRelevant;\n data[\"regressionDependecies\"] = this.regressionDependecies;\n data[\"stressTestRelevant\"] = this.stressTestRelevant;\n data[\"environmentId\"] = this.environmentId;\n data[\"inputDocument\"] = this.inputDocument;\n data[\"outputDocument\"] = this.outputDocument;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"scopeDepartmentId\"] = this.scopeDepartmentId;\n data[\"scopeStepTypeId\"] = this.scopeStepTypeId;\n data[\"scopeUserRoleId\"] = this.scopeUserRoleId;\n data[\"isComplex\"] = this.isComplex;\n data[\"complexForScopeItemId\"] = this.complexForScopeItemId;\n data[\"order\"] = this.order;\n if (Array.isArray(this.insertedChangeRequestIds)) {\n data[\"insertedChangeRequestIds\"] = [];\n for (let item of this.insertedChangeRequestIds)\n data[\"insertedChangeRequestIds\"].push(item);\n }\n if (Array.isArray(this.removedChangeRequestIds)) {\n data[\"removedChangeRequestIds\"] = [];\n for (let item of this.removedChangeRequestIds)\n data[\"removedChangeRequestIds\"].push(item);\n }\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IUpdateScopeItemLevelRequest {\n name: string;\n description?: string | undefined;\n id: number;\n processDescription?: string | undefined;\n ticketId?: number | undefined;\n processVariant: boolean;\n relatedScopeItemLevelId?: number | undefined;\n regressionRelevant: boolean;\n regressionDependecies?: string | undefined;\n stressTestRelevant: boolean;\n environmentId?: number | undefined;\n inputDocument?: string | undefined;\n outputDocument?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n scopeDepartmentId?: number | undefined;\n scopeStepTypeId?: number | undefined;\n scopeUserRoleId?: number | undefined;\n isComplex: boolean;\n complexForScopeItemId?: number | undefined;\n order: number;\n insertedChangeRequestIds?: number[] | undefined;\n removedChangeRequestIds?: number[] | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n}\n\nexport class UpdateSLAResponseTimeRequest implements IUpdateSLAResponseTimeRequest {\n id!: number;\n resolutionTime!: number;\n responseTime!: number;\n\n constructor(data?: IUpdateSLAResponseTimeRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.resolutionTime = _data[\"resolutionTime\"];\n this.responseTime = _data[\"responseTime\"];\n }\n }\n\n static fromJS(data: any): UpdateSLAResponseTimeRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateSLAResponseTimeRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"resolutionTime\"] = this.resolutionTime;\n data[\"responseTime\"] = this.responseTime;\n return data;\n }\n}\n\nexport interface IUpdateSLAResponseTimeRequest {\n id: number;\n resolutionTime: number;\n responseTime: number;\n}\n\nexport class UpdateStatusReportGeneralConfigRequest implements IUpdateStatusReportGeneralConfigRequest {\n enableNotifications!: boolean;\n id!: number;\n\n constructor(data?: IUpdateStatusReportGeneralConfigRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.enableNotifications = _data[\"enableNotifications\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateStatusReportGeneralConfigRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateStatusReportGeneralConfigRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"enableNotifications\"] = this.enableNotifications;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateStatusReportGeneralConfigRequest {\n enableNotifications: boolean;\n id: number;\n}\n\nexport class UpdateStatusReportRequest implements IUpdateStatusReportRequest {\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n reportDate!: Date;\n from?: Date | undefined;\n to?: Date | undefined;\n responsibleUserId?: number | undefined;\n notifyResponsibleUser!: boolean;\n openIssues!: string;\n keyRisks!: string;\n nextSteps!: string;\n overallStatus!: ReportStatusAreaEnum;\n overallStatusAndKeyAchievements!: string;\n projectTeamId?: number | undefined;\n id!: number;\n\n constructor(data?: IUpdateStatusReportRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.reportDate = _data[\"reportDate\"] ? new Date(_data[\"reportDate\"].toString()) : undefined;\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.responsibleUserId = _data[\"responsibleUserId\"];\n this.notifyResponsibleUser = _data[\"notifyResponsibleUser\"];\n this.openIssues = _data[\"openIssues\"];\n this.keyRisks = _data[\"keyRisks\"];\n this.nextSteps = _data[\"nextSteps\"];\n this.overallStatus = _data[\"overallStatus\"];\n this.overallStatusAndKeyAchievements = _data[\"overallStatusAndKeyAchievements\"];\n this.projectTeamId = _data[\"projectTeamId\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateStatusReportRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateStatusReportRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"reportDate\"] = this.reportDate ? formatDate(this.reportDate) : undefined;\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"responsibleUserId\"] = this.responsibleUserId;\n data[\"notifyResponsibleUser\"] = this.notifyResponsibleUser;\n data[\"openIssues\"] = this.openIssues;\n data[\"keyRisks\"] = this.keyRisks;\n data[\"nextSteps\"] = this.nextSteps;\n data[\"overallStatus\"] = this.overallStatus;\n data[\"overallStatusAndKeyAchievements\"] = this.overallStatusAndKeyAchievements;\n data[\"projectTeamId\"] = this.projectTeamId;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateStatusReportRequest {\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n reportDate: Date;\n from?: Date | undefined;\n to?: Date | undefined;\n responsibleUserId?: number | undefined;\n notifyResponsibleUser: boolean;\n openIssues: string;\n keyRisks: string;\n nextSteps: string;\n overallStatus: ReportStatusAreaEnum;\n overallStatusAndKeyAchievements: string;\n projectTeamId?: number | undefined;\n id: number;\n}\n\nexport class UpdateStatusRequest implements IUpdateStatusRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n isActive!: boolean;\n color!: string;\n\n constructor(data?: IUpdateStatusRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.color = _data[\"color\"];\n }\n }\n\n static fromJS(data: any): UpdateStatusRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateStatusRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"color\"] = this.color;\n return data;\n }\n}\n\nexport interface IUpdateStatusRequest {\n name: string;\n description?: string | undefined;\n id: number;\n isActive: boolean;\n color: string;\n}\n\nexport class UpdateSurveyParticipantsRequest implements IUpdateSurveyParticipantsRequest {\n insertUserIds?: number[] | undefined;\n deleteUserIds?: number[] | undefined;\n\n constructor(data?: IUpdateSurveyParticipantsRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"insertUserIds\"])) {\n this.insertUserIds = [] as any;\n for (let item of _data[\"insertUserIds\"])\n this.insertUserIds!.push(item);\n }\n if (Array.isArray(_data[\"deleteUserIds\"])) {\n this.deleteUserIds = [] as any;\n for (let item of _data[\"deleteUserIds\"])\n this.deleteUserIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): UpdateSurveyParticipantsRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateSurveyParticipantsRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.insertUserIds)) {\n data[\"insertUserIds\"] = [];\n for (let item of this.insertUserIds)\n data[\"insertUserIds\"].push(item);\n }\n if (Array.isArray(this.deleteUserIds)) {\n data[\"deleteUserIds\"] = [];\n for (let item of this.deleteUserIds)\n data[\"deleteUserIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IUpdateSurveyParticipantsRequest {\n insertUserIds?: number[] | undefined;\n deleteUserIds?: number[] | undefined;\n}\n\nexport class UpdateSurveyProposedAnswerRequest implements IUpdateSurveyProposedAnswerRequest {\n id!: number;\n answer!: string;\n points?: number | undefined;\n isCorrect!: boolean;\n\n constructor(data?: IUpdateSurveyProposedAnswerRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.answer = _data[\"answer\"];\n this.points = _data[\"points\"];\n this.isCorrect = _data[\"isCorrect\"];\n }\n }\n\n static fromJS(data: any): UpdateSurveyProposedAnswerRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateSurveyProposedAnswerRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"answer\"] = this.answer;\n data[\"points\"] = this.points;\n data[\"isCorrect\"] = this.isCorrect;\n return data;\n }\n}\n\nexport interface IUpdateSurveyProposedAnswerRequest {\n id: number;\n answer: string;\n points?: number | undefined;\n isCorrect: boolean;\n}\n\nexport class UpdateSurveyQuestionRequest implements IUpdateSurveyQuestionRequest {\n id!: number;\n questionGroup?: string | undefined;\n question!: string;\n surveyType!: SurveyQuestionTypeEnum;\n answerRequired!: boolean;\n scoreQuestion!: boolean;\n order!: number;\n proposedAnswersDelta?: SurveyProposedAnswerDeltaRequest;\n\n constructor(data?: IUpdateSurveyQuestionRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.questionGroup = _data[\"questionGroup\"];\n this.question = _data[\"question\"];\n this.surveyType = _data[\"surveyType\"];\n this.answerRequired = _data[\"answerRequired\"];\n this.scoreQuestion = _data[\"scoreQuestion\"];\n this.order = _data[\"order\"];\n this.proposedAnswersDelta = _data[\"proposedAnswersDelta\"] ? SurveyProposedAnswerDeltaRequest.fromJS(_data[\"proposedAnswersDelta\"]) : undefined;\n }\n }\n\n static fromJS(data: any): UpdateSurveyQuestionRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateSurveyQuestionRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"questionGroup\"] = this.questionGroup;\n data[\"question\"] = this.question;\n data[\"surveyType\"] = this.surveyType;\n data[\"answerRequired\"] = this.answerRequired;\n data[\"scoreQuestion\"] = this.scoreQuestion;\n data[\"order\"] = this.order;\n data[\"proposedAnswersDelta\"] = this.proposedAnswersDelta ? this.proposedAnswersDelta.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IUpdateSurveyQuestionRequest {\n id: number;\n questionGroup?: string | undefined;\n question: string;\n surveyType: SurveyQuestionTypeEnum;\n answerRequired: boolean;\n scoreQuestion: boolean;\n order: number;\n proposedAnswersDelta?: SurveyProposedAnswerDeltaRequest;\n}\n\nexport class UpdateSurveyRequest implements IUpdateSurveyRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n\n constructor(data?: IUpdateSurveyRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateSurveyRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateSurveyRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateSurveyRequest {\n name: string;\n description?: string | undefined;\n id: number;\n}\n\nexport class UpdateTaskCalendarItemRequest implements IUpdateTaskCalendarItemRequest {\n taskId!: number;\n from!: Date;\n to?: Date | undefined;\n\n constructor(data?: IUpdateTaskCalendarItemRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.taskId = _data[\"taskId\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n }\n }\n\n static fromJS(data: any): UpdateTaskCalendarItemRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTaskCalendarItemRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"taskId\"] = this.taskId;\n data[\"from\"] = this.from ? this.from.toISOString() : undefined;\n data[\"to\"] = this.to ? this.to.toISOString() : undefined;\n return data;\n }\n}\n\nexport interface IUpdateTaskCalendarItemRequest {\n taskId: number;\n from: Date;\n to?: Date | undefined;\n}\n\nexport class UpdateTaskCommentRequest implements IUpdateTaskCommentRequest {\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n taskId!: number;\n comment!: string;\n id!: number;\n\n constructor(data?: IUpdateTaskCommentRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.taskId = _data[\"taskId\"];\n this.comment = _data[\"comment\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateTaskCommentRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTaskCommentRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"taskId\"] = this.taskId;\n data[\"comment\"] = this.comment;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateTaskCommentRequest {\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n taskId: number;\n comment: string;\n id: number;\n}\n\nexport class UpdateTaskGeneralConfigRequest implements IUpdateTaskGeneralConfigRequest {\n notifyWhenAssignedToUser!: boolean;\n enableEmailNotifications!: boolean;\n id!: number;\n\n constructor(data?: IUpdateTaskGeneralConfigRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.notifyWhenAssignedToUser = _data[\"notifyWhenAssignedToUser\"];\n this.enableEmailNotifications = _data[\"enableEmailNotifications\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateTaskGeneralConfigRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTaskGeneralConfigRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"notifyWhenAssignedToUser\"] = this.notifyWhenAssignedToUser;\n data[\"enableEmailNotifications\"] = this.enableEmailNotifications;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateTaskGeneralConfigRequest {\n notifyWhenAssignedToUser: boolean;\n enableEmailNotifications: boolean;\n id: number;\n}\n\nexport class UpdateTaskRequest implements IUpdateTaskRequest {\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n assignedToUserId!: number;\n due!: Date;\n isPrivate!: boolean;\n description?: string | undefined;\n parentTaskId?: number | undefined;\n riskId?: number | undefined;\n scopeItemLevelId?: number | undefined;\n changeRequestId?: number | undefined;\n ticketId?: number | undefined;\n meetingId?: number | undefined;\n scheduleId?: number | undefined;\n priority?: TaskPriorityEnum;\n estimatedEffort?: number | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n id!: number;\n statusId!: number;\n\n constructor(data?: IUpdateTaskRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.assignedToUserId = _data[\"assignedToUserId\"];\n this.due = _data[\"due\"] ? new Date(_data[\"due\"].toString()) : undefined;\n this.isPrivate = _data[\"isPrivate\"];\n this.description = _data[\"description\"];\n this.parentTaskId = _data[\"parentTaskId\"];\n this.riskId = _data[\"riskId\"];\n this.scopeItemLevelId = _data[\"scopeItemLevelId\"];\n this.changeRequestId = _data[\"changeRequestId\"];\n this.ticketId = _data[\"ticketId\"];\n this.meetingId = _data[\"meetingId\"];\n this.scheduleId = _data[\"scheduleId\"];\n this.priority = _data[\"priority\"];\n this.estimatedEffort = _data[\"estimatedEffort\"];\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n this.id = _data[\"id\"];\n this.statusId = _data[\"statusId\"];\n }\n }\n\n static fromJS(data: any): UpdateTaskRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTaskRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"assignedToUserId\"] = this.assignedToUserId;\n data[\"due\"] = this.due ? formatDate(this.due) : undefined;\n data[\"isPrivate\"] = this.isPrivate;\n data[\"description\"] = this.description;\n data[\"parentTaskId\"] = this.parentTaskId;\n data[\"riskId\"] = this.riskId;\n data[\"scopeItemLevelId\"] = this.scopeItemLevelId;\n data[\"changeRequestId\"] = this.changeRequestId;\n data[\"ticketId\"] = this.ticketId;\n data[\"meetingId\"] = this.meetingId;\n data[\"scheduleId\"] = this.scheduleId;\n data[\"priority\"] = this.priority;\n data[\"estimatedEffort\"] = this.estimatedEffort;\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n data[\"id\"] = this.id;\n data[\"statusId\"] = this.statusId;\n return data;\n }\n}\n\nexport interface IUpdateTaskRequest {\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n assignedToUserId: number;\n due: Date;\n isPrivate: boolean;\n description?: string | undefined;\n parentTaskId?: number | undefined;\n riskId?: number | undefined;\n scopeItemLevelId?: number | undefined;\n changeRequestId?: number | undefined;\n ticketId?: number | undefined;\n meetingId?: number | undefined;\n scheduleId?: number | undefined;\n priority?: TaskPriorityEnum;\n estimatedEffort?: number | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n id: number;\n statusId: number;\n}\n\nexport class UpdateTaskTimesheetRequest implements IUpdateTaskTimesheetRequest {\n userId!: number;\n date!: Date;\n effort!: number;\n estimatedTime?: number | undefined;\n id!: number;\n\n constructor(data?: IUpdateTaskTimesheetRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.userId = _data[\"userId\"];\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.effort = _data[\"effort\"];\n this.estimatedTime = _data[\"estimatedTime\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateTaskTimesheetRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTaskTimesheetRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"userId\"] = this.userId;\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n data[\"effort\"] = this.effort;\n data[\"estimatedTime\"] = this.estimatedTime;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateTaskTimesheetRequest {\n userId: number;\n date: Date;\n effort: number;\n estimatedTime?: number | undefined;\n id: number;\n}\n\nexport class UpdateTenantIsActiveRequest implements IUpdateTenantIsActiveRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n isActive!: boolean;\n\n constructor(data?: IUpdateTenantIsActiveRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n }\n }\n\n static fromJS(data: any): UpdateTenantIsActiveRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTenantIsActiveRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n return data;\n }\n}\n\nexport interface IUpdateTenantIsActiveRequest {\n name: string;\n description?: string | undefined;\n id: number;\n isActive: boolean;\n}\n\nexport class UpdateTestCycleRequest implements IUpdateTestCycleRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n isActive!: boolean;\n\n constructor(data?: IUpdateTestCycleRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n }\n }\n\n static fromJS(data: any): UpdateTestCycleRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTestCycleRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n return data;\n }\n}\n\nexport interface IUpdateTestCycleRequest {\n name: string;\n description?: string | undefined;\n id: number;\n isActive: boolean;\n}\n\nexport class UpdateTestPlanRequest implements IUpdateTestPlanRequest {\n id!: number;\n processStatusId!: number;\n comments?: string | undefined;\n ticketIdsDelta?: Int32Int32Int32DeltaModel;\n innerTestPlans?: UpdateInnerTestPlanRequest[] | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n\n constructor(data?: IUpdateTestPlanRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.processStatusId = _data[\"processStatusId\"];\n this.comments = _data[\"comments\"];\n this.ticketIdsDelta = _data[\"ticketIdsDelta\"] ? Int32Int32Int32DeltaModel.fromJS(_data[\"ticketIdsDelta\"]) : undefined;\n if (Array.isArray(_data[\"innerTestPlans\"])) {\n this.innerTestPlans = [] as any;\n for (let item of _data[\"innerTestPlans\"])\n this.innerTestPlans!.push(UpdateInnerTestPlanRequest.fromJS(item));\n }\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): UpdateTestPlanRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTestPlanRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"processStatusId\"] = this.processStatusId;\n data[\"comments\"] = this.comments;\n data[\"ticketIdsDelta\"] = this.ticketIdsDelta ? this.ticketIdsDelta.toJSON() : undefined;\n if (Array.isArray(this.innerTestPlans)) {\n data[\"innerTestPlans\"] = [];\n for (let item of this.innerTestPlans)\n data[\"innerTestPlans\"].push(item.toJSON());\n }\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IUpdateTestPlanRequest {\n id: number;\n processStatusId: number;\n comments?: string | undefined;\n ticketIdsDelta?: Int32Int32Int32DeltaModel;\n innerTestPlans?: UpdateInnerTestPlanRequest[] | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n}\n\nexport class UpdateTestStatusRequest implements IUpdateTestStatusRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n isActive!: boolean;\n color!: string;\n semantics!: TestStatusEnum;\n\n constructor(data?: IUpdateTestStatusRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.color = _data[\"color\"];\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): UpdateTestStatusRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTestStatusRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"color\"] = this.color;\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface IUpdateTestStatusRequest {\n name: string;\n description?: string | undefined;\n id: number;\n isActive: boolean;\n color: string;\n semantics: TestStatusEnum;\n}\n\nexport class UpdateTicketAssignedGroupRequest implements IUpdateTicketAssignedGroupRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n isActive!: boolean;\n emails?: string | undefined;\n\n constructor(data?: IUpdateTicketAssignedGroupRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.emails = _data[\"emails\"];\n }\n }\n\n static fromJS(data: any): UpdateTicketAssignedGroupRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTicketAssignedGroupRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"emails\"] = this.emails;\n return data;\n }\n}\n\nexport interface IUpdateTicketAssignedGroupRequest {\n name: string;\n description?: string | undefined;\n id: number;\n isActive: boolean;\n emails?: string | undefined;\n}\n\nexport class UpdateTicketCategoryRequest implements IUpdateTicketCategoryRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n isActive!: boolean;\n order!: number;\n\n constructor(data?: IUpdateTicketCategoryRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.order = _data[\"order\"];\n }\n }\n\n static fromJS(data: any): UpdateTicketCategoryRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTicketCategoryRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"order\"] = this.order;\n return data;\n }\n}\n\nexport interface IUpdateTicketCategoryRequest {\n name: string;\n description?: string | undefined;\n id: number;\n isActive: boolean;\n order: number;\n}\n\nexport class UpdateTicketCommentRequest implements IUpdateTicketCommentRequest {\n comment!: string;\n taskUserId?: number | undefined;\n taskDate?: Date | undefined;\n taskStatusId?: number | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n id!: number;\n\n constructor(data?: IUpdateTicketCommentRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.comment = _data[\"comment\"];\n this.taskUserId = _data[\"taskUserId\"];\n this.taskDate = _data[\"taskDate\"] ? new Date(_data[\"taskDate\"].toString()) : undefined;\n this.taskStatusId = _data[\"taskStatusId\"];\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateTicketCommentRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTicketCommentRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"comment\"] = this.comment;\n data[\"taskUserId\"] = this.taskUserId;\n data[\"taskDate\"] = this.taskDate ? formatDate(this.taskDate) : undefined;\n data[\"taskStatusId\"] = this.taskStatusId;\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateTicketCommentRequest {\n comment: string;\n taskUserId?: number | undefined;\n taskDate?: Date | undefined;\n taskStatusId?: number | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n id: number;\n}\n\nexport class UpdateTicketRequest implements IUpdateTicketRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n projectId!: number;\n reportedBy!: string;\n reportedOn?: Date | undefined;\n typeId!: number;\n categoryLevel1Id!: number;\n categoryLevel2Id?: number | undefined;\n categoryLevel3Id?: number | undefined;\n ticketNumberExt?: string | undefined;\n statusId!: number;\n impactId!: number;\n urgencyId!: number;\n parentTicketId?: number | undefined;\n changeRequestIdsDelta?: Int32Int32Int32DeltaModel;\n testPlanIdsDelta?: Int32Int32Int32DeltaModel;\n timesheetsDelta?: InsertTicketTimesheetRequestUpdateTicketTimesheetRequestInt32DeltaModel;\n effort?: number | undefined;\n effortUnit?: TimeMeasureEnum;\n assignedGroupId?: number | undefined;\n expectedResolutionDate?: Date | undefined;\n environmentId?: number | undefined;\n scheduleId?: number | undefined;\n assignedToUserId!: number;\n closingId?: number | undefined;\n closingNote?: string | undefined;\n workaround?: string | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n\n constructor(data?: IUpdateTicketRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.projectId = _data[\"projectId\"];\n this.reportedBy = _data[\"reportedBy\"];\n this.reportedOn = _data[\"reportedOn\"] ? new Date(_data[\"reportedOn\"].toString()) : undefined;\n this.typeId = _data[\"typeId\"];\n this.categoryLevel1Id = _data[\"categoryLevel1Id\"];\n this.categoryLevel2Id = _data[\"categoryLevel2Id\"];\n this.categoryLevel3Id = _data[\"categoryLevel3Id\"];\n this.ticketNumberExt = _data[\"ticketNumberExt\"];\n this.statusId = _data[\"statusId\"];\n this.impactId = _data[\"impactId\"];\n this.urgencyId = _data[\"urgencyId\"];\n this.parentTicketId = _data[\"parentTicketId\"];\n this.changeRequestIdsDelta = _data[\"changeRequestIdsDelta\"] ? Int32Int32Int32DeltaModel.fromJS(_data[\"changeRequestIdsDelta\"]) : undefined;\n this.testPlanIdsDelta = _data[\"testPlanIdsDelta\"] ? Int32Int32Int32DeltaModel.fromJS(_data[\"testPlanIdsDelta\"]) : undefined;\n this.timesheetsDelta = _data[\"timesheetsDelta\"] ? InsertTicketTimesheetRequestUpdateTicketTimesheetRequestInt32DeltaModel.fromJS(_data[\"timesheetsDelta\"]) : undefined;\n this.effort = _data[\"effort\"];\n this.effortUnit = _data[\"effortUnit\"];\n this.assignedGroupId = _data[\"assignedGroupId\"];\n this.expectedResolutionDate = _data[\"expectedResolutionDate\"] ? new Date(_data[\"expectedResolutionDate\"].toString()) : undefined;\n this.environmentId = _data[\"environmentId\"];\n this.scheduleId = _data[\"scheduleId\"];\n this.assignedToUserId = _data[\"assignedToUserId\"];\n this.closingId = _data[\"closingId\"];\n this.closingNote = _data[\"closingNote\"];\n this.workaround = _data[\"workaround\"];\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): UpdateTicketRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTicketRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"projectId\"] = this.projectId;\n data[\"reportedBy\"] = this.reportedBy;\n data[\"reportedOn\"] = this.reportedOn ? formatDate(this.reportedOn) : undefined;\n data[\"typeId\"] = this.typeId;\n data[\"categoryLevel1Id\"] = this.categoryLevel1Id;\n data[\"categoryLevel2Id\"] = this.categoryLevel2Id;\n data[\"categoryLevel3Id\"] = this.categoryLevel3Id;\n data[\"ticketNumberExt\"] = this.ticketNumberExt;\n data[\"statusId\"] = this.statusId;\n data[\"impactId\"] = this.impactId;\n data[\"urgencyId\"] = this.urgencyId;\n data[\"parentTicketId\"] = this.parentTicketId;\n data[\"changeRequestIdsDelta\"] = this.changeRequestIdsDelta ? this.changeRequestIdsDelta.toJSON() : undefined;\n data[\"testPlanIdsDelta\"] = this.testPlanIdsDelta ? this.testPlanIdsDelta.toJSON() : undefined;\n data[\"timesheetsDelta\"] = this.timesheetsDelta ? this.timesheetsDelta.toJSON() : undefined;\n data[\"effort\"] = this.effort;\n data[\"effortUnit\"] = this.effortUnit;\n data[\"assignedGroupId\"] = this.assignedGroupId;\n data[\"expectedResolutionDate\"] = this.expectedResolutionDate ? formatDate(this.expectedResolutionDate) : undefined;\n data[\"environmentId\"] = this.environmentId;\n data[\"scheduleId\"] = this.scheduleId;\n data[\"assignedToUserId\"] = this.assignedToUserId;\n data[\"closingId\"] = this.closingId;\n data[\"closingNote\"] = this.closingNote;\n data[\"workaround\"] = this.workaround;\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IUpdateTicketRequest {\n name: string;\n description?: string | undefined;\n id: number;\n projectId: number;\n reportedBy: string;\n reportedOn?: Date | undefined;\n typeId: number;\n categoryLevel1Id: number;\n categoryLevel2Id?: number | undefined;\n categoryLevel3Id?: number | undefined;\n ticketNumberExt?: string | undefined;\n statusId: number;\n impactId: number;\n urgencyId: number;\n parentTicketId?: number | undefined;\n changeRequestIdsDelta?: Int32Int32Int32DeltaModel;\n testPlanIdsDelta?: Int32Int32Int32DeltaModel;\n timesheetsDelta?: InsertTicketTimesheetRequestUpdateTicketTimesheetRequestInt32DeltaModel;\n effort?: number | undefined;\n effortUnit?: TimeMeasureEnum;\n assignedGroupId?: number | undefined;\n expectedResolutionDate?: Date | undefined;\n environmentId?: number | undefined;\n scheduleId?: number | undefined;\n assignedToUserId: number;\n closingId?: number | undefined;\n closingNote?: string | undefined;\n workaround?: string | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n}\n\nexport class UpdateTicketTimesheetRequest implements IUpdateTicketTimesheetRequest {\n date!: Date;\n effort!: number;\n estimatedTime?: number | undefined;\n id!: number;\n\n constructor(data?: IUpdateTicketTimesheetRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.effort = _data[\"effort\"];\n this.estimatedTime = _data[\"estimatedTime\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateTicketTimesheetRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTicketTimesheetRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n data[\"effort\"] = this.effort;\n data[\"estimatedTime\"] = this.estimatedTime;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateTicketTimesheetRequest {\n date: Date;\n effort: number;\n estimatedTime?: number | undefined;\n id: number;\n}\n\nexport class UpdateTimesheetRequest implements IUpdateTimesheetRequest {\n date!: Date;\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n effort!: number;\n description?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n customText3?: string | undefined;\n changeRequestId?: number | undefined;\n ticketId?: number | undefined;\n taskId?: number | undefined;\n scheduleId?: number | undefined;\n id!: number;\n\n constructor(data?: IUpdateTimesheetRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.effort = _data[\"effort\"];\n this.description = _data[\"description\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.customText3 = _data[\"customText3\"];\n this.changeRequestId = _data[\"changeRequestId\"];\n this.ticketId = _data[\"ticketId\"];\n this.taskId = _data[\"taskId\"];\n this.scheduleId = _data[\"scheduleId\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateTimesheetRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTimesheetRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"date\"] = this.date ? formatDate(this.date) : undefined;\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"effort\"] = this.effort;\n data[\"description\"] = this.description;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"customText3\"] = this.customText3;\n data[\"changeRequestId\"] = this.changeRequestId;\n data[\"ticketId\"] = this.ticketId;\n data[\"taskId\"] = this.taskId;\n data[\"scheduleId\"] = this.scheduleId;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateTimesheetRequest {\n date: Date;\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n effort: number;\n description?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n customText3?: string | undefined;\n changeRequestId?: number | undefined;\n ticketId?: number | undefined;\n taskId?: number | undefined;\n scheduleId?: number | undefined;\n id: number;\n}\n\nexport class UpdateTimesheetsConfigRequest implements IUpdateTimesheetsConfigRequest {\n enableApprovalProcess!: boolean;\n enableEmailNotifications!: boolean;\n notifyWhenSubmitted!: boolean;\n notifyWhenApproved!: boolean;\n notifyWhenRejected!: boolean;\n requireCommentsWhenRejecting!: boolean;\n id!: number;\n approvalFrequency!: TimeFrequency;\n minimumRecord!: number;\n minimumWorkingHoursPerDay!: number;\n allowOvertimeWeekendHolidayWork!: boolean;\n\n constructor(data?: IUpdateTimesheetsConfigRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.enableApprovalProcess = _data[\"enableApprovalProcess\"];\n this.enableEmailNotifications = _data[\"enableEmailNotifications\"];\n this.notifyWhenSubmitted = _data[\"notifyWhenSubmitted\"];\n this.notifyWhenApproved = _data[\"notifyWhenApproved\"];\n this.notifyWhenRejected = _data[\"notifyWhenRejected\"];\n this.requireCommentsWhenRejecting = _data[\"requireCommentsWhenRejecting\"];\n this.id = _data[\"id\"];\n this.approvalFrequency = _data[\"approvalFrequency\"];\n this.minimumRecord = _data[\"minimumRecord\"];\n this.minimumWorkingHoursPerDay = _data[\"minimumWorkingHoursPerDay\"];\n this.allowOvertimeWeekendHolidayWork = _data[\"allowOvertimeWeekendHolidayWork\"];\n }\n }\n\n static fromJS(data: any): UpdateTimesheetsConfigRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTimesheetsConfigRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"enableApprovalProcess\"] = this.enableApprovalProcess;\n data[\"enableEmailNotifications\"] = this.enableEmailNotifications;\n data[\"notifyWhenSubmitted\"] = this.notifyWhenSubmitted;\n data[\"notifyWhenApproved\"] = this.notifyWhenApproved;\n data[\"notifyWhenRejected\"] = this.notifyWhenRejected;\n data[\"requireCommentsWhenRejecting\"] = this.requireCommentsWhenRejecting;\n data[\"id\"] = this.id;\n data[\"approvalFrequency\"] = this.approvalFrequency;\n data[\"minimumRecord\"] = this.minimumRecord;\n data[\"minimumWorkingHoursPerDay\"] = this.minimumWorkingHoursPerDay;\n data[\"allowOvertimeWeekendHolidayWork\"] = this.allowOvertimeWeekendHolidayWork;\n return data;\n }\n}\n\nexport interface IUpdateTimesheetsConfigRequest {\n enableApprovalProcess: boolean;\n enableEmailNotifications: boolean;\n notifyWhenSubmitted: boolean;\n notifyWhenApproved: boolean;\n notifyWhenRejected: boolean;\n requireCommentsWhenRejecting: boolean;\n id: number;\n approvalFrequency: TimeFrequency;\n minimumRecord: number;\n minimumWorkingHoursPerDay: number;\n allowOvertimeWeekendHolidayWork: boolean;\n}\n\nexport class UpdateTimeTravelConfigRequest implements IUpdateTimeTravelConfigRequest {\n enableApprovalProcess!: boolean;\n enableEmailNotifications!: boolean;\n notifyWhenSubmitted!: boolean;\n notifyWhenApproved!: boolean;\n notifyWhenRejected!: boolean;\n requireCommentsWhenRejecting!: boolean;\n id!: number;\n\n constructor(data?: IUpdateTimeTravelConfigRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.enableApprovalProcess = _data[\"enableApprovalProcess\"];\n this.enableEmailNotifications = _data[\"enableEmailNotifications\"];\n this.notifyWhenSubmitted = _data[\"notifyWhenSubmitted\"];\n this.notifyWhenApproved = _data[\"notifyWhenApproved\"];\n this.notifyWhenRejected = _data[\"notifyWhenRejected\"];\n this.requireCommentsWhenRejecting = _data[\"requireCommentsWhenRejecting\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateTimeTravelConfigRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTimeTravelConfigRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"enableApprovalProcess\"] = this.enableApprovalProcess;\n data[\"enableEmailNotifications\"] = this.enableEmailNotifications;\n data[\"notifyWhenSubmitted\"] = this.notifyWhenSubmitted;\n data[\"notifyWhenApproved\"] = this.notifyWhenApproved;\n data[\"notifyWhenRejected\"] = this.notifyWhenRejected;\n data[\"requireCommentsWhenRejecting\"] = this.requireCommentsWhenRejecting;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateTimeTravelConfigRequest {\n enableApprovalProcess: boolean;\n enableEmailNotifications: boolean;\n notifyWhenSubmitted: boolean;\n notifyWhenApproved: boolean;\n notifyWhenRejected: boolean;\n requireCommentsWhenRejecting: boolean;\n id: number;\n}\n\nexport class UpdateTrainingCycleRequest implements IUpdateTrainingCycleRequest {\n name!: string;\n description?: string | undefined;\n id!: number;\n isActive!: boolean;\n\n constructor(data?: IUpdateTrainingCycleRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n }\n }\n\n static fromJS(data: any): UpdateTrainingCycleRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTrainingCycleRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n return data;\n }\n}\n\nexport interface IUpdateTrainingCycleRequest {\n name: string;\n description?: string | undefined;\n id: number;\n isActive: boolean;\n}\n\nexport class UpdateTrainingPlanStatusRequest implements IUpdateTrainingPlanStatusRequest {\n trainingPlanId!: number;\n statusId!: number;\n\n constructor(data?: IUpdateTrainingPlanStatusRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.trainingPlanId = _data[\"trainingPlanId\"];\n this.statusId = _data[\"statusId\"];\n }\n }\n\n static fromJS(data: any): UpdateTrainingPlanStatusRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTrainingPlanStatusRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"trainingPlanId\"] = this.trainingPlanId;\n data[\"statusId\"] = this.statusId;\n return data;\n }\n}\n\nexport interface IUpdateTrainingPlanStatusRequest {\n trainingPlanId: number;\n statusId: number;\n}\n\nexport class UpdateTravelExpenseItemRequest implements IUpdateTravelExpenseItemRequest {\n costTypeId!: number;\n amountProjectCurrency!: number;\n receiptCurrencyId?: number | undefined;\n amountReceiptCurrency?: number | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n id!: number;\n removedAttachments?: number[] | undefined;\n\n constructor(data?: IUpdateTravelExpenseItemRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.costTypeId = _data[\"costTypeId\"];\n this.amountProjectCurrency = _data[\"amountProjectCurrency\"];\n this.receiptCurrencyId = _data[\"receiptCurrencyId\"];\n this.amountReceiptCurrency = _data[\"amountReceiptCurrency\"];\n if (Array.isArray(_data[\"newAttachments\"])) {\n this.newAttachments = [] as any;\n for (let item of _data[\"newAttachments\"])\n this.newAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n this.id = _data[\"id\"];\n if (Array.isArray(_data[\"removedAttachments\"])) {\n this.removedAttachments = [] as any;\n for (let item of _data[\"removedAttachments\"])\n this.removedAttachments!.push(item);\n }\n }\n }\n\n static fromJS(data: any): UpdateTravelExpenseItemRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTravelExpenseItemRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"costTypeId\"] = this.costTypeId;\n data[\"amountProjectCurrency\"] = this.amountProjectCurrency;\n data[\"receiptCurrencyId\"] = this.receiptCurrencyId;\n data[\"amountReceiptCurrency\"] = this.amountReceiptCurrency;\n if (Array.isArray(this.newAttachments)) {\n data[\"newAttachments\"] = [];\n for (let item of this.newAttachments)\n data[\"newAttachments\"].push(item.toJSON());\n }\n data[\"id\"] = this.id;\n if (Array.isArray(this.removedAttachments)) {\n data[\"removedAttachments\"] = [];\n for (let item of this.removedAttachments)\n data[\"removedAttachments\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IUpdateTravelExpenseItemRequest {\n costTypeId: number;\n amountProjectCurrency: number;\n receiptCurrencyId?: number | undefined;\n amountReceiptCurrency?: number | undefined;\n newAttachments?: InsertAttachmentRequest[] | undefined;\n id: number;\n removedAttachments?: number[] | undefined;\n}\n\nexport class UpdateTravelExpenseRequest implements IUpdateTravelExpenseRequest {\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n description!: string;\n customText1?: string | undefined;\n customText2?: string | undefined;\n isRelease!: boolean;\n id!: number;\n travelRequestId?: number | undefined;\n destinationCountryId!: number;\n destinationCity!: string;\n estimatedCosts?: number | undefined;\n advancePayment?: number | undefined;\n freeMeals!: boolean;\n freeAccommodation!: boolean;\n travelBy!: TravelByEnum;\n regNumber?: string | undefined;\n distance?: string | undefined;\n startKilemeter?: string | undefined;\n endKilometer?: string | undefined;\n leaveDepartureDate!: Date;\n leaveDepartureTime!: number;\n leaveBorderCrossDate?: Date | undefined;\n leaveBorderCrossTime?: number | undefined;\n leaveArrivalDate?: Date | undefined;\n leaveArrivalTime?: number | undefined;\n returnDepartureDate?: Date | undefined;\n returnDepartureTime?: number | undefined;\n returnBorderCrossDate?: Date | undefined;\n returnBorderCrossTime?: number | undefined;\n returnArrivalDate!: Date;\n returnArrivalTime!: number;\n travelExpenseItemsDelta?: InsertTravelExpenseItemRequestUpdateTravelExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel;\n\n constructor(data?: IUpdateTravelExpenseRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.description = _data[\"description\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.isRelease = _data[\"isRelease\"];\n this.id = _data[\"id\"];\n this.travelRequestId = _data[\"travelRequestId\"];\n this.destinationCountryId = _data[\"destinationCountryId\"];\n this.destinationCity = _data[\"destinationCity\"];\n this.estimatedCosts = _data[\"estimatedCosts\"];\n this.advancePayment = _data[\"advancePayment\"];\n this.freeMeals = _data[\"freeMeals\"];\n this.freeAccommodation = _data[\"freeAccommodation\"];\n this.travelBy = _data[\"travelBy\"];\n this.regNumber = _data[\"regNumber\"];\n this.distance = _data[\"distance\"];\n this.startKilemeter = _data[\"startKilemeter\"];\n this.endKilometer = _data[\"endKilometer\"];\n this.leaveDepartureDate = _data[\"leaveDepartureDate\"] ? new Date(_data[\"leaveDepartureDate\"].toString()) : undefined;\n this.leaveDepartureTime = _data[\"leaveDepartureTime\"];\n this.leaveBorderCrossDate = _data[\"leaveBorderCrossDate\"] ? new Date(_data[\"leaveBorderCrossDate\"].toString()) : undefined;\n this.leaveBorderCrossTime = _data[\"leaveBorderCrossTime\"];\n this.leaveArrivalDate = _data[\"leaveArrivalDate\"] ? new Date(_data[\"leaveArrivalDate\"].toString()) : undefined;\n this.leaveArrivalTime = _data[\"leaveArrivalTime\"];\n this.returnDepartureDate = _data[\"returnDepartureDate\"] ? new Date(_data[\"returnDepartureDate\"].toString()) : undefined;\n this.returnDepartureTime = _data[\"returnDepartureTime\"];\n this.returnBorderCrossDate = _data[\"returnBorderCrossDate\"] ? new Date(_data[\"returnBorderCrossDate\"].toString()) : undefined;\n this.returnBorderCrossTime = _data[\"returnBorderCrossTime\"];\n this.returnArrivalDate = _data[\"returnArrivalDate\"] ? new Date(_data[\"returnArrivalDate\"].toString()) : undefined;\n this.returnArrivalTime = _data[\"returnArrivalTime\"];\n this.travelExpenseItemsDelta = _data[\"travelExpenseItemsDelta\"] ? InsertTravelExpenseItemRequestUpdateTravelExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel.fromJS(_data[\"travelExpenseItemsDelta\"]) : undefined;\n }\n }\n\n static fromJS(data: any): UpdateTravelExpenseRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTravelExpenseRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"description\"] = this.description;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"isRelease\"] = this.isRelease;\n data[\"id\"] = this.id;\n data[\"travelRequestId\"] = this.travelRequestId;\n data[\"destinationCountryId\"] = this.destinationCountryId;\n data[\"destinationCity\"] = this.destinationCity;\n data[\"estimatedCosts\"] = this.estimatedCosts;\n data[\"advancePayment\"] = this.advancePayment;\n data[\"freeMeals\"] = this.freeMeals;\n data[\"freeAccommodation\"] = this.freeAccommodation;\n data[\"travelBy\"] = this.travelBy;\n data[\"regNumber\"] = this.regNumber;\n data[\"distance\"] = this.distance;\n data[\"startKilemeter\"] = this.startKilemeter;\n data[\"endKilometer\"] = this.endKilometer;\n data[\"leaveDepartureDate\"] = this.leaveDepartureDate ? formatDate(this.leaveDepartureDate) : undefined;\n data[\"leaveDepartureTime\"] = this.leaveDepartureTime;\n data[\"leaveBorderCrossDate\"] = this.leaveBorderCrossDate ? formatDate(this.leaveBorderCrossDate) : undefined;\n data[\"leaveBorderCrossTime\"] = this.leaveBorderCrossTime;\n data[\"leaveArrivalDate\"] = this.leaveArrivalDate ? formatDate(this.leaveArrivalDate) : undefined;\n data[\"leaveArrivalTime\"] = this.leaveArrivalTime;\n data[\"returnDepartureDate\"] = this.returnDepartureDate ? formatDate(this.returnDepartureDate) : undefined;\n data[\"returnDepartureTime\"] = this.returnDepartureTime;\n data[\"returnBorderCrossDate\"] = this.returnBorderCrossDate ? formatDate(this.returnBorderCrossDate) : undefined;\n data[\"returnBorderCrossTime\"] = this.returnBorderCrossTime;\n data[\"returnArrivalDate\"] = this.returnArrivalDate ? formatDate(this.returnArrivalDate) : undefined;\n data[\"returnArrivalTime\"] = this.returnArrivalTime;\n data[\"travelExpenseItemsDelta\"] = this.travelExpenseItemsDelta ? this.travelExpenseItemsDelta.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IUpdateTravelExpenseRequest {\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n description: string;\n customText1?: string | undefined;\n customText2?: string | undefined;\n isRelease: boolean;\n id: number;\n travelRequestId?: number | undefined;\n destinationCountryId: number;\n destinationCity: string;\n estimatedCosts?: number | undefined;\n advancePayment?: number | undefined;\n freeMeals: boolean;\n freeAccommodation: boolean;\n travelBy: TravelByEnum;\n regNumber?: string | undefined;\n distance?: string | undefined;\n startKilemeter?: string | undefined;\n endKilometer?: string | undefined;\n leaveDepartureDate: Date;\n leaveDepartureTime: number;\n leaveBorderCrossDate?: Date | undefined;\n leaveBorderCrossTime?: number | undefined;\n leaveArrivalDate?: Date | undefined;\n leaveArrivalTime?: number | undefined;\n returnDepartureDate?: Date | undefined;\n returnDepartureTime?: number | undefined;\n returnBorderCrossDate?: Date | undefined;\n returnBorderCrossTime?: number | undefined;\n returnArrivalDate: Date;\n returnArrivalTime: number;\n travelExpenseItemsDelta?: InsertTravelExpenseItemRequestUpdateTravelExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel;\n}\n\nexport class UpdateTravelRequestRequest implements IUpdateTravelRequestRequest {\n projectOrCategoryId!: number;\n isProjectConnected!: boolean;\n description!: string;\n customText1?: string | undefined;\n customText2?: string | undefined;\n isRelease!: boolean;\n id!: number;\n departure!: Date;\n return!: Date;\n destinationCountryId!: number;\n destinationCity!: string;\n estimatedCosts!: number;\n advancePayment?: number | undefined;\n freeMeals!: boolean;\n freeAccommodation!: boolean;\n travelBy!: TravelByEnum;\n\n constructor(data?: IUpdateTravelRequestRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.projectOrCategoryId = _data[\"projectOrCategoryId\"];\n this.isProjectConnected = _data[\"isProjectConnected\"];\n this.description = _data[\"description\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.isRelease = _data[\"isRelease\"];\n this.id = _data[\"id\"];\n this.departure = _data[\"departure\"] ? new Date(_data[\"departure\"].toString()) : undefined;\n this.return = _data[\"return\"] ? new Date(_data[\"return\"].toString()) : undefined;\n this.destinationCountryId = _data[\"destinationCountryId\"];\n this.destinationCity = _data[\"destinationCity\"];\n this.estimatedCosts = _data[\"estimatedCosts\"];\n this.advancePayment = _data[\"advancePayment\"];\n this.freeMeals = _data[\"freeMeals\"];\n this.freeAccommodation = _data[\"freeAccommodation\"];\n this.travelBy = _data[\"travelBy\"];\n }\n }\n\n static fromJS(data: any): UpdateTravelRequestRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateTravelRequestRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"projectOrCategoryId\"] = this.projectOrCategoryId;\n data[\"isProjectConnected\"] = this.isProjectConnected;\n data[\"description\"] = this.description;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"isRelease\"] = this.isRelease;\n data[\"id\"] = this.id;\n data[\"departure\"] = this.departure ? formatDate(this.departure) : undefined;\n data[\"return\"] = this.return ? formatDate(this.return) : undefined;\n data[\"destinationCountryId\"] = this.destinationCountryId;\n data[\"destinationCity\"] = this.destinationCity;\n data[\"estimatedCosts\"] = this.estimatedCosts;\n data[\"advancePayment\"] = this.advancePayment;\n data[\"freeMeals\"] = this.freeMeals;\n data[\"freeAccommodation\"] = this.freeAccommodation;\n data[\"travelBy\"] = this.travelBy;\n return data;\n }\n}\n\nexport interface IUpdateTravelRequestRequest {\n projectOrCategoryId: number;\n isProjectConnected: boolean;\n description: string;\n customText1?: string | undefined;\n customText2?: string | undefined;\n isRelease: boolean;\n id: number;\n departure: Date;\n return: Date;\n destinationCountryId: number;\n destinationCity: string;\n estimatedCosts: number;\n advancePayment?: number | undefined;\n freeMeals: boolean;\n freeAccommodation: boolean;\n travelBy: TravelByEnum;\n}\n\nexport class UpdateUserActivityRequestModel implements IUpdateUserActivityRequestModel {\n id!: number;\n isActive!: boolean;\n\n constructor(data?: IUpdateUserActivityRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n }\n }\n\n static fromJS(data: any): UpdateUserActivityRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateUserActivityRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n return data;\n }\n}\n\nexport interface IUpdateUserActivityRequestModel {\n id: number;\n isActive: boolean;\n}\n\nexport class UpdateUserAlertConfigurationRequest implements IUpdateUserAlertConfigurationRequest {\n enabled!: boolean;\n sendEmail!: boolean;\n entityIds?: number[] | undefined;\n id!: number;\n\n constructor(data?: IUpdateUserAlertConfigurationRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.enabled = _data[\"enabled\"];\n this.sendEmail = _data[\"sendEmail\"];\n if (Array.isArray(_data[\"entityIds\"])) {\n this.entityIds = [] as any;\n for (let item of _data[\"entityIds\"])\n this.entityIds!.push(item);\n }\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateUserAlertConfigurationRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateUserAlertConfigurationRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"enabled\"] = this.enabled;\n data[\"sendEmail\"] = this.sendEmail;\n if (Array.isArray(this.entityIds)) {\n data[\"entityIds\"] = [];\n for (let item of this.entityIds)\n data[\"entityIds\"].push(item);\n }\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateUserAlertConfigurationRequest {\n enabled: boolean;\n sendEmail: boolean;\n entityIds?: number[] | undefined;\n id: number;\n}\n\nexport class UpdateUserDataRequestModel implements IUpdateUserDataRequestModel {\n firstName!: string;\n lastName!: string;\n birthDate?: Date | undefined;\n email!: string;\n officePhone?: string | undefined;\n mobilePhone?: string | undefined;\n address?: string | undefined;\n city?: string | undefined;\n countryId?: number | undefined;\n organizationalUnitId?: number | undefined;\n department?: string | undefined;\n id!: number;\n isGuest!: boolean;\n partnerId?: number | undefined;\n\n constructor(data?: IUpdateUserDataRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.firstName = _data[\"firstName\"];\n this.lastName = _data[\"lastName\"];\n this.birthDate = _data[\"birthDate\"] ? new Date(_data[\"birthDate\"].toString()) : undefined;\n this.email = _data[\"email\"];\n this.officePhone = _data[\"officePhone\"];\n this.mobilePhone = _data[\"mobilePhone\"];\n this.address = _data[\"address\"];\n this.city = _data[\"city\"];\n this.countryId = _data[\"countryId\"];\n this.organizationalUnitId = _data[\"organizationalUnitId\"];\n this.department = _data[\"department\"];\n this.id = _data[\"id\"];\n this.isGuest = _data[\"isGuest\"];\n this.partnerId = _data[\"partnerId\"];\n }\n }\n\n static fromJS(data: any): UpdateUserDataRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateUserDataRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"firstName\"] = this.firstName;\n data[\"lastName\"] = this.lastName;\n data[\"birthDate\"] = this.birthDate ? this.birthDate.toISOString() : undefined;\n data[\"email\"] = this.email;\n data[\"officePhone\"] = this.officePhone;\n data[\"mobilePhone\"] = this.mobilePhone;\n data[\"address\"] = this.address;\n data[\"city\"] = this.city;\n data[\"countryId\"] = this.countryId;\n data[\"organizationalUnitId\"] = this.organizationalUnitId;\n data[\"department\"] = this.department;\n data[\"id\"] = this.id;\n data[\"isGuest\"] = this.isGuest;\n data[\"partnerId\"] = this.partnerId;\n return data;\n }\n}\n\nexport interface IUpdateUserDataRequestModel {\n firstName: string;\n lastName: string;\n birthDate?: Date | undefined;\n email: string;\n officePhone?: string | undefined;\n mobilePhone?: string | undefined;\n address?: string | undefined;\n city?: string | undefined;\n countryId?: number | undefined;\n organizationalUnitId?: number | undefined;\n department?: string | undefined;\n id: number;\n isGuest: boolean;\n partnerId?: number | undefined;\n}\n\nexport class UpdateUserPictureRequestModel implements IUpdateUserPictureRequestModel {\n picture!: string;\n\n constructor(data?: IUpdateUserPictureRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.picture = _data[\"picture\"];\n }\n }\n\n static fromJS(data: any): UpdateUserPictureRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateUserPictureRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"picture\"] = this.picture;\n return data;\n }\n}\n\nexport interface IUpdateUserPictureRequestModel {\n picture: string;\n}\n\nexport class UpdateVacationRequestRequest implements IUpdateVacationRequestRequest {\n from!: Date;\n to!: Date;\n note?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n isRelease!: boolean;\n id!: number;\n\n constructor(data?: IUpdateVacationRequestRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.note = _data[\"note\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.isRelease = _data[\"isRelease\"];\n this.id = _data[\"id\"];\n }\n }\n\n static fromJS(data: any): UpdateVacationRequestRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateVacationRequestRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"note\"] = this.note;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"isRelease\"] = this.isRelease;\n data[\"id\"] = this.id;\n return data;\n }\n}\n\nexport interface IUpdateVacationRequestRequest {\n from: Date;\n to: Date;\n note?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n isRelease: boolean;\n id: number;\n}\n\nexport class UpdateWbsRequest implements IUpdateWbsRequest {\n id!: number;\n wbs!: string;\n\n constructor(data?: IUpdateWbsRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.wbs = _data[\"wbs\"];\n }\n }\n\n static fromJS(data: any): UpdateWbsRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UpdateWbsRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"wbs\"] = this.wbs;\n return data;\n }\n}\n\nexport interface IUpdateWbsRequest {\n id: number;\n wbs: string;\n}\n\nexport class UploadExcelFileRequest implements IUploadExcelFileRequest {\n excelAttachments?: InsertAttachmentRequest[] | undefined;\n\n constructor(data?: IUploadExcelFileRequest) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n if (Array.isArray(_data[\"excelAttachments\"])) {\n this.excelAttachments = [] as any;\n for (let item of _data[\"excelAttachments\"])\n this.excelAttachments!.push(InsertAttachmentRequest.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): UploadExcelFileRequest {\n data = typeof data === 'object' ? data : {};\n let result = new UploadExcelFileRequest();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n if (Array.isArray(this.excelAttachments)) {\n data[\"excelAttachments\"] = [];\n for (let item of this.excelAttachments)\n data[\"excelAttachments\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IUploadExcelFileRequest {\n excelAttachments?: InsertAttachmentRequest[] | undefined;\n}\n\nexport class UploadLanguagesExcelRequestModel implements IUploadLanguagesExcelRequestModel {\n fileContent?: string | undefined;\n\n constructor(data?: IUploadLanguagesExcelRequestModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.fileContent = _data[\"fileContent\"];\n }\n }\n\n static fromJS(data: any): UploadLanguagesExcelRequestModel {\n data = typeof data === 'object' ? data : {};\n let result = new UploadLanguagesExcelRequestModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"fileContent\"] = this.fileContent;\n return data;\n }\n}\n\nexport interface IUploadLanguagesExcelRequestModel {\n fileContent?: string | undefined;\n}\n\nexport enum UrgencyEnum {\n Urgent = \"Urgent\",\n Normal = \"Normal\",\n}\n\nexport class UrgencyImpatPair implements IUrgencyImpatPair {\n urgencyId!: number;\n impactId!: number;\n\n constructor(data?: IUrgencyImpatPair) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.urgencyId = _data[\"urgencyId\"];\n this.impactId = _data[\"impactId\"];\n }\n }\n\n static fromJS(data: any): UrgencyImpatPair {\n data = typeof data === 'object' ? data : {};\n let result = new UrgencyImpatPair();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"urgencyId\"] = this.urgencyId;\n data[\"impactId\"] = this.impactId;\n return data;\n }\n}\n\nexport interface IUrgencyImpatPair {\n urgencyId: number;\n impactId: number;\n}\n\nexport class UrgencyResponse implements IUrgencyResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n semantics!: UrgencyEnum;\n\n constructor(data?: IUrgencyResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): UrgencyResponse {\n data = typeof data === 'object' ? data : {};\n let result = new UrgencyResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface IUrgencyResponse {\n id: number;\n name: string;\n description?: string | undefined;\n semantics: UrgencyEnum;\n}\n\nexport class UrgencyResponseItemsResponseModel implements IUrgencyResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: UrgencyResponse[] | undefined;\n\n constructor(data?: IUrgencyResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(UrgencyResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): UrgencyResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new UrgencyResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IUrgencyResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: UrgencyResponse[] | undefined;\n}\n\nexport enum UserActivityStatusEnum {\n Active = \"Active\",\n Inactive = \"Inactive\",\n Blocked = \"Blocked\",\n}\n\nexport class UserAlertConfigurationResponse implements IUserAlertConfigurationResponse {\n id!: number;\n tenantId!: number;\n userId!: number;\n entity!: AlertEntitiesEnum;\n trigger!: AlertTriggersEnum;\n enabled!: boolean;\n sendEmail!: boolean;\n entityIds?: number[] | undefined;\n\n constructor(data?: IUserAlertConfigurationResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.tenantId = _data[\"tenantId\"];\n this.userId = _data[\"userId\"];\n this.entity = _data[\"entity\"];\n this.trigger = _data[\"trigger\"];\n this.enabled = _data[\"enabled\"];\n this.sendEmail = _data[\"sendEmail\"];\n if (Array.isArray(_data[\"entityIds\"])) {\n this.entityIds = [] as any;\n for (let item of _data[\"entityIds\"])\n this.entityIds!.push(item);\n }\n }\n }\n\n static fromJS(data: any): UserAlertConfigurationResponse {\n data = typeof data === 'object' ? data : {};\n let result = new UserAlertConfigurationResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"tenantId\"] = this.tenantId;\n data[\"userId\"] = this.userId;\n data[\"entity\"] = this.entity;\n data[\"trigger\"] = this.trigger;\n data[\"enabled\"] = this.enabled;\n data[\"sendEmail\"] = this.sendEmail;\n if (Array.isArray(this.entityIds)) {\n data[\"entityIds\"] = [];\n for (let item of this.entityIds)\n data[\"entityIds\"].push(item);\n }\n return data;\n }\n}\n\nexport interface IUserAlertConfigurationResponse {\n id: number;\n tenantId: number;\n userId: number;\n entity: AlertEntitiesEnum;\n trigger: AlertTriggersEnum;\n enabled: boolean;\n sendEmail: boolean;\n entityIds?: number[] | undefined;\n}\n\nexport class UserAlertConfigurationResponseItemsResponseModel implements IUserAlertConfigurationResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: UserAlertConfigurationResponse[] | undefined;\n\n constructor(data?: IUserAlertConfigurationResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(UserAlertConfigurationResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): UserAlertConfigurationResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new UserAlertConfigurationResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IUserAlertConfigurationResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: UserAlertConfigurationResponse[] | undefined;\n}\n\nexport class UserModel implements IUserModel {\n id!: number;\n isActive!: boolean;\n tenantId!: number;\n firstName!: string;\n lastName!: string;\n email!: string;\n birthDate?: Date | undefined;\n officePhone?: string | undefined;\n mobilePhone?: string | undefined;\n address?: string | undefined;\n city?: string | undefined;\n department?: string | undefined;\n picture?: string | undefined;\n username!: string;\n roleId!: TokenTypeEnum;\n countryId?: number | undefined;\n partnerId?: number | undefined;\n organizationalUnitId?: number | undefined;\n readonly isGuest!: boolean;\n confirmationExpiredAt?: Date | undefined;\n additional?: { [key: string]: any; } | undefined;\n activityStatus!: UserActivityStatusEnum;\n\n constructor(data?: IUserModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.isActive = _data[\"isActive\"];\n this.tenantId = _data[\"tenantId\"];\n this.firstName = _data[\"firstName\"];\n this.lastName = _data[\"lastName\"];\n this.email = _data[\"email\"];\n this.birthDate = _data[\"birthDate\"] ? new Date(_data[\"birthDate\"].toString()) : undefined;\n this.officePhone = _data[\"officePhone\"];\n this.mobilePhone = _data[\"mobilePhone\"];\n this.address = _data[\"address\"];\n this.city = _data[\"city\"];\n this.department = _data[\"department\"];\n this.picture = _data[\"picture\"];\n this.username = _data[\"username\"];\n this.roleId = _data[\"roleId\"];\n this.countryId = _data[\"countryId\"];\n this.partnerId = _data[\"partnerId\"];\n this.organizationalUnitId = _data[\"organizationalUnitId\"];\n (this).isGuest = _data[\"isGuest\"];\n this.confirmationExpiredAt = _data[\"confirmationExpiredAt\"] ? new Date(_data[\"confirmationExpiredAt\"].toString()) : undefined;\n if (_data[\"additional\"]) {\n this.additional = {} as any;\n for (let key in _data[\"additional\"]) {\n if (_data[\"additional\"].hasOwnProperty(key))\n (this.additional)![key] = _data[\"additional\"][key];\n }\n }\n this.activityStatus = _data[\"activityStatus\"];\n }\n }\n\n static fromJS(data: any): UserModel {\n data = typeof data === 'object' ? data : {};\n let result = new UserModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"isActive\"] = this.isActive;\n data[\"tenantId\"] = this.tenantId;\n data[\"firstName\"] = this.firstName;\n data[\"lastName\"] = this.lastName;\n data[\"email\"] = this.email;\n data[\"birthDate\"] = this.birthDate ? this.birthDate.toISOString() : undefined;\n data[\"officePhone\"] = this.officePhone;\n data[\"mobilePhone\"] = this.mobilePhone;\n data[\"address\"] = this.address;\n data[\"city\"] = this.city;\n data[\"department\"] = this.department;\n data[\"picture\"] = this.picture;\n data[\"username\"] = this.username;\n data[\"roleId\"] = this.roleId;\n data[\"countryId\"] = this.countryId;\n data[\"partnerId\"] = this.partnerId;\n data[\"organizationalUnitId\"] = this.organizationalUnitId;\n data[\"isGuest\"] = this.isGuest;\n data[\"confirmationExpiredAt\"] = this.confirmationExpiredAt ? this.confirmationExpiredAt.toISOString() : undefined;\n if (this.additional) {\n data[\"additional\"] = {};\n for (let key in this.additional) {\n if (this.additional.hasOwnProperty(key))\n (data[\"additional\"])[key] = (this.additional)[key];\n }\n }\n data[\"activityStatus\"] = this.activityStatus;\n return data;\n }\n}\n\nexport interface IUserModel {\n id: number;\n isActive: boolean;\n tenantId: number;\n firstName: string;\n lastName: string;\n email: string;\n birthDate?: Date | undefined;\n officePhone?: string | undefined;\n mobilePhone?: string | undefined;\n address?: string | undefined;\n city?: string | undefined;\n department?: string | undefined;\n picture?: string | undefined;\n username: string;\n roleId: TokenTypeEnum;\n countryId?: number | undefined;\n partnerId?: number | undefined;\n organizationalUnitId?: number | undefined;\n isGuest: boolean;\n confirmationExpiredAt?: Date | undefined;\n additional?: { [key: string]: any; } | undefined;\n activityStatus: UserActivityStatusEnum;\n}\n\nexport class UserModelItemsResponseModel implements IUserModelItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: UserModel[] | undefined;\n\n constructor(data?: IUserModelItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(UserModel.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): UserModelItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new UserModelItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IUserModelItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: UserModel[] | undefined;\n}\n\nexport class UserModelSimpleResponseModel implements IUserModelSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: UserModel;\n\n constructor(data?: IUserModelSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? UserModel.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): UserModelSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new UserModelSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IUserModelSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: UserModel;\n}\n\nexport enum UserStatusEnum {\n Active = \"Active\",\n Inactive = \"Inactive\",\n}\n\nexport class UserStatusResponse implements IUserStatusResponse {\n id!: number;\n name!: string;\n description?: string | undefined;\n isActive!: boolean;\n isReadonly!: boolean;\n color!: string;\n isInitial!: boolean;\n nextStates?: number[] | undefined;\n semantics!: UserStatusEnum;\n\n constructor(data?: IUserStatusResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.name = _data[\"name\"];\n this.description = _data[\"description\"];\n this.isActive = _data[\"isActive\"];\n this.isReadonly = _data[\"isReadonly\"];\n this.color = _data[\"color\"];\n this.isInitial = _data[\"isInitial\"];\n if (Array.isArray(_data[\"nextStates\"])) {\n this.nextStates = [] as any;\n for (let item of _data[\"nextStates\"])\n this.nextStates!.push(item);\n }\n this.semantics = _data[\"semantics\"];\n }\n }\n\n static fromJS(data: any): UserStatusResponse {\n data = typeof data === 'object' ? data : {};\n let result = new UserStatusResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"name\"] = this.name;\n data[\"description\"] = this.description;\n data[\"isActive\"] = this.isActive;\n data[\"isReadonly\"] = this.isReadonly;\n data[\"color\"] = this.color;\n data[\"isInitial\"] = this.isInitial;\n if (Array.isArray(this.nextStates)) {\n data[\"nextStates\"] = [];\n for (let item of this.nextStates)\n data[\"nextStates\"].push(item);\n }\n data[\"semantics\"] = this.semantics;\n return data;\n }\n}\n\nexport interface IUserStatusResponse {\n id: number;\n name: string;\n description?: string | undefined;\n isActive: boolean;\n isReadonly: boolean;\n color: string;\n isInitial: boolean;\n nextStates?: number[] | undefined;\n semantics: UserStatusEnum;\n}\n\nexport class UserStatusResponseItemsResponseModel implements IUserStatusResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: UserStatusResponse[] | undefined;\n\n constructor(data?: IUserStatusResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(UserStatusResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): UserStatusResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new UserStatusResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IUserStatusResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: UserStatusResponse[] | undefined;\n}\n\nexport class UserTableViewConfigFilter implements IUserTableViewConfigFilter {\n viewType?: string | undefined;\n offset!: number;\n limit!: number;\n\n constructor(data?: IUserTableViewConfigFilter) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.viewType = _data[\"viewType\"];\n this.offset = _data[\"offset\"];\n this.limit = _data[\"limit\"];\n }\n }\n\n static fromJS(data: any): UserTableViewConfigFilter {\n data = typeof data === 'object' ? data : {};\n let result = new UserTableViewConfigFilter();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"viewType\"] = this.viewType;\n data[\"offset\"] = this.offset;\n data[\"limit\"] = this.limit;\n return data;\n }\n}\n\nexport interface IUserTableViewConfigFilter {\n viewType?: string | undefined;\n offset: number;\n limit: number;\n}\n\nexport class UserTableViewConfigResponse implements IUserTableViewConfigResponse {\n userId?: number | undefined;\n viewType!: string;\n content!: any;\n\n constructor(data?: IUserTableViewConfigResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.userId = _data[\"userId\"];\n this.viewType = _data[\"viewType\"];\n this.content = _data[\"content\"];\n }\n }\n\n static fromJS(data: any): UserTableViewConfigResponse {\n data = typeof data === 'object' ? data : {};\n let result = new UserTableViewConfigResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"userId\"] = this.userId;\n data[\"viewType\"] = this.viewType;\n data[\"content\"] = this.content;\n return data;\n }\n}\n\nexport interface IUserTableViewConfigResponse {\n userId?: number | undefined;\n viewType: string;\n content: any;\n}\n\nexport class UserTableViewConfigResponseItemsResponseModel implements IUserTableViewConfigResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: UserTableViewConfigResponse[] | undefined;\n\n constructor(data?: IUserTableViewConfigResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(UserTableViewConfigResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): UserTableViewConfigResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new UserTableViewConfigResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IUserTableViewConfigResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: UserTableViewConfigResponse[] | undefined;\n}\n\nexport class UserTableViewConfigResponseSimpleResponseModel implements IUserTableViewConfigResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: UserTableViewConfigResponse;\n\n constructor(data?: IUserTableViewConfigResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? UserTableViewConfigResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): UserTableViewConfigResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new UserTableViewConfigResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IUserTableViewConfigResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: UserTableViewConfigResponse;\n}\n\nexport class VacationRequestResponse implements IVacationRequestResponse {\n id!: number;\n from!: Date;\n to!: Date;\n numberOfDays!: number;\n note?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n userId!: number;\n calculatedStatusId!: number;\n readonly year!: number;\n statuses?: VacationRequestStatusResponse[] | undefined;\n\n constructor(data?: IVacationRequestResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.numberOfDays = _data[\"numberOfDays\"];\n this.note = _data[\"note\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.userId = _data[\"userId\"];\n this.calculatedStatusId = _data[\"calculatedStatusId\"];\n (this).year = _data[\"year\"];\n if (Array.isArray(_data[\"statuses\"])) {\n this.statuses = [] as any;\n for (let item of _data[\"statuses\"])\n this.statuses!.push(VacationRequestStatusResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): VacationRequestResponse {\n data = typeof data === 'object' ? data : {};\n let result = new VacationRequestResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"numberOfDays\"] = this.numberOfDays;\n data[\"note\"] = this.note;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"userId\"] = this.userId;\n data[\"calculatedStatusId\"] = this.calculatedStatusId;\n data[\"year\"] = this.year;\n if (Array.isArray(this.statuses)) {\n data[\"statuses\"] = [];\n for (let item of this.statuses)\n data[\"statuses\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IVacationRequestResponse {\n id: number;\n from: Date;\n to: Date;\n numberOfDays: number;\n note?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n userId: number;\n calculatedStatusId: number;\n year: number;\n statuses?: VacationRequestStatusResponse[] | undefined;\n}\n\nexport class VacationRequestResponseItemsResponseModel implements IVacationRequestResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: VacationRequestResponse[] | undefined;\n\n constructor(data?: IVacationRequestResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(VacationRequestResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): VacationRequestResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new VacationRequestResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IVacationRequestResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: VacationRequestResponse[] | undefined;\n}\n\nexport class VacationRequestResponseSimpleResponseModel implements IVacationRequestResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: VacationRequestResponse;\n\n constructor(data?: IVacationRequestResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? VacationRequestResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): VacationRequestResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new VacationRequestResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IVacationRequestResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: VacationRequestResponse;\n}\n\nexport class VacationRequestStatusFullResponse implements IVacationRequestStatusFullResponse {\n id!: number;\n vacationRequestId!: number;\n approvedOrRejectedByUserId?: number | undefined;\n projectManagerUserId!: number;\n projectId!: number;\n statusId!: number;\n from!: Date;\n to!: Date;\n note?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n userId!: number;\n\n constructor(data?: IVacationRequestStatusFullResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.vacationRequestId = _data[\"vacationRequestId\"];\n this.approvedOrRejectedByUserId = _data[\"approvedOrRejectedByUserId\"];\n this.projectManagerUserId = _data[\"projectManagerUserId\"];\n this.projectId = _data[\"projectId\"];\n this.statusId = _data[\"statusId\"];\n this.from = _data[\"from\"] ? new Date(_data[\"from\"].toString()) : undefined;\n this.to = _data[\"to\"] ? new Date(_data[\"to\"].toString()) : undefined;\n this.note = _data[\"note\"];\n this.customText1 = _data[\"customText1\"];\n this.customText2 = _data[\"customText2\"];\n this.userId = _data[\"userId\"];\n }\n }\n\n static fromJS(data: any): VacationRequestStatusFullResponse {\n data = typeof data === 'object' ? data : {};\n let result = new VacationRequestStatusFullResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"vacationRequestId\"] = this.vacationRequestId;\n data[\"approvedOrRejectedByUserId\"] = this.approvedOrRejectedByUserId;\n data[\"projectManagerUserId\"] = this.projectManagerUserId;\n data[\"projectId\"] = this.projectId;\n data[\"statusId\"] = this.statusId;\n data[\"from\"] = this.from ? formatDate(this.from) : undefined;\n data[\"to\"] = this.to ? formatDate(this.to) : undefined;\n data[\"note\"] = this.note;\n data[\"customText1\"] = this.customText1;\n data[\"customText2\"] = this.customText2;\n data[\"userId\"] = this.userId;\n return data;\n }\n}\n\nexport interface IVacationRequestStatusFullResponse {\n id: number;\n vacationRequestId: number;\n approvedOrRejectedByUserId?: number | undefined;\n projectManagerUserId: number;\n projectId: number;\n statusId: number;\n from: Date;\n to: Date;\n note?: string | undefined;\n customText1?: string | undefined;\n customText2?: string | undefined;\n userId: number;\n}\n\nexport class VacationRequestStatusFullResponseItemsResponseModel implements IVacationRequestStatusFullResponseItemsResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: VacationRequestStatusFullResponse[] | undefined;\n\n constructor(data?: IVacationRequestStatusFullResponseItemsResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.count = _data[\"count\"];\n if (Array.isArray(_data[\"items\"])) {\n this.items = [] as any;\n for (let item of _data[\"items\"])\n this.items!.push(VacationRequestStatusFullResponse.fromJS(item));\n }\n }\n }\n\n static fromJS(data: any): VacationRequestStatusFullResponseItemsResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new VacationRequestStatusFullResponseItemsResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"count\"] = this.count;\n if (Array.isArray(this.items)) {\n data[\"items\"] = [];\n for (let item of this.items)\n data[\"items\"].push(item.toJSON());\n }\n return data;\n }\n}\n\nexport interface IVacationRequestStatusFullResponseItemsResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n count?: number | undefined;\n items?: VacationRequestStatusFullResponse[] | undefined;\n}\n\nexport class VacationRequestStatusResponse implements IVacationRequestStatusResponse {\n id!: number;\n vacationRequestId!: number;\n approvedOrRejectedByUserId?: number | undefined;\n projectManagerUserId!: number;\n projectId!: number;\n statusId!: number;\n\n constructor(data?: IVacationRequestStatusResponse) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n this.id = _data[\"id\"];\n this.vacationRequestId = _data[\"vacationRequestId\"];\n this.approvedOrRejectedByUserId = _data[\"approvedOrRejectedByUserId\"];\n this.projectManagerUserId = _data[\"projectManagerUserId\"];\n this.projectId = _data[\"projectId\"];\n this.statusId = _data[\"statusId\"];\n }\n }\n\n static fromJS(data: any): VacationRequestStatusResponse {\n data = typeof data === 'object' ? data : {};\n let result = new VacationRequestStatusResponse();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"id\"] = this.id;\n data[\"vacationRequestId\"] = this.vacationRequestId;\n data[\"approvedOrRejectedByUserId\"] = this.approvedOrRejectedByUserId;\n data[\"projectManagerUserId\"] = this.projectManagerUserId;\n data[\"projectId\"] = this.projectId;\n data[\"statusId\"] = this.statusId;\n return data;\n }\n}\n\nexport interface IVacationRequestStatusResponse {\n id: number;\n vacationRequestId: number;\n approvedOrRejectedByUserId?: number | undefined;\n projectManagerUserId: number;\n projectId: number;\n statusId: number;\n}\n\nexport class VacationRequestStatusResponseSimpleResponseModel implements IVacationRequestStatusResponseSimpleResponseModel {\n readonly success!: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: VacationRequestStatusResponse;\n\n constructor(data?: IVacationRequestStatusResponseSimpleResponseModel) {\n if (data) {\n for (var property in data) {\n if (data.hasOwnProperty(property))\n (this)[property] = (data)[property];\n }\n }\n }\n\n init(_data?: any) {\n if (_data) {\n (this).success = _data[\"success\"];\n if (_data[\"errors\"]) {\n this.errors = {} as any;\n for (let key in _data[\"errors\"]) {\n if (_data[\"errors\"].hasOwnProperty(key))\n (this.errors)![key] = _data[\"errors\"][key] ? MessageModel.fromJS(_data[\"errors\"][key]) : new MessageModel();\n }\n }\n this.value = _data[\"value\"] ? VacationRequestStatusResponse.fromJS(_data[\"value\"]) : undefined;\n }\n }\n\n static fromJS(data: any): VacationRequestStatusResponseSimpleResponseModel {\n data = typeof data === 'object' ? data : {};\n let result = new VacationRequestStatusResponseSimpleResponseModel();\n result.init(data);\n return result;\n }\n\n toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"success\"] = this.success;\n if (this.errors) {\n data[\"errors\"] = {};\n for (let key in this.errors) {\n if (this.errors.hasOwnProperty(key))\n (data[\"errors\"])[key] = this.errors[key] ? this.errors[key].toJSON() : undefined;\n }\n }\n data[\"value\"] = this.value ? this.value.toJSON() : undefined;\n return data;\n }\n}\n\nexport interface IVacationRequestStatusResponseSimpleResponseModel {\n success: boolean;\n errors?: { [key: string]: MessageModel; } | undefined;\n value?: VacationRequestStatusResponse;\n}\n\nexport enum WeekDayEnum {\n Monday = \"Monday\",\n Tuesday = \"Tuesday\",\n Wednesday = \"Wednesday\",\n Thursday = \"Thursday\",\n Friday = \"Friday\",\n Saturday = \"Saturday\",\n Sunday = \"Sunday\",\n}\n\nexport enum WeeklyDaysEnum {\n Monday = \"Monday\",\n Tuesday = \"Tuesday\",\n Wednesday = \"Wednesday\",\n Thursday = \"Thursday\",\n Friday = \"Friday\",\n Saturday = \"Saturday\",\n Sunday = \"Sunday\",\n}\n\nfunction formatDate(d: Date) {\n return d.getFullYear() + '-' +\n (d.getMonth() < 9 ? ('0' + (d.getMonth()+1)) : (d.getMonth()+1)) + '-' +\n (d.getDate() < 10 ? ('0' + d.getDate()) : d.getDate());\n}\n\nexport interface FileResponse {\n data: Blob;\n status: number;\n fileName?: string;\n headers?: { [name: string]: any };\n}\n\nexport class ApiException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n throw new ApiException(message, status, response, headers, result);\n}\n","type EnvSettings = {\n\tstage: 'local' | 'staging' | 'production'\n\ttype: 'application' | 'registration'\n\tapiUrl: string\n\talertsApiUrl: string\n\tsiteDomain: string\n\tmyTestDomain: string\n\tshowLanguageControl: boolean\n\tisPrivateCloudTenant: boolean\n\tshowReminders: boolean\n}\n\n// for localhost it is set inside of .env\n// and for all others inside of pipeline .yml file\nexport const envSettings: EnvSettings = {\n\tstage: process.env.REACT_APP_STAGE as any,\n\ttype: process.env.REACT_APP_TYPE as any,\n\n\tapiUrl: process.env.REACT_APP_API_URL || '',\n\talertsApiUrl: process.env.REACT_APP_ALERTS_API_URL || '',\n\tsiteDomain: process.env.REACT_APP_SITE_DOMAIN || '',\n\n\t// only for localhost\n\tmyTestDomain: process.env.REACT_APP_MY_TEST_DOMAIN || '',\n\tshowLanguageControl: process.env.REACT_APP_SHOW_LANGUAGE_CONTROL === \"true\",\n\n\t// for now only for eps\n\tisPrivateCloudTenant: process.env.REACT_APP_IS_PRIVATE_CLOUD_TENANT === \"true\",\n\tshowReminders: process.env.REACT_APP_SHOW_REMINDERS === \"true\"\n}\n\nconsole.log('env:', envSettings);\n","export enum MeridiemTimeEnum {\n\tAM = 'AM',\n\tPM = 'PM'\n}","export const getNumberArraysDiff = (originalArray: number[] | undefined, newArray: number[] | undefined) => {\n\tconst createReturnValue = (added: number[], removed: number[]) => ({ added, removed })\n\n\tif (!newArray) {\n\t\treturn createReturnValue([], [])\n\t}\n\n\tif (!originalArray) {\n\t\treturn createReturnValue([...newArray], [])\n\t}\n\n\tconst originalArrayHashSet = new Set(originalArray)\n\tconst newArrayHashSet = new Set(newArray)\n\n\tconst added: number[] = []\n\tconst removed: number[] = []\n\n\tnewArray.forEach(x => {\n\t\tif (!originalArrayHashSet.has(x)) {\n\t\t\tadded.push(x)\n\t\t}\n\t})\n\n\toriginalArray.forEach(x => {\n\t\tif (!newArrayHashSet.has(x)) {\n\t\t\tremoved.push(x)\n\t\t}\n\t})\n\n\treturn createReturnValue(added, removed)\n}\n\nexport const removeUndefinedItemsFromArray =

(array: Array

): Array

=> {\n\tconst filteredArray: Array

= [];\n\n\tfor (let i = 0; i < array.length; i++) {\n\t\tconst item = array[i];\n\t\tif (item) {\n\t\t\tfilteredArray.push(item);\n\t\t}\n\t}\n\n\treturn filteredArray;\n}\n","type RgbColor = {\n\tr: number\n\tg: number\n\tb: number\n}\n\ntype HslColor = {\n\th: number\n\ts: number\n\tl: number\n}\n\nexport const getRGBComponents = (hexColor: string): RgbColor | undefined=> {\n\tif (hexColor === undefined) {\n\t\treturn;\n\t}\n\n\tif (hexColor.charAt(0) !== '#') {\n\t\thexColor = colorToHex(hexColor) as string;\n\t}\n\n\tlet noOfChars;\n\tif (hexColor.length === 4) {\n\t\tnoOfChars = 1;\n\t} else if (hexColor.length === 7) {\n\t\tnoOfChars = 2;\n\t} else {\n\t\treturn;\n\t}\n\n\tlet r = hexColor.substring(1, 1 + noOfChars);\n\tlet g = hexColor.substring(1 + noOfChars, 1 + 2 * noOfChars);\n\tlet b = hexColor.substring(1 + 2 * noOfChars, 1 + 3 * noOfChars);\n\n\tif (noOfChars === 1) {\n\t\tr += r;\n\t\tg += g;\n\t\tb += b;\n\t}\n\n\treturn {\n\t\tr: parseInt(r, 16),\n\t\tg: parseInt(g, 16),\n\t\tb: parseInt(b, 16)\n\t};\n}\n\n\nexport const getContrastingColor = (hexColor?: string) => {\n\tif (hexColor === undefined) {\n\t\treturn '#fff';\n\t}\n\n\tconst rgb = getRGBComponents(hexColor);\n\tif (rgb === undefined) {\n\t\treturn '#fff';\n\t}\n\n\t// this formula was found in react-color\\lib\\helpers\\color.js in getContrastingColor\n\tconst yiq = (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n\treturn yiq >= 170 ? '#000' : '#fff';\n}\n\nexport const hexToHsl = (hexColor: string) => {\n\tif (hexColor === undefined) {\n\t\treturn;\n\t}\n\n\tlet rgb = getRGBComponents(hexColor);\n\n\tif (!rgb) {\n\t\treturn;\n\t}\n\n\tlet { r, g, b } = rgb;\n\n\tr /= 255;\n\tg /= 255;\n\tb /= 255;\n\n\tconst cmin = Math.min(r, g, b);\n\tconst cmax = Math.max(r, g, b);\n\tconst delta = cmax - cmin;\n\n\tlet h = 0;\n\tlet s = 0;\n\tlet l = 0;\n\n\t// Calculate hue\n\t// No difference\n\tif (delta === 0) {\n\t\th = 0;\n\t}\n\t// Red is max\n\telse if (cmax === r) {\n\t\th = ((g - b) / delta) % 6;\n\t}\n\t// Green is max\n\telse if (cmax === g) {\n\t\th = (b - r) / delta + 2;\n\t}\n\t// Blue is max\n\telse {\n\t\th = (r - g) / delta + 4;\n\t}\n\n\th = Math.round(h * 60);\n\n\t// Make negative hues positive behind 360°\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\t// Calculate lightness\n\tl = (cmax + cmin) / 2;\n\n\t// Calculate saturation\n\ts = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));\n\n\t// Multiply l and s by 100\n\ts = +(s * 100).toFixed(1);\n\tl = +(l * 100).toFixed(1);\n\n\treturn {\n\t\th,\n\t\ts,\n\t\tl\n\t};\n}\n\nexport const hslToHex = (hsl: HslColor) => {\n\tif (hsl === undefined) {\n\t\treturn;\n\t}\n\n\tconst { h } = hsl;\n\tlet { s, l } = hsl;\n\n\ts /= 100;\n\tl /= 100;\n\n\tconst c = (1 - Math.abs(2 * l - 1)) * s;\n\tconst x = c * (1 - Math.abs((h / 60) % 2 - 1));\n\tconst m = l - c / 2;\n\tlet r = 0;\n\tlet g = 0;\n\tlet b = 0;\n\n\tif (0 <= h && h < 60) {\n\t\tr = c;\n\t\tg = x;\n\t\tb = 0;\n\t} else if (60 <= h && h < 120) {\n\t\tr = x;\n\t\tg = c;\n\t\tb = 0;\n\t} else if (120 <= h && h < 180) {\n\t\tr = 0;\n\t\tg = c;\n\t\tb = x;\n\t} else if (180 <= h && h < 240) {\n\t\tr = 0;\n\t\tg = x;\n\t\tb = c;\n\t} else if (240 <= h && h < 300) {\n\t\tr = x;\n\t\tg = 0;\n\t\tb = c;\n\t} else if (300 <= h && h < 360) {\n\t\tr = c;\n\t\tg = 0;\n\t\tb = x;\n\t}\n\t// Having obtained RGB, convert channels to hex\n\tlet rString = Math.round((r + m) * 255).toString(16);\n\tlet gString = Math.round((g + m) * 255).toString(16);\n\tlet bString = Math.round((b + m) * 255).toString(16);\n\n\t// Prepend 0s, if necessary\n\tif (rString.length === 1) {\n\t\trString = '0' + r;\n\t}\n\tif (gString.length === 1) {\n\t\tgString = '0' + g;\n\t}\n\tif (bString.length === 1) {\n\t\tbString = '0' + b;\n\t}\n\n\treturn '#' + rString + gString + bString;\n}\n\n\n// example: converts 'black' -> [r, g, b, a]: number 0-255\nfunction colorValueToRGBA(color: string) {\n // Returns the color as an array of [r, g, b, a] -- all range from 0 - 255\n // color must be a valid canvas fillStyle. This will cover most anything\n // you'd want to use.\n // Examples:\n // colorToRGBA('red') # [255, 0, 0, 255]\n // colorToRGBA('#f00') # [255, 0, 0, 255]\n var cvs, ctx;\n cvs = document.createElement('canvas');\n cvs.height = 1;\n cvs.width = 1;\n\tctx = cvs.getContext('2d') as CanvasRenderingContext2D;\n ctx.fillStyle = color;\n ctx.fillRect(0, 0, 1, 1);\n return ctx.getImageData(0, 0, 1, 1).data;\n}\n\n// Turns a number (0-255) into a 2-character hex number (00-ff)\nfunction byteToHex(num: number) {\n return ('0' + num.toString(16)).slice(-2);\n}\n\n// converts 'black' => '#000'\nexport function colorToHex(color: string) {\n\tif (!color) {\n\t\treturn;\n\t}\n\tif (color.charAt(0) === '#') {\n\t\treturn color;\n\t}\n // Convert any CSS color to a hex representation\n // Examples:\n // colorToHex('red') # '#ff0000'\n // colorToHex('rgb(255, 0, 0)') # '#ff0000'\n const rgba = colorValueToRGBA(color);\n const hex = [0,1,2].map((idx) => byteToHex(rgba[idx])).join('');\n return \"#\" + hex;\n}\n","const PADD_ID_LENGTH = 8;\n\nexport enum EntityPrefixEnum {\n\tPROJECT = 'P',\n\tTICKET = 'T',\n\tREPORT = 'PR',\n\tCHANGE_REQUEST = 'CR',\n\tBUSINESS_PARTNER = 'BP',\n\tRISK = 'R',\n\tSURVEY = 'SU',\n\tTRAVEL_REQUEST = 'TR',\n\tTRAVEL_EXPENSE = 'TE',\n\tTIME_TRAVEL_EXPENSE = 'E',\n\tVACATION_REQUEST = 'VR',\n\tREMINDER = 'RM',\n\tSTATUS_REPORT = 'SR',\n\tTASK = 'TS',\n\tMEETING = 'M'\n}\n\nexport const getFormatedId = (prefix: EntityPrefixEnum | undefined, id: number | undefined) => {\n\tif (!id || !prefix) {\n\t\treturn '';\n\t}\n\n\tconst result = prefix + id.toString().padStart(PADD_ID_LENGTH, '0');\n\treturn result;\n};\n\nexport const getUnformattedId = (prefix: EntityPrefixEnum | undefined, formattedId: string) => {\n\tif (!prefix) {\n\t\treturn undefined;\n\t}\n\n\tlet id = formattedId;\n\n\tif (id.startsWith(prefix)) {\n\t\tid = id.substring(prefix.length);\n\t} else {\n\t\treturn undefined;\n\t}\n\n\tif (id.length === PADD_ID_LENGTH) {\n\t\t// remove padded '0'\n\t\twhile (id.charAt(0) === '0') {\n\t\t\tid = id.substring(1);\n\t\t}\n\t} else {\n\t\treturn undefined;\n\t}\n\n\treturn parseInt(id);\n}\n\ninterface Identify {\n\tid: number\n}\n\nclass ItemsMap {\n\t[key: string]: any\n}\n\nexport function createDelta(\n\tinitialItems: TResponse[],\n\titems: TResponse[],\n\tInsertClass: (new (obj: any) => any),\n\tUpdateClass: (new (obj: any) => any),\n\tDeltaClass: (new () => any),\n\tDeleteClass?: (new () => any)\n) {\n\t// create maps\n\tconst initialItemMap: ItemsMap = initialItems.reduce((currentMap, item) => {\n\t\treturn { ...currentMap, [item.id!.toString()]: item };\n\t}, {})\n\n\tconst itemMap: ItemsMap = items.reduce((currentMap, item) => {\n\t\treturn { ...currentMap, [item.id!.toString()]: item };\n\t}, {})\n\n\tconst result = new DeltaClass();\n\n\tObject.keys(itemMap).forEach((id, index) => {\n\n\t\tconst currentItem = itemMap[id];\n\t\tconst initialItem = initialItemMap[id];\n\n\t\t// insert\n\t\tif (!initialItem) {\n\t\t\tconst insertItem = new InsertClass(currentItem);\n\t\t\tif (!result.insert) result.insert = [];\n\t\t\tresult.insert.push(insertItem);\n\t\t\treturn;\n\t\t}\n\n\t\t// update\n\t\tif (initialItem !== currentItem) {\n\t\t\tconst updateItem = new UpdateClass(currentItem);\n\t\t\tif (!result.update) result.update = [];\n\t\t\tresult.update.push(updateItem);\n\t\t}\n\t});\n\n\t// delete\n\tObject.keys(initialItemMap).forEach(id => {\n\t\tif (!itemMap[id]) {\n\t\t\tif (!result.delete) result.delete = [];\n\t\t\tif (DeleteClass) {\n\t\t\t\tconst deleteObject = new DeleteClass();\n\t\t\t\tdeleteObject.id = parseInt(id);\n\t\t\t\tresult.delete.push(deleteObject);\n\t\t\t} else {\n\t\t\t\tresult.delete.push(parseInt(id));\n\t\t\t}\n\n\t\t}\n\t});\n\n\treturn result;\n}\n\n// Maybe there\nexport const unpackDelta = (deltaErrors: any, delta: any, items: Array, initialItems: Array) => {\n\tconst tableErrors: any[] = []\n\n\t// create maps\n\tconst initialItemMap: ItemsMap = initialItems.reduce((currentMap, item, index) => {\n\t\treturn { ...currentMap, [item.id!.toString()]: {...item, index }};\n\t}, {})\n\n\tconst itemMap: ItemsMap = items.reduce((currentMap, item, index) => {\n\t\treturn { ...currentMap, [item.id!.toString()]: {...item, index }};\n\t}, {})\n\n\t// if there are invalid deletes, items are returned to list\n\tconst newItems = [...items];\n\t// initial indexes of successfully deleted items\n\tconst deletedIndexes: number[] = [];\n\t// initial indexes of deleted items which are failed\n\tconst returnedIndexes: number[] = [];\n\n\t// fill deletedIndexes\n\tif (delta.delete) {\n\t\tdelta.delete.forEach((deleteItem: any) => {\n\t\t\tconst deleteId = typeof deleteItem === 'number' ? deleteItem: deleteItem.id;\n\t\t\tconst deletedIndex = initialItemMap[deleteId].index\n\t\t\tdeletedIndexes.push(deletedIndex);\n\t\t});\n\t}\n\n\t// fill returnedIndexes, remove items from deletedIndexes\n\tif (deltaErrors.delete) {\n\t\tdeltaErrors.delete.forEach((deleteError: any, index: number) => {\n\t\t\tconst deleteItem = delta.delete[index];\n\t\t\tconst deleteId = typeof deleteItem === 'number' ? deleteItem: deleteItem.id;\n\t\t\tconst deletedIndex = initialItemMap[deleteId].index\n\t\t\treturnedIndexes.push(deletedIndex);\n\t\t\tdeletedIndexes.splice(deletedIndexes.indexOf(deletedIndex), 1);\n\t\t});\n\t}\n\n\t// delete errors can be only global errors\n\t// set global errors for failed delete rows and return them to newItems\n\tif (deltaErrors.delete) {\n\t\tdeltaErrors.delete.forEach((deleteError: any, index: number) => {\n\t\t\tconst deleteItem = delta.delete[index];\n\t\t\tconst deleteId = typeof deleteItem === 'number' ? deleteItem: deleteItem.id;\n\t\t\tconst deletedIndex = initialItemMap[deleteId].index\n\n\t\t\tconst numOfDeletedIndexesBefore = deletedIndexes.reduce(\n\t\t\t\t(num: number, currentIndex: number) => {\n\t\t\t\t\tif (currentIndex < deletedIndex) {\n\t\t\t\t\t\tnum++;\n\t\t\t\t\t}\n\t\t\t\t\treturn num;\n\t\t\t\t},\n\t\t\t\t0\n\t\t\t)\n\n\t\t\tconst tableIndex = deletedIndex - numOfDeletedIndexesBefore;\n\t\t\ttableErrors[tableIndex] = {\n\t\t\t\t'': deleteError\n\t\t\t}\n\n\t\t\tinitialItems.forEach((initialItem: any) => {\n\t\t\t\tif (initialItem.id === deleteId) {\n\t\t\t\t\tnewItems.splice(tableIndex, 0, initialItem);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t});\n\n\t\t});\n\t}\n\n\t// set errors for failed inserts\n\t// calculate row index by returned indexes\n\tif (deltaErrors.insert) {\n\t\tdeltaErrors.insert.forEach((insertError: any, index: number) => {\n\t\t\tconst insertItem = delta.insert[index];\n\t\t\tlet tableIndex = itemMap[insertItem.id].index;\n\n\t\t\tconst numOfReturnedIndexesBefore = returnedIndexes.reduce(\n\t\t\t\t(num: number, currentIndex: number) => {\n\t\t\t\t\tif (currentIndex < tableIndex) {\n\t\t\t\t\t\tnum++;\n\t\t\t\t\t}\n\t\t\t\t\treturn num;\n\t\t\t\t},\n\t\t\t\t0\n\t\t\t)\n\n\t\t\ttableIndex -= numOfReturnedIndexesBefore;\n\n\t\t\t// is global error for that row\n\t\t\tif (typeof insertError === 'string'){\n\t\t\t\ttableErrors[tableIndex] = {};\n\t\t\t\ttableErrors[tableIndex][''] = insertError;\n\t\t\t} else {\n\t\t\t\tObject.keys(insertError).forEach((key: string) => {\n\t\t\t\t\tif (!tableErrors[tableIndex]) {\n\t\t\t\t\t\ttableErrors[tableIndex] = {}\n\t\t\t\t\t}\n\t\t\t\t\ttableErrors[tableIndex][key] = insertError[key];\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\t// set errors for failed updates\n\t// calculate row index by returned indexes\n\tif (deltaErrors.update) {\n\t\tdeltaErrors.update.forEach((updateError: any, index: number) => {\n\t\t\tconst updateItem = delta.update[index];\n\t\t\tlet tableIndex = itemMap[updateItem.id].index;\n\t\t\tconst initialIndexIndex = initialItemMap[updateItem.id].index;\n\n\t\t\tconst numOfReturnedIndexesBefore = returnedIndexes.reduce(\n\t\t\t\t(num: number, currentIndex: number) => {\n\t\t\t\t\tif (currentIndex < initialIndexIndex) {\n\t\t\t\t\t\tnum++;\n\t\t\t\t\t}\n\t\t\t\t\treturn num;\n\t\t\t\t},\n\t\t\t\t0\n\t\t\t)\n\n\t\t\ttableIndex -= numOfReturnedIndexesBefore;\n\n\t\t\t// is global error for that row\n\t\t\tif (typeof updateError === 'string'){\n\t\t\t\ttableErrors[tableIndex] = {};\n\t\t\t\ttableErrors[tableIndex][''] = updateError;\n\t\t\t} else {\n\t\t\t\tObject.keys(updateError).forEach((key: string) => {\n\t\t\t\t\tif (!tableErrors[tableIndex]) {\n\t\t\t\t\t\ttableErrors[tableIndex] = {}\n\t\t\t\t\t}\n\t\t\t\t\ttableErrors[tableIndex][key] = updateError[key];\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\treturn [tableErrors, newItems];\n\n}\n\n// next methods are used primarily because of shallow compare, because reference is always the same\n\nexport const noop = () => {\n\treturn undefined as any\n}\n\nexport const emptyArray = []\n\nexport const emptyObject = {}\n","export const getCssVariableValue = (name: string) => {\n\tconst value = getComputedStyle(document.body).getPropertyValue(name);\n\treturn value.trim();\n}\n\nexport const setCssVariableValue = (name: string, value: string) => {\n\tdocument.body.style.setProperty(name, value);\n}\n","export const formatCurrencyUtil = (value: number | undefined) => {\n\tif (value === undefined) {\n\t\treturn;\n\t}\n\n\treturn value.toLocaleString(undefined, { minimumFractionDigits: 2 });\n}\n","import { RootState } from 'base/reducer/reducer';\nimport { OptionType } from 'components/Form';\nimport { useCallback } from 'react';\nimport { useSelector } from 'react-redux';\nimport { MonthEnum, WeekDayEnum } from 'services/tenantManagementService';\nimport { MeridiemTimeEnum } from 'utils/MeridiemTimeEnum';\n\nexport const getTimeDifferenceBetweenDates = (date1: Date, date2: Date) => {\n\tconst differenceInTime = date2.getTime() - date1.getTime();\n\treturn differenceInTime;\n}\n\nexport const getNumberOfDaysBetweenDates = (date1: Date, date2: Date) => {\n\tconst date1WithoutTIme = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n\tconst date2WithoutTIme = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n\treturn Math.ceil(\n\t\tgetTimeDifferenceBetweenDates(date1WithoutTIme, date2WithoutTIme) / (1000 * 3600 * 24)\n\t)\n}\n\nexport const getNumberOfHoursBetweenDates = (date1: Date, date2: Date) => {\n\treturn Math.ceil(\n\t\tgetTimeDifferenceBetweenDates(date1, date2) / (1000 * 3600)\n\t);\n};\n\nexport const getNumberOfMinutesBetweenDates = (date1: Date, date2: Date) => {\n\treturn Math.ceil(\n\t\tgetTimeDifferenceBetweenDates(date1, date2) / (1000 * 60)\n\t)\n}\n\nexport const getNumberOfWeeksBetweenDates = (date1: Date, date2: Date) => {\n\tconst date1WithoutTIme = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n\tconst date2WithoutTIme = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n\treturn Math.ceil(\n\t\tgetTimeDifferenceBetweenDates(date1WithoutTIme, date2WithoutTIme) / (1000 * 3600 * 24 * 7)\n\t);\n};\n\nexport const getNumberOfMonthsBetweenDates = (date1: Date, date2: Date) => {\n\tconst differenceMonth = date2.getMonth() - date1.getMonth();\n\tconst differenceYear = date2.getFullYear() - date1.getFullYear();\n\treturn differenceMonth + differenceYear * 12;\n};\n\nexport const getDateIncrementByNumberOfDays = (date: Date, days: number) => {\n\tconst dateWithTime = new Date(date.getTime());\n\tdateWithTime.setTime(dateWithTime.getTime() + days * 24 * 3600 * 1000);\n\treturn dateWithTime;\n};\n\nexport const getDateIncrementByNumberOfMonths = (date: Date, value: number) => {\n\tconst dateWithoutTime = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n\tdateWithoutTime.setMonth(dateWithoutTime.getMonth() + value);\n\treturn dateWithoutTime;\n};\n\nexport const getDateIncrementByNumberOfWeeks = (date: Date, value: number) => {\n\tconst dateWithoutTime = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n\tdateWithoutTime.setDate(dateWithoutTime.getDate() + 7 * value);\n\treturn dateWithoutTime;\n};\n\nexport const getDateIncrementByNumberOfHours = (date: Date, hours: number) => {\n\tconst dateWithTime = new Date(date.getTime());\n\tdateWithTime.setTime(dateWithTime.getTime() + hours * 3600 * 1000);\n\treturn dateWithTime;\n};\n\nexport const getDateIncrementByNumberOfMinutes = (date: Date, minutes: number) => {\n\tconst dateWithTime = new Date(date.getTime());\n\tdateWithTime.setTime(dateWithTime.getTime() + minutes * 60 * 1000);\n\treturn dateWithTime;\n};\n\nexport const getDateIncrementByNumberOfHoursBasedOnCalendarSettingsWorkTime = (date: Date, value: number, workTime: number) => {\n\tconst differenceWorkTime = 24 - workTime;\n\tconst numberOfDays = Math.floor(value / workTime);\n\tconst newValue = value + (differenceWorkTime * numberOfDays);\n\n\tconst dateWithTime = new Date(date.getTime());\n\tdateWithTime.setTime(dateWithTime.getTime() + (newValue * 3600 * 1000));\n\treturn dateWithTime;\n};\n\nexport const getNumberOfHoursBetweenDatesBasedOnCalendarSettingsWorkTime = (date1: Date, date2: Date, workTime: number) => {\n\tconst differenceWorkTime = 24 - workTime;\n\tconst numberOfDays = getNumberOfDaysBetweenDates(date1, date2);\n\treturn (\n\t\tMath.ceil(getTimeDifferenceBetweenDates(date1, date2) / (1000 * 3600)) - (differenceWorkTime * numberOfDays)\n\t);\n};\n\nexport const getNumberOfDaysBetweenDatesWithoutWeekends = (date1: Date, date2: Date) => {\n\tconst startDate = new Date(date1);\n\tlet workingDays = 0;\n\n\twhile (startDate < date2) {\n\t\tconst day = startDate.getDay();\n\t\tif (day !== 0 && day !== 6) {\n\t\t\tworkingDays++;\n\t\t}\n\t\tstartDate.setDate(startDate.getDate() + 1);\n\t}\n\treturn workingDays;\n};\n\nexport const getDateIncrementByNumberOfDaysWithoutWeekends = (date: Date, value: number) => {\n\tconst newDate = new Date(date);\n\tlet workingDays = value;\n\n\twhile (workingDays > 0) {\n\t\tconst day = newDate.getDay();\n\t\tif (day !== 0 && day !== 6) {\n\t\t\tworkingDays--;\n\t\t}\n\t\tnewDate.setDate(newDate.getDate() + 1);\n\t}\n\n\treturn newDate;\n};\n\nexport const getNumberOfHoursBetweenDatesWithoutWeekends = (date1: Date, date2: Date) => {\n\tconst startDate = new Date(date1);\n\tlet workingHours = 0;\n\n\twhile (startDate < date2) {\n\t\tconst day = startDate.getDay();\n\t\tif (day !== 0 && day !== 6) {\n\t\t\tworkingHours++;\n\t\t}\n\t\tstartDate.setTime(startDate.getTime() + (3600 * 1000));\n\t}\n\treturn workingHours;\n};\n\nexport const getDateIncrementByNumberOfHoursWithoutWeekends = (date: Date, value: number) => {\n\tconst newDate = new Date(date.getTime());\n\tlet workingHours = value;\n\n\twhile (workingHours > 0) {\n\t\tconst day = newDate.getDay();\n\t\tif (day !== 0 && day !== 6) {\n\t\t\tworkingHours--;\n\t\t}\n\t\tnewDate.setTime(newDate.getTime() + (3600 * 1000));\n\t}\n\n\treturn newDate;\n};\n\nexport const getNumberOfHoursBetweenDatesWithoutWeekendsBasedOnCalendarSettingsWorkTime = (date1: Date, date2: Date, workTime: number) => {\n\tconst differenceWorkTime = 24 - workTime;\n\tconst numberOfHours = getNumberOfHoursBetweenDatesWithoutWeekends(date1, date2);\n\tconst numberOfDays = Math.floor(numberOfHours / 24);\n\treturn getNumberOfHoursBetweenDatesWithoutWeekends(date1, date2) - differenceWorkTime * numberOfDays;\n};\n\nexport const getDateIncrementByNumberOfHoursWithoutWeekendsBasedOnCalendarSettingsWorkTime = (date: Date, value: number, workTime: number) => {\n\tconst differenceWorkTime = 24 - workTime;\n\tconst numberOfDays = Math.floor(value / workTime);\n\tconst newValue = value + (differenceWorkTime * numberOfDays);\n\treturn getDateIncrementByNumberOfHoursWithoutWeekends(date, newValue);\n};\n\nexport const formatDateByPattern = (date: Date | undefined, pattern: string) => {\n\tif (!date || !(date instanceof Date) || isNaN(date.getTime())) {\n\t\treturn '';\n\t}\n\tconst day = date.getDate();\n\tconst month = date.getMonth() + 1;\n\tconst year = date.getFullYear();\n\n\tconst map = {\n\t\td: day, \t// Day (1-31)\n\t\tdd: String(day).padStart(2, '0'), \t// Day (2 digits)\n\t\tM: month, \t\t// Month (1-12)\n\t\tMM: String(month).padStart(2, '0'), \t// Month (2 digits)\n\t\tyyyy: year, \t\t// Year (4 digits)\n\t\tyy: String(year).slice(-2), \t\t// Year (2 digits)\n\t};\n\n\t// Replace each token in the format string\n\treturn pattern.replace(/d{1,2}|M{1,2}|yyyy|yy/g, (match) => map[match]);\n}\n\nexport const formatTimeByPattern = (date: Date | undefined, pattern: string): string => {\n\tif (!date || !(date instanceof Date) || isNaN(date.getTime())) {\n\t\treturn '';\n\t}\n\n\tconst hours24 = date.getHours(); // 0-23\n\tconst hours12 = hours24 % 12 || 12; // 1-12\n\tconst minutes = date.getMinutes();\n\tconst amPm = hours24 < 12 ? 'AM' : 'PM';\n\n\tconst map = {\n\t\tH: hours24, \t// Hour (0-23)\n\t\tHH: String(hours24).padStart(2, '0'), \t// Hour (00-23)\n\t\th: hours12, \t// Hour (1-12)\n\t\thh: String(hours12).padStart(2, '0'), \t// Hour (01-12)\n\t\tm: minutes, \t// Minute (0-59)\n\t\tmm: String(minutes).padStart(2, '0'), \t// Minute (00-59)\n\t\ttt: amPm, \t// AM/PM\n\t};\n\n\t// Replace each token in the format string\n\treturn pattern.replace(/H{1,2}|h{1,2}|m{1,2}|tt/g, (match) => map[match]);\n};\n\nexport const formatDateTimeByPattern = (date: Date | undefined, pattern: string): string => {\n\tif (!date || !(date instanceof Date) || isNaN(date.getTime())) {\n\t\treturn '';\n\t}\n\n\t// Map for both date and time patterns\n\tconst day = date.getDate();\n\tconst month = date.getMonth() + 1;\n\tconst year = date.getFullYear();\n\tconst hours24 = date.getHours(); // 0-23\n\tconst hours12 = hours24 % 12 || 12; // 1-12\n\tconst minutes = date.getMinutes();\n\tconst amPm = hours24 < 12 ? 'AM' : 'PM';\n\n\tconst map = {\n\t\td: day, \t// Day (1-31)\n\t\tdd: String(day).padStart(2, '0'), \t// Day (2 digits)\n\t\tM: month, \t// Month (1-12)\n\t\tMM: String(month).padStart(2, '0'), \t// Month (2 digits)\n\t\tyyyy: year, \t// Year (4 digits)\n\t\tyy: String(year).slice(-2), \t// Year (2 digits)\n\t\tH: hours24, \t// Hour (0-23)\n\t\tHH: String(hours24).padStart(2, '0'), \t// Hour (00-23)\n\t\th: hours12, \t// Hour (1-12)\n\t\thh: String(hours12).padStart(2, '0'), \t// Hour (01-12)\n\t\tm: minutes, \t// Minute (0-59)\n\t\tmm: String(minutes).padStart(2, '0'), \t// Minute (00-59)\n\t\ttt: amPm, \t// AM/PM\n\t};\n\n\t// Replace each token in the format string\n\treturn pattern.replace(/d{1,2}|M{1,2}|yyyy|yy|H{1,2}|h{1,2}|m{1,2}|tt/g, (match) => map[match]);\n};\n\nexport const useGetDatePatternString = () => {\n\tconst persistedTenant = useSelector((state: RootState) => state.persistedTenant);\n\n\treturn persistedTenant.value?.datePattern?.pattern || 'dd.MM.yyyy';\n}\n\nexport const useGetTimePatternString = () => {\n\tconst persistedTenant = useSelector((state: RootState) => state.persistedTenant);\n\n\treturn persistedTenant.value?.timePattern?.pattern || 'HH:mm';\n}\n\nexport const useGetDateTimePatternString = () => {\n\tconst datePatternString = useGetDatePatternString();\n\tconst timePatternString = useGetTimePatternString();\n\treturn `${datePatternString} ${timePatternString}`\n}\n\nexport const useFormatDate = () => {\n\tconst datePatternString = useGetDatePatternString();\n\treturn useCallback(\n\t\t(date: Date | undefined) => formatDateByPattern(date, datePatternString),\n\t\t[datePatternString]\n\t);\n}\n\nexport const useFormatTime = () => {\n\tconst timePatternString = useGetTimePatternString();\n\treturn useCallback(\n\t\t(date: Date | undefined) => formatTimeByPattern(date, timePatternString),\n\t\t[timePatternString]\n\t);\n}\n\nexport const useFormatDateTime = () => {\n\tconst datePatternString = useGetDatePatternString();\n\tconst timePatternString = useGetTimePatternString();\n\treturn useCallback(\n\t\t(date: Date | undefined) => `${formatDateByPattern(date, datePatternString)} ${formatTimeByPattern(date, timePatternString)}`,\n\t\t[timePatternString, datePatternString]\n\t);\n}\n\nexport const formatServerDate = (value?: Date) => {\n\tif (!value) {\n\t\treturn '';\n\t}\n\n\tconst fullYear = value.getFullYear();\n\tconst month = value.getMonth();\n\tconst dayOfTheMonth = value.getDate();\n\n\treturn fullYear + '-' +\n\t\t(month < 9 ? ('0' + (month + 1)) : (month + 1)) + '-' +\n\t\t(dayOfTheMonth < 10 ? ('0' + dayOfTheMonth) : dayOfTheMonth);\n}\n\n// const parseTimeStringToMilliseconds = (value: string) => {\n// \tconst newValueSplit = value.split(':');\n// \tconst hours = newValueSplit[0] ? parseInt(newValueSplit[0]) : undefined;\n// \tconst minutes = newValueSplit[1] ? parseInt(newValueSplit[1]) : undefined;\n\n// \tif (hours === undefined || minutes === undefined) {\n// \t\treturn;\n// \t}\n\n// \tconst timeInMinutes = hours * 60 + minutes;\n// \tconst timeInSeconds = timeInMinutes * 60;\n// \tconst timeInMiliseconds = timeInSeconds * 1000;\n// \treturn timeInMiliseconds;\n// }\n\n// export const parseTimeStringToTicks = (value: string) => {\n// \tconst timeInMiliseconds = parseTimeStringToMilliseconds(value);\n// \tif (!timeInMiliseconds) {\n// \t\treturn;\n// \t}\n// \treturn timeInMiliseconds * 10000;\n// }\n\n// TODO: should use new Intl.DateTimeFormat('en-US', { timeStyle: 'short' })\nexport const formatTime = (value?: number) => {\n\tif (value === undefined) {\n\t\treturn '';\n\t} else {\n\t\tconst timeInMiliseconds = value / 10000;\n\t\tconst timeInSeconds = timeInMiliseconds / 1000;\n\t\tconst timeInMinutes = Math.floor(timeInSeconds / 60);\n\n\t\tconst minutes = timeInMinutes % 60;\n\t\tlet hours = Math.floor(timeInMinutes / 60);\n\t\tlet amOrPm = 'AM';\n\t\tif (hours >= 12) {\n\t\t\tamOrPm = 'PM';\n\t\t}\n\n\t\tif (hours > 12) {\n\t\t\thours -= 12;\n\t\t} else if (hours === 0) {\n\t\t\thours = 12;\n\t\t}\n\n\t\tconst minutesString = String(minutes).padStart(2, '0');\n\t\tconst hoursString = String(hours).padStart(2, '0');\n\n\t\treturn `${hoursString}:${minutesString} ${amOrPm}`\n\t}\n}\n\n// TODO: should use new Intl.DateTimeFormat('en-US', { timeStyle: 'short' })\nexport const formatTimeWithoutAmOrPm = (value?: number) => {\n\tif (value === undefined) {\n\t\treturn '';\n\t} else {\n\t\tconst timeInMiliseconds = value / 10000;\n\t\tconst timeInSeconds = timeInMiliseconds / 1000;\n\t\tconst timeInMinutes = Math.floor(timeInSeconds / 60);\n\n\t\tconst minutes = timeInMinutes % 60;\n\t\tlet hours = Math.floor(timeInMinutes / 60);\n\n\t\tconst minutesString = String(minutes).padStart(2, '0');\n\t\tconst hoursString = String(hours).padStart(2, '0');\n\n\t\treturn `${hoursString}:${minutesString}`;\n\t}\n}\n\n// export const availableHours = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n\n// export const availableMinutes = [\n// \t0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,\n// \t11, 12, 13, 14, 15, 16, 17, 18, 19, 20,\n// \t21, 22, 23, 24, 25, 26, 27, 28, 29, 30,\n// \t31, 32, 33, 34, 35, 36, 37, 38, 39, 40,\n// \t41, 42, 43, 44, 45, 46, 47, 48, 49, 50,\n// \t51, 52, 53, 54, 55, 56, 57, 58, 59\n// ];\n\n// export const availableAmPm = [\n// \tMeridiemTimeEnum.AM,\n// \tMeridiemTimeEnum.PM\n// ];\n\nexport const convertTicksToMiliSeconds = (value: number) => {\n\treturn value / 10000;\n}\n\nexport const convertTicksToTime = (value: number) => {\n\tconst timeInMilliSeconds = convertTicksToMiliSeconds(value);\n\tconst timeInSeconds = timeInMilliSeconds / 1000;\n\tconst timeInMinutes = Math.floor(timeInSeconds / 60);\n\n\tconst minutes = timeInMinutes % 60;\n\tlet hours = Math.floor(timeInMinutes / 60);\n\n\treturn {\n\t\tminutes,\n\t\thours\n\t};\n}\n\nexport const convertMinutesToTicks = (minutes: number | undefined) => {\n\tif (!minutes) {\n\t\treturn;\n\t}\n\n\treturn minutes * 10000 * 1000 * 60;\n}\n\nexport const convertTicksToMinutes = (ticks: number | undefined) => {\n\tif (!ticks) {\n\t\treturn;\n\t}\n\n\treturn ticks / 10000 / 1000 / 60;\n}\n\n// export const convertTicksToMeridiemTime = (value: number) => {\n// \tlet { hours, minutes } = convertTicksToTime(value);\n\n// \tconst amOrPm = hours >= 12 ? MeridiemTimeEnum.PM : MeridiemTimeEnum.AM;\n// \tif (hours > 12) {\n// \t\thours -= 12;\n// \t} else if (hours === 0) {\n// \t\thours = 12;\n// \t}\n\n// \treturn {\n// \t\thours,\n// \t\tminutes,\n// \t\tamOrPm\n// \t}\n// }\n\nexport const convertTimeToTicks = (hours: number, minutes: number) => {\n\tconst timeInMinutes = hours * 60 + minutes;\n\tconst timeInSeconds = timeInMinutes * 60;\n\tconst timeInMilliSeconds = timeInSeconds * 1000;\n\tconst timeInTicks = timeInMilliSeconds * 10000\n\treturn timeInTicks;\n}\n\nexport const convertMeridiemTimeToTicks = (hours: number, minutes: number, meridiemTime: MeridiemTimeEnum) => {\n\tif (meridiemTime === MeridiemTimeEnum.PM && hours < 12) {\n\t\thours += 12;\n\t} else if (meridiemTime === MeridiemTimeEnum.AM && hours === 12) {\n\t\thours = 0;\n\t}\n\n\tconst convertedTime = convertTimeToTicks(hours, minutes);\n\tif (!convertedTime) {\n\t\treturn;\n\t}\n\treturn convertedTime;\n}\n\nexport const minutesToDhm = (minutes: number, dayLastInMinutes: number = 60 * 24) => {\n\tconst d = Math.floor(minutes / dayLastInMinutes);\n\tconst h = Math.floor(minutes % dayLastInMinutes / 60);\n\tconst m = Math.floor(minutes % 60);\n\n\tconst dDisplay = d > 0 ? d + (d === 1 ? ' day ' : ' days ') : '';\n\tconst hDisplay = h + 'h ';\n\tconst mDisplay = m + 'min ';\n\treturn dDisplay + hDisplay + mDisplay;\n}\n\nexport const minutesToHm = (minutes: number) => {\n\tconst h = Math.floor(minutes / 60);\n\tconst m = Math.floor(minutes % 60);\n\n\tconst hDisplay = h > 0 ? h + 'h ' : '';\n\tconst mDisplay = m + 'min ';\n\treturn hDisplay + mDisplay;\n}\n\nexport const monthsOfYear = [\n\t{ id: MonthEnum.January, text: 'i18n.january' },\n\t{ id: MonthEnum.February, text: 'i18n.february' },\n\t{ id: MonthEnum.March, text: 'i18n.march' },\n\t{ id: MonthEnum.April, text: 'i18n.april' },\n\t{ id: MonthEnum.May, text: 'i18n.may' },\n\t{ id: MonthEnum.June, text: 'i18n.june' },\n\t{ id: MonthEnum.July, text: 'i18n.july' },\n\t{ id: MonthEnum.August, text: 'i18n.august' },\n\t{ id: MonthEnum.September, text: 'i18n.september' },\n\t{ id: MonthEnum.October, text: 'i18n.october' },\n\t{ id: MonthEnum.November, text: 'i18n.november' },\n\t{ id: MonthEnum.December, text: 'i18n.december' },\n];\n\nexport const getMonthEnumByDate = (date: Date) => monthsOfYear[date.getMonth()].id\n\nexport const getMonthIndexByMonthEnum = (monthEnum: MonthEnum) => {\n\treturn monthsOfYear.findIndex(month => month.id === monthEnum);\n};\n\nexport const daysOfWeek: OptionType[] = [\n\t{ id: WeekDayEnum.Monday, text: 'i18n.monday' },\n\t{ id: WeekDayEnum.Tuesday, text: 'i18n.tuesday' },\n\t{ id: WeekDayEnum.Wednesday, text: 'i18n.wednesday' },\n\t{ id: WeekDayEnum.Thursday, text: 'i18n.thursday' },\n\t{ id: WeekDayEnum.Friday, text: 'i18n.friday' },\n\t{ id: WeekDayEnum.Saturday, text: 'i18n.saturday' },\n\t{ id: WeekDayEnum.Sunday, text: 'i18n.sunday' },\n]\n\nconst getDateIndex = (date: Date) => (date.getDay() + 6) % 7;\n\nexport const getWeekDayEnumByDate = (date: Date) => {\n\tconst dayIndex = getDateIndex(date);\n\treturn daysOfWeek[dayIndex].id as WeekDayEnum;\n}\n\nexport const getWeekDayTranslationByDate = (date: Date) => {\n\tconst dayIndex = getDateIndex(date);\n\treturn daysOfWeek[dayIndex].text;\n\n};\n\nexport const getMondayOfWeekByDate = (date: Date) => {\n\tconst currentDay = date.getDay();\n\n\tlet substractDays = currentDay - 1;\n\tif (substractDays < 0) {\n\t\t// Sunday is 0, so we substract 6 days to get monday\n\t\tsubstractDays = 6;\n\t}\n\tconst monday = new Date(date);\n\tmonday.setDate(monday.getDate() - substractDays);\n\tmonday.setHours(0, 0, 0, 0);\n\treturn monday;\n}\n\nexport const getDifferenceInDaysFromMonday = (weekDayEnum: WeekDayEnum) => {\n\tconst dayIndex = daysOfWeek.findIndex(day => day.id === weekDayEnum);\n\treturn dayIndex;\n};\n\n// removes last character 'Z' from Date string so time is from start of the day\nexport const removeZoneFromDate = (date: Date | undefined) => {\n\tif (!date) {\n\t\treturn;\n\t}\n\n\tconst dateIsoString = date.toISOString();\n\treturn new Date(dateIsoString.substring(0, dateIsoString.length - 1));\n}\n\n// to quick fix JSON.serialize when we need to send Date without time for example\nexport const getDateWithTimezoneOffset = (date: Date | undefined) => {\n\tif (!date) {\n\t\treturn;\n\t}\n\n\treturn new Date(date.getTime() - (date.getTimezoneOffset() * 60000));\n}\n\nconst getDaysInMonth = (month: number, year: number) => {\n\treturn 32 - new Date(year, month, 32).getDate();\n}\n\nconst isWeekday = (year: number, month: number, day: number) => {\n\tconst weekDayNumber = new Date(year, month, day).getDay();\n\treturn weekDayNumber !== 0 && weekDayNumber !== 6; // sunday and saturday\n}\n\nexport const getWeekdaysInMonth = (month: number, year: number) => {\n\tvar days = getDaysInMonth(month, year);\n\tvar weekdays = 0;\n\tfor (var i = 0; i < days; i++) {\n\t\tif (isWeekday(year, month, i + 1))\n\t\t\tweekdays++;\n\t}\n\treturn weekdays;\n}\n\nexport const getLastDayOfMonth = (date: Date | undefined) => {\n\tif (!date) {\n\t\treturn\n\t}\n\treturn new Date(date.getFullYear(), date.getMonth() + 1, 0);\n}\n","import { BaseResponseModel, FileResponse, IBaseResponseModel } from 'services/tenantManagementService';\nimport { catchError, defaultErrorResponse } from './fetchUtils';\n\ninterface IExportFileResponseModel extends IBaseResponseModel {\n\tvalue?: FileResponse\n}\n\nclass ExportFileResponseModel extends BaseResponseModel {\n\tvalue?: FileResponse\n\n constructor(data?: IExportFileResponseModel) {\n if (data) {\n\t\t\tsuper(data);\n\t\t\tthis.value = data.value;\n }\n\t}\n}\n\nexport const tryCatchExportFileByAction = async (fetchFunction: (...args: any[]) => Promise): Promise => {\n\tconst fetchPromise = fetchFunction();\n\n\ttry {\n\t\tconst response = await fetchPromise;\n\t\tconst model = new ExportFileResponseModel({\n\t\t\tsuccess: true,\n\t\t\tvalue: response\n\t\t});\n\t\treturn response ? model : defaultErrorResponse;\n\t}\n\tcatch (error: any) {\n\t\treturn catchError(error);\n\t}\n}\n","import { notification } from 'components/Notification/notification';\nimport { BaseResponseModel, ApiException } from 'services/tenantManagementService';\nimport { clearStorage } from 'utils/storageUtils';\nimport { ErrorsType, globalErrorKey } from 'components/Form/models';\n\nexport const defaultErrorResponse = new BaseResponseModel({\n\tsuccess: false,\n\terrors: {}\n})\n\nconst fixErrorResponse = (result: any) => ({ ...result, success: false })\n\nexport const catchError =

(error: any) => {\n\t// server error\n\tif (error.status === 500) {\n\t\tnotification.error({\n\t\t\tmessage: 'i18n.base.fetch.notification.unknownServerError'\n\t\t})\n\t\treturn defaultErrorResponse as P;\n\t}\n\n\t// validation error\n\tif (error.status === 400) {\n\t\tnotification.error({\n\t\t\tmessage: 'i18n.base.fetch.notification.validationError'\n\t\t})\n\t\t// error.result is BaseResponseModel all the time (if backend is correctly implemented)\n\t\treturn fixErrorResponse((error as ApiException).result);\n\t}\n\n\t// forbidden, there is no permission for this user or action is not possible (example: cannot delete entity that is used)\n\tif (error.status === 403) {\n\t\t// error.result is BaseResponseModel all the time (if backend is correctly implemented)\n\t\tconst result = (error as ApiException).result;\n\t\tconst errors = (result as BaseResponseModel)?.errors;\n\t\tconst message = errors && errors[globalErrorKey] && errors[globalErrorKey].message;\n\t\tnotification.error({\n\t\t\tmessage: message || 'i18n.base.fetch.notification.permissionError'\n\t\t})\n\t\treturn fixErrorResponse(result);\n\t}\n\n\t// unauthorized error\n\tif (error.status === 401) {\n\t\t// redirect to login\n\t\tclearStorage();\n\t\t// when token is invalid, storage is cleared and we reload the page\n\t\t// when page is loaded again, PageRouter inside of renderHomePage will save location.pathname to router state and redirect to Login\n\t\twindow.location.reload();\n\n\t\tnotification.error({\n\t\t\tmessage: 'i18n.base.fetch.notification.unauthorizedError'\n\t\t})\n\n\t\treturn defaultErrorResponse as P;\n\t}\n\n\tif (error instanceof TypeError) {\n\t\t// INFO: this is not useful to user, it is more for us to see the message\n\t\tnotification.error({\n\t\t\tmessage: error.toString()\n\t\t})\n\t\treturn defaultErrorResponse as P;\n\t}\n\n\tnotification.error({\n\t\tmessage: 'i18n.base.fetch.notification.unknownError'\n\t})\n\treturn defaultErrorResponse as P;\n}\n\nexport const tryCatchJsonByAction = async

(fetchFunction: (...args: any[]) => Promise

): Promise

=> {\n\tconst fetchPromise = fetchFunction();\n\n\ttry {\n\t\tconst response = await fetchPromise;\n\t\treturn response || defaultErrorResponse as P;\n\t}\n\tcatch (error: any) {\n\t\treturn catchError

(error);\n\t}\n}\n\n// INFO: convertResponseErrors should be called in tryCatchJson,\n// and all calls to this method should be removed from containers\n\n// response.errors can contain next strings as fields:\n// - 'topicsDelta.insert[0].description': MessageModel\n// - 'someDelta.insert[0]': MessageModel\n// - 'someField': MessageModel\n// and we need to convert those strings to a ErrorsType structure, and finaly to map MessageModel to ErrorType\nexport const convertResponseErrors = (response: BaseResponseModel): ErrorsType | undefined => {\n\tif (response.errors) {\n\t\tconst errorsMap: ErrorsType = {};\n\t\tfor (const key of Object.keys(response.errors)) {\n\t\t\tkey.split('.').reduce(\n\t\t\t\t(accumulator: any, currentSubKey: string, index: number, array: string[]) => {\n\t\t\t\t\tlet arrayRegex = /^[a-zA-Z]+[[0-9]*]/g;\n\t\t\t\t\tlet newObj: any;\n\n\t\t\t\t\t// check is property name array \"insert[0]\"\n\t\t\t\t\tif (arrayRegex.test(currentSubKey)) {\n\t\t\t\t\t\tconst splited = currentSubKey.split('[');\n\t\t\t\t\t\tconst arrayKey = splited[0];\n\t\t\t\t\t\tconst arrayIndex = parseInt(splited[1].slice(0, -1));\n\n\t\t\t\t\t\t//create array first, then create object\n\t\t\t\t\t\tnewObj = accumulator[arrayKey] || [];\n\t\t\t\t\t\taccumulator[arrayKey] = newObj;\n\n\t\t\t\t\t\tnewObj = accumulator[arrayKey][arrayIndex] || {};\n\n\t\t\t\t\t\t// if last, set message\n\t\t\t\t\t\tif (index === array.length - 1) {\n\t\t\t\t\t\t\tnewObj = response.errors![key].message ? {\n\t\t\t\t\t\t\t\tmessage: response.errors![key].message,\n\t\t\t\t\t\t\t\ti18nArgs: response.errors![key].additionalInfo\n\t\t\t\t\t\t\t} : undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// set accumulator to new object\n\t\t\t\t\t\taccumulator[arrayKey][arrayIndex] = newObj;\n\t\t\t\t\t} else { // property name is object\n\t\t\t\t\t\tnewObj = accumulator[currentSubKey] || {};\n\t\t\t\t\t\tif (index === array.length - 1) {\n\t\t\t\t\t\t\t// if last, set message\n\t\t\t\t\t\t\tnewObj = response.errors![key].message ? {\n\t\t\t\t\t\t\t\tmessage: response.errors![key].message,\n\t\t\t\t\t\t\t\ti18nArgs: response.errors![key].additionalInfo\n\t\t\t\t\t\t\t} : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// set accumulator to new object\n\t\t\t\t\t\taccumulator[currentSubKey] = newObj;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn newObj;\n\t\t\t\t},\n\t\t\t\terrorsMap\n\t\t\t);\n\t\t}\n\t\treturn errorsMap;\n\t}\n}\n","import { capitalizeFirstLetter } from './stringUtil';\n\n// example:\n//\n// type A = {\n// \tsava: string,\n// \tpera: number\n// }\n\n// propertyOf('pera')\n\nexport const propertyOf = (name: keyof TObj) => name;\n\n// similar to propertyOf, returns string with first letter upper case\nexport const propertyOfToCapital = (name: keyof TObj) => capitalizeFirstLetter(name as string);\n","import { getLocale, setLocale } from 'components/Translations/translationUtils';\nimport { getThemeLocalStorage, setThemeLocalStorage } from 'features/Theme';\nimport { UserModel } from 'services/tenantManagementService';\n\nexport const USER_INFO = 'user_info';\nexport const IS_USER_PM = 'is_user_pm';\nexport const IS_USER_ORGANIZATION_UNIT_MANAGER = 'is_user_manager_at_any_organizational_unit';\nexport const IS_USER_RESOURCE_MANAGER = 'is_user_resource_manager';\n\nexport const getUserInfo = () => {\n\tconst userString = localStorage.getItem(USER_INFO);\n\tif (userString === null) {\n\t\treturn new UserModel();\n\t}\n\n\tconst userInfo: UserModel = JSON.parse(userString);\n\n\treturn userInfo;\n}\n\nexport const setUserInfo = (user: UserModel) => {\n\tlocalStorage.setItem(USER_INFO, JSON.stringify(user))\n}\n\nexport const getIsUserProjectManager = () : boolean => {\n\treturn localStorage.getItem(IS_USER_PM) === 'true';\n}\n\nexport const setIsUserProjectManager = (isUserPM: boolean) => {\n\tlocalStorage.setItem(IS_USER_PM, isUserPM.toString());\n}\n\nexport const getIsUserManagerAtAnyOrganizationalUnit = () : boolean => {\n\treturn localStorage.getItem(IS_USER_ORGANIZATION_UNIT_MANAGER) === 'true';\n}\n\nexport const setIsUserManagerAtAnyOrganizationalUnit = (isOrganizationalUnitManager: boolean) => {\n\tlocalStorage.setItem(IS_USER_ORGANIZATION_UNIT_MANAGER, isOrganizationalUnitManager.toString());\n}\n\nexport const getIsUserResourceManager = () : boolean => {\n\treturn localStorage.getItem(IS_USER_RESOURCE_MANAGER) === 'true';\n}\n\nexport const setIsUserResourceManager = (isOrganizationalUnitManager: boolean) => {\n\tlocalStorage.setItem(IS_USER_RESOURCE_MANAGER, isOrganizationalUnitManager.toString());\n}\n\nexport const clearStorage = () => {\n\tconst theme = getThemeLocalStorage();\n\tconst locale = getLocale();\n\tlocalStorage.clear();\n\ttheme && setThemeLocalStorage(theme);\n\tlocale && setLocale(locale);\n}\n","export const capitalizeFirstLetter = (value: string | undefined) => {\n\tif (!value) {\n\t\treturn value;\n\t}\n\n\treturn value.charAt(0).toUpperCase() + value.slice(1);\n}\n\nexport const sortByString = (values: any[], propName: string) => {\n\treturn values.sort((a, b) => {\n\t\t// undefined is making some issues, so setting empty string instead\n\t\tconst aStr = (a[propName] || '').toUpperCase();\n\t\tconst bStr = (b[propName] || '').toUpperCase();\n\n\t\tif (aStr < bStr) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (aStr > bStr) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t});\n}\n\nexport const convertHtmlToText = (html: string | undefined) => {\n\tif (!html) {\n\t\treturn '';\n\t}\n\n\tconst parsedString = new DOMParser().parseFromString(html, 'text/html');\n\treturn parsedString.body.textContent || '';\n}\n\n// replaces {{number}} with specific args\nexport const replacePlaceholders = (inputString: string, args: string[] = []) => {\n\treturn inputString.replace(/{{(\\d+)}}/g, (_, index) => {\n\t\treturn args[parseInt(index, 10)] || '';\n\t})\n}\n","import { TokenTypeEnum } from \"services/tenantManagementService\";\nimport { getIsUserProjectManager, getUserInfo } from \"./storageUtils\";\n\nexport const isUserPmorSubstitutePmOrSiteAdmin = (role?: TokenTypeEnum): boolean => {\n\tconst userInfo = getUserInfo();\n\n\treturn role === TokenTypeEnum.ProjectManager\n\t\t|| role === TokenTypeEnum.ProjectManagerSubstitute\n\t\t|| role === TokenTypeEnum.SiteAdmin\n\t\t|| userInfo.roleId === TokenTypeEnum.SiteAdmin;\n}\n\nexport const isUserPmorSubstitutePm = (role?: TokenTypeEnum): boolean => {\n\treturn role === TokenTypeEnum.ProjectManager\n\t\t|| role === TokenTypeEnum.ProjectManagerSubstitute;\n}\n\nexport const isUserPMOrSiteAdmin = (): boolean => {\n\tconst userInfo = getUserInfo();\n\n\treturn userInfo.roleId === TokenTypeEnum.SiteAdmin || getIsUserProjectManager();\n}\n\nexport const isUserSiteAdmin = (): boolean => {\n\tconst userInfo = getUserInfo();\n\n\treturn userInfo.roleId === TokenTypeEnum.SiteAdmin;\n}\n","/**\r\n * Base functionality\r\n*/\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { IClone } from \"./utils/Clone\";\r\nimport { List, ListTemplate } from \"./utils/List\";\r\nimport { OrderedListTemplate, SortedListTemplate } from \"./utils/SortedList\";\r\nimport { Dictionary, DictionaryTemplate } from \"./utils/Dictionary\";\r\nimport { Disposer, IDisposer } from \"./utils/Disposer\";\r\nimport { EventDispatcher, AMEvent } from \"./utils/EventDispatcher\";\r\nimport { Adapter } from \"./utils/Adapter\";\r\nimport { Color, color } from \"./utils/Color\";\r\nimport { Percent, percent } from \"./utils/Percent\";\r\nimport { ITheme } from \"../themes/ITheme\";\r\nimport { Ordering } from \"./utils/Order\";\r\n\r\nimport { registry } from \"./Registry\";\r\nimport { cache } from \"./utils/Cache\";\r\n\r\nimport * as $array from \"./utils/Array\";\r\nimport * as $object from \"./utils/Object\";\r\nimport * as $type from \"./utils/Type\";\r\n\r\n//import * as $debug from \"./utils/Debug\";\r\n\r\n/**\r\n * Provides base functionality for all derivative objects, like generating ids,\r\n * handling cache, etc.\r\n */\r\nexport class BaseObject implements IClone, IDisposer {\r\n\r\n\t/**\r\n\t * A unique ID for this object.\r\n\t *\r\n\t * Generated on first access by `uid()` getter.\r\n\t */\r\n\tprotected _uid: $type.Optional;\r\n\r\n\t/**\r\n\t * Indicates if this object has already been deleted. Any\r\n\t * destruction/disposal code should take this into account when deciding\r\n\t * wheter to run potentially costly disposal operations if they already have\r\n\t * been run.\r\n\t */\r\n\tprotected _disposed: boolean = false;\r\n\r\n\t/**\r\n\t * List of IDisposer which will be disposed when the BaseObject is disposed.\r\n\t */\r\n\tprotected _disposers: Array = [];\r\n\r\n\t/**\r\n\t * User-defined id of the object.\r\n\t */\r\n\tprotected _id: $type.Optional;\r\n\r\n\t/**\r\n\t * Holds a universal mapping collection, so that elements and their children\r\n\t * can create and look up all kinds of relations between id and object.\r\n\t */\r\n\tprotected _map: $type.Optional>;\r\n\r\n\t/**\r\n\t * Holds mapping for objects referenced by id in JSON config that are not yet\r\n\t * available at processing time.\r\n\t */\r\n\tprotected _delayedMap: $type.Optional>;\r\n\r\n\t/**\r\n\t * The theme used by this object.\r\n\t */\r\n\tprotected _themes: $type.Optional;\r\n\r\n\t// @review\r\n\t/**\r\n\t * A list of objects that are clones of this object. An object needs to\r\n\t * maintain a list of its clones so that properties can be re-applied to\r\n\t * clones whenever property on the object they were cloned from changes.\r\n\t */\r\n\tprotected _clones: $type.Optional>;\r\n\r\n\r\n\t// @review\r\n\t/**\r\n\t * Reference to the original object this object was cloned from. We need to\r\n\t * keep this so we can disassociate it from source object when this object\r\n\t * is disposed.\r\n\t */\r\n\tpublic clonedFrom: $type.Optional;\r\n\r\n\t/**\r\n\t * A class name for the object.\r\n\t *\r\n\t * This property is used by deriving classes to identify which class it is.\r\n\t * We could derive the class name from the object itself, however method of\r\n\t * doing so is too costly, so we are relying on this property to quickly\r\n\t * access type of class.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _className: $type.Optional;\r\n\r\n\t/**\r\n\t * [cloneId description]\r\n\t *\r\n\t * @todo Needs description\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic cloneId: $type.Optional;\r\n\r\n\t/**\r\n\t * Holds processing error list.\r\n\t */\r\n\tprotected _processingErrors: string[];\r\n\r\n\t//protected _classes: { [index: string]: any } = {};\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * * Sets class name\r\n\t */\r\n\tconstructor() {\r\n\t\tthis.className = \"BaseObject\";\r\n\t\t//this.debug();\r\n\t}\r\n\r\n\tprotected debug(): void {\r\n\t\t//$debug.debug(this);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns object's internal unique ID.\r\n\t *\r\n\t * @return Unique ID\r\n\t */\r\n\tpublic get uid(): string {\r\n\t\tif (!this._uid) {\r\n\t\t\tthis._uid = registry.getUniqueId();\r\n\t\t\tregistry.map.setKey(this._uid, this);\r\n\t\t}\r\n\t\treturn this._uid;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the user-defined id of the element.\r\n\t *\r\n\t * @param value Id\r\n\t */\r\n\tpublic set id(value: $type.Optional) {\r\n\t\t//registry.map.setKey(value, this); // registry.map only stores by uid\r\n\t\tthis._id = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Id\r\n\t */\r\n\tpublic get id(): $type.Optional {\r\n\t\treturn this._id;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a universal collection for mapping ids with objects.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Map collection\r\n\t */\r\n\tpublic get map(): Dictionary {\r\n\t\tif (!this._map) {\r\n\t\t\tthis._map = new Dictionary();\r\n\t\t}\r\n\t\treturn this._map;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns mapping for objects referenced by id in JSON config that are not yet\r\n\t * available at processing time.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Map collection\r\n\t */\r\n\tpublic get delayedMap(): Dictionary {\r\n\t\tif (!this._delayedMap) {\r\n\t\t\tthis._delayedMap = new Dictionary();\r\n\t\t}\r\n\t\treturn this._delayedMap;\r\n\t}\r\n\r\n\t/**\r\n\t * Logs an id and property of the target element that is not yet available\r\n\t * for later assignment.\r\n\t * \r\n\t * @ignore\r\n\t * @param property Property to set\r\n\t * @param id ID of the target element\r\n\t */\r\n\tpublic addDelayedMap(property: string, id: string): void {\r\n\t\tconst map = this.delayedMap;\r\n\t\tif (!map.hasKey(id)) {\r\n\t\t\tmap.setKey(id, []);\r\n\t\t}\r\n\t\tconst list = map.getKey(id);\r\n\t\tlist.push({\r\n\t\t\tproperty: property,\r\n\t\t\ttarget: this\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Processes delayed JSON config items.\r\n\t * \r\n\t * @ignore\r\n\t */\r\n\tpublic processDelayedMap(): void {\r\n\t\tthis.delayedMap.each((id, list) => {\r\n\t\t\tif (this.map.hasKey(id)) {\r\n\t\t\t\tconst target = this.map.getKey(id);\r\n\t\t\t\t$array.each(list, (item: any) => {\r\n\t\t\t\t\titem.target[item.property] = target;\r\n\t\t\t\t});\r\n\t\t\t\tthis.delayedMap.removeKey(id);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Applies properties from all assigned themes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic applyTheme(): void {\r\n\t\t// TODO is this needed ?\r\n\t\tif (registry) {\r\n\t\t\tlet themes = this.getCurrentThemes();\r\n\r\n\t\t\t// TODO is this needed ?\r\n\t\t\tif (themes) {\r\n\t\t\t\t$array.each(themes, (theme, index) => {\r\n\t\t\t\t\ttheme(this);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A list of themes to be used for this element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value An array of themes\r\n\t */\r\n\tpublic set themes(value: $type.Optional) {\r\n\t\tthis._themes = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return An array of themes\r\n\t */\r\n\tpublic get themes(): $type.Optional {\r\n\t\treturn this._themes;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a list of themes that should be applied to this element. It could\r\n\t * either be a list of themes set explicitly on this element, or system-wide.\r\n\t *\r\n\t * @return List of themes\r\n\t */\r\n\tpublic getCurrentThemes(): ITheme[] {\r\n\t\treturn this.themes || registry.themes;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns if this object has been already been disposed.\r\n\t *\r\n\t * @return Is disposed?\r\n\t */\r\n\tpublic isDisposed(): boolean {\r\n\t\treturn this._disposed;\r\n\t}\r\n\r\n\t/**\r\n\t * Destroys this object and all related data.\r\n\t */\r\n\tpublic dispose(): void {\r\n\t\tif (!this._disposed) {\r\n\t\t\tthis._disposed = true;\r\n\r\n\t\t\tconst a = this._disposers;\r\n\r\n\t\t\tthis._disposers = null;\r\n\r\n\t\t\twhile (a.length !== 0) {\r\n\t\t\t\tconst disposer = a.shift();\r\n\t\t\t\tdisposer.dispose();\r\n\t\t\t}\r\n\r\n\t\t\t// Clear cache\r\n\t\t\tthis.clearCache();\r\n\r\n\t\t\t// remove from clones list\r\n\t\t\tif (this.clonedFrom) {\r\n\t\t\t\tthis.clonedFrom.clones.removeValue(this);\r\n\t\t\t}\r\n\r\n\t\t\tconst uid = this._uid;\r\n\r\n\t\t\tif (uid != null) {\r\n\t\t\t\tregistry.map.removeKey(uid);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Adds an IDisposer, which will be disposed when this object is disposed.\r\n\t *\r\n\t * @param target Object to dispose\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic addDisposer(target: IDisposer): void {\r\n\t\tthis._disposers.push(target);\r\n\t}\r\n\r\n\t/**\r\n\t * Disposes disposable object and removes it from `_disposers`.\r\n\t *\r\n\t * @param target Object to dispose\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic removeDispose(target: IDisposer): void {\r\n\t\t//if(target){\r\n\t\tif (!this._disposed) {\r\n\t\t\tlet index = $array.indexOf(this._disposers, target);\r\n\t\t\tif (index > -1) {\r\n\t\t\t\tthis._disposers.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttarget.dispose();\r\n\t\t//}\r\n\t}\r\n\r\n\t/**\r\n\t * Makes a copy of this object and returns the clone. Try to avoid cloning complex objects like chart, create new instances if you need them.\r\n\t *\r\n\t * @param cloneId An id to use for clone (if not set a unique id will be generated)\r\n\t * @returns Clone\r\n\t */\r\n\tpublic clone(cloneId?: string): this {\r\n\t\tif (!cloneId) {\r\n\t\t\tcloneId = \"clone-\" + registry.getUniqueId();\r\n\t\t}\r\n\r\n\t\tlet newObject: this = new (<{ new(): A; }>this.constructor)();\r\n\t\tnewObject.cloneId = cloneId;\r\n\r\n\t\tnewObject.copyFrom(this);\r\n\r\n\t\t// add to clones list\r\n\t\t// this.clones.push(newObject); // moved this to copyFrom\r\n\r\n\r\n\t\treturn newObject;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a collection of object's clones.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Clones\r\n\t */\r\n\tpublic get clones(): List {\r\n\t\tif (!this._clones) {\r\n\t\t\tthis._clones = new List();\r\n\t\t}\r\n\t\treturn this._clones;\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all properties and related data from different element.\r\n\t *\r\n\t * @param object Source element\r\n\t */\r\n\tpublic copyFrom(object: this): void {\r\n\t\tobject.clones.push(this); // do not moveValue, as it is expensive! even if there will be several items in clones list, it's not that bad.\r\n\t\tthis.clonedFrom = object;\r\n\t}\r\n\r\n\t/**\r\n\t * Element's class name. (a class that was used to instantiate the element)\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Class name\r\n\t */\r\n\tpublic set className(value: $type.Optional) {\r\n\t\tthis._className = value;\r\n\t\t/*if (registry) {\r\n\t\t\tregistry.registeredClasses[value] = typeof this;\r\n\t\t}*/\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Class name\r\n\t */\r\n\tpublic get className(): $type.Optional {\r\n\t\treturn this._className;\r\n\t}\r\n\r\n\t/**\r\n\t * Caches value in object's cache.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param key Key\r\n\t * @param value Value\r\n\t * @param ttl TTL in seconds\r\n\t */\r\n\tpublic setCache(key: string, value: any, ttl?: number): void {\r\n\t\tcache.set(this.uid, key, value, ttl);\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieves cached value.\r\n\t *\r\n\t * If optional second padarameter is specified, it will return that value\r\n\t * if cache is not available or is expired.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param key Key\r\n\t * @param value Value to return if cache is not available\r\n\t * @return Value\r\n\t */\r\n\tpublic getCache(key: string, value: any = undefined): any {\r\n\t\treturn cache.get(this.uid, key, value);\r\n\t}\r\n\r\n\t/**\r\n\t * Clears object's local cache.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic clearCache(): void {\r\n\t\tcache.clear(this.uid);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates [[Disposer]] for `setTimeout` function call. This ensures that all\r\n\t * timeouts created by the object will be cleared when object itself is\r\n\t * disposed.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param fn Callback function\r\n\t * @param delay Timeout (ms)\r\n\t * @return Disposer for timeout\r\n\t */\r\n\tpublic setTimeout(fn: () => void, delay: number): IDisposer {\r\n\t\tconst id = setTimeout(() => {\r\n\t\t\tthis.removeDispose(disposer);\r\n\t\t\tfn();\r\n\t\t}, delay);\r\n\r\n\t\tconst disposer = new Disposer(() => {\r\n\t\t\tclearTimeout(id);\r\n\t\t});\r\n\r\n\t\tthis._disposers.push(disposer);\r\n\t\treturn disposer;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates [[Disposer]] for `setInterval` function call. This ensures that all\r\n\t * timeouts created by the object will be cleared when object itself is\r\n\t * disposed.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param fn Callback function\r\n\t * @param delay Timeout (ms)\r\n\t * @return Disposer for timeout\r\n\t */\r\n\tpublic setInterval(fn: () => void, delay: number): IDisposer {\r\n\t\tconst id = setInterval(() => {\r\n\t\t\tthis.removeDispose(disposer);\r\n\t\t\tfn();\r\n\t\t}, delay);\r\n\r\n\t\tconst disposer = new Disposer(() => {\r\n\t\t\tclearTimeout(id);\r\n\t\t});\r\n\r\n\t\tthis._disposers.push(disposer);\r\n\t\treturn disposer;\r\n\t}\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * JSON-BASED CONFIG PROCESSING\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Use this property to set JSON-based config. When set, triggers processing\r\n\t * routine, which will go through all properties, and try to apply values,\r\n\t * create instances, etc.\r\n\t *\r\n\t * Use this with caution, as it is a time-consuming process. It's used for\r\n\t * initialchart setup only, not routine operations.\r\n\t *\r\n\t * @param json JSON config\r\n\t */\r\n\tpublic set config(config: object) {\r\n\t\ttry {\r\n\t\t\tthis.processConfig(config);\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\t/*if (this instanceof Sprite) {\r\n\t\t\t\tthis.raiseCriticalError(e);\r\n\t\t\t}*/\r\n\t\t\t(this).raiseCriticalError(e);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Processes the JSON config.\r\n\t *\r\n\t * @param json JSON config\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected processConfig(config?: object): void {\r\n\r\n\t\tif (!config) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Get target\r\n\t\tlet target = this;\r\n\r\n\t\t// Iterate through all of the items\r\n\t\t$object.eachOrdered(config, (configKey, value) => {\r\n\t\t\tlet configValue: any = value;\r\n\r\n\t\t\t// Is this a callback?\r\n\t\t\tif (configKey == \"callback\" && typeof value == \"function\") {\r\n\t\t\t\t(value).call(target);\r\n\t\t\t}\r\n\r\n\t\t\t// Check if there's a property in target\r\n\t\t\tif (this.hasProperty(configKey)) {\r\n\r\n\t\t\t\tlet item: any;\r\n\r\n\t\t\t\t// Do we have instructions to create an object?\r\n\t\t\t\t// We create a new object if \"type\" key is set, but only if the\r\n\t\t\t\t// target object is of different type.\r\n\t\t\t\tif (\r\n\t\t\t\t\t$type.isObject(configValue)\r\n\t\t\t\t\t&& $type.hasValue((configValue)[\"type\"])\r\n\t\t\t\t\t&& (\r\n\t\t\t\t\t\t!$type.isObject(target[configKey])\r\n\t\t\t\t\t\t|| !$type.hasValue(target[configKey].className)\r\n\t\t\t\t\t\t|| (configValue)[\"forceCreate\"]\r\n\t\t\t\t\t\t|| target[configKey].className != (configValue)[\"type\"]\r\n\t\t\t\t\t)\r\n\t\t\t\t\t&& !this.asIs(configKey)\r\n\t\t\t\t) {\r\n\t\t\t\t\titem = this.createClassInstance((configValue)[\"type\"]);\r\n\r\n\t\t\t\t\t// Create new instance\r\n\t\t\t\t\tif (item) {\r\n\t\t\t\t\t\ttarget[configKey] = item;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\titem = target[configKey];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// Get item from the object\r\n\t\t\t\t\titem = target[configKey];\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/**\r\n\t\t\t\t * It is...\r\n\t\t\t\t * --------------------------------------------------------------------\r\n\t\t\t\t */\r\n\r\n\t\t\t\tif (item instanceof Adapter) {\r\n\r\n\t\t\t\t\t// ... an Adapter, try to add handlers to it\r\n\t\t\t\t\t// ------------------------------------------------------------------\r\n\t\t\t\t\tthis.processAdapters(item, configValue);\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse if (item instanceof EventDispatcher) {\r\n\r\n\t\t\t\t\t// ... an EventDispatcher, try to add handlers to it\r\n\t\t\t\t\t// ------------------------------------------------------------------\r\n\t\t\t\t\tthis.processEvents(item, configValue);\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse if (configKey == \"locale\" && $type.isString(configValue)) {\r\n\r\n\t\t\t\t\t// ... a locale specified as string, e.g. \"fr_FR\"\r\n\t\t\t\t\t// ------------------------------------------------------------------\r\n\t\t\t\t\tif ((document)[\"am4lang_\" + configValue]) {\r\n\t\t\t\t\t\ttarget[configKey] = (document)[\"am4lang_\" + configValue];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse if (configKey == \"parent\" && $type.isString(configValue)) {\r\n\r\n\t\t\t\t\t// ... a parent referred via its it\r\n\t\t\t\t\t// ------------------------------------------------------------------\r\n\t\t\t\t\tconst parent = this.map.getKey(configValue);\r\n\t\t\t\t\tif (parent) {\r\n\t\t\t\t\t\ttarget[configKey] = parent;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthrow Error(\"Non-existing ID in config: \\\"\" + configValue + \"\\\".\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse if (this.asIs(configKey)) {\r\n\r\n\t\t\t\t\t// ... a special field, just set it to new value\r\n\t\t\t\t\t// ------------------------------------------------------------------\r\n\t\t\t\t\t// (no need to add each indvidual item)\r\n\t\t\t\t\ttarget[configKey] = configValue;\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse if (this.asFunction(configKey) && $type.isString(configValue)) {\r\n\r\n\t\t\t\t\t// ... a field indicating function name to look for in registry\r\n\t\t\t\t\t// ------------------------------------------------------------------\r\n\t\t\t\t\tif ($type.hasValue(registry.registeredClasses[configValue])) {\r\n\t\t\t\t\t\ttarget[configKey] = registry.registeredClasses[configValue];\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthrow Error(\"Invalid easing function: \" + configValue);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse if (configValue instanceof BaseObject) {\r\n\r\n\t\t\t\t\t// ... a BaseObject object, we just going to use it as it is\r\n\t\t\t\t\t// ------------------------------------------------------------------\r\n\t\t\t\t\ttarget[configKey] = configValue;\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse if (item instanceof BaseObject) {\r\n\r\n\t\t\t\t\t// ... another child BaseObject\r\n\t\t\t\t\t// ------------------------------------------------------------------\r\n\t\t\t\t\t// Let's just pass in config part in and let itself deal with it\r\n\t\t\t\t\titem.config = configValue;\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse if (item instanceof ListTemplate || item instanceof OrderedListTemplate || item instanceof SortedListTemplate) {\r\n\r\n\t\t\t\t\t// ... a list with template\r\n\t\t\t\t\t// ------------------------------------------------------------------\r\n\r\n\t\t\t\t\t// Let's see what we can do with it\r\n\t\t\t\t\tif ($type.isArray(configValue)) {\r\n\r\n\t\t\t\t\t\t// It's an array.\r\n\t\t\t\t\t\t// Create a list item for entry, or try to apply properties to an\r\n\t\t\t\t\t\t// existing entry if possible and it is present.\r\n\t\t\t\t\t\tif (item instanceof ListTemplate) {\r\n\t\t\t\t\t\t\tthis.processListTemplate(configValue, item);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tthis.processOrderedTemplate(configValue, item);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if ($type.isObject(configValue)) {\r\n\t\t\t\t\t\t// It's a single oject.\r\n\t\t\t\t\t\t// Treat it as a template.\r\n\t\t\t\t\t\tif (configValue instanceof BaseObject) {\r\n\t\t\t\t\t\t\t// Item is already a BaseObject, no need to process it further\r\n\t\t\t\t\t\t\titem.template = configValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\r\n\t\t\t\t\t\t\t// Now let's find out if the whole object if a template, or we\r\n\t\t\t\t\t\t\t// need to get it from `template` key\r\n\t\t\t\t\t\t\tlet templateValue;\r\n\t\t\t\t\t\t\tif ($type.hasValue((configValue).template)) {\r\n\t\t\t\t\t\t\t\ttemplateValue = (configValue).template;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\ttemplateValue = configValue;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (item.template instanceof BaseObject) {\r\n\t\t\t\t\t\t\t\t// Template is a BaseObject so we will just let its config\r\n\t\t\t\t\t\t\t\t// deal with the configuration\r\n\t\t\t\t\t\t\t\t(item.template).config = templateValue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\r\n\t\t\t\t\t\t\t\t$object.each(templateValue, (entryKey, entryValue) => {\r\n\r\n\t\t\t\t\t\t\t\t\tlet listItem = (item.template)[entryKey];\r\n\r\n\t\t\t\t\t\t\t\t\tif (listItem instanceof Adapter) {\r\n\t\t\t\t\t\t\t\t\t\tthis.processAdapters(listItem, entryValue);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse if (listItem instanceof EventDispatcher) {\r\n\t\t\t\t\t\t\t\t\t\tthis.processEvents(listItem, entryValue);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse if (listItem instanceof DictionaryTemplate) {\r\n\t\t\t\t\t\t\t\t\t\tthis.processDictionaryTemplate(listItem, entryValue);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse if (item.template[entryKey] instanceof BaseObject) {\r\n\t\t\t\t\t\t\t\t\t\t// Template is a BaseObject. Let it deal with its own config.\r\n\t\t\t\t\t\t\t\t\t\t(item.template[entryKey]).config = entryValue;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse if ($type.isObject(entryValue) && $type.hasValue((entryValue)[\"type\"])) {\r\n\t\t\t\t\t\t\t\t\t\tlistItem = this.createClassInstance((entryValue)[\"type\"])\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (listItem) {\r\n\t\t\t\t\t\t\t\t\t\t\tif (listItem instanceof BaseObject) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tlistItem.config = entryValue;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\titem.template[entryKey] = listItem;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t\t\titem.template[entryKey] = entryValue;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse if (listItem instanceof List) {\r\n\t\t\t\t\t\t\t\t\t\t// It's List, process it\r\n\t\t\t\t\t\t\t\t\t\tthis.processList(entryValue, listItem);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t\t// Aything else. Just assing and be done with it.\r\n\t\t\t\t\t\t\t\t\t\titem.template[entryKey] = this.maybeColorOrPercent(entryValue);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t// Check maybe there are `values` to insert\r\n\t\t\t\t\t\t\tif ($type.hasValue((configValue).values)) {\r\n\t\t\t\t\t\t\t\tif (item instanceof ListTemplate) {\r\n\t\t\t\t\t\t\t\t\tthis.processListTemplate((configValue).values, item);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\tthis.processOrderedTemplate((configValue).values, item);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\r\n\t\t\t\t\t\t// Something else?\r\n\t\t\t\t\t\t// Not sure what to do with it on a list - ignore\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\telse if (item instanceof List) {\r\n\r\n\t\t\t\t\t// ... a list\r\n\t\t\t\t\t// ------------------------------------------------------------------\r\n\r\n\t\t\t\t\tif (configKey == \"children\") {\r\n\t\t\t\t\t\tthis.processList(configValue, item, this);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.processList(configValue, item);\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\telse if (item instanceof DictionaryTemplate) {\r\n\r\n\t\t\t\t\t// ... a dictionary with template\r\n\t\t\t\t\t// ------------------------------------------------------------------\r\n\r\n\t\t\t\t\tthis.processDictionaryTemplate(item, configValue);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\telse if (item instanceof Dictionary) {\r\n\r\n\t\t\t\t\t// ... a dictionary\r\n\t\t\t\t\t// ------------------------------------------------------------------\r\n\r\n\t\t\t\t\tthis.processDictionary(item, configValue);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\telse if (item instanceof Color || item instanceof Percent) {\r\n\r\n\t\t\t\t\t// ... it's a Color or Percent\r\n\t\t\t\t\t// ------------------------------------------------------------------\r\n\t\t\t\t\ttarget[configKey] = this.maybeColorOrPercent(configValue);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\telse if ($type.isObject(item) && $type.isObject(configValue)) {\r\n\r\n\t\t\t\t\t// ... a regular object\r\n\t\t\t\t\t// ------------------------------------------------------------------\r\n\r\n\t\t\t\t\t$object.copyAllProperties(configValue, item);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\telse {\r\n\r\n\t\t\t\t\t// ... something else - probably a simple property or object\r\n\t\t\t\t\t// ------------------------------------------------------------------\r\n\r\n\t\t\t\t\t// Maybe convert to `Percent` or `Color`?\r\n\t\t\t\t\tconfigValue = this.maybeColorOrPercent(configValue);\r\n\r\n\t\t\t\t\t// Assign\r\n\t\t\t\t\ttarget[configKey] = configValue;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\telse if (!this.isReserved(configKey)) {\r\n\r\n\t\t\t\t// Doesn't have property set. But we're going to assume JSON config\r\n\t\t\t\t// creator knows what he/she is doing and set it anyway.\r\n\t\t\t\ttarget[configKey] = configValue;\r\n\r\n\t\t\t}\r\n\t\t}, this.configOrder);\r\n\r\n\t\t// Any errors?\r\n\t\tif (this.processingErrors.length) {\r\n\t\t\tlet errors = this.processingErrors.join(\"\\n\");\r\n\t\t\tthis._processingErrors = [];\r\n\t\t\tthrow Error(errors);\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Tries to detect if value is color or percent and converts to proper object\r\n\t * if necessary.\r\n\t *\r\n\t * Returns the same source value if no color/percent detected\r\n\t *\r\n\t * @param value Source value\r\n\t * @return Converted value\r\n\t */\r\n\tprotected maybeColorOrPercent(value: any): any {\r\n\t\tif ($type.isString(value)) {\r\n\t\t\tif (value.match(/^[\\-]?[0-9.]+\\%$/)) {\r\n\t\t\t\treturn percent($type.toNumber(value));\r\n\t\t\t}\r\n\t\t\telse if (value.match(/^\\#[0-9abcdef]{3,}$/i)) {\r\n\t\t\t\treturn color(value);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n\tprotected processAdapters(item: Adapter, config: any): void {\r\n\t\tif ($type.isArray(config)) {\r\n\t\t\t$array.each(config, (entry: { key: string, callback: any, priority?: number }, index) => {\r\n\t\t\t\titem.add(entry.key, entry.callback, entry.priority || 0, this);\r\n\t\t\t});\r\n\t\t}\r\n\t\telse if ($type.isObject(config)) {\r\n\t\t\t$object.each(config, (key, entry) => {\r\n\t\t\t\tif (!item.has(key, entry)) {\r\n\t\t\t\t\titem.add(key, entry);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected processEvents(item: EventDispatcher, config: any): void {\r\n\t\tif ($type.isObject(config)) {\r\n\t\t\t$object.each(config, (key, entry) => {\r\n\t\t\t\tif (!item.has(key, entry)) {\r\n\t\t\t\t\titem.on(key, entry);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\telse if ($type.isArray(config)) {\r\n\t\t\t$array.each(config, (entry: { type: string, callback: any }, index) => {\r\n\t\t\t\titem.on(entry.type, entry.callback, this);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON config for a [[DictionaryTemplate]] item.\r\n\t *\r\n\t * @todo Description\r\n\t * @param item Item\r\n\t * @param config Config\r\n\t */\r\n\tprotected processDictionaryTemplate(item: DictionaryTemplate, config: any): void {\r\n\r\n\t\t// We can only process object\r\n\t\t// Not sure what to do with other types - ignore\r\n\t\tif ($type.isObject(config)) {\r\n\r\n\t\t\t// Create an entry for each item, or override properties for\r\n\t\t\t// existing one.\r\n\t\t\t$object.each(config, (entryKey, entryValue) => {\r\n\t\t\t\tlet listItem;\r\n\r\n\t\t\t\t// Get existing one, or create a new one\r\n\t\t\t\tif (entryKey == \"template\") {\r\n\t\t\t\t\tlistItem = item.template;\r\n\t\t\t\t}\r\n\t\t\t\telse if (item.hasKey(entryKey)) {\r\n\t\t\t\t\tlistItem = item.getKey(entryKey);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tlistItem = item.create(entryKey);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Set data\r\n\t\t\t\tif (listItem instanceof BaseObject) {\r\n\t\t\t\t\tlistItem.config = entryValue;\r\n\t\t\t\t}\r\n\t\t\t\telse if ($type.isObject(listItem) && $type.isObject(entryValue)) {\r\n\t\t\t\t\t$object.copyAllProperties(entryValue, listItem);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tlistItem.setKey(entryKey, entryValue);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON config for a [[Dictionary]] item.\r\n\t *\r\n\t * @todo Description\r\n\t * @param item Item\r\n\t * @param config Config\r\n\t */\r\n\tprotected processDictionary(item: Dictionary, config: any): void {\r\n\r\n\t\t// We can only process object\r\n\t\t// Not sure what to do with other types - ignore\r\n\t\tif ($type.isObject(config)) {\r\n\r\n\t\t\t// Create an entry for each item, or override properties for\r\n\t\t\t// existing one.\r\n\t\t\t// @todo support for non-basic types\r\n\t\t\t$object.each(config, (entryKey, entryValue) => {\r\n\t\t\t\titem.setKey(entryKey, entryValue);\r\n\t\t\t});\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Processes [[ListTemplate]].\r\n\t *\r\n\t * @param configValue Config value\r\n\t * @param item Item\r\n\t */\r\n\tprotected processListTemplate(configValue: any, item: ListTemplate): void {\r\n\r\n\t\t$array.each(configValue, (entry, index) => {\r\n\t\t\tlet type = this.getConfigEntryType(entry);\r\n\t\t\tlet listItem;\r\n\t\t\tif (item.hasIndex(index) && !(entry)[\"forceCreate\"]) {\r\n\t\t\t\tlistItem = item.getIndex(index);\r\n\t\t\t}\r\n\t\t\telse if (entry instanceof BaseObject) {\r\n\t\t\t\t// Item is already a BaseObject, no need to process it further\r\n\t\t\t\titem.push(entry);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\telse if (type) {\r\n\t\t\t\tlistItem = item.create(type);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlistItem = item.create();\r\n\t\t\t}\r\n\r\n\t\t\tif (entry === listItem) {\r\n\t\t\t\t// It's already the same item, do nothing\r\n\t\t\t}\r\n\t\t\telse {\r\n\r\n\t\t\t\tif ($type.isObject(entry)) {\r\n\r\n\t\t\t\t\t// If the list item is BaseObject, we just need to let it\r\n\t\t\t\t\t// deal if its own config\r\n\t\t\t\t\tif (listItem instanceof BaseObject) {\r\n\t\t\t\t\t\t(listItem).config = entry;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if ($type.isObject(listItem) && $type.isObject(entry)) {\r\n\t\t\t\t\t\t$object.copyAllProperties(entry, listItem);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\titem.setIndex(item.indexOf(listItem), entry);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Truncate the list if it contains less items than the config\r\n\t\t// array\r\n\t\twhile (configValue.length > item.length) {\r\n\t\t\titem.pop();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Processes [[OrdererListTemplate]] or [[SortedListTemplate]].\r\n\t *\r\n\t * @param configValue Config value\r\n\t * @param item Item\r\n\t */\r\n\tprotected processOrderedTemplate(configValue: any, item: OrderedListTemplate | SortedListTemplate): void {\r\n\r\n\t\t$array.each(configValue, (entry, index) => {\r\n\t\t\tlet type = this.getConfigEntryType(entry);\r\n\t\t\tlet listItem;\r\n\t\t\tif (type) {\r\n\t\t\t\tlistItem = item.create(type);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlistItem = item.create();\r\n\t\t\t}\r\n\r\n\t\t\tif ($type.isObject(entry)) {\r\n\r\n\t\t\t\t// If the list item is BaseObject, we just need to let it\r\n\t\t\t\t// deal if its own config\r\n\t\t\t\tif (listItem instanceof BaseObject) {\r\n\t\t\t\t\t(listItem).config = entry;\r\n\t\t\t\t}\r\n\t\t\t\telse if ($type.isObject(listItem) && $type.isObject(entry)) {\r\n\t\t\t\t\t$object.copyAllProperties(entry, listItem);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\titem.insert(entry);\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Processes [[List]].\r\n\t *\r\n\t * @param configValue Config value\r\n\t * @param item Item\r\n\t */\r\n\tprotected processList(configValue: any, item: List, parent?: any): void {\r\n\r\n\t\t// Convert to array if necessary\r\n\t\tif (!$type.isArray(configValue)) {\r\n\t\t\tconfigValue = [configValue];\r\n\t\t}\r\n\r\n\t\t// It's an array\r\n\t\t// Create a list item for entry\r\n\t\tconst itemCount = item.length;\r\n\t\t$array.each(configValue, (entry, index) => {\r\n\r\n\t\t\tif ($type.isObject(entry)) {\r\n\r\n\r\n\t\t\t\t// An object.\r\n\t\t\t\t//\r\n\t\t\t\t// Let's see if we can instantiate a class out of it, or we need\r\n\t\t\t\t// to push it into list as it is.\r\n\t\t\t\t//\r\n\t\t\t\t// If there are items already at the specified index in the list,\r\n\t\t\t\t// apply properties rather than create a new one.\r\n\r\n\t\t\t\tlet listItem;\r\n\t\t\t\tif ((index < itemCount) && !(entry)[\"forceCreate\"]) {\r\n\t\t\t\t\tlistItem = item.getIndex(index);\r\n\t\t\t\t}\r\n\t\t\t\telse if (entry instanceof BaseObject) {\r\n\t\t\t\t\t// Item is already a BaseObject, no need to process it further\r\n\t\t\t\t\titem.push(entry);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tlistItem = this.createEntryInstance(entry);\r\n\t\t\t\t\tif (parent) {\r\n\t\t\t\t\t\tlistItem.parent = parent;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\titem.push(listItem);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// If the list item is BaseObject, we just need to let it\r\n\t\t\t\t// deal if its own config\r\n\t\t\t\tif (listItem instanceof BaseObject) {\r\n\t\t\t\t\t(listItem).config = entry;\r\n\t\t\t\t}\r\n\t\t\t\telse if ($type.isObject(listItem) && $type.isObject(entry)) {\r\n\t\t\t\t\t$object.copyAllProperties(entry, listItem);\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\telse {\r\n\r\n\t\t\t\t// Basic value.\r\n\t\t\t\t// Just push it into list, or override existing value\r\n\t\t\t\tif (item.hasIndex(index)) {\r\n\t\t\t\t\titem.setIndex(index, entry);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\titem.push(entry);\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\t// Truncate the list if it contains less items than the config\r\n\t\t// array\r\n\t\twhile (configValue.length > item.length) {\r\n\t\t\titem.pop();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * This function is used to sort element's JSON config properties, so that\r\n\t * some properties that absolutely need to be processed last, can be put at\r\n\t * the end.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param a Element 1\r\n\t * @param b Element 2\r\n\t * @return Sorting number\r\n\t */\r\n\tprotected configOrder(a: string, b: string): Ordering {\r\n\t\tif (a == b) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// Language must come first, so it's all set up when the rest of the\r\n\t\t// elements are being instantiated\r\n\t\telse if (a == \"language\") {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\telse if (b == \"language\") {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\r\n\t\telse {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if field should be just assigned as is, without any checking when\r\n\t * processing JSON config.\r\n\t *\r\n\t * Extending functions can override this function to do their own checks.\r\n\t *\r\n\t * @param field Field name\r\n\t * @return Assign as is?\r\n\t */\r\n\tprotected asIs(field: string): boolean {\r\n\t\treturn $array.indexOf([\"locale\"], field) != -1;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if field needs to be converted to function, if it is specified\r\n\t * as string.\r\n\t *\r\n\t * @param field Field name\r\n\t * @return Assign as function?\r\n\t */\r\n\tprotected asFunction(field: string): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a relevant class instance if such class definition exists.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param className Class name\r\n\t * @return Instance\r\n\t */\r\n\tprotected createClassInstance(className: string): Object {\r\n\t\tif ($type.hasValue(registry.registeredClasses[className])) {\r\n\t\t\treturn new registry.registeredClasses[className]();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthrow Error(\"Invalid type: \\\"\" + className + \"\\\".\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a class instance for a config entry using it's type. (as set in\r\n\t * `type` property)\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config part\r\n\t * @return Instance\r\n\t */\r\n\tprotected createEntryInstance(config: any): any {\r\n\t\tlet res: Object;\r\n\t\tif ($type.hasValue(config[\"type\"])) {\r\n\t\t\tres = this.createClassInstance(config[\"type\"]);\r\n\t\t}\r\n\t\tif (!res) {\r\n\t\t\treturn config;\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines config object type.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config part\r\n\t * @return Type\r\n\t */\r\n\tprotected getConfigEntryType(config: any): any {\r\n\t\tif ($type.hasValue(config[\"type\"])) {\r\n\t\t\tif ($type.hasValue(registry.registeredClasses[config[\"type\"]])) {\r\n\t\t\t\treturn registry.registeredClasses[config[\"type\"]];\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthrow Error(\"Invalid type: \\\"\" + config[\"type\"] + \"\\\".\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if this element has a property.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param prop Property name\r\n\t * @return Has property?\r\n\t */\r\n\tprotected hasProperty(prop: string): boolean {\r\n\t\treturn prop in this ? true : false;\r\n\t}\r\n\r\n\t/**\r\n\t * Checkes whether JSON key is a reserved keyword.\r\n\t *\r\n\t * @param key Key\r\n\t * @return Reserved\r\n\t */\r\n\tprotected isReserved(key: string): boolean {\r\n\t\treturn [\"type\", \"forceCreate\"].indexOf(key) !== -1;\r\n\t}\r\n\r\n\t/**\r\n\t * A list of errors that happened during JSON processing.\r\n\t *\r\n\t * @return Errors\r\n\t */\r\n\tprotected get processingErrors(): string[] {\r\n\t\tif (!this._processingErrors) {\r\n\t\t\tthis._processingErrors = [];\r\n\t\t}\r\n\t\treturn this._processingErrors;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[BaseObjectEvents]].\r\n */\r\nexport interface IBaseObjectEvents { };\r\n\r\n/**\r\n * A version of [[BaseObject]] with events properties and methods.\r\n * Classes that use [[EventDispatcher]] should extend this instead of\r\n * [[BaseObject]] directly.\r\n */\r\nexport class BaseObjectEvents extends BaseObject {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"BaseObjectEvents\";\r\n\t}\r\n\r\n\tpublic _events!: IBaseObjectEvents;\r\n\r\n\t/**\r\n\t * An [[EventDispatcher]] instance\r\n\t * @ignore\r\n\t */\r\n\tpublic _eventDispatcher: EventDispatcher>;\r\n\r\n\t/**\r\n\t * An [[EventDispatcher]] instance\r\n\t */\r\n\tpublic get events(): EventDispatcher> {\r\n\t\tif (!this._eventDispatcher) {\r\n\t\t\tthis._eventDispatcher = new EventDispatcher();\r\n\t\t\tthis._disposers.push(this._eventDispatcher);\r\n\t\t}\r\n\t\treturn this._eventDispatcher;\r\n\t}\r\n\r\n\t//public set events(value:EventDispatcher>){\r\n\t//\tthis._eventDispatcher = value;\r\n\t//}\r\n\r\n\t/**\r\n\t * Dispatches an event using own event dispatcher. Will automatically\r\n\t * populate event data object with event type and target (this element).\r\n\t * It also checks if there are any handlers registered for this sepecific\r\n\t * event.\r\n\t *\r\n\t * @param eventType Event type (name)\r\n\t * @param data Data to pass into event handler(s)\r\n\t */\r\n\tpublic dispatch(eventType: Key, data?: any): void {\r\n\t\t// @todo Implement proper type check\r\n\t\tif (this._eventDispatcher) {\r\n\t\t\tif (this.events.isEnabled(eventType)) {\r\n\t\t\t\tif (data) {\r\n\t\t\t\t\tdata.type = eventType;\r\n\t\t\t\t\tdata.target = data.target || this;\r\n\t\t\t\t\t(this.events).dispatch(eventType, {\r\n\t\t\t\t\t\ttype: eventType,\r\n\t\t\t\t\t\ttarget: this\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t(this.events).dispatch(eventType, {\r\n\t\t\t\t\t\ttype: eventType,\r\n\t\t\t\t\t\ttarget: this\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Works like `dispatch`, except event is triggered immediately, without\r\n\t * waiting for the next frame cycle.\r\n\t *\r\n\t * @param eventType Event type (name)\r\n\t * @param data Data to pass into event handler(s)\r\n\t */\r\n\tpublic dispatchImmediately(eventType: Key, data?: any): void {\r\n\t\t// @todo Implement proper type check\r\n\t\tif (this._eventDispatcher) {\r\n\t\t\tif (this.events.isEnabled(eventType)) {\r\n\t\t\t\tif (data) {\r\n\t\t\t\t\tdata.type = eventType;\r\n\t\t\t\t\tdata.target = data.target || this;\r\n\t\t\t\t\t(this.events).dispatchImmediately(eventType, data);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t(this.events).dispatchImmediately(eventType, {\r\n\t\t\t\t\t\ttype: eventType,\r\n\t\t\t\t\t\ttarget: this\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all parameters from another [[Sprite]].\r\n\t *\r\n\t * @param source Source object\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\tsuper.copyFrom(source);\r\n\t\tif (source._eventDispatcher) {\r\n\t\t\tthis.events.copyFrom(source._eventDispatcher);\r\n\t\t}\r\n\t}\r\n\r\n}\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container, IContainerProperties, IContainerAdapters, IContainerEvents } from \"./Container\";\r\nimport { List, IListEvents, ListDisposer } from \"./utils/List\";\r\nimport { OrderedListTemplate, ISortedListEvents } from \"./utils/SortedList\";\r\nimport { Animation } from \"./utils/Animation\";\r\nimport { Dictionary } from \"./utils/Dictionary\";\r\nimport { IDisposer, Disposer, MultiDisposer } from \"./utils/Disposer\";\r\nimport { Export, IExportAdapters } from \"./export/Export\";\r\nimport { DataSource } from \"./data/DataSource\";\r\nimport { Responsive } from \"./utils/Responsive\";\r\nimport { system } from \"./System\";\r\n\r\nimport { DataItem } from \"./DataItem\";\r\nimport { registry } from \"./Registry\";\r\nimport { Preloader } from \"./elements/Preloader\";\r\nimport { IRange } from \"./defs/IRange\";\r\n\r\nimport * as $math from \"./utils/Math\";\r\nimport * as $array from \"./utils/Array\";\r\nimport * as $ease from \"./utils/Ease\";\r\nimport * as $utils from \"./utils/Utils\";\r\nimport * as $iter from \"./utils/Iterator\";\r\nimport * as $object from \"./utils/Object\";\r\nimport * as $type from \"./utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A list of available types for calculated values.\r\n */\r\nexport type CalculatedValue =\r\n\t\"value\" |\r\n\t\"percent\" |\r\n\t\"change\" |\r\n\t\"changePercent\" |\r\n\t\"startChangePercent\" |\r\n\t\"startChange\" |\r\n\t\"previousChangePercent\" |\r\n\t\"previousChange\" |\r\n\t\"sum\" |\r\n\t\"absoluteSum\" |\r\n\t\"average\" |\r\n\t\"open\" |\r\n\t\"close\" |\r\n\t\"low\" |\r\n\t\"high\" |\r\n\t\"count\" |\r\n\t\"total\" |\r\n\t\"totalPercent\" |\r\n\t\"stack\";\r\n\r\n/**\r\n * Defines properties for [[Component]].\r\n */\r\nexport interface IComponentProperties extends IContainerProperties {\r\n\r\n\t/**\r\n\t * Maximum zoom factor of a component.\r\n\t */\r\n\tmaxZoomFactor?: number;\r\n\r\n\t/**\r\n\t * Maximum zoom declination (how much out of 0-1 range it will allow to step out)\r\n\t *\r\n\t * @ignore\r\n\t * @default 0.5\r\n\t */\r\n\tmaxZoomDeclination?: number;\r\n\r\n\t/**\r\n\t * Use this for [[CategoryAxis]] or [[DateAxis]].\r\n\t *\r\n\t * Allows restricting zoom in beyond certain number of categories or base\r\n\t * intervals.\r\n\t *\r\n\t * The chart will not zoom in beyond this number of items.\r\n\t *\r\n\t * @default 1\r\n\t */\r\n\tminZoomCount?: number;\r\n\r\n\t/**\r\n\t * Use this for [[CategoryAxis]] or [[DateAxis]].\r\n\t *\r\n\t * Limits how many categories or base intervals can be shown at the same\r\n\t * time.\r\n\t *\r\n\t * If there are more items in the chart, the chart will auto-zoom.\r\n\t *\r\n\t * @default 0 (no limit)\r\n\t */\r\n\tmaxZoomCount?: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines data fields for [[Component]].\r\n */\r\nexport interface IComponentDataFields {\r\n\r\n\t/**\r\n\t * Data.\r\n\t */\r\n\tdata?: string;\r\n\r\n\t/**\r\n\t * ID.\r\n\t */\r\n\tid?: string;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[Component]].\r\n */\r\nexport interface IComponentEvents extends IContainerEvents {\r\n\r\n\t/**\r\n\t * Invoked when range of the currently selected data is validated.\r\n\t *\r\n\t * @todo: change to datarangevalidated?\r\n\t */\r\n\tdatarangechanged: {};\r\n\r\n\t/**\r\n\t * Invoked when the raw data for the component changes.\r\n\t */\r\n\tdatavalidated: {};\r\n\r\n\t/**\r\n\t * Invoked when value(s) of the element's data items are validated.\r\n\t */\r\n\tdataitemsvalidated: {};\r\n\r\n\t/**\r\n\t * Invoked just before element is validated (after changes).\r\n\t */\r\n\tbeforedatavalidated: {};\r\n\r\n\t/**\r\n\t * Invoked when range change animation starts\r\n\t */\r\n\trangechangestarted: {};\r\n\r\n\t/**\r\n\t * Invoked when range change animation ends\r\n\t */\r\n\trangechangeended: {};\r\n\r\n\t/**\r\n\t * Invoked when start position changes\r\n\t */\r\n\tstartchanged: {};\r\n\r\n\t/**\r\n\t * Invoked when end position changes\r\n\t */\r\n\tendchanged: {};\r\n\r\n\t/**\r\n\t * Invoked when start or end position changes, unlike startchanged/endchanged this event is fired not immediately but at the end of a cycle.\r\n\t */\r\n\tstartendchanged: {};\r\n}\r\n\r\n/**\r\n * Defines adapters\r\n * Includes both the [[Adapter]] definitions and properties\r\n * @see {@link Adapter}\r\n */\r\nexport interface IComponentAdapters extends IContainerAdapters, IComponentProperties {\r\n\r\n\t/**\r\n\t * Applied after [[Component]] retrieves data value from data context\r\n\t * (raw data), but before it is provided to [[DataItem]].\r\n\t */\r\n\tdataContextValue: {\r\n\t\tvalue: any,\r\n\t\tfield: string,\r\n\t\tdataItem: DataItem\r\n\t};\r\n\r\n\t/**\r\n\t * Applied to chart's data before it is retrieved for use.\r\n\t */\r\n\tdata: any[];\r\n\r\n\tstart: number;\r\n\r\n\tend: number;\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A Component represents an independent functional element or control, that\r\n * can have it's own behavior, children, data, etc.\r\n *\r\n * A few examples of a Component: [[Legend]], [[Series]], [[Scrollbar]].\r\n *\r\n * @see {@link IComponentEvents} for a list of available events\r\n * @see {@link IComponentAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class Component extends Container {\r\n\r\n\t/**\r\n\t * Defines available data fields.\r\n\t */\r\n\tpublic _dataFields!: IComponentDataFields;\r\n\r\n\t/**\r\n\t * Holds data field names.\r\n\t *\r\n\t * Data fields define connection beween [[DataItem]] and actual properties\r\n\t * in raw data.\r\n\t */\r\n\tpublic dataFields: this[\"_dataFields\"] = {};\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IComponentProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IComponentAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IComponentEvents;\r\n\r\n\t/**\r\n\t * Holds the data for the component.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _data: $type.Optional;\r\n\r\n\t/**\r\n\t * A [[Component]] which provides data to this component (like Chart provides\r\n\t * data for Series).\r\n\t */\r\n\tpublic dataProvider: $type.Optional;\r\n\r\n\t/**\r\n\t * A list of [[DataSource]] definitions of external data source.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _dataSources: { [index: string]: DataSource } = {};\r\n\r\n\t/**\r\n\t * An instance of [[Responsive]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _responsive: $type.Optional;\r\n\r\n\t/**\r\n\t * This is used when only new data is invalidated (if added using `addData`\r\n\t * method).\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _parseDataFrom: number = 0;\r\n\r\n\t/**\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tprotected _dataUsers: $type.Optional>;\r\n\r\n\t/**\r\n\t * Holds the disposers for the dataItems and dataUsers\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _dataDisposers: Array = [];\r\n\r\n\r\n\t/**\r\n\t * Identifies the type of the [[DataItem]] used in this element.\r\n\t */\r\n\tpublic _dataItem!: DataItem;\r\n\r\n\t/**\r\n\t * List of element's source data items.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _dataItems: $type.Optional>;\r\n\r\n\t/**\r\n\t * Holds aggregated data items.\r\n\t *\r\n\t * @ignore\r\n\t */\r\n\tpublic _dataSets: Dictionary>;\r\n\r\n\t/**\r\n\t * Currently selected \"data set\".\r\n\t *\r\n\t * If it's set to `\"\"`, main data set (unaggregated data) is used.\r\n\t */\r\n\tprotected _currentDataSetId: string = \"\";\r\n\r\n\t/**\r\n\t * [_startIndex description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _startIndex: $type.Optional;\r\n\r\n\t/**\r\n\t * [_endIndex description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _endIndex: $type.Optional;\r\n\r\n\t/**\r\n\t * [_start description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _start: number = 0;\r\n\r\n\t/**\r\n\t * [_end description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _end: number = 1;\r\n\r\n\t/**\r\n\t * [_finalStart description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _finalStart: $type.Optional;\r\n\r\n\t/**\r\n\t * [_finalEnd description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _finalEnd: $type.Optional;\r\n\r\n\t/**\r\n\t * If set to `true`, changing data range in element will not trigger\r\n\t * `daterangechanged` event.\r\n\t */\r\n\tpublic skipRangeEvent: boolean = false;\r\n\r\n\t/**\r\n\t * Whenever selected scope changes (chart is zoomed or panned), for example\r\n\t * by interaction from a Scrollbar, or API, a chart needs to reposition\r\n\t * its contents.\r\n\t *\r\n\t * `rangeChangeDuration` influences how this is performed.\r\n\t *\r\n\t * If set to zero (0), the change will happen instantenously.\r\n\t *\r\n\t * If set to non-zero value, the chart will gradually animate into new\r\n\t * position for the set amount of milliseconds.\r\n\t *\r\n\t * @default 0\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n\t */\r\n\tpublic rangeChangeDuration: number = 0;\r\n\r\n\t/**\r\n\t * An easing function to use for range change animation.\r\n\t *\r\n\t * @see {@link Ease}\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n\t */\r\n\tpublic rangeChangeEasing: (value: number) => number = $ease.cubicOut;\r\n\r\n\t/**\r\n\t * A reference to a currently playing range change [[Animation]] object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic rangeChangeAnimation: $type.Optional;\r\n\r\n\t/**\r\n\t * A duration (ms) of each data parsing step. A Component parses its data in\r\n\t * chunks in order to avoid completely freezing the machine when large data\r\n\t * sets are used. This setting will control how many milliseconds should pass\r\n\t * when parsing data until parser stops for a brief moment to let other\r\n\t * processes catch up.\r\n\t */\r\n\tpublic parsingStepDuration: number = 50;\r\n\r\n\t/**\r\n\t * [dataInvalid description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic dataInvalid: boolean = false;\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic rawDataInvalid: boolean = false;\r\n\r\n\t/**\r\n\t * [dataRangeInvalid description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic dataRangeInvalid: boolean = false;\r\n\r\n\t/**\r\n\t * [dataItemsInvalid description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic dataItemsInvalid: boolean = false;\r\n\r\n\t/**\r\n\t * If set to a non-zero number the element will \"animate\" data values of its\r\n\t * children.\r\n\t *\r\n\t * This will happen on first load and whenever data values change.\r\n\t *\r\n\t * Enabling interpolation will mean that elements will transit smoothly into\r\n\t * new values rather than updating instantly.\r\n\t *\r\n\t * @default 0\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n\t */\r\n\tpublic interpolationDuration: number = 0;\r\n\r\n\t/**\r\n\t * An easing function to use for interpolating values when transiting from\r\n\t * one source value to another.\r\n\t *\r\n\t * @default cubicOut\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n\t * @see {@link Ease}\r\n\t */\r\n\tpublic interpolationEasing: (value: number) => number = $ease.cubicOut;\r\n\r\n\t/**\r\n\t * Indicates whether transition between data item's values should start and\r\n\t * play out all at once, or with a small delay (as defined by\r\n\t * `sequencedInterpolationDelay`) for each subsequent data item.\r\n\t *\r\n\t * @default true\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n\t */\r\n\tpublic sequencedInterpolation: boolean = true;\r\n\r\n\t/**\r\n\t * A delay (ms) to wait between animating each subsequent data item's\r\n\t * interpolation animation.\r\n\t *\r\n\t * Relative only if `sequencedInterpolation = true`.\r\n\t *\r\n\t * @default 0\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n\t */\r\n\tpublic sequencedInterpolationDelay: number = 0;\r\n\r\n\t/**\r\n\t * A progress (0-1) for the data validation process.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic dataValidationProgress: number = 0;\r\n\r\n\t/**\r\n\t * [_prevStartIndex description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tprotected _prevStartIndex: $type.Optional;\r\n\r\n\t/**\r\n\t * [_prevEndIndex description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tprotected _prevEndIndex: $type.Optional;\r\n\r\n\t/**\r\n\t * Sometimes we need to process more dataItems then actually is\r\n\t * selected (for example, not to cut lines at the end/beginning).\r\n\t * However when calculating averages, min, max, etc we need not to include\r\n\t * them. So we store `workingStartIndex` and `workingEndIndex` to know which\r\n\t * dataItems should be included and which should not.\r\n\t */\r\n\r\n\t/**\r\n\t * [_workingStartIndex description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tprotected _workingStartIndex: $type.Optional;\r\n\r\n\t/**\r\n\t * [_workingEndIndex description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tprotected _workingEndIndex: $type.Optional;\r\n\r\n\tprotected _addAllDataItems: boolean = true;\r\n\r\n\tprotected _showOnInitDisposer2: IDisposer;\r\n\r\n\tprotected _usesData: boolean = true;\r\n\r\n\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"Component\";\r\n\r\n\t\tthis.minZoomCount = 1;\r\n\t\tthis.maxZoomCount = 0;\r\n\r\n\t\tthis._dataItems = new OrderedListTemplate(this.createDataItem());\r\n\t\tthis._dataItems.events.on(\"inserted\", this.handleDataItemAdded, this, false);\r\n\t\tthis._dataItems.events.on(\"removed\", this.handleDataItemRemoved, this, false);\r\n\t\tthis._disposers.push(new ListDisposer(this._dataItems));\r\n\t\tthis._disposers.push(this._dataItems.template);\r\n\r\n\t\tthis.invalidateData();\r\n\r\n\t\t// TODO what about remove ?\r\n\t\tthis.dataUsers.events.on(\"inserted\", this.handleDataUserAdded, this, false);\r\n\r\n\t\t// Set up disposers\r\n\t\tthis._disposers.push(new MultiDisposer(this._dataDisposers));\r\n\r\n\t\tthis._start = 0;\r\n\t\tthis._end = 1;\r\n\r\n\t\tthis.maxZoomDeclination = 1;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty DataItem of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new DataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * [handleDataUserAdded description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param event Event object\r\n\t */\r\n\tprotected handleDataUserAdded(event: IListEvents[\"inserted\"]) {\r\n\t\tlet dataUser = event.newValue;\r\n\t\tdataUser.dataProvider = this;\r\n\t}\r\n\r\n\t/**\r\n\t * [handleDataItemValueChange description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic handleDataItemValueChange(dataItem?: this[\"_dataItem\"], name?: string): void {\r\n\t\tif (!this.dataItemsInvalid) {\r\n\t\t\tthis.invalidateDataItems();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [handleDataItemWorkingValueChange description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic handleDataItemWorkingValueChange(dataItem?: this[\"_dataItem\"], name?: string): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * [handleDataItemWorkingLocationChange description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic handleDataItemWorkingLocationChange(dataItem?: this[\"_dataItem\"], name?: string): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * [handleDataItemCalculatedValueChange description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic handleDataItemCalculatedValueChange(dataItem?: this[\"_dataItem\"], name?: string) {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * [handleDataItemPropertyChange description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic handleDataItemPropertyChange(dataItem?: this[\"_dataItem\"], name?: string): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Populates a [[DataItem]] width data from data source.\r\n\t *\r\n\t * Loops through all the fields and if such a field is found in raw data\r\n\t * object, a corresponding value on passed in `dataItem` is set.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param item\r\n\t */\r\n\tprotected processDataItem(dataItem: this[\"_dataItem\"], dataContext?: Object): void {\r\n\t\tif (dataItem) {\r\n\t\t\tif (!dataContext) {\r\n\t\t\t\tdataContext = {};\r\n\t\t\t}\r\n\r\n\t\t\t// store reference to original data item\r\n\t\t\tdataItem.dataContext = dataContext;\r\n\r\n\t\t\tlet hasSomeValues = false;\r\n\r\n\t\t\t$object.each(this.dataFields, (key, fieldValue) => {\r\n\t\t\t\tconst fieldName: string = key;\r\n\r\n\t\t\t\tlet value: any = (dataContext)[fieldValue];\r\n\t\t\t\t// Apply adapters to a retrieved value\r\n\t\t\t\tif (this._adapterO) {\r\n\t\t\t\t\tif (this._adapterO.isEnabled(\"dataContextValue\")) {\r\n\t\t\t\t\t\tvalue = this._adapterO.apply(\"dataContextValue\", {\r\n\t\t\t\t\t\t\tfield: fieldName,\r\n\t\t\t\t\t\t\tvalue: value,\r\n\t\t\t\t\t\t\tdataItem: dataItem\r\n\t\t\t\t\t\t}).value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (dataItem.hasChildren[fieldName]) {\r\n\t\t\t\t\tif ($type.hasValue(value)) {\r\n\t\t\t\t\t\thasSomeValues = true;\r\n\t\t\t\t\t\tlet template = this.createDataItem();\r\n\t\t\t\t\t\ttemplate.copyFrom(this.mainDataSet.template);\r\n\t\t\t\t\t\tlet children = new OrderedListTemplate(template);\r\n\t\t\t\t\t\tchildren.events.on(\"inserted\", this.handleDataItemAdded, this, false);\r\n\t\t\t\t\t\tchildren.events.on(\"removed\", this.handleDataItemRemoved, this, false);\r\n\t\t\t\t\t\tthis._dataDisposers.push(new ListDisposer(children));\r\n\t\t\t\t\t\tlet count = value.length;\r\n\t\t\t\t\t\tfor (let i = 0; i < count; i++) {\r\n\t\t\t\t\t\t\tlet rawDataItem = value[i];\r\n\t\t\t\t\t\t\tlet childDataItem: this[\"_dataItem\"] = children.create();\r\n\t\t\t\t\t\t\tchildDataItem.parent = dataItem;\r\n\t\t\t\t\t\t\tthis.processDataItem(childDataItem, rawDataItem);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlet anyDataItem = dataItem;\r\n\t\t\t\t\t\tanyDataItem[fieldName] = children;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// data is converted to numbers/dates in each dataItem\r\n\t\t\t\t\tif ($type.hasValue(value)) {\r\n\t\t\t\t\t\thasSomeValues = true;\r\n\t\t\t\t\t\t(dataItem)[fieldName] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$object.each(this.propertyFields, (key, fieldValue) => {\r\n\t\t\t\tconst f: string = key;\r\n\t\t\t\tlet value: any = (dataContext)[fieldValue];\r\n\r\n\t\t\t\tif ($type.hasValue(value)) {\r\n\t\t\t\t\thasSomeValues = true;\r\n\t\t\t\t\tdataItem.setProperty(f, value);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// @todo we might need some flag which would tell whether we should create empty data items or not.\r\n\t\t\tif (!this._addAllDataItems && !hasSomeValues) {\r\n\t\t\t\tthis.mainDataSet.remove(dataItem);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * When validating raw data, instead of processing data item, we update it\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param item\r\n\t */\r\n\tprotected updateDataItem(dataItem: this[\"_dataItem\"]): void {\r\n\t\tif (dataItem) {\r\n\r\n\t\t\tlet dataContext = dataItem.dataContext;\r\n\r\n\t\t\t$object.each(this.dataFields, (key, fieldValue) => {\r\n\t\t\t\tconst fieldName: string = key;\r\n\r\n\t\t\t\tlet value: any = (dataContext)[fieldValue];\r\n\t\t\t\t// Apply adapters to a retrieved value\r\n\t\t\t\tif (this._adapterO) {\r\n\t\t\t\t\tvalue = this._adapterO.apply(\"dataContextValue\", {\r\n\t\t\t\t\t\tfield: fieldName,\r\n\t\t\t\t\t\tvalue: value,\r\n\t\t\t\t\t\tdataItem: dataItem\r\n\t\t\t\t\t}).value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (dataItem.hasChildren[fieldName]) {\r\n\t\t\t\t\tif (value) {\r\n\t\t\t\t\t\tlet anyDataItem = dataItem;\r\n\t\t\t\t\t\tlet children = >(anyDataItem[fieldName]);\r\n\t\t\t\t\t\t$iter.each(children.iterator(), (child) => {\r\n\t\t\t\t\t\t\tthis.updateDataItem(child);\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// data is converted to numbers/dates in each dataItem\r\n\t\t\t\t\tif ($type.hasValue(value)) {\r\n\t\t\t\t\t\t(dataItem)[fieldName] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$object.each(this.propertyFields, (key, fieldValue) => {\r\n\t\t\t\tconst f: string = key;\r\n\t\t\t\tlet value: any = (dataContext)[fieldValue];\r\n\t\t\t\tif ($type.hasValue(value)) {\r\n\t\t\t\t\tdataItem.setProperty(f, value);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * [validateDataElements description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tprotected validateDataElements() {\r\n\t\tlet count = this.endIndex;\r\n\r\n\t\tfor (let i = this.startIndex; i < count; i++) {\r\n\t\t\tconst dataItem = this.dataItems.getIndex(i);\r\n\r\n\t\t\t// TODO is this correct\r\n\t\t\tif (dataItem) {\r\n\t\t\t\tthis.validateDataElement(dataItem);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Validates this element and its related elements.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate(): void {\r\n\t\tthis.validateDataElements();\r\n\t\tsuper.validate();\r\n\t}\r\n\r\n\t/**\r\n\t * [validateDataElement description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param dataItem [description]\r\n\t */\r\n\tpublic validateDataElement(dataItem: this[\"_dataItem\"]): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Adds one or several (array) of data items to the existing data.\r\n\t *\r\n\t * @param rawDataItem One or many raw data item objects\r\n\t */\r\n\tpublic addData(rawDataItem: Object | Object[], removeCount?: number): void {\r\n\r\n\t\t// need to check if data is invalid, as addData might be called multiple times\r\n\t\tif (!this.dataInvalid && this.inited) {\r\n\t\t\tthis._parseDataFrom = this.data.length; // save length of parsed data\r\n\t\t}\r\n\r\n\t\tif (rawDataItem instanceof Array) {\r\n\t\t\t// can't use concat because new array is returned\r\n\t\t\t$array.each(rawDataItem, (dataItem) => {\r\n\t\t\t\tthis.data.push(dataItem);\r\n\t\t\t})\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.data.push(rawDataItem); // add to raw data array\r\n\t\t}\r\n\r\n\t\tif (this.inited) {\r\n\t\t\tthis.removeData(removeCount);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif ($type.isNumber(removeCount)) {\r\n\t\t\t\twhile (removeCount > 0) {\r\n\t\t\t\t\tthis.data.shift();\r\n\t\t\t\t\tremoveCount--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.invalidateData();\r\n\t}\r\n\r\n\t/**\r\n\t * Removes elements from the beginning of data\r\n\t *\r\n\t * @param count number of elements to remove\r\n\t */\r\n\tpublic removeData(count: $type.Optional) {\r\n\t\tif ($type.isNumber(count) && count > 0) {\r\n\t\t\twhile (count > 0) {\r\n\t\t\t\tlet dataItem = this.mainDataSet.getIndex(0);\r\n\t\t\t\tif (dataItem) {\r\n\t\t\t\t\tthis.mainDataSet.remove(dataItem);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dataUsers.each((dataUser) => {\r\n\t\t\t\t\tif (!dataUser.data || dataUser.data.length == 0) {\r\n\t\t\t\t\t\tlet dataItem = dataUser.dataItems.getIndex(0);\r\n\t\t\t\t\t\tif (dataItem) {\r\n\t\t\t\t\t\t\tdataUser.dataItems.remove(dataItem);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.data.shift();\r\n\r\n\t\t\t\tif (this._parseDataFrom > 0) {\r\n\t\t\t\t\tthis._parseDataFrom--;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcount--;\r\n\t\t\t}\r\n\t\t\t// changed from invalidateData since 4.7.19 to solve #51551\r\n\t\t\tthis.invalidateDataItems();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers a data (re)parsing.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidateData(): void {\r\n\t\tif (this.disabled || this.isTemplate) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//if(!this.dataInvalid){\r\n\t\tregistry.addToInvalidComponents(this);\r\n\t\tsystem.requestFrame();\r\n\t\tthis.dataInvalid = true;\r\n\r\n\t\t$iter.each(this.dataUsers.iterator(), (x) => {\r\n\t\t\tx.invalidateDataItems();\r\n\t\t});\r\n\t\t//}\r\n\t}\r\n\r\n\t/**\r\n\t * [invalidateDataUsers description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic invalidateDataUsers(): void {\r\n\t\t$iter.each(this.dataUsers.iterator(), (x) => {\r\n\t\t\tx.invalidate();\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Invalidates data values. When data array is not changed, but values within\r\n\t * it changes, we invalidate data so that component would process changes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidateDataItems(): void {\r\n\t\tif (this.disabled || this.isTemplate) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//if(!this.dataItemsInvalid){\r\n\t\t$array.move(registry.invalidDataItems, this);\r\n\t\tsystem.requestFrame();\r\n\r\n\t\tthis.dataItemsInvalid = true;\r\n\r\n\t\t$iter.each(this.dataUsers.iterator(), (x) => {\r\n\t\t\tx.invalidateDataItems();\r\n\t\t});\r\n\t\t//}\r\n\t}\r\n\r\n\t/**\r\n\t * Invalidates data range. This is done when data which must be shown\r\n\t * changes (chart is zoomed for example).\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidateDataRange(): void {\r\n\t\tif (this.disabled || this.isTemplate) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//if(!this.dataRangeInvalid){\r\n\t\tthis.dataRangeInvalid = true;\r\n\t\t$array.move(registry.invalidDataRange, this);\r\n\t\tsystem.requestFrame();\r\n\t\t//}\r\n\t}\r\n\r\n\t/**\r\n\t * Processes data range.\r\n\t *\r\n\t * @todo Description\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateDataRange(): void {\r\n\t\t$array.remove(registry.invalidDataRange, this);\r\n\t\tthis.dataRangeInvalid = false;\r\n\r\n\t\tif (this.startIndex != this._prevStartIndex || this.endIndex != this._prevEndIndex) {\r\n\t\t\tthis.rangeChangeUpdate();\r\n\t\t\tthis.appendDataItems();\r\n\t\t\tthis.invalidate();\r\n\t\t\tthis.dispatchImmediately(\"datarangechanged\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [sliceData description]\r\n\t *\r\n\t * @todo Description\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected sliceData() {\r\n\t\tthis._workingStartIndex = this.startIndex;\r\n\t\tthis._workingEndIndex = this.endIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * [rangeChangeUpdate description]\r\n\t *\r\n\t * @todo Description\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected rangeChangeUpdate() {\r\n\t\tthis.sliceData();\r\n\t\tthis._prevStartIndex = this.startIndex;\r\n\t\tthis._prevEndIndex = this.endIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * [appendDataItems description]\r\n\t *\r\n\t * @todo Description\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected appendDataItems() {\r\n\t\t// TODO use an iterator instead\r\n\t\tlet count = this.endIndex;\r\n\t\tfor (let i: number = this.startIndex; i < count; i++) {\r\n\r\n\t\t\t// data item\r\n\t\t\tlet dataItem = this.dataItems.getIndex(i);\r\n\t\t\tif (dataItem) {\r\n\t\t\t\tdataItem.__disabled = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < this.startIndex; i++) {\r\n\t\t\tlet dataItem = this.dataItems.getIndex(i);\r\n\t\t\tdataItem.__disabled = true;\r\n\t\t}\r\n\r\n\t\tfor (let i = this.endIndex; i < this.dataItems.length; i++) {\r\n\t\t\tlet dataItem = this.dataItems.getIndex(i);\r\n\t\t\tdataItem.__disabled = true;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * If you want to have a smooth transition from one data values to another, you change your raw data and then you must call this method.\r\n\t * then instead of redrawing everything, the chart will check raw data and smoothly transit from previous to new data\r\n\t */\r\n\tpublic invalidateRawData(): void {\r\n\t\tif (this.disabled || this.isTemplate) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//if(!this.rawDataInvalid){\r\n\t\t$array.move(registry.invalidRawDatas, this);\r\n\t\tsystem.requestFrame();\r\n\r\n\t\tthis.rawDataInvalid = true;\r\n\r\n\t\t$iter.each(this.dataUsers.iterator(), (x) => {\r\n\t\t\tx.invalidateRawData();\r\n\t\t});\r\n\t\t//}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic validateRawData() {\r\n\t\t$array.remove(registry.invalidRawDatas, this);\r\n\t\t$iter.each(this.mainDataSet.iterator(), (dataItem) => {\r\n\t\t\tif (dataItem) {\r\n\t\t\t\tthis.updateDataItem(dataItem);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Destroys this object and all related data.\r\n\t */\r\n\tpublic dispose() {\r\n\t\tthis.mainDataSet.template.clones.clear();\r\n\t\t$object.each(this._dataSources, (key, source) => {\r\n\t\t\tthis.removeDispose(source);\r\n\t\t});\r\n\t\tsuper.dispose();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic disposeData() {\r\n\t\tthis.mainDataSet.template.clones.clear();\r\n\r\n\t\t$array.each(this._dataDisposers, (x) => {\r\n\t\t\tx.dispose();\r\n\t\t});\r\n\r\n\t\t// and for all components\r\n\t\t$iter.each(this.dataUsers.iterator(), (dataUser) => {\r\n\t\t\tdataUser.disposeData();\r\n\t\t});\r\n\r\n\t\tthis._dataDisposers.length = 0;\r\n\r\n\t\tthis._startIndex = undefined;\r\n\t\tthis._endIndex = undefined;\r\n\r\n\t\t// dispose old\r\n\t\tthis.mainDataSet.clear();\r\n\r\n\t\tthis.mainDataSet.template.clones.clear();\r\n\r\n\t\tif (this._dataSets) {\r\n\t\t\tthis._dataSets.clear();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tprotected getDataItem(dataContext?: any): this[\"_dataItem\"] {\r\n\t\treturn this.mainDataSet.create();\r\n\t}\r\n\r\n\t/**\r\n\t * Validates (processes) data.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateData(): void {\r\n\t\tthis.dispatchImmediately(\"beforedatavalidated\");\r\n\r\n\t\tthis.dataInvalid = false;\r\n\r\n\t\tregistry.removeFromInvalidComponents(this);\r\n\r\n\t\tif (this.__disabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.dataValidationProgress = 0;\r\n\t\t// need this to slice new data\r\n\t\tthis._prevStartIndex = undefined;\r\n\t\tthis._prevEndIndex = undefined;\r\n\r\n\t\t// todo: this needs some overthinking, maybe some extra settings like zoomOotonDataupdate like in v3 or so. some charts like pie chart probably should act like this always\r\n\t\tthis._startIndex = undefined;\r\n\t\tthis._endIndex = undefined;\r\n\r\n\t\tif (this.dataFields.data && this.dataItem) {\r\n\t\t\tlet dataContext = this.dataItem.dataContext;\r\n\t\t\tthis._data = dataContext[this.dataFields.data];\r\n\t\t}\r\n\r\n\t\t// data items array is reset only if all data is validated, if _parseDataFrom is not 0, we append new data only\r\n\t\t// check heatmap demo if uncommented\r\n\t\t// fixed both issues by adding && this.data.length > 0\r\n\t\t// check adding series example if changed\r\n\t\tif (this._parseDataFrom === 0 && this.data.length > 0) {\r\n\t\t\tthis.disposeData();\r\n\t\t}\r\n\r\n\t\tif (this.data.length > 0) {\r\n\t\t\tlet preloader: $type.Optional = this.preloader;\r\n\r\n\t\t\t// and for all components\r\n\t\t\t$iter.each(this.dataUsers.iterator(), (dataUser) => {\r\n\t\t\t\t// todo: this needs some overthinking, maybe some extra settings like zoomOUtonDataupdate like in v3 or so. some charts like pie chart probably should act like this always\r\n\t\t\t\tdataUser._startIndex = undefined;\r\n\t\t\t\tdataUser._endIndex = undefined;\r\n\t\t\t});\r\n\r\n\t\t\tlet counter: number = 0;\r\n\t\t\tlet startTime: number = Date.now();\r\n\t\t\t// parse data\r\n\t\t\tlet i = this._parseDataFrom;\r\n\t\t\tlet n = this.data.length;\r\n\r\n\t\t\tfor (i; i < n; i++) {\r\n\t\t\t\tlet rawDataItem = this.data[i];\r\n\t\t\t\tif (this._usesData) {\r\n\t\t\t\t\tlet dataItem: this[\"_dataItem\"] = this.getDataItem(rawDataItem);\r\n\t\t\t\t\tthis.processDataItem(dataItem, rawDataItem);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dataUsers.each((dataUser) => {\r\n\t\t\t\t\tif (dataUser.data.length == 0) { // checking if data is not set directly\r\n\t\t\t\t\t\tlet dataUserDataItem: DataItem = dataUser.getDataItem(rawDataItem);\r\n\t\t\t\t\t\tdataUser.processDataItem(dataUserDataItem, rawDataItem);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tcounter++;\r\n\r\n\t\t\t\t// show preloader if this takes too many time\r\n\t\t\t\tif (counter == 100) { // no need to check it on each data item\r\n\t\t\t\t\tcounter = 0;\r\n\t\t\t\t\tlet elapsed: number = Date.now() - startTime;\r\n\r\n\t\t\t\t\tif (elapsed > this.parsingStepDuration) {\r\n\t\t\t\t\t\tif (i < this.data.length - 10) {\r\n\t\t\t\t\t\t\tthis._parseDataFrom = i + 1;\r\n\r\n\t\t\t\t\t\t\t// update preloader\r\n\t\t\t\t\t\t\tif (preloader) {\r\n\t\t\t\t\t\t\t\tif (i / this.data.length > 0.5 && !preloader.visible) {\r\n\t\t\t\t\t\t\t\t\t// do not start showing\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\tpreloader.progress = i / this.data.length;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tthis.dataValidationProgress = i / this.data.length;\r\n\r\n\t\t\t\t\t\t\ti = this.data.length; // stops cycle\r\n\t\t\t\t\t\t\tthis.invalidateData();\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (preloader) {\r\n\t\t\t\tpreloader.progress = 1;\r\n\t\t\t}\r\n\r\n\t\t\tthis.dataUsers.each((dataUser) => {\r\n\t\t\t\tif (dataUser.hidden) {\r\n\t\t\t\t\tdataUser.hide(0);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.dataValidationProgress = 1;\r\n\t\tthis._parseDataFrom = 0; // reset this index, it is set to dataItems.length if addData() method was used.\r\n\r\n\t\tthis.invalidateDataItems();\r\n\r\n\t\tif (!this._internalDefaultsApplied) {\r\n\t\t\tthis.applyInternalDefaults();\r\n\t\t}\r\n\r\n\t\tthis.dispatch(\"datavalidated\"); // can't zoom chart if dispatched immediately\r\n\t}\r\n\r\n\t/**\r\n\t * Validates (processes) data items.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateDataItems(): void {\r\n\t\t$array.remove(registry.invalidDataItems, this);\r\n\r\n\t\tthis.dataItemsInvalid = false;\r\n\r\n\t\tthis.invalidateDataRange();\r\n\t\tthis.invalidate();\r\n\t\tthis.dispatch(\"dataitemsvalidated\");\r\n\t}\r\n\r\n\t/**\r\n\t * Sets source (raw) data for the element. The \"data\" is always an `Array`\r\n\t * of objects.\r\n\t *\r\n\t * @param value Data\r\n\t */\r\n\tpublic set data(value: any[]) {\r\n\t\tthis.setData(value);\r\n\t}\r\n\r\n\tprotected setData(value: any[]) {\r\n\t\t// array might be the same, but there might be items added\r\n\t\t// todo: check if array changed, toString maybe?\r\n\t\t//if (this._data != value) {\r\n\t\tthis._parseDataFrom = 0;\r\n\t\tthis.disposeData();\r\n\t\tthis._data = value;\r\n\t\tif (value && value.length > 0) {\r\n\t\t\tthis.invalidateData();\r\n\t\t}\r\n\t\telse { \r\n\t\t\tthis.dispatchImmediately(\"beforedatavalidated\"); \r\n\t\t\tthis.dispatch(\"datavalidated\");\r\n\t\t}\r\n\t\t//}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns element's source (raw) data.\r\n\t *\r\n\t * @return Data\r\n\t */\r\n\tpublic get data(): any[] {\r\n\t\tif (!this._data) {\r\n\t\t\tthis._data = [];\r\n\t\t}\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn this._data;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"data\", this._data);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns (creates if necessary) a [[DataSource]] bound to any specific\r\n\t * property.\r\n\t *\r\n\t * For example if I want to bind `data` to an external JSON file, I'd create\r\n\t * a DataSource for it.\r\n\t *\r\n\t * @param property Property to bind external data to\r\n\t * @return A DataSource for property\r\n\t */\r\n\tpublic getDataSource(property: string): DataSource {\r\n\t\tif (!$type.hasValue(this._dataSources[property])) {\r\n\t\t\tthis._dataSources[property] = new DataSource();\r\n\t\t\tthis._dataSources[property].component = this;\r\n\t\t\tthis.setDataSourceEvents(this._dataSources[property], property);\r\n\t\t\tthis._dataSources[property].adapter.add(\"dateFields\", (val) => {\r\n\t\t\t\treturn this.dataSourceDateFields(val);\r\n\t\t\t});\r\n\t\t\tthis._dataSources[property].adapter.add(\"numberFields\", (val) => {\r\n\t\t\t\treturn this.dataSourceNumberFields(val);\r\n\t\t\t});\r\n\t\t\tthis.events.on(\"inited\", () => {\r\n\t\t\t\tthis.loadData(property);\r\n\t\t\t}, this, false);\r\n\t\t}\r\n\t\treturn this._dataSources[property];\r\n\t}\r\n\r\n\t/**\r\n\t *A [[DataSource]] to be used for loading Component's data.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/loading-external-data/} for more on loading external data\r\n\t * @param value Data source\r\n\t */\r\n\tpublic set dataSource(value: DataSource) {\r\n\t\tif (this._dataSources[\"data\"]) {\r\n\t\t\tthis.removeDispose(this._dataSources[\"data\"]);\r\n\t\t}\r\n\t\tthis._dataSources[\"data\"] = value;\r\n\t\tthis._dataSources[\"data\"].component = this;\r\n\t\tthis.events.on(\"inited\", () => {\r\n\t\t\tthis.loadData(\"data\")\r\n\t\t}, this, false);\r\n\t\tthis.setDataSourceEvents(value, \"data\");\r\n\t}\r\n\r\n\t/**\r\n\t * @return Data source\r\n\t */\r\n\tpublic get dataSource(): DataSource {\r\n\t\tif (!this._dataSources[\"data\"]) {\r\n\t\t\tthis.getDataSource(\"data\");\r\n\t\t}\r\n\t\treturn this._dataSources[\"data\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Initiates loading of the external data via [[DataSource]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected loadData(property: string): void {\r\n\t\tthis._dataSources[property].load();\r\n\t}\r\n\r\n\t/**\r\n\t * This function is called by the [[DataSource]]'s `dateFields` adapater\r\n\t * so that particular chart types can popuplate this setting with their\r\n\t * own type-specific data fields so they are parsed properly.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Array of date fields\r\n\t * @return Array of date fields populated with chart's date fields\r\n\t */\r\n\tprotected dataSourceDateFields(value: string[]): string[] {\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * This function is called by the [[DataSource]]'s `numberFields` adapater\r\n\t * so that particular chart types can popuplate this setting with their\r\n\t * own type-specific data fields so they are parsed properly.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Array of number fields\r\n\t * @return Array of number fields populated with chart's number fields\r\n\t */\r\n\tprotected dataSourceNumberFields(value: string[]): string[] {\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param list [description]\r\n\t * @param dataFields [description]\r\n\t * @param targetList [description]\r\n\t * @return [description]\r\n\t */\r\n\tprotected populateDataSourceFields(list: string[], dataFields: { [index: string]: string }, targetList: string[]): string[] {\r\n\t\t$array.each(targetList, (value: string) => {\r\n\t\t\tif (dataFields[value] && $array.indexOf(list, dataFields[value]) === -1) {\r\n\t\t\t\tlist.push(dataFields[value]);\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn list;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets events on a [[DataSource]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected setDataSourceEvents(ds: DataSource, property?: string): void {\r\n\t\tds.events.on(\"started\", (ev) => {\r\n\t\t\tconst preloader = this.preloader;\r\n\t\t\tif (preloader) {\r\n\t\t\t\tpreloader.progress = 0;\r\n\t\t\t\t//preloader.label.text = this.language.translate(\"Loading\");\r\n\t\t\t}\r\n\t\t}, undefined, false);\r\n\t\tds.events.on(\"loadstarted\", (ev) => {\r\n\t\t\tconst preloader = this.preloader;\r\n\t\t\tif (preloader) {\r\n\t\t\t\tpreloader.progress = 0.25;\r\n\t\t\t}\r\n\t\t}, undefined, false);\r\n\t\tds.events.on(\"loadended\", (ev) => {\r\n\t\t\tconst preloader = this.preloader;\r\n\t\t\tif (preloader) {\r\n\t\t\t\tpreloader.progress = 0.5;\r\n\t\t\t}\r\n\t\t}, undefined, false);\r\n\t\tds.events.on(\"parseended\", (ev) => {\r\n\t\t\tconst preloader = this.preloader;\r\n\t\t\tif (preloader) {\r\n\t\t\t\tpreloader.progress = 0.75;\r\n\t\t\t}\r\n\t\t}, undefined, false);\r\n\t\tds.events.on(\"ended\", (ev) => {\r\n\t\t\tconst preloader = this.preloader;\r\n\t\t\tif (preloader) {\r\n\t\t\t\tpreloader.progress = 1;\r\n\t\t\t}\r\n\t\t}, undefined, false);\r\n\t\tds.events.on(\"error\", (ev) => {\r\n\t\t\tconst preloader = this.preloader;\r\n\t\t\tif (preloader) {\r\n\t\t\t\tpreloader.progress = 1;\r\n\t\t\t}\r\n\t\t\tthis.openModal(ev.message);\r\n\t\t}, undefined, false);\r\n\r\n\t\tif (property) {\r\n\t\t\tds.events.on(\"done\", (ev) => {\r\n\t\t\t\tconst preloader = this.preloader;\r\n\t\t\t\tif (preloader) {\r\n\t\t\t\t\tpreloader.progress = 1;\r\n\t\t\t\t}\r\n\t\t\t\tif (property == \"data\" && !$type.isArray(ev.data)) {\r\n\t\t\t\t\tev.data = [ev.data];\r\n\t\t\t\t}\r\n\t\t\t\tif (ds.incremental && property == \"data\" && this.data.length) {\r\n\t\t\t\t\tthis.addData(ev.data, ds.keepCount ? ev.data.length : 0);\r\n\t\t\t\t}\r\n\t\t\t\telse if (ds.updateCurrentData && property == \"data\" && this.data.length) {\r\n\t\t\t\t\t// cycle through existing data items\r\n\t\t\t\t\t$array.each(this.data, (item, index) => {\r\n\t\t\t\t\t\tif ($type.hasValue(ev.data[index])) {\r\n\t\t\t\t\t\t\t$object.each(item, (key, val) => {\r\n\t\t\t\t\t\t\t\tif ($type.hasValue(ev.data[index][key])) {\r\n\t\t\t\t\t\t\t\t\titem[key] = ev.data[index][key];\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.invalidateRawData();\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t(this)[property] = ev.data;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * A [[Responsive]] instance to be used when applying conditional\r\n\t * property values.\r\n\t *\r\n\t * NOTE: Responsive features are currently in development and may not work\r\n\t * as expected, if at all.\r\n\t *\r\n\t * @param value Responsive rules handler\r\n\t */\r\n\tpublic set responsive(value: Responsive) {\r\n\t\tthis._responsive = value;\r\n\t\tthis._responsive.component = this;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Responsive rules handler\r\n\t */\r\n\tpublic get responsive(): Responsive {\r\n\t\tif (!this._responsive) {\r\n\t\t\tthis._responsive = new Responsive();\r\n\t\t\tthis._responsive.component = this;\r\n\t\t}\r\n\t\treturn this._responsive;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets current zoom.\r\n\t *\r\n\t * The range uses relative values from 0 to 1, with 0 marking beginning and 1\r\n\t * marking end of the available data range.\r\n\t *\r\n\t * This method will not have any effect when called on a chart object.\r\n\t * Since the chart can have a number of axes and series, each with its own\r\n\t * data, the meaning of \"range\" is very ambiguous.\r\n\t *\r\n\t * To zoom the chart use `zoom*` methods on its respective axes.\r\n\t *\r\n\t * @param range Range\r\n\t * @param skipRangeEvent Should rangechanged event not be triggered?\r\n\t * @param instantly Do not animate?\r\n\t * @return Actual modidied range (taking `maxZoomFactor` into account)\r\n\t */\r\n\tpublic zoom(range: IRange, skipRangeEvent: boolean = false, instantly: boolean = false, declination?: number): IRange {\r\n\t\tlet start: $type.Optional = range.start;\r\n\t\tlet end = range.end;\r\n\t\tlet priority = range.priority;\r\n\r\n\t\tif (range.start == range.end) {\r\n\t\t\trange.start = range.start - 0.5 / this.maxZoomFactor;\r\n\t\t\trange.end = range.end + 0.5 / this.maxZoomFactor;\r\n\t\t}\r\n\r\n\t\tif (priority == \"end\" && end == 1 && start != 0) {\r\n\t\t\tif (start < this.start) {\r\n\t\t\t\tpriority = \"start\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (priority == \"start\" && start == 0) {\r\n\t\t\tif (end > this.end) {\r\n\t\t\t\tpriority = \"end\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!$type.isNumber(declination)) {\r\n\t\t\tdeclination = this.maxZoomDeclination;\r\n\t\t}\r\n\r\n\t\tif (!$type.isNumber(start) || !$type.isNumber(end)) {\r\n\t\t\treturn { start: this.start, end: this.end };\r\n\t\t}\r\n\r\n\t\tif (this._finalStart != start || this._finalEnd != end) {\r\n\r\n\t\t\tlet maxZoomFactor: number = this.maxZoomFactor / this.minZoomCount;\r\n\t\t\tlet minZoomFactor: number = this.maxZoomFactor / this.maxZoomCount;\r\n\r\n\t\t\t// most likely we are dragging left scrollbar grip here, so we tend to modify end\r\n\r\n\t\t\tif (priority == \"start\") {\r\n\r\n\t\t\t\tif (this.maxZoomCount > 0) {\r\n\t\t\t\t\t// add to the end\r\n\t\t\t\t\tif (1 / (end - start) < minZoomFactor) {\r\n\t\t\t\t\t\tend = start + 1 / minZoomFactor;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// add to the end\r\n\t\t\t\tif (1 / (end - start) > maxZoomFactor) {\r\n\t\t\t\t\tend = start + 1 / maxZoomFactor;\r\n\t\t\t\t}\r\n\t\t\t\t//unless end is > 0\r\n\t\t\t\tif (end > 1 && end - start < 1 / maxZoomFactor) {\r\n\t\t\t\t\t//end = 1;\r\n\t\t\t\t\tstart = end - 1 / maxZoomFactor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// most likely we are dragging right, so we modify left\r\n\t\t\telse {\r\n\r\n\t\t\t\tif (this.maxZoomCount > 0) {\r\n\t\t\t\t\t// add to the end\r\n\t\t\t\t\tif (1 / (end - start) < minZoomFactor) {\r\n\t\t\t\t\t\tstart = end - 1 / minZoomFactor;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// remove from start\r\n\t\t\t\tif (1 / (end - start) > maxZoomFactor) {\r\n\t\t\t\t\tstart = end - 1 / maxZoomFactor;\r\n\t\t\t\t}\r\n\t\t\t\tif (start < 0 && end - start < 1 / maxZoomFactor) {\r\n\t\t\t\t\t//start = 0;\r\n\t\t\t\t\tend = start + 1 / maxZoomFactor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (start < - declination) {\r\n\t\t\t\tstart = - declination;\r\n\t\t\t}\r\n\r\n\t\t\tif (1 / (end - start) > maxZoomFactor) {\r\n\t\t\t\tend = start + 1 / maxZoomFactor;\r\n\t\t\t}\r\n\r\n\t\t\tif (end > 1 + declination) {\r\n\t\t\t\tend = 1 + declination;\r\n\t\t\t}\r\n\r\n\t\t\tif (1 / (end - start) > maxZoomFactor) {\r\n\t\t\t\tstart = end - 1 / maxZoomFactor;\r\n\t\t\t}\r\n\r\n\t\t\tthis._finalEnd = end;\r\n\t\t\tthis._finalStart = start;\r\n\r\n\t\t\tthis.skipRangeEvent = skipRangeEvent;\r\n\r\n\t\t\tthis.dispatchImmediately(\"rangechangestarted\");\r\n\r\n\t\t\tif (this.rangeChangeDuration > 0 && !instantly) {\r\n\r\n\t\t\t\t// todo: maybe move this to Animation\r\n\t\t\t\tlet rangeChangeAnimation: $type.Optional = this.rangeChangeAnimation;\r\n\t\t\t\tif (rangeChangeAnimation && rangeChangeAnimation.progress < 1) {\r\n\t\t\t\t\tlet options = rangeChangeAnimation.animationOptions;\r\n\t\t\t\t\tif (options.length > 1) {\r\n\t\t\t\t\t\tif (options[0].to == start && options[1].to == end) {\r\n\t\t\t\t\t\t\treturn { start: start, end: end };\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (!rangeChangeAnimation.isDisposed()) {\r\n\t\t\t\t\t\t\t\trangeChangeAnimation.stop();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.rangeChangeAnimation) {\r\n\t\t\t\t\tthis.rangeChangeAnimation.kill();\r\n\t\t\t\t}\r\n\r\n\t\t\t\trangeChangeAnimation = this.animate([{ property: \"start\", to: start }, { property: \"end\", to: end }], this.rangeChangeDuration, this.rangeChangeEasing);\r\n\t\t\t\tthis.rangeChangeAnimation = rangeChangeAnimation;\r\n\r\n\t\t\t\tif (rangeChangeAnimation && !rangeChangeAnimation.isFinished()) {\r\n\t\t\t\t\trangeChangeAnimation.events.on(\"animationended\", () => {\r\n\t\t\t\t\t\tthis.dispatchImmediately(\"rangechangeended\");\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.dispatchImmediately(\"rangechangeended\");\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.start = start;\r\n\t\t\t\tthis.end = end;\r\n\t\t\t\tthis.dispatch(\"rangechangeended\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn { start: start, end: end };\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms to specific data items using their index in data.\r\n\t *\r\n\t * This method will not have any effect when called on a chart object.\r\n\t * Since the chart can have a number of axes and series, each with its own\r\n\t * data, the meaning of \"index\" is very ambiguous.\r\n\t *\r\n\t * To zoom the chart use `zoom*` methods on its respective axes.\r\n\t *\r\n\t * @param startIndex Index of the starting data item\r\n\t * @param endIndex Index of the ending data item\r\n\t * @param skipRangeEvent Should rangechanged event not be triggered?\r\n\t * @param instantly Do not animate?\r\n\t */\r\n\tpublic zoomToIndexes(startIndex: number, endIndex: number, skipRangeEvent?: boolean, instantly?: boolean) {\r\n\t\tif (!$type.isNumber(startIndex) || !$type.isNumber(endIndex)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet start: number = startIndex / this.dataItems.length;\r\n\t\tlet end: number = endIndex / this.dataItems.length;\r\n\r\n\t\tthis.zoom({ start: start, end: end }, skipRangeEvent, instantly);\r\n\t}\r\n\r\n\t/**\r\n\t * A current zoom factor (0-1). 1 meaning fully zoomed out. (showing all of\r\n\t * the available data)\r\n\t *\r\n\t * @return Zoom factor\r\n\t */\r\n\tpublic get zoomFactor(): number {\r\n\t\treturn $math.fitToRange(1 / (this.end - this.start), 1, this.maxZoomFactor);\r\n\t}\r\n\r\n\t/**\r\n\t * Max available `zoomFactor`.\r\n\t *\r\n\t * The element will not allow zoom to occur beyond this factor.\r\n\t *\r\n\t * [[DateAxis]] and [[CategoryAxis]] calculate this atutomatically so that\r\n\t * category axis could be zoomed to one category and date axis allows to be\r\n\t * zoomed up to one base interval.\r\n\t *\r\n\t * In case you want to restrict category or date axis to be zoomed to more\r\n\t * than one category or more than one base interval, use `minZoomCount`\r\n\t * property (set it to `> 1`).\r\n\t *\r\n\t * Default value of [[ValueAxis]]'s `maxZoomFactor` is `1000`.\r\n\t *\r\n\t * Feel free to modify it to allow bigger zoom or to restrict zooming.\r\n\t *\r\n\t * @param value Maximum zoomFactor\r\n\t */\r\n\tpublic set maxZoomFactor(value: number) {\r\n\t\tif (this.setPropertyValue(\"maxZoomFactor\", value)) {\r\n\t\t\tif (value == 1) {\r\n\t\t\t\tthis.maxZoomDeclination = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis.invalidateDataRange();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Maximum zoomFactor\r\n\t */\r\n\tpublic get maxZoomFactor(): number {\r\n\t\treturn this.getPropertyValue(\"maxZoomFactor\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Max zoom declination.\r\n\t *\r\n\t * @ignore\r\n\t * @default 1\r\n\t * @param value Maximum zoom declination\r\n\t */\r\n\tpublic set maxZoomDeclination(value: number) {\r\n\t\tif (this.setPropertyValue(\"maxZoomDeclination\", value)) {\r\n\t\t\tthis.invalidateDataRange();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t * @return Maximum zoom declination\r\n\t */\r\n\tpublic get maxZoomDeclination(): number {\r\n\t\treturn this.getPropertyValue(\"maxZoomDeclination\");\r\n\t}\r\n\r\n\t/**\r\n\t * Sets current starting index.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Start index\r\n\t */\r\n\tpublic set startIndex(value: number) {\r\n\t\tthis._startIndex = $math.fitToRange(Math.round(value), 0, this.dataItems.length);\r\n\t\t//this._workingStartIndex = this._startIndex; // not good, breaks adjusted working start index of line series\r\n\t\tthis.start = this.indexToPosition(this._startIndex);\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t * @todo:review description\r\n\t * returns item's relative position by the index of the item\r\n\t * @param index\r\n\t */\r\n\tpublic indexToPosition(index: number) {\r\n\t\treturn index / this.dataItems.length;\r\n\t}\r\n\r\n\t/**\r\n\t * Current starting index.\r\n\t *\r\n\t * @return Start index\r\n\t */\r\n\tpublic get startIndex(): number {\r\n\t\tif (!$type.isNumber(this._startIndex)) {\r\n\t\t\tthis._startIndex = 0;\r\n\t\t}\r\n\r\n\t\treturn this._startIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets current ending index.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value End index\r\n\t */\r\n\tpublic set endIndex(value: number) {\r\n\t\tthis._endIndex = $math.fitToRange(Math.round(value), 0, this.dataItems.length);\r\n\t\t//this._workingEndIndex = this._endIndex; // not good, breaks adjusted workingend index of line series\r\n\t\tthis.end = this.indexToPosition(this._endIndex);\r\n\t}\r\n\r\n\t/**\r\n\t * Current ending index.\r\n\t *\r\n\t * @return End index\r\n\t */\r\n\tpublic get endIndex(): number {\r\n\t\tlet count = this.dataItems.length;\r\n\t\tif (!$type.isNumber(this._endIndex) || this._endIndex > count) {\r\n\t\t\tthis._endIndex = count;\r\n\t\t}\r\n\t\treturn this._endIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * Start of the current data range (zoom).\r\n\t *\r\n\t * These are relative values from 0 (beginning) to 1 (end).\r\n\t *\r\n\t * @param value Start (0-1)\r\n\t */\r\n\tpublic set start(value: number) {\r\n\t\t// value = $math.round(value, 10); not good\r\n\r\n\t\t//if (1 / (this.end - value) > this.maxZoomFactor) {\r\n\t\t//\tvalue = this.end - 1 / this.maxZoomFactor;\r\n\t\t//}\r\n\t\tif (this._start != value) {\r\n\t\t\tthis._start = value;\r\n\t\t\tlet startIndex = Math.max(0, Math.floor(this.dataItems.length * value) || 0);\r\n\t\t\tthis._startIndex = Math.min(startIndex, this.dataItems.length);\r\n\t\t\tthis.invalidateDataRange();\r\n\t\t\tthis.invalidate();\r\n\t\t\tthis.dispatchImmediately(\"startchanged\");\r\n\t\t\tthis.dispatch(\"startendchanged\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Start (0-1)\r\n\t */\r\n\tpublic get start(): number {\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn this._start;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"start\", this._start);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * End of the current data range (zoom).\r\n\t *\r\n\t * These are relative values from 0 (beginning) to 1 (end).\r\n\t *\r\n\t * @param value End (0-1)\r\n\t */\r\n\tpublic set end(value: number) {\r\n\t\t// value = $math.round(value, 10); // not good\r\n\r\n\t\t//if (1 / (value - this.start) > this.maxZoomFactor) {\r\n\t\t//\tvalue = 1 / this.maxZoomFactor + this.start;\r\n\t\t//}\r\n\r\n\t\tif (this._end != value) {\r\n\t\t\tthis._end = value;\r\n\t\t\tthis._endIndex = Math.min(this.dataItems.length, Math.ceil(this.dataItems.length * value) || 0);\r\n\t\t\tthis.invalidateDataRange();\r\n\t\t\tthis.invalidate();\r\n\t\t\tthis.dispatchImmediately(\"endchanged\");\r\n\t\t\tthis.dispatch(\"startendchanged\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return End (0-1)\r\n\t */\r\n\tpublic get end(): number {\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn this._end;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"end\", this._end);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * [removeFromInvalids description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tprotected removeFromInvalids(): void {\r\n\t\tsuper.removeFromInvalids();\r\n\t\tregistry.removeFromInvalidComponents(this);\r\n\t\t$array.remove(registry.invalidDataItems, this);\r\n\t\t$array.remove(registry.invalidDataRange, this);\r\n\t\t$array.remove(registry.invalidRawDatas, this);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a list of source [[DataItem]] objects currently used in the chart.\r\n\t *\r\n\t * @return List of data items\r\n\t */\r\n\tpublic get dataItems(): OrderedListTemplate {\r\n\t\tif (this._currentDataSetId != \"\") {\r\n\t\t\tlet dataItems = this.dataSets.getKey(this._currentDataSetId);\r\n\t\t\tif (dataItems) {\r\n\t\t\t\treturn dataItems;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this._dataItems;\r\n\t}\r\n\r\n\t/**\r\n\t * Holds data items for data sets (usually aggregated data).\r\n\t *\r\n\t * @ignore\r\n\t * @since 4.7.0\r\n\t * @return Data sets\r\n\t */\r\n\tpublic get dataSets(): Dictionary> {\r\n\t\tif (!this._dataSets) {\r\n\t\t\tthis._dataSets = new Dictionary();\r\n\t\t}\r\n\t\treturn this._dataSets;\r\n\t}\r\n\r\n\t/**\r\n\t * Makes the chart use particular data set.\r\n\t *\r\n\t * If `id` is not provided or there is no such data set, main data will be\r\n\t * used.\r\n\t *\r\n\t * @ignore\r\n\t * @since 4.7.0\r\n\t * @param id Data set id\r\n\t */\r\n\tpublic setDataSet(id: string): boolean {\r\n\r\n\t\tif (this._currentDataSetId != id) {\r\n\t\t\tlet dataSet = this.dataSets.getKey(id);\r\n\t\t\tif (!dataSet) {\r\n\t\t\t\tif (this._currentDataSetId != \"\") {\r\n\t\t\t\t\tthis.dataItems.each((dataItem) => {\r\n\t\t\t\t\t\tdataItem.__disabled = true;\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tthis._currentDataSetId = \"\";\r\n\r\n\t\t\t\t\tthis.invalidateDataRange();\r\n\r\n\t\t\t\t\tthis._prevStartIndex = undefined;\r\n\r\n\t\t\t\t\tthis.dataItems.each((dataItem) => {\r\n\t\t\t\t\t\tdataItem.__disabled = false;\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.dataItems.each((dataItem) => {\r\n\t\t\t\t\tdataItem.__disabled = true;\r\n\t\t\t\t})\r\n\r\n\t\t\t\tthis._currentDataSetId = id;\r\n\r\n\t\t\t\tthis.invalidateDataRange();\r\n\r\n\t\t\t\tthis._prevStartIndex = undefined;\r\n\r\n\t\t\t\tthis.dataItems.each((dataItem) => {\r\n\t\t\t\t\tdataItem.__disabled = false;\r\n\t\t\t\t})\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false\r\n\t}\r\n\r\n\t/**\r\n\t * Returns id of the currently used data set, or `undefined` if main data set\r\n\t * is in use.\r\n\t *\r\n\t * @since 4.7.0\r\n\t * @return Current data set id\r\n\t */\r\n\tpublic get currentDataSetId(): string {\r\n\t\treturn this._currentDataSetId;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns reference to \"main\" data set (unaggregated data as it was supplied\r\n\t * in `data`).\r\n\t *\r\n\t * @since 4.7.0\r\n\t * @return Main data set\r\n\t */\r\n\tpublic get mainDataSet(): OrderedListTemplate {\r\n\t\treturn this._dataItems;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the indexes for the dataItems\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _updateDataItemIndexes(startIndex: number): void {\r\n\t\tconst dataItems = this.mainDataSet.values;\r\n\t\tconst length = dataItems.length;\r\n\r\n\t\tfor (let i = startIndex; i < length; ++i) {\r\n\t\t\tdataItems[i]._index = i;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Processes newly added [[DataItem]] as well as triggers data re-validation.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event [description]\r\n\t */\r\n\tprotected handleDataItemAdded(event: ISortedListEvents[\"inserted\"]) {\r\n\t\tevent.newValue.component = this;\r\n\r\n\t\tthis._updateDataItemIndexes(event.index);\r\n\r\n\t\tif (!this.dataItemsInvalid) {\r\n\t\t\tthis.invalidateDataItems();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * removes [[DataItem]] as well as triggers data re-validation.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event [description]\r\n\t */\r\n\tprotected handleDataItemRemoved(event: ISortedListEvents[\"removed\"]) {\r\n\t\t//\t\tevent.oldValue.component = undefined; // not good, as some items might be not removed from component lists\r\n\r\n\t\tthis._updateDataItemIndexes(event.index);\r\n\r\n\t\tif (!this.dataItemsInvalid) {\r\n\t\t\tthis.invalidateDataItems();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Binds a data element's field to a specific field in raw data.\r\n\t * For example, for the very basic column chart you'd want to bind a `value`\r\n\t * field to a field in data, such as `price`.\r\n\t *\r\n\t * Some more advanced Components, like [[CandlestickSeries]] need several\r\n\t * data fields bound to data, such as ones for open, high, low and close\r\n\t * values.\r\n\t *\r\n\t * @todo Example\r\n\t * @param field Field name\r\n\t * @param value Field name in data\r\n\t */\r\n\tpublic bindDataField(field: Key, value: this[\"_dataFields\"][Key]) {\r\n\t\tthis.dataFields[field] = value;\r\n\t\tthis.invalidateDataRange();\r\n\t}\r\n\r\n\t/**\r\n\t * Invalidates processed data.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidateProcessedData(): void {\r\n\t\tthis.resetProcessedRange();\r\n\t\tthis.invalidateDataRange();\r\n\t}\r\n\r\n\t/**\r\n\t * [resetProcessedRange description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic resetProcessedRange(): void {\r\n\t\tthis._prevEndIndex = null;\r\n\t\tthis._prevStartIndex = null;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns all other [[Component]] objects that are using this element's\r\n\t * data.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @return [description]\r\n\t */\r\n\tpublic get dataUsers(): List {\r\n\t\tif (!this._dataUsers) {\r\n\t\t\tthis._dataUsers = new List();\r\n\r\n\t\t\t//this._disposers.push(new ListDisposer(this._dataUsers));\r\n\r\n\t\t\t// TODO better way of handling this? e.g. move into another module ?\r\n\t\t\tthis._disposers.push(new Disposer(() => {\r\n\t\t\t\t// TODO clear the list ?\r\n\t\t\t\t$iter.each(this._dataUsers.iterator(), (x) => {\r\n\t\t\t\t\tx.dispose();\r\n\t\t\t\t});\r\n\t\t\t}));\r\n\t\t}\r\n\r\n\t\treturn this._dataUsers;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a clone of this element.\r\n\t *\r\n\t * @return Clone\r\n\t */\r\n\tpublic clone(): this {\r\n\t\tlet component: this = super.clone();\r\n\t\tcomponent.dataFields = $utils.copyProperties(this.dataFields, {});\r\n\t\treturn component;\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all parameters from another [[Component]].\r\n\t *\r\n\t * @param source Source Component\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\tsuper.copyFrom(source);\r\n\t\tthis.data = source.data;\r\n\t\tthis.sequencedInterpolation = source.sequencedInterpolation;\r\n\t\tthis.sequencedInterpolationDelay = source.sequencedInterpolationDelay;\r\n\t\tthis.interpolationDuration = source.interpolationDuration;\r\n\t\tthis.interpolationEasing = source.interpolationEasing;\r\n\t}\r\n\r\n\t/**\r\n\t * Invalidates the whole element, including all its children, causing\r\n\t * complete re-parsing of data and redraw.\r\n\t *\r\n\t * Use sparingly!\r\n\t */\r\n\tpublic reinit(): void {\r\n\t\tthis._inited = false;\r\n\t\tthis.deepInvalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * Add an adapter for data.\r\n\t *\r\n\t * @return Exporting\r\n\t */\r\n\tprotected getExporting(): Export {\r\n\t\tconst _export = super.getExporting();\r\n\t\tif (!_export.adapter.has(\"data\", this._exportData, -1, this)) {\r\n\t\t\t_export.adapter.add(\"data\", this._exportData, -1, this);\r\n\t\t\tthis.events.on(\"datavalidated\", (ev) => {\r\n\t\t\t\tif (_export.menu) {\r\n\t\t\t\t\t_export.menu.invalidate();\r\n\t\t\t\t}\r\n\t\t\t\t_export.handleDataUpdated();\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn _export;\r\n\t}\r\n\r\n\tprivate _exportData(arg: IExportAdapters[\"data\"]): IExportAdapters[\"data\"] {\r\n\t\targ.data = this.data;\r\n\t\treturn arg;\r\n\t}\r\n\r\n\tprotected setDisabled(value: boolean): boolean {\r\n\t\tlet changed = super.setDisabled(value);\r\n\t\tif (changed) {\r\n\t\t\tthis.invalidateData();\r\n\t\t}\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected setShowOnInit(value: boolean) {\r\n\t\tif (value != this.getPropertyValue(\"showOnInit\")) {\r\n\t\t\tif (value && !this.inited && !this.hidden) {\r\n\t\t\t\tthis._showOnInitDisposer2 = this.events.once(\"dataitemsvalidated\", this.hideInitially, this, false);\r\n\t\t\t\tthis._disposers.push(this._showOnInitDisposer2);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (this._showOnInitDisposer2) {\r\n\t\t\t\t\tthis.removeDispose(this._showOnInitDisposer2);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// important order here\r\n\t\tsuper.setShowOnInit(value);\r\n\t}\r\n\r\n\tprotected setBaseId(value: string) {\r\n\t\tif (value != this._baseId) {\r\n\t\t\tif (this.dataInvalid) {\r\n\t\t\t\tthis.dataInvalid = false;\r\n\t\t\t\tregistry.removeFromInvalidComponents(this);\r\n\t\t\t\tthis._baseId = value;\r\n\t\t\t\tthis.invalidateData();\r\n\t\t\t}\r\n\t\t}\r\n\t\tsuper.setBaseId(value);\r\n\t}\r\n\r\n\t/**\r\n\t * Use this for [[CategoryAxis]] or [[DateAxis]].\r\n\t *\r\n\t * Allows restricting zoom in beyond certain number of categories or base\r\n\t * intervals.\r\n\t *\r\n\t * @default 1\r\n\t * @param value Min zoom count\r\n\t */\r\n\tpublic set minZoomCount(value: number) {\r\n\t\tthis.setPropertyValue(\"minZoomCount\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Min zoom count\r\n\t */\r\n\tpublic get minZoomCount(): number {\r\n\t\treturn this.getPropertyValue(\"minZoomCount\");\r\n\t}\r\n\r\n\t/**\r\n\t * Use this for [[CategoryAxis]] or [[DateAxis]].\r\n\t *\r\n\t * Limits how many categories or base intervals can be shown at the same\r\n\t * time.\r\n\t *\r\n\t * If there are more items in the chart, the chart will auto-zoom.\r\n\t *\r\n\t * @default 0 (no limit)\r\n\t * @since 4.6.2\r\n\t * @param value Max zoom count\r\n\t */\r\n\tpublic set maxZoomCount(value: number) {\r\n\t\tthis.setPropertyValue(\"maxZoomCount\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Max zoom count\r\n\t */\r\n\tpublic get maxZoomCount(): number {\r\n\t\treturn this.getPropertyValue(\"maxZoomCount\");\r\n\t}\r\n\r\n\t/**\r\n\t * Called during the System.update method\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic _systemCheckIfValidate(): boolean {\r\n\t\tif (this.dataInvalid || (this.dataProvider && this.dataProvider.dataInvalid)) {\r\n\t\t\treturn false;\r\n\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Adds easing functions to \"function\" fields.\r\n\t *\r\n\t * @param field Field name\r\n\t * @return Assign as function?\r\n\t */\r\n\tprotected asFunction(field: string): boolean {\r\n\t\treturn field == \"interpolationEasing\" || field == \"rangeChangeEasing\" || super.asIs(field);\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Component\"] = Component;\r\n","/**\r\n * Container module\r\n * @todo Needs description\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite, ISpriteProperties, ISpriteAdapters, ISpriteEvents, AMEvent } from \"./Sprite\";\r\nimport { SpriteState } from \"./SpriteState\";\r\nimport { Animation } from \"./utils/Animation\";\r\nimport { List, IListEvents } from \"./utils/List\";\r\nimport { VerticalAlign } from \"./defs/VerticalAlign\";\r\nimport { IDisposer, MultiDisposer } from \"./utils/Disposer\";\r\nimport { Dictionary, DictionaryDisposer } from \"./utils/Dictionary\";\r\nimport { getInteraction } from \"./interaction/Interaction\";\r\nimport { Align } from \"./defs/Align\";\r\nimport { Group } from \"./rendering/Group\";\r\nimport { Rectangle } from \"./elements/Rectangle\";\r\nimport { IPoint } from \"./defs/IPoint\";\r\nimport { Percent } from \"./utils/Percent\";\r\nimport { registry } from \"./Registry\";\r\nimport { Preloader } from \"./elements/Preloader\";\r\nimport { DataItem } from \"./DataItem\";\r\nimport { Optional } from \"./utils/Type\";\r\nimport { InterfaceColorSet } from \"../core/utils/InterfaceColorSet\";\r\nimport { Paper } from \"./rendering/Paper\";\r\nimport * as $iter from \"./utils/Iterator\";\r\nimport * as $array from \"./utils/Array\";\r\nimport * as $math from \"./utils/Math\";\r\nimport * as $type from \"./utils/Type\";\r\nimport { system } from \"./System\";\r\nimport { options } from \"./Options\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines available font weights.\r\n */\r\nexport type FontWeight = \"normal\" | \"bold\" | \"bolder\" | \"lighter\" | \"100\" | \"200\" | \"300\" | \"400\" | \"500\" | \"600\" | \"700\" | \"800\" | \"900\";\r\n\r\n/**\r\n * Defines available text decorations.\r\n */\r\nexport type TextDecoration = \"none\" | \"underline\" | \"overline\" | \"line-through\" | \"blink\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n// Defined in DataItem.ts\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines available [[Container]] layout types\r\n */\r\nexport type ContainerLayout = \"absolute\" | \"vertical\" | \"horizontal\" | \"grid\" | \"none\";\r\n\r\n/**\r\n * Defines properties for [[Container]]\r\n */\r\nexport interface IContainerProperties extends ISpriteProperties {\r\n\r\n\t/**\r\n\t * Container layout.\r\n\t *\r\n\t * Options: \"absolute\" (default), \"vertical\", \"horizontal\", or \"grid\".\r\n\t *\r\n\t * @default \"absolute\"\r\n\t */\r\n\tlayout?: ContainerLayout;\r\n\r\n\t/**\r\n\t * Default font weight.\r\n\t *\r\n\t * @default \"normal\"\r\n\t */\r\n\tfontWeight?: FontWeight;\r\n\r\n\t/**\r\n\t * Font size for the text.\r\n\t */\r\n\tfontSize?: number;\r\n\r\n\t/**\r\n\t * Font family for the text.\r\n\t */\r\n\tfontFamily?: string;\r\n\r\n\t/**\r\n\t * Default font decoration.\r\n\t *\r\n\t * @default \"none\"\r\n\t */\r\n\ttextDecoration?: TextDecoration;\r\n\r\n\t/**\r\n\t * Horizontal alignment of Container's items.\r\n\t */\r\n\tcontentAlign?: Align;\r\n\r\n\t/**\r\n\t * Vertical alignment of Container's items.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tcontentValign?: VerticalAlign;\r\n\r\n\t/**\r\n\t * If set to `true`, all columns of the container with layout type \"grid\"\r\n\t * will be equally sized.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tfixedWidthGrid?: boolean;\r\n\r\n\t/**\r\n\t * Maximum number of columns (when using `\"grid\"` layout).\r\n\t */\r\n\tmaxColumns?: number;\r\n\r\n\t/**\r\n\t * If set to `true`, the children of the container will be drawn in reverse\r\n\t * order.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\treverseOrder?: boolean;\r\n\r\n\t/**\r\n\t * Specifies if, when state is applied on this container, the same state\r\n\t * should be applied to container's children as well as `background`.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tsetStateOnChildren?: boolean\r\n}\r\n\r\n/**\r\n * Defines events for the [[Container]]\r\n */\r\nexport interface IContainerEvents extends ISpriteEvents {\r\n\r\n\t/**\r\n\t * Invoked when a child Sprite is added to Container.\r\n\t */\r\n\tchildadded: {\r\n\t\tnewValue: Sprite;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when a child Sprite is removed from\r\n\t */\r\n\tchildremoved: {\r\n\t\toldValue: Sprite;\r\n\t};\r\n\r\n\t/**\r\n\t * invoked when layout of the container is validated\r\n\t */\r\n\tlayoutvalidated:{ }\r\n\r\n};\r\n\r\n/**\r\n * Defines adapters\r\n * Includes both the [[Adapter]] definitions and properties\r\n * @see {@link Adapter}\r\n */\r\nexport interface IContainerAdapters extends ISpriteAdapters, IContainerProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Container can contain multiple sprites and arrange them in various layouts.\r\n *\r\n * @see {@link IContainerEvents} for a list of available events\r\n * @see {@link IContainerAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class Container extends Sprite {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IContainerProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IContainerAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IContainerEvents;\r\n\r\n\t/**\r\n\t * Container children. (sorted by layout)\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _childrenByLayout: Sprite[] = [];\r\n\r\n\t/**\r\n\t * Available width (px).\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _availableWidth: $type.Optional;\r\n\r\n\t/**\r\n\t * Available height (px).\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _availableHeight: $type.Optional;\r\n\r\n\t/**\r\n\t * Container's child elements. (sorded by their `zIndex`)\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _children: $type.Optional>;\r\n\r\n\t/**\r\n\t * Container's disposers for its child elements.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _childrenDisposers: Dictionary = new Dictionary();\r\n\r\n\r\n\t/**\r\n\t * A [[Sprite]] instance to use as Container's background.\r\n\t *\r\n\t * @todo Make it protected\r\n\t */\r\n\tpublic _background: Sprite;\r\n\r\n\t/**\r\n\t * A reference to a [[Preloader]] element to show when Container is building\r\n\t * itself.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _preloader: $type.Optional;\r\n\r\n\t/**\r\n\t * Indicates if this container contains any focused elements, including\r\n\t * itself.\r\n\t */\r\n\tpublic hasFocused: boolean = false;\r\n\r\n\t/**\r\n\t * An array of references to elements the state should be set, when it is set\r\n\t * on this element.\r\n\t */\r\n\tpublic setStateOnSprites: Sprite[] = [];\r\n\r\n\t/*\r\n\t * @ignore\r\n\t */\r\n\tpublic layoutInvalid: boolean = false;\r\n\r\n\tprotected _absoluteWidth: number = 0;\r\n\r\n\tprotected _absoluteHeight: number = 0;\r\n\r\n\t/**\r\n\t * Width (in pixels) of the actual content in the Container.\r\n\t *\r\n\t * Please note that it might be bigger than width of the Container.\r\n\t *\r\n\t * @readonly\r\n\t */\r\n\tpublic contentWidth: number;\r\n\r\n\t/**\r\n\t * Height (in pixels) of the actual content in the Container.\r\n\t *\r\n\t * Please note that it might be bigger than height of the Container.\r\n\t *\r\n\t * @readonly\r\n\t */\r\n\tpublic contentHeight: number;\r\n\r\n\r\n\t/**\r\n\t * An array of child Sprites that should be ready before this object can\r\n\t * fire a \"ready\" event.\r\n\t */\r\n\tprotected _shouldBeReady: Sprite[] = [];\r\n\r\n\t/**\r\n\t * Enables touch tap protection.\r\n\t */\r\n\tprotected _tapToActivate: boolean = false;\r\n\r\n\t/**\r\n\t * Timeout reference for `tapToActivate` functionality.\r\n\t */\r\n\tprotected _tapToActivateTimeout: Optional;\r\n\r\n\t/**\r\n\t * If `tapToActivate` is used, this setting will determine how long the chart\r\n\t * will stay in \"active\" mode.\r\n\t *\r\n\t * @default 3000\r\n\t * @since 4.4.0\r\n\t */\r\n\tpublic tapTimeout: number = 3000;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"Container\";\r\n\r\n\t\tthis._element = this.paper.addGroup(\"g\");\r\n\t\tthis.group.add(this.element);\r\n\r\n\t\tthis.setPropertyValue(\"pixelPerfect\", false);\r\n\t\tthis.setPropertyValue(\"layout\", \"absolute\");\r\n\t\tthis.setPropertyValue(\"fixedWidthGrid\", false);\r\n\r\n\t\tthis.setPropertyValue(\"verticalCenter\", \"none\");\r\n\t\tthis.setPropertyValue(\"horizontalCenter\", \"none\");\r\n\r\n\t\tthis._positionPrecision = 4;\r\n\r\n\t\tthis._disposers.push(new DictionaryDisposer(this._childrenDisposers));\r\n\r\n\t\tthis.children.events.on(\"inserted\", this.handleChildAdded, this);\r\n\t\tthis.children.events.on(\"removed\", this.handleChildRemoved, this);\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles adding of a new child into `children`. Adding new children might\r\n\t * affect the whole layout so it needs to be revalidated.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Event object\r\n\t * @todo Throw an exception on adding a disposed object. Of course it's better NOT TO add disposed objects, so that what we should focus on.\r\n\t */\r\n\tpublic handleChildAdded(event: IListEvents[\"inserted\"]): void {\r\n\t\tthis.processChild(event.newValue);\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic processChild(child: Sprite) {\r\n\t\t// try solves the problem when somedy adds child directly to children\r\n\t\ttry {\r\n\t\t\tthis._childrenDisposers.insertKey(child.uid, new MultiDisposer([\r\n\t\t\t\t// it's not enough to listen to POSITION_CHANGED only, as some extra redrawals will happen.\r\n\t\t\t\tchild.events.on(\"transformed\", this.handleChildTransform, this),\r\n\t\t\t\tchild.events.on(\"zIndexChanged\", this.sortAndAdd, this)\r\n\t\t\t]));\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\t// void\r\n\t\t}\r\n\r\n\t\tif (this.element) {\r\n\t\t\tlet group = this.element;\r\n\t\t\tgroup.add(child.group);\r\n\t\t}\r\n\r\n\t\tchild.parent = this;\r\n\t\tchild.paper = this.paper;\r\n\r\n\t\tthis.dispatchImmediately(\"childadded\", { type: \"childadded\", newValue: child });\r\n\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected sortAndAdd() {\r\n\t\tthis.sortChildren();\r\n\t\tthis.addChildren();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles child removal. Changing size of the child may change the\r\n\t * whole layout of the Container, hence layout needs to be invalidated.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Event object\r\n\t */\r\n\tpublic handleChildRemoved(event: IListEvents[\"removed\"]): void {\r\n\t\tlet child: Sprite = event.oldValue;\r\n\r\n\t\t// TODO figure out why the key sometimes doesn't exist\r\n\t\tthis._childrenDisposers.removeKey(child.uid);\r\n\r\n\t\tif (this.element) {\r\n\t\t\tlet group = this.element;\r\n\t\t\tgroup.removeElement(child.group);\r\n\t\t}\r\n\r\n\t\tif (child.isMeasured) {\r\n\t\t\tthis.invalidateLayout();\r\n\t\t}\r\n\r\n\t\tthis.dispatchImmediately(\"childremoved\", { type: \"childremoved\", oldValue: child });\r\n\t}\r\n\r\n\t/**\r\n\t * Handles child transformation. Changing size of the child may change the\r\n\t * whole layout of the Container, hence layout needs to be invalidated.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Event object\r\n\t */\r\n\tpublic handleChildTransform(event: AMEvent[\"transformed\"] | AMEvent[\"sizechanged\"]): void {\r\n\t\tlet child: Sprite = event.target;\r\n\t\tif (child.isMeasured) {// && this.layout != \"none\" && this.layout != \"absolute\") {\r\n\t\t\tthis.invalidateLayout();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Invalidates Container's layout, causing it to be re-evaluated again.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidateLayout(): void {\r\n\t\tif (this.layoutInvalid || this.disabled || this.isTemplate || this.layout == \"none\" || this.__disabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.layoutInvalid = true;\r\n\t\tregistry.addToInvalidLayouts(this);\r\n\t\tsystem.requestFrame();\r\n\t}\r\n\r\n\t/**\r\n\t * Invalidates element.\r\n\t *\r\n\t * Object will be redrawn during the next update cycle.\r\n\t *\r\n\t * Please note that in most cases elements will auto-invalidate when needed. If\r\n\t * everything works, DO NOT use this method. Use it only if some changes do\r\n\t * not take otherwise.\r\n\t */\r\n\tpublic invalidate(): void {\r\n\t\tsuper.invalidate();\r\n\t\tthis.invalidateLayout();\r\n\t}\r\n\r\n\t/**\r\n\t * Invalidates the whole element, including layout AND all its child\r\n\t * elements.\r\n\t *\r\n\t * As this will essentially force all elements to redraw, use only if\r\n\t * absolutely necessary.\r\n\t */\r\n\tpublic deepInvalidate(): void {\r\n\t\tsuper.invalidate();\r\n\t\t//this.sortChildren();\r\n\r\n\t\t$array.each(this._childrenByLayout, (child) => {\r\n\t\t\tif (child instanceof Container) {\r\n\t\t\t\tchild.deepInvalidate();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tchild.invalidate();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.invalidateLayout();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a list of the child [[Sprite]] elements contained in this\r\n\t * Container.\r\n\t *\r\n\t * @return List of child elements (Sprites)\r\n\t */\r\n\tpublic get children(): List {\r\n\t\t// @todo Review if we can add all children to disposers\r\n\t\tif (!this._children) {\r\n\t\t\tthis._children = new List();\r\n\t\t\t//this._disposers.push(new ListDisposer(this._children));\r\n\t\t}\r\n\t\treturn this._children;\r\n\t}\r\n\r\n\t/**\r\n\t * Minimum width (px) for the Container. A container will not\r\n\t * auto-shrink beyond this value, even if child elements are smaller.\r\n\t *\r\n\t * @param value Width (px)\r\n\t */\r\n\tpublic set minWidth(value: Optional) {\r\n\t\tif (this.setPropertyValue(\"minWidth\", value)) {\r\n\t\t\tthis.invalidateLayout();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Width (px)\r\n\t */\r\n\tpublic get minWidth(): Optional {\r\n\t\treturn this.getPropertyValue(\"minWidth\");\r\n\t}\r\n\r\n\t/**\r\n\t * Minimum height (px) for the Container. A container will not\r\n\t * auto-shrink beyond this value, even if child elements are smaller.\r\n\t *\r\n\t * @param value Height (px)\r\n\t */\r\n\tpublic set minHeight(value: Optional) {\r\n\t\tif (this.setPropertyValue(\"minHeight\", value)) {\r\n\t\t\tthis.invalidateLayout();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Height (px)\r\n\t */\r\n\tpublic get minHeight(): Optional {\r\n\t\treturn this.getPropertyValue(\"minHeight\");\r\n\t}\r\n\r\n\t/**\r\n\t * Overrides the original `removeElement` so that Container's actual element\r\n\t * is not removed. We do not need to remove element of a Container.\r\n\t *\r\n\t * We do this because remove element each time will fail the `getBBox`.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected removeElement(): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sorts Container's children: the ones with variable width and height are\r\n\t * put at the end of the list (depending on layout type), so that fixed-width\r\n\t * ones can be drawn first.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic sortChildren(): void {\r\n\r\n\t\tthis._childrenByLayout = [];\r\n\r\n\t\tif (this.layout == \"none\" || this.layout == \"absolute\" || !this.layout) {\r\n\t\t\t//$iter.each(this.children.iterator(), (child) => {\r\n\t\t\t//\tthis._childrenByLayout.push(child);\r\n\t\t\t//});\r\n\t\t\tthis._childrenByLayout = this.children.values;\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// Assemble fixed-size and relative lists\r\n\t\t\tlet fixed: Sprite[] = [];\r\n\t\t\tlet relative: Sprite[] = [];\r\n\r\n\t\t\t$iter.each(this.children.iterator(), (child) => {\r\n\t\t\t\tif (this.layout == \"horizontal\" || this.layout == \"grid\") {\r\n\t\t\t\t\tif (!$type.isNumber(child.percentWidth)) {\r\n\t\t\t\t\t\tfixed.push(child);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\trelative.push(child);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse if (this.layout == \"vertical\") {\r\n\t\t\t\t\tif (!$type.isNumber(child.percentHeight)) {\r\n\t\t\t\t\t\tfixed.push(child);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\trelative.push(child);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfixed.push(child);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Concat everything into list\r\n\t\t\tthis._childrenByLayout = fixed.concat(relative);\r\n\t\t}\r\n\r\n\t\tthis.calculateRelativeSize();\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates relative sizes for all Container's children.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Make it protected?\r\n\t */\r\n\tpublic calculateRelativeSize(): void {\r\n\t\tlet totalRelativeWidth: number = 0;\r\n\t\tlet totalRelativeHeight: number = 0;\r\n\r\n\t\t$array.each(this._childrenByLayout, (child) => {\r\n\t\t\t// if child is not measured, we do not care about it at all.\r\n\t\t\tif (child.isMeasured) {\r\n\t\t\t\tif ($type.isNumber(child.percentWidth)) {\r\n\t\t\t\t\ttotalRelativeWidth += child.percentWidth;\r\n\t\t\t\t}\r\n\t\t\t\tif ($type.isNumber(child.percentHeight)) {\r\n\t\t\t\t\ttotalRelativeHeight += child.percentHeight;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$array.each(this._childrenByLayout, (child) => {\r\n\t\t\tif (child.isMeasured) {\r\n\t\t\t\tif (this.layout == \"horizontal\") {\r\n\t\t\t\t\tif ($type.isNumber(child.percentWidth)) {\r\n\t\t\t\t\t\tchild.relativeWidth = child.percentWidth / totalRelativeWidth;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ($type.isNumber(child.percentHeight)) {\r\n\t\t\t\t\t\tchild.relativeHeight = child.percentHeight / 100;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (this.layout == \"vertical\") {\r\n\t\t\t\t\tif ($type.isNumber(child.percentHeight)) {\r\n\t\t\t\t\t\tchild.relativeHeight = child.percentHeight / totalRelativeHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ($type.isNumber(child.percentWidth)) {\r\n\t\t\t\t\t\tchild.relativeWidth = child.percentWidth / 100;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.layout == \"grid\") {\r\n\t\t\t\t\tif ($type.isNumber(child.percentHeight)) {\r\n\t\t\t\t\t\tchild.relativeHeight = child.percentHeight / 100;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ($type.isNumber(child.percentWidth)) {\r\n\t\t\t\t\t\tchild.relativeWidth = child.percentWidth / 100;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.layout == \"absolute\" || !child.isMeasured) {\r\n\t\t\t\tif ($type.isNumber(child.percentWidth)) {\r\n\t\t\t\t\tchild.relativeWidth = child.percentWidth / 100;\r\n\t\t\t\t}\r\n\t\t\t\tif ($type.isNumber(child.percentHeight)) {\r\n\t\t\t\t\tchild.relativeHeight = child.percentHeight / 100;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Adds all children to Container's SVG element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected addChildren(): void {\r\n\t\t/*\r\n\t\t Need this check because a child might be assigned to parent even before element is created, for example a theme\r\n\t\t access scrollbar.thumb\r\n\t\t*/\r\n\t\tif (this.element) {\r\n\t\t\tlet zindexed = $array.copy(this.children.values); // not children by layout!\r\n\r\n\t\t\tlet sortArray = zindexed.map(function(data, idx) {\r\n\t\t\t\treturn { idx: idx, data: data }\r\n\t\t\t});\r\n\r\n\t\t\tsortArray.sort(function(a: any, b: any) {\r\n\t\t\t\tconst ai = (a.data.zIndex || 0);\r\n\t\t\t\tconst bi = (b.data.zIndex || 0);\r\n\t\t\t\tif (ai < bi) { return -1; }\r\n\t\t\t\tif (ai > bi) { return 1; }\r\n\t\t\t\treturn a.idx - b.idx\r\n\t\t\t});\r\n\r\n\t\t\tzindexed = sortArray.map(function(val) {\r\n\t\t\t\treturn val.data;\r\n\t\t\t});\r\n\r\n\t\t\tlet group = this.element;\r\n\r\n\t\t\t// check, maybe the order is good already\r\n\t\t\tlet isCorrect = true;\r\n\r\n\t\t\tif (group.node && group.node.childNodes) {\r\n\t\t\t\tfor (let i = 0, len = group.node.childNodes.length; i < len; i++) {\r\n\t\t\t\t\tif (group.node.childNodes[i] != zindexed[i].group.node) {\r\n\t\t\t\t\t\tisCorrect = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!isCorrect) {\r\n\t\t\t\t$array.each(zindexed, (child) => {\r\n\t\t\t\t\tif (child.group) {\r\n\t\t\t\t\t\tgroup.add(child.group);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\r\n\t\t\t\tif (this._background) {\r\n\t\t\t\t\tthis.group.addToBack(this._background.group);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.invalidateLayout();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new element of specific type and assigns as a child to the\r\n\t * Container.\r\n\t *\r\n\t * @param Class type for the new element\r\n\t * @return New element\r\n\t */\r\n\tpublic createChild(classType: { new(): T; }): T {\r\n\t\tlet sprite = new classType();\r\n\t\tsprite.parent = this;\r\n\t\treturn sprite;\r\n\t}\r\n\r\n\t/**\r\n\t * Removes all Container's children without actually destroying them.\r\n\t *\r\n\t * To destroy children use `disposeChildren()` instead.\r\n\t */\r\n\tpublic removeChildren(): void {\r\n\t\t// remove all children\r\n\t\t// TODO use iteration instead\r\n\t\twhile (this.children.length > 0) {\r\n\t\t\tlet child = this.children.getIndex(0);\r\n\t\t\tchild.parent = undefined;\r\n\t\t\tthis.children.removeValue(child);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Removes and destroys all Container's children.\r\n\t *\r\n\t * To remove children from Container without destroying them, use\r\n\t * `removeChildren()`.\r\n\t */\r\n\tpublic disposeChildren(): void {\r\n\t\t// TODO use iteration instead\r\n\t\twhile (this.children.length > 0) {\r\n\t\t\tlet child = this.children.getIndex(0);\r\n\t\t\tchild.dispose();\r\n\t\t\tthis.children.removeValue(child);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * An element to use as container background.\r\n\t *\r\n\t * @param background Background element\r\n\t */\r\n\tpublic set background(background: this[\"_background\"]) {\r\n\t\tif (this._background && this.background != background) {\r\n\t\t\tthis.removeDispose(this._background);\r\n\t\t}\r\n\r\n\t\tif (background) {\r\n\t\t\tthis._background = background;\r\n\t\t\tthis._disposers.push(background);\r\n\t\t\tthis.processBackground();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the situation where parent element is resized.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic handleGlobalScale(): void {\r\n\t\tsuper.handleGlobalScale();\r\n\t\tthis.children.each((child) => {\r\n\t\t\tchild.handleGlobalScale();\r\n\t\t})\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a [[Rectangle]] to use as a background for Container.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Background Rectangle element\r\n\t */\r\n\tpublic createBackground(): this[\"_background\"] {\r\n\t\treturn new Rectangle();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Background element\r\n\t */\r\n\tpublic get background(): this[\"_background\"] {\r\n\t\tif (!this._background) {\r\n\t\t\tthis._background = this.createBackground();\r\n\t\t\tthis.processBackground();\r\n\t\t}\r\n\r\n\t\treturn this._background;\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates background element with required properties.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic processBackground(): void {\r\n\t\tlet background = this._background;\r\n\t\tif (background) {\r\n\t\t\tbackground.isMeasured = false;\r\n\t\t\tthis._background.fill = new InterfaceColorSet().getFor(\"background\");\r\n\t\t\tbackground.parent = this;\r\n\t\t\tbackground.isMeasured = false;\r\n\t\t\tthis.children.removeValue(background);\r\n\t\t\tthis._disposers.push(background);\r\n\t\t\tthis.group.addToBack(this._background.group);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Measures the size of container and informs its children of how much size\r\n\t * they can occupy, by setting their relative `maxWidth` and `maxHeight`\r\n\t * properties.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateLayout(): void {\r\n\r\n\t\tregistry.removeFromInvalidLayouts(this);\r\n\r\n\t\tthis.layoutInvalid = false;\r\n\r\n\t\t// prevents from drawing if topparent is 0x0\r\n\t\t/*\r\n\t\tlet topParent = this.topParent;\r\n\t\tif (topParent) {\r\n\t\t\tif (!topParent.maxWidth || !topParent.maxHeight) {\r\n\t\t\t\tthis._disposers.push(topParent.events.once(\"maxsizechanged\", this.invalidateLayout, this));\r\n\t\t\t}\r\n\t\t}*/\r\n\r\n\t\tthis._availableWidth = this.innerWidth;\r\n\t\tthis._availableHeight = this.innerHeight;\r\n\r\n\t\tlet measuredWidth = 0;\r\n\t\tlet measuredHeight = 0;\r\n\r\n\t\tlet allValid = true;\r\n\r\n\t\tif (this.children) {\r\n\r\n\t\t\tthis.sortChildren();\r\n\r\n\t\t\t// we itterate through list of children, sorted by layout priority. sprites which width non-relative width/height will go first, so we will reduce available width before proceeding to sprites with relative width/height\r\n\t\t\t$array.each(this._childrenByLayout, (child) => {\r\n\t\t\t\tlet maxWidth: number;\r\n\t\t\t\tlet maxHeight: number;\r\n\r\n\t\t\t\tif ($type.isNumber(child.relativeWidth)) {\r\n\t\t\t\t\tmaxWidth = $math.round(this._availableWidth * child.relativeWidth, 2);\r\n\t\t\t\t\tif (this.layout == \"horizontal\") {// || this.layout == \"absolute\") {\r\n\t\t\t\t\t\tmaxWidth -= child.pixelMarginRight + child.pixelMarginLeft;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (this.layout == \"horizontal\") {\r\n\t\t\t\t\t\tif (child.invalid) {\r\n\t\t\t\t\t\t\tchild.validate();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ($type.isNumber(child.relativeHeight)) {\r\n\t\t\t\t\tmaxHeight = $math.round(this._availableHeight * child.relativeHeight, 2);\r\n\t\t\t\t\tif (this.layout == \"vertical\") {// || this.layout == \"absolute\") {\r\n\t\t\t\t\t\tmaxHeight -= child.pixelMarginTop + child.pixelMarginBottom;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (this.layout == \"vertical\") {\r\n\t\t\t\t\t\tif (child.invalid) {\r\n\t\t\t\t\t\t\tchild.validate();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// if child is valid\r\n\t\t\t\tif (child.invalid == false) {\r\n\r\n\t\t\t\t\tif ($type.isNumber(child.relativeWidth)) {\r\n\t\t\t\t\t\tchild.maxWidth = maxWidth;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ($type.isNumber(child.relativeHeight)) {\r\n\t\t\t\t\t\tchild.maxHeight = maxHeight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (child.isMeasured) {\r\n\t\t\t\t\t\t// reduce available width if this is horizontal layout\r\n\t\t\t\t\t\tif (this.layout == \"horizontal\") {\r\n\t\t\t\t\t\t\tif (!$type.isNumber(child.percentWidth)) {\r\n\t\t\t\t\t\t\t\tif (child.measuredWidth > 0) {\r\n\t\t\t\t\t\t\t\t\tthis._availableWidth -= child.measuredWidth + child.pixelMarginLeft + child.pixelMarginRight;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// reduce available height if this is vertical layout\r\n\t\t\t\t\t\tif (this.layout == \"vertical\") {\r\n\t\t\t\t\t\t\tif (!$type.isNumber(child.percentHeight)) {\r\n\t\t\t\t\t\t\t\tif (child.measuredHeight > 0) {\r\n\t\t\t\t\t\t\t\t\tthis._availableHeight -= child.measuredHeight + child.pixelMarginTop + child.pixelMarginBottom;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlet childMeasuredWidth = child.measuredWidth;\r\n\t\t\t\t\t\tlet childMeasuredHeight = child.measuredHeight;\r\n\r\n\t\t\t\t\t\tif (child.align != \"none\") {\r\n\t\t\t\t\t\t\tchildMeasuredWidth += child.pixelMarginLeft + child.pixelMarginRight;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (child.valign != \"none\") {\r\n\t\t\t\t\t\t\tchildMeasuredHeight += child.pixelMarginTop + child.pixelMarginBottom;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmeasuredWidth = Math.max(measuredWidth, childMeasuredWidth);\r\n\t\t\t\t\t\tmeasuredHeight = Math.max(measuredHeight, childMeasuredHeight);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// if child is not valid\r\n\t\t\t\telse {\r\n\t\t\t\t\t// tell child what maximum width/ height it can occupy\r\n\t\t\t\t\tif (child.isMeasured) {\r\n\t\t\t\t\t\tif ($type.isNumber(child.relativeWidth)) {\r\n\t\t\t\t\t\t\tif (child.maxWidth != maxWidth) { // need to check this because of allValid\r\n\t\t\t\t\t\t\t\tchild.maxWidth = maxWidth;\r\n\t\t\t\t\t\t\t\tallValid = false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ($type.isNumber(child.relativeHeight)) {\r\n\t\t\t\t\t\t\tif (child.maxHeight != maxHeight) { // need to check this because of allValid\r\n\t\t\t\t\t\t\t\tchild.maxHeight = maxHeight;\r\n\r\n\t\t\t\t\t\t\t\tallValid = false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._absoluteWidth = measuredWidth;\r\n\t\tthis._absoluteHeight = measuredHeight;\r\n\r\n\t\t// arrange after measuring, only if all children are valid already\r\n\t\tif (allValid) {\r\n\t\t\tthis.arrange();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Arranges children according to layout specs and available space / child\r\n\t * sizes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic arrange(): void {\r\n\t\tlet children = this.children;\r\n\t\t/*\r\n\t\t in this method we not only arrange children but also find out the size of the container\r\n\t\t it might seem it would be easier to get container size using sprite's measure method,\r\n\t\t however it would return only actual size of the bbox. However as each child meight have\r\n\t\t margins set, we need to check each child - we do it here.\r\n\r\n\t\t This method doesn't do anything with DOM, so it's not expensive\r\n\t\t*/\r\n\t\tlet measuredWidth: number = 0;\r\n\t\tlet measuredHeight: number = 0;\r\n\r\n\t\t//let innerWidth: number = this.innerWidth; //$math.max(this.innerWidth, this._measuredWidth - paddingLeft - paddingRight);\r\n\t\t//let innerHeight: number = this.innerHeight; //$math.max(this.innerHeight, this._measuredHeight - paddingTop - paddingBottom);\r\n\t\t// above is wrong, as if a w/h is not specified, it is 0 and alignment doesn't work at all.\r\n\t\tlet innerWidth: number = $math.max(this.innerWidth, this._absoluteWidth);\r\n\t\tlet innerHeight: number = $math.max(this.innerHeight, this._absoluteHeight);\r\n\r\n\t\tlet left: $type.Optional;// = 0;\r\n\t\tlet right: $type.Optional;// = innerWidth;\r\n\t\tlet top: $type.Optional;// = 0;\r\n\t\tlet bottom: $type.Optional;// = innerHeight;\r\n\r\n\t\tlet paddingLeft: number = this.pixelPaddingLeft;\r\n\t\tlet paddingRight: number = this.pixelPaddingRight;\r\n\t\tlet paddingTop: number = this.pixelPaddingTop;\r\n\t\tlet paddingBottom: number = this.pixelPaddingBottom;\r\n\r\n\t\tlet nextX: number = 0;\r\n\t\tlet nextY: number = 0;\r\n\t\tlet row: number = 0;\r\n\t\tlet column: number = 0;\r\n\r\n\t\tlet columnWidth: number[] = [];\r\n\t\tlet rowHeight: number[] = [];\r\n\r\n\t\tlet maxCellWidth: $type.Optional;\r\n\t\tlet minCellWidth: $type.Optional;\r\n\t\tlet columnCount: $type.Optional;\r\n\r\n\t\tlet maxWidth = this.maxWidth;\r\n\t\tlet maxHeight = this.maxHeight;\r\n\t\tlet minWidth = this.minWidth;\r\n\t\tlet minHeight = this.minHeight;\r\n\r\n\t\tlet childrenCopy = $array.copy(children.values);\r\n\t\tif (this.reverseOrder) {\r\n\t\t\tchildrenCopy.reverse();\r\n\t\t}\r\n\r\n\t\t// GRID PRECALCULATIONS\r\n\t\tif (this.layout == \"grid\") {\r\n\r\n\t\t\tminCellWidth = maxWidth;\r\n\t\t\tmaxCellWidth = 1;\r\n\r\n\t\t\tfor (let i = 0, len = childrenCopy.length; i < len; i++) {\r\n\t\t\t\tlet child = childrenCopy[i];\r\n\t\t\t\tif (child.isMeasured && !child.disabled && !child.__disabled) {\r\n\t\t\t\t\tlet childMeasuredWidth = child.measuredWidth;\r\n\t\t\t\t\tif (childMeasuredWidth < minCellWidth) {\r\n\t\t\t\t\t\tminCellWidth = childMeasuredWidth;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (childMeasuredWidth > maxCellWidth) {\r\n\t\t\t\t\t\tmaxCellWidth = childMeasuredWidth;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tminCellWidth = $math.fitToRange(minCellWidth, 1, maxWidth);\r\n\t\t\tmaxCellWidth = $math.fitToRange(maxCellWidth, 1, maxWidth);\r\n\r\n\r\n\t\t\tif (this.fixedWidthGrid) {\r\n\t\t\t\tcolumnCount = maxWidth / maxCellWidth;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcolumnCount = maxWidth / minCellWidth; // predicted number of columns, yes it is usually much more than real number, but we fix that later\r\n\t\t\t}\r\n\r\n\t\t\tcolumnCount = $math.max(1, Math.floor(columnCount));\r\n\t\t\tcolumnCount = $math.min(this.maxColumns, columnCount);\r\n\t\t\tcolumnWidth = this.getColumnWidth(childrenCopy, columnCount, maxCellWidth);\r\n\t\t}\r\n\r\n\t\tlet contentLeft: $type.Optional;\r\n\t\tlet contentRight: $type.Optional;\r\n\t\tlet contentTop: $type.Optional;\r\n\t\tlet contentBottom: $type.Optional;\r\n\r\n\t\t// we itterate through array of children\r\n\t\t// TODO use iterator instead\r\n\r\n\r\n\r\n\t\tfor (let i = 0, len = childrenCopy.length; i < len; i++) {\r\n\t\t\tlet child = childrenCopy[i];\r\n\r\n\t\t\tif (child.isMeasured && !child.disabled && !child.__disabled) {\r\n\r\n\t\t\t\tlet x: $type.Optional = undefined;//child.pixelX; // must reset\r\n\t\t\t\tlet y: $type.Optional = undefined;//child.pixelY; // must reset\r\n\r\n\t\t\t\tlet childMarginLeft: number = child.pixelMarginLeft;\r\n\t\t\t\tlet childMarginRight: number = child.pixelMarginRight;\r\n\t\t\t\tlet childMarginTop: number = child.pixelMarginTop;\r\n\t\t\t\tlet childMarginBottom: number = child.pixelMarginBottom;\r\n\r\n\t\t\t\tlet childWidth: number = child.measuredWidth;\r\n\t\t\t\tlet childHeight: number = child.measuredHeight;\r\n\r\n\t\t\t\tlet childLeft: $type.Optional;\r\n\t\t\t\tlet childRight: $type.Optional;\r\n\t\t\t\tlet childTop: $type.Optional;\r\n\t\t\t\tlet childBottom: $type.Optional;\r\n\r\n\t\t\t\tswitch (this.layout) {\r\n\t\t\t\t\tcase \"none\":\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t// absolute layout\r\n\t\t\t\t\tcase \"absolute\":\r\n\t\t\t\t\t\t// horizontal alignment\r\n\t\t\t\t\t\tswitch (child.align) {\r\n\t\t\t\t\t\t\tcase \"left\":\r\n\t\t\t\t\t\t\t\tx = childMarginLeft - child.maxLeft;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase \"center\":\r\n\t\t\t\t\t\t\t\tx = (innerWidth - childWidth) / 2 - child.maxLeft;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\t\t\t\tx = innerWidth - childMarginRight - child.maxRight;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\tif (!(child.x instanceof Percent)) {\r\n\t\t\t\t\t\t\t\t\tx = child.pixelX;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// vertical alignment\r\n\t\t\t\t\t\tswitch (child.valign) {\r\n\t\t\t\t\t\t\tcase \"top\":\r\n\t\t\t\t\t\t\t\ty = childMarginTop - child.maxTop;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\t\t\t\ty = (innerHeight - childHeight) / 2 - child.maxTop;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase \"bottom\":\r\n\t\t\t\t\t\t\t\ty = innerHeight - childMarginBottom - child.maxBottom;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\tif (!(child.y instanceof Percent)) {\r\n\t\t\t\t\t\t\t\t\ty = child.pixelY;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t// vertical layout\r\n\t\t\t\t\tcase \"vertical\":\r\n\t\t\t\t\t\t//if ($type.isNumber(child.relativeHeight)) {\r\n\t\t\t\t\t\t//\tchildHeight = child.maxHeight;\r\n\t\t\t\t\t\t//}\r\n\r\n\t\t\t\t\t\tswitch (child.align) {\r\n\t\t\t\t\t\t\tcase \"left\":\r\n\t\t\t\t\t\t\t\tx = childMarginLeft - child.maxLeft;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase \"center\":\r\n\t\t\t\t\t\t\t\tx = (innerWidth - childWidth) / 2 - child.maxLeft;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\t\t\t\tx = innerWidth - childMarginRight - child.maxRight;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\tx = child.pixelX;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ty = nextY + childMarginTop - child.maxTop;\r\n\t\t\t\t\t\tnextY = y + child.maxBottom + childMarginBottom;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t// horizontal layout\r\n\t\t\t\t\tcase \"horizontal\":\r\n\r\n\t\t\t\t\t\t//if ($type.isNumber(child.relativeHeight)) {\r\n\t\t\t\t\t\t//\tchildHeight = child.maxHeight;\r\n\t\t\t\t\t\t//}\r\n\r\n\t\t\t\t\t\tswitch (child.valign) {\r\n\t\t\t\t\t\t\tcase \"top\":\r\n\t\t\t\t\t\t\t\ty = childMarginTop - child.maxTop;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\t\t\t\ty = (innerHeight - childHeight) / 2 - child.maxTop;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase \"bottom\":\r\n\t\t\t\t\t\t\t\ty = innerHeight - childMarginBottom - child.maxBottom;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\ty = child.pixelY;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tx = nextX + childMarginLeft - child.maxLeft;\r\n\t\t\t\t\t\tnextX = x + child.maxRight + childMarginRight;\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"grid\":\r\n\t\t\t\t\t\tx = nextX + childMarginLeft - child.maxLeft;\r\n\t\t\t\t\t\tswitch (child.valign) {\r\n\t\t\t\t\t\t\tcase \"top\":\r\n\t\t\t\t\t\t\t\ty = nextY + childMarginTop - child.maxTop;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\t\t\t\ty = nextY + (innerHeight - childHeight) / 2 - child.maxTop;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase \"bottom\":\r\n\t\t\t\t\t\t\t\ty = nextY + innerHeight - childMarginBottom - child.maxBottom;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\ty = nextY - child.maxTop;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tnextX += columnWidth[column];\r\n\r\n\t\t\t\t\t\trowHeight[row] = $math.max(rowHeight[row], childHeight);\r\n\t\t\t\t\t\tcolumn++;\r\n\r\n\t\t\t\t\t\tlet nextColumnWidth = columnWidth[column];\r\n\r\n\t\t\t\t\t\tif (!$type.isNumber(nextColumnWidth)) {\r\n\t\t\t\t\t\t\tnextColumnWidth = maxCellWidth;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (nextX > $math.min(this.innerWidth, maxWidth) - nextColumnWidth + 1 && column < columnCount) {\r\n\t\t\t\t\t\t\tcolumnCount = column;\r\n\r\n\t\t\t\t\t\t\tnextX = 0;\r\n\t\t\t\t\t\t\tnextY = 0;\r\n\r\n\t\t\t\t\t\t\trow = 0;\r\n\t\t\t\t\t\t\tcolumn = 0;\r\n\r\n\t\t\t\t\t\t\tcolumnWidth = this.getColumnWidth(childrenCopy, columnCount, maxCellWidth);\r\n\t\t\t\t\t\t\trowHeight = [];\r\n\r\n\t\t\t\t\t\t\ti = -1;\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (column >= columnCount) {\r\n\t\t\t\t\t\t\tcolumn = 0;\r\n\t\t\t\t\t\t\tnextY += rowHeight[row];\r\n\t\t\t\t\t\t\trow++;\r\n\t\t\t\t\t\t\tnextX = 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.layout !== \"none\") {\r\n\t\t\t\t\tchild.moveTo({ x: x, y: y }); // must use moveTo, otherwise x/y set in percent won't work\r\n\r\n\t\t\t\t\tchildLeft = x + child.maxLeft - childMarginLeft;\r\n\t\t\t\t\tchildRight = x + child.maxRight + childMarginRight;\r\n\t\t\t\t\tchildTop = y + child.maxTop - childMarginTop;\r\n\t\t\t\t\tchildBottom = y + child.maxBottom + childMarginBottom;\r\n\r\n\t\t\t\t\tif (childRight > right || !$type.isNumber(right)) {\r\n\t\t\t\t\t\tright = childRight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (childLeft < left || !$type.isNumber(left)) {\r\n\t\t\t\t\t\tleft = childLeft;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (childTop < top || !$type.isNumber(top)) {\r\n\t\t\t\t\t\ttop = childTop;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (childBottom > bottom || !$type.isNumber(bottom)) {\r\n\t\t\t\t\t\tbottom = childBottom;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (childRight > contentRight || !$type.isNumber(contentRight)) {\r\n\t\t\t\t\t\tcontentRight = childRight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (childLeft < contentLeft || !$type.isNumber(contentLeft)) {\r\n\t\t\t\t\t\tcontentLeft = childLeft;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (childTop < contentTop || !$type.isNumber(contentTop)) {\r\n\t\t\t\t\t\tcontentTop = childTop;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (childBottom > contentBottom || !$type.isNumber(contentBottom)) {\r\n\t\t\t\t\t\tcontentBottom = contentBottom;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tchild.validatePosition();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.layout == \"none\") {\r\n\t\t\tlet noneBBox = this.bbox;\r\n\t\t\tleft = noneBBox.x;\r\n\t\t\tright = noneBBox.x + noneBBox.width;\r\n\t\t\ttop = noneBBox.y;\r\n\t\t\tbottom = noneBBox.y + noneBBox.height;\r\n\t\t}\r\n\r\n\t\tif (!$type.isNumber(left)) {\r\n\t\t\tleft = 0;\r\n\t\t\tcontentLeft = 0;\r\n\t\t}\r\n\r\n\t\tif (!$type.isNumber(right)) {\r\n\t\t\tright = this._availableWidth;\r\n\t\t\tcontentRight = right;\r\n\t\t}\r\n\r\n\t\tif (!$type.isNumber(top)) {\r\n\t\t\ttop = 0;\r\n\t\t\tcontentTop = 0;\r\n\t\t}\r\n\r\n\t\tif (!$type.isNumber(bottom)) {\r\n\t\t\tbottom = this._availableHeight;\r\n\t\t\tcontentBottom = bottom;\r\n\t\t}\r\n\r\n\t\tif (!$type.isNumber(contentTop)) {\r\n\t\t\tcontentTop = 0;\r\n\t\t}\r\n\r\n\t\tif (!$type.isNumber(contentBottom)) {\r\n\t\t\tcontentBottom = contentTop;\r\n\t\t}\r\n\r\n\t\tif (!$type.isNumber(contentLeft)) {\r\n\t\t\tcontentLeft = 0;\r\n\t\t}\r\n\r\n\t\tif (!$type.isNumber(contentRight)) {\r\n\t\t\tcontentRight = contentLeft;\r\n\t\t}\r\n\r\n\t\tmeasuredWidth = right - left;\r\n\t\tmeasuredHeight = bottom - top;\r\n\r\n\t\tif ($type.isNumber(this.relativeWidth)) {\r\n\t\t\tmeasuredWidth = maxWidth - paddingLeft - paddingRight;\r\n\t\t\tleft = 0;\r\n\t\t\tright = measuredWidth;\r\n\t\t}\r\n\r\n\t\tif ($type.isNumber(this.relativeHeight)) {\r\n\t\t\tmeasuredHeight = maxHeight - paddingTop - paddingBottom;\r\n\t\t\ttop = 0;\r\n\t\t\tbottom = measuredHeight;\r\n\t\t}\r\n\r\n\t\tif ($type.isNumber(this._pixelWidth)) {\r\n\t\t\tleft = 0;\r\n\t\t\tmeasuredWidth = this._pixelWidth - paddingLeft - paddingRight;\r\n\t\t}\r\n\r\n\t\tif ($type.isNumber(minWidth) && measuredWidth < minWidth) {\r\n\t\t\tleft = 0;\r\n\t\t\tmeasuredWidth = this.minWidth - paddingLeft - paddingRight;\r\n\t\t}\r\n\r\n\t\tif ($type.isNumber(this._pixelHeight)) {\r\n\t\t\ttop = 0;\r\n\t\t\tmeasuredHeight = this._pixelHeight - paddingTop - paddingBottom;\r\n\t\t}\r\n\r\n\t\tif ($type.isNumber(minHeight) && measuredHeight < minHeight) {\r\n\t\t\ttop = 0;\r\n\t\t\tmeasuredHeight = minHeight - paddingTop - paddingBottom;\r\n\t\t}\r\n\r\n\t\tlet measuredContentWidth = contentRight - contentLeft;\r\n\t\tlet measuredContentHeight = contentBottom - contentTop;\r\n\r\n\t\t/// handle content alignment\r\n\t\tif (this.layout != \"none\" && (this.contentAlign || this.contentValign) && children.length > 0) {\r\n\t\t\tlet dx: $type.Optional;\r\n\t\t\tlet dy: $type.Optional;\r\n\r\n\t\t\tlet mwa = measuredWidth;\r\n\t\t\tlet mha = measuredHeight;\r\n\t\t\tif (mwa < measuredContentWidth) {\r\n\t\t\t\tmwa = measuredContentWidth;\r\n\t\t\t}\r\n\r\n\t\t\tif (mha < measuredContentHeight) {\r\n\t\t\t\tmha = measuredContentHeight;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.contentAlign == \"center\") {\r\n\t\t\t\tdx = (mwa - measuredContentWidth) / 2;\r\n\t\t\t}\r\n\t\t\tif (this.contentAlign == \"right\") {\r\n\t\t\t\tdx = mwa - measuredContentWidth;\r\n\t\t\t}\r\n\t\t\tif (this.contentValign == \"middle\") {\r\n\t\t\t\tdy = (mha - measuredContentHeight) / 2;\r\n\t\t\t}\r\n\t\t\tif (this.contentValign == \"bottom\") {\r\n\t\t\t\tdy = mha - measuredContentHeight;\r\n\t\t\t}\r\n\r\n\t\t\tif ($type.isNumber(dx)) {\r\n\t\t\t\t$iter.each(children.iterator(), (child) => {\r\n\t\t\t\t\tlet childLeft: number = child.maxLeft;\r\n\r\n\t\t\t\t\tlet ddx: number = dx;\r\n\r\n\t\t\t\t\tif (this.layout == \"horizontal\") {\r\n\t\t\t\t\t\tchild.x = child.pixelX + ddx;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// individual grid elements can not be aligned vertically, that's why it's different from horizontal\r\n\t\t\t\t\tif (this.layout == \"grid\") {\r\n\t\t\t\t\t\tchild.x = child.pixelX + ddx;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.layout == \"vertical\") {\r\n\t\t\t\t\t\tddx += child.pixelMarginLeft;\r\n\t\t\t\t\t\tif (child.align == \"none\") {\r\n\t\t\t\t\t\t\tchild.x = ddx - childLeft;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this.layout == \"absolute\") {\r\n\t\t\t\t\t\tddx += child.pixelMarginLeft;\r\n\t\t\t\t\t\tif (child.align == \"none\") {\r\n\t\t\t\t\t\t\tchild.x = ddx - childLeft;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif ($type.isNumber(dy)) {\r\n\t\t\t\t$iter.each(children.iterator(), (child) => {\r\n\t\t\t\t\tlet childTop: number = child.maxTop;\r\n\r\n\t\t\t\t\tlet ddy: number = dy;\r\n\r\n\t\t\t\t\tif (this.layout == \"horizontal\") {\r\n\t\t\t\t\t\tddy += child.pixelMarginTop;\r\n\t\t\t\t\t\tif (child.valign == \"none\") {\r\n\t\t\t\t\t\t\tchild.y = ddy - childTop;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// individual grid elements can not be aligned vertically, that's why it's different from horizontal\r\n\t\t\t\t\tif (this.layout == \"grid\") {\r\n\t\t\t\t\t\tddy += child.pixelMarginTop;\r\n\t\t\t\t\t\tchild.y = ddy - childTop;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.layout == \"vertical\") {\r\n\t\t\t\t\t\tchild.y = child.pixelY + ddy;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this.layout == \"absolute\") {\r\n\t\t\t\t\t\tddy += child.pixelMarginTop;\r\n\r\n\t\t\t\t\t\tif (child.valign == \"none\") {\r\n\t\t\t\t\t\t\tchild.y = ddy - childTop;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet oldBBox = this.bbox;\r\n\r\n\r\n\t\t// this will mess up maxw/maxh set by container layout, we need a separate min/maxwidth for users\r\n\t\t// this prevents invalidating layout in such cases as scrolling category axis, when labels go outside bounds and results transformed event\r\n\t\t// todo: need to check if this doesn't cause other problems.\r\n\t\t//if (this.maxWidth > 0) {\r\n\t\t//measuredWidth = $math.min(measuredWidth, this.maxWidth);\r\n\t\t//measuredWidth = $math.max(measuredWidth, this.minWidth);\r\n\t\t//}\r\n\r\n\t\t//if (this.maxHeight > 0) {\r\n\t\t//measuredHeight = $math.min(measuredHeight, this.maxHeight);\r\n\t\t//measuredHeight = $math.max(measuredHeight, this.minHeight);\r\n\t\t//}\r\n\r\n\t\tmeasuredWidth = $math.max(measuredWidth, minWidth);\r\n\t\tmeasuredHeight = $math.max(measuredHeight, minHeight);\r\n\r\n\t\tthis.contentWidth = measuredWidth;\r\n\t\tthis.contentHeight = measuredHeight;\r\n\t\t// new\r\n\t\tmeasuredWidth = $math.min(measuredWidth, maxWidth);\r\n\t\tmeasuredHeight = $math.min(measuredHeight, maxHeight);\r\n\r\n\t\tthis._bbox = { x: left, y: top, width: measuredWidth, height: measuredHeight };\r\n\r\n\t\tlet prevLeft = this.maxLeft;\r\n\t\tlet prevTop = this.maxTop;\r\n\t\tlet prevBotttom = this.maxBottom;\r\n\t\tlet prevRight = this.maxRight;\r\n\r\n\t\tthis.measure();\r\n\r\n\t\tif (prevLeft != this.maxLeft || prevRight != this.maxRight || prevTop != this.maxTop || prevBotttom != this.maxBottom) {\r\n\t\t\tif (this.events.isEnabled(\"transformed\")) {\r\n\t\t\t\tlet event: AMEvent[\"transformed\"] = {\r\n\t\t\t\t\ttype: \"transformed\",\r\n\t\t\t\t\ttarget: this\r\n\t\t\t\t};\r\n\t\t\t\tif (oldBBox) {\r\n\t\t\t\t\tevent.dummyData = oldBBox.width + \" \" + measuredWidth + \" \" + oldBBox.height + \" \" + measuredHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.events.dispatchImmediately(\"transformed\", event);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dispatchImmediately(\"layoutvalidated\");\r\n\t}\r\n\r\n\t/**\r\n\t * Positions element according its center settings.\r\n\t *\r\n\t * @todo Description (review)\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateCenter() {\r\n\t\tsuper.updateCenter();\r\n\t\tthis.updateBackground();\r\n\t}\r\n\r\n\t/**\r\n\t * Update the background to fit into specific dimensions.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Make it protected?\r\n\t */\r\n\tpublic updateBackground(): void {\r\n\t\tlet background: Sprite = this._background; // accessing protected, as getter creates instance if it doesn't exist\r\n\r\n\t\tif (background) {\r\n\t\t\tbackground.x = this.maxLeft;\r\n\t\t\tbackground.y = this.maxTop;\r\n\t\t\tbackground.width = this.maxRight - this.maxLeft;\r\n\t\t\tbackground.height = this.maxBottom - this.maxTop;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns widths of all columns in a horizontal Container layout.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param columnCount Number of columns\r\n\t * @param maxCellWidth Maximum width of one grid cell\r\n\t * @return An array of column widths\r\n\t */\r\n\tpublic getColumnWidth(children: Sprite[], columnCount: number, maxCellWidth: number): number[] {\r\n\t\tlet columnWidth: number[] = [];\r\n\t\tlet column: number = 0;\r\n\r\n\t\t$array.each(children, (child) => {\r\n\t\t\tif (child.isMeasured && !child.disabled && !child.__disabled) {\r\n\t\t\t\tif (this.fixedWidthGrid) {\r\n\t\t\t\t\tcolumnWidth[column] = maxCellWidth;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tcolumnWidth[column] = $math.max(columnWidth[column], child.measuredWidth + child.pixelMarginRight + child.pixelMarginLeft);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcolumn++;\r\n\r\n\t\t\t\tif (column == columnCount) {\r\n\t\t\t\t\tcolumn = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn columnWidth;\r\n\t}\r\n\r\n\t/**\r\n\t * Container layout.\r\n\t *\r\n\t * Options: \"absolute\" (default), \"vertical\", \"horizontal\", \"grid\", \"none\". \"none\" is quite the same as \"absolute\" - the objects will\r\n\t * be positioned at their x, y coordinates, the difference is that with \"absolute\" you can still use align/valign for children and with \"none\" you can not.\r\n\t * Use \"none\" as much as you can as it's most cpu-saving layout.\r\n\t *\r\n\t * @default \"absolute\"\r\n\t * @param value Layout\r\n\t */\r\n\tpublic set layout(value: ContainerLayout) {\r\n\t\tif (this.setPropertyValue(\"layout\", value)) {\r\n\t\t\tthis.invalidateLayout();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Layout\r\n\t */\r\n\tpublic get layout(): ContainerLayout {\r\n\t\treturn this.getPropertyValue(\"layout\");\r\n\t}\r\n\r\n\t/**\r\n\t * Vertical alignment of the elements for the vertical Container.\r\n\t *\r\n\t * This is used when Container is larger than the height of all its children.\r\n\t *\r\n\t * @param value vertical alignment\r\n\t */\r\n\tpublic set contentValign(value: VerticalAlign) {\r\n\t\tthis.setPropertyValue(\"contentValign\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Vertical alignment\r\n\t */\r\n\tpublic get contentValign(): VerticalAlign {\r\n\t\treturn this.getPropertyValue(\"contentValign\");\r\n\t}\r\n\r\n\t/**\r\n\t * Horizontal alignment of the elements for the horizontal Container.\r\n\t *\r\n\t * This is used when Container is larger than the height of all its children.\r\n\t *\r\n\t * @param value Horizontal alignment\r\n\t */\r\n\tpublic set contentAlign(value: Align) {\r\n\t\tthis.setPropertyValue(\"contentAlign\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Horizontal alignment\r\n\t */\r\n\tpublic get contentAlign(): Align {\r\n\t\treturn this.getPropertyValue(\"contentAlign\");\r\n\t}\r\n\r\n\t/**\r\n\t * Controls if the grid of the Container should use fixed width. Fixed width\r\n\t * grid will divide available space to all its columns/rows equally, without\r\n\t * adapting to actual child sizes or size requirements.\r\n\t *\r\n\t * @default false\r\n\t * @param value Should use fixed width grid?\r\n\t */\r\n\tpublic set fixedWidthGrid(value: boolean) {\r\n\t\tthis.setPropertyValue(\"fixedWidthGrid\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Should use fixed width grid?\r\n\t */\r\n\tpublic get fixedWidthGrid(): boolean {\r\n\t\treturn this.getPropertyValue(\"fixedWidthGrid\");\r\n\t}\r\n\r\n\t/**\r\n\t * Maximum number of columns (when using `\"grid\"` layout).\r\n\t *\r\n\t * @param value Should use fixed width grid?\r\n\t */\r\n\tpublic set maxColumns(value: Optional) {\r\n\t\tthis.setPropertyValue(\"maxColumns\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Should use fixed width grid?\r\n\t */\r\n\tpublic get maxColumns(): Optional {\r\n\t\treturn this.getPropertyValue(\"maxColumns\");\r\n\t}\r\n\r\n\t/**\r\n\t * If set to `true`, the children of the container will be drawn in reverse\r\n\t * order.\r\n\t *\r\n\t * @default false\r\n\t * @param value Reverse children?\r\n\t */\r\n\tpublic set reverseOrder(value: Optional) {\r\n\t\tthis.setPropertyValue(\"reverseOrder\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Reverse children?\r\n\t */\r\n\tpublic get reverseOrder(): Optional {\r\n\t\treturn this.getPropertyValue(\"reverseOrder\");\r\n\t}\r\n\r\n\t/**\r\n\t * Specifies if, when state is applied on this container, the same state\r\n\t * should be applied to container's children as well as `background`.\r\n\t *\r\n\t * @default false\r\n\t * @param value Set state on children\r\n\t */\r\n\tpublic set setStateOnChildren(value: boolean) {\r\n\t\tthis.setPropertyValue(\"setStateOnChildren\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Set state on children\r\n\t */\r\n\tpublic get setStateOnChildren(): boolean {\r\n\t\treturn this.getPropertyValue(\"setStateOnChildren\");\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if point is within bounds of a container.\r\n\t *\r\n\t * @param point A coordinate to check\r\n\t * @return `true` if it fits within container\r\n\t */\r\n\tpublic fitsToBounds(point: IPoint): boolean {\r\n\t\tlet x = point.x;\r\n\t\tlet y = point.y;\r\n\t\tlet deviation = 0.5; // sometimes coordinates are rounded to numbers like .999 so we add deviation here\r\n\t\tif (x >= -deviation && x <= this.pixelWidth + deviation && y >= -deviation && y <= this.pixelHeight + deviation) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all properties from different Container, including background\r\n\t * clone.\r\n\t *\r\n\t * @param source Source Container to copy from\r\n\t */\r\n\tpublic copyFrom(source: this) {\r\n\t\tsuper.copyFrom(source);\r\n\t\tthis.layout = source.layout;\r\n\t\tthis.setStateOnChildren = source.setStateOnChildren;\r\n\r\n\t\tif (source._background) {\r\n\t\t\tthis.background = source._background.clone();\r\n\t\t\tthis.background.copyFrom(source._background); // won't work without this\r\n\t\t}\r\n\r\n\t\t$iter.each(source.children.iterator(), (child) => {\r\n\t\t\tif (child.shouldClone) {\r\n\t\t\t\tlet clonedChild: Sprite = child.clone();\r\n\t\t\t\tclonedChild.parent = this;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * A [[Preloader]] instance to be used when Container is busy.\r\n\t *\r\n\t * @param preloader Preloader instance\r\n\t */\r\n\tpublic set preloader(preloader: $type.Optional) {\r\n\t\tif (this._preloader) {\r\n\t\t\tthis.removeDispose(this._preloader);\r\n\t\t}\r\n\t\tthis._preloader = preloader;\r\n\t\tif (preloader) {\r\n\t\t\tpreloader.parent = this.tooltipContainer;\r\n\t\t\tthis._disposers.push(preloader);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Preloader instance\r\n\t */\r\n\tpublic get preloader(): $type.Optional {\r\n\t\tconst preloader = this._preloader;\r\n\r\n\t\tif (preloader) {\r\n\t\t\treturn preloader;\r\n\t\t}\r\n\t\telse if (this.parent) {\r\n\t\t\treturn this.parent.preloader;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets [[Paper]] instance to use to draw elements.\r\n\t * @ignore\r\n\t * @param paper Paper\r\n\t * @return true if paper was changed, false, if it's the same\r\n\t */\r\n\tpublic setPaper(paper: Paper): boolean {\r\n\t\tlet changed = super.setPaper(paper);\r\n\r\n\t\tif (changed) {\r\n\t\t\tif (this._background) {\r\n\t\t\t\tthis._background.paper = paper;\r\n\t\t\t\tthis._background.topParent = this.topParent;\r\n\t\t\t}\r\n\t\t\tthis.children.each((child) => {\r\n\t\t\t\tchild.setPaper(paper);\r\n\t\t\t\tchild.topParent = this.topParent;\r\n\t\t\t})\r\n\t\t}\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t/**\r\n\t * Removes Container from the system-wide list of invalid Containers.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected removeFromInvalids() {\r\n\t\tsuper.removeFromInvalids();\r\n\t\tregistry.removeFromInvalidLayouts(this);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a [[DataItem]] to be used as data for the Container.\r\n\t *\r\n\t * @todo Description\r\n\t * @param dataItem DataItem\r\n\t */\r\n\tprotected setDataItem(dataItem: DataItem) {\r\n\t\t// this place is potentially dangerous, as if we set datItem for some dummy container, all children dataItems will be overriden\r\n\t\t// the main reason for doing this is that we need a setDataItem code to be called for each sprite, otherwise property fields won't be\r\n\t\t// applied. Also, getting dataItem from parent all the time is more expensive than saving value.\r\n\t\tif (this._dataItem != dataItem) {\r\n\t\t\t$iter.each(this.children.iterator(), (child) => {\r\n\t\t\t\tchild.dataItem = dataItem;\r\n\t\t\t});\r\n\r\n\t\t\tif (this._background) {\r\n\t\t\t\tthis._background.dataItem = dataItem;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsuper.setDataItem(dataItem);\r\n\t}\r\n\r\n\t/**\r\n\t * Measures the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic measureElement(): void {\r\n\t\tif (this.disabled || this.isTemplate || this.layout == \"none\" || this.__disabled) {\r\n\t\t\t// void\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.validateLayout();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Font family to be used for the text.\r\n\t *\r\n\t * Parts of the text may override this setting using in-line formatting.\r\n\t *\r\n\t * @param value Font family value\r\n\t */\r\n\tpublic set fontFamily(value: string) {\r\n\t\tif (this.setPropertyValue(\"fontFamily\", value, true)) {\r\n\t\t\tthis.setSVGAttribute({ \"font-family\": value });\r\n\t\t\tthis.invalidateLabels();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Font family\r\n\t */\r\n\tpublic get fontFamily(): string {\r\n\t\treturn this.getPropertyValue(\"fontFamily\");\r\n\t}\r\n\r\n\t/**\r\n\t * Font size to be used for the text. The size can either be numeric, in\r\n\t * pixels, or other measurements.\r\n\t *\r\n\t * Parts of the text may override this setting using in-line formatting.\r\n\t *\r\n\t * @param value Font size value\r\n\t */\r\n\tpublic set fontSize(value: any) {\r\n\t\tif (this.setPropertyValue(\"fontSize\", value, true)) {\r\n\t\t\tthis.setSVGAttribute({ \"font-size\": value });\r\n\t\t\tthis.invalidateLabels();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Font size\r\n\t */\r\n\tpublic get fontSize(): any {\r\n\t\treturn this.getPropertyValue(\"fontSize\");\r\n\t}\r\n\r\n\t/**\r\n\t * When fontSize of fontFamily changes we need to hard-invalidate all Labels of this container to position them properly.\r\n\t */\r\n\tpublic invalidateLabels() {\r\n\t\tthis.children.each((child) => {\r\n\t\t\t// can't import Label because of Circular dependencies\r\n\t\t\tif ((child)[\"hardInvalidate\"]) {\r\n\t\t\t\t(child)[\"hardInvalidate\"]();\r\n\t\t\t}\r\n\t\t\telse if (child instanceof Container) {\r\n\t\t\t\tchild.invalidateLabels();\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\t/**\r\n\t * Font weight to use for text.\r\n\t *\r\n\t * Parts of the text may override this setting using in-line formatting.\r\n\t *\r\n\t * @param value Font weight\r\n\t */\r\n\tpublic set fontWeight(value: FontWeight) {\r\n\t\tthis.setPropertyValue(\"fontWeight\", value);\r\n\t\tthis.setSVGAttribute({ \"font-weight\": value });\r\n\t}\r\n\r\n\t/**\r\n\t * @return Font weight\r\n\t */\r\n\tpublic get fontWeight(): FontWeight {\r\n\t\treturn this.getPropertyValue(\"fontWeight\");\r\n\t}\r\n\r\n\t/**\r\n\t * A text decoration to use for text.\r\n\t *\r\n\t * Parts of the text may override this setting using in-line formatting.\r\n\t *\r\n\t * @param value Decoration\r\n\t */\r\n\tpublic set textDecoration(value: TextDecoration) {\r\n\t\tthis.setPropertyValue(\"textDecoration\", value);\r\n\t\tthis.setSVGAttribute({ \"text-decoration\": value });\r\n\t}\r\n\r\n\t/**\r\n\t * @return Decoration\r\n\t */\r\n\tpublic get textDecoration(): TextDecoration {\r\n\t\treturn this.getPropertyValue(\"textDecoration\");\r\n\t}\r\n\r\n\t/**\r\n\t * Disposes (destroys) the element and all its children.\r\n\t */\r\n\tpublic dispose(): void {\r\n\t\tif (this._background) {\r\n\t\t\tthis._background.dispose();\r\n\t\t}\r\n\t\tthis._shouldBeReady = [];\r\n\t\tthis.disposeChildren();\r\n\t\tsuper.dispose();\r\n\t}\r\n\r\n\t/**\r\n\t * Applies a [[SpriteState]] on this element.\r\n\t *\r\n\t * The first parameter can either be a name of the state or a [[SpriteState]]\r\n\t * instance.\r\n\t *\r\n\t * When run, this method will apply SVG properties defined in a\r\n\t * [[SpriteState]], but only those that are relevant to this particular\r\n\t * element, that is are listed in its respective `properties` array.\r\n\t *\r\n\t * @see {@link SpriteState}\r\n\t * @param value A state - name key or instance\r\n\t * @param transitionDuration Duration of the transition between current and new state\r\n\t * @param easing An easing function\r\n\t */\r\n\tpublic setState(value: string | SpriteState, transitionDuration?: number, easing?: (value: number) => number): $type.Optional {\r\n\r\n\t\tlet stateName = value;\r\n\t\tif (value instanceof SpriteState) {\r\n\t\t\tstateName = value.name;\r\n\t\t}\r\n\r\n\t\tif (this.setStateOnChildren) {\r\n\t\t\t$iter.each(this.children.iterator(), (child) => {\r\n\t\t\t\tchild.setState(stateName, transitionDuration, easing);\r\n\r\n\t\t\t\t// not good to set it in child setState\r\n\t\t\t\tif (stateName != \"active\") {\r\n\t\t\t\t\tchild.isActive = false;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t\tif (this._background) {\r\n\t\t\tthis._background.setState(stateName);\r\n\t\t}\r\n\r\n\t\tif (this.setStateOnSprites.length) {\r\n\t\t\t$array.each(this.setStateOnSprites, (item) => {\r\n\t\t\t\titem.setState(stateName, transitionDuration, easing);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn super.setState(value, transitionDuration, easing);\r\n\t}\r\n\r\n\t// otherwise isActive won't work properly with background\r\n\tprotected setActive(value: boolean) {\r\n\t\tsuper.setActive(value);\r\n\t\tif (this._background) {\r\n\t\t\tthis._background.isActive = value;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Dispatches ready event. Dispatches when all children are ready.\r\n\t */\r\n\tpublic dispatchReady() {\r\n\t\tif (!this.isReady() && !this.isDisposed()) {\r\n\t\t\tlet allReady = true;\r\n\r\n\t\t\t$iter.eachContinue(this.children.iterator(), (sprite) => {\r\n\t\t\t\tif (!sprite.__disabled && !sprite.disabled && !sprite.isReady()) {\r\n\t\t\t\t\tallReady = false;\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\treturn true;\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$array.eachContinue(this._shouldBeReady, (sprite) => {\r\n\t\t\t\tif (!sprite.__disabled && !sprite.disabled && !sprite.isReady()) {\r\n\t\t\t\t\tallReady = false;\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tif (allReady) {\r\n\t\t\t\tsuper.dispatchReady();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tregistry.events.once(\"exitframe\", () => {\r\n\t\t\t\t\tthis.dispatchReady();\r\n\t\t\t\t\tsystem.requestFrame();\r\n\t\t\t\t}, undefined, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Called during the System.update method\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic _systemUpdate(skippedSprites: Array): void {\r\n\t\tthis.children.each((child) => {\r\n\t\t\tif (child.invalid) {\r\n\t\t\t\tif (!child._systemCheckIfValidate()) {\r\n\t\t\t\t\tskippedSprites.push(child);\r\n\t\t\t\t}\r\n\t\t\t\telse if (child.dataItem && child.dataItem.component && child.dataItem.component.dataInvalid) {\r\n\t\t\t\t\tskippedSprites.push(child);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tchild.validate();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tsuper._systemUpdate(skippedSprites);\r\n\t}\r\n\r\n\t/**\r\n\t * Called during the System.validatePositions method\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic _systemValidatePositions() {\r\n\t\tthis.children.each((sprite) => {\r\n\t\t\tif (sprite.positionInvalid) {\r\n\t\t\t\tsprite.validatePosition();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tsuper._systemValidatePositions();\r\n\t}\r\n\r\n\t/**\r\n\t * Called during the System.validateLayouts method\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic _systemValidateLayouts() {\r\n\t\tif (this.layoutInvalid && !this.isDisposed()) {\r\n\t\t\tthis.validateLayout();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * If set to `true` the chart's regular touch functionality will be suspended\r\n\t * so that the whole page it is located in remains scrollable, even when\r\n\t * swiping over the chart's body.\r\n\t *\r\n\t * User will need to tap the chart in order to activate its regular touch\r\n\t * functionality.\r\n\t *\r\n\t * The chart will remain \"active\" as long as user keeps interacting with the\r\n\t * chart. After `tapTimeout` milliseconds the chart will return to its\r\n\t * \"protected\" mode.\r\n\t *\r\n\t * @default false\r\n\t * @since 4.4.0\r\n\t * @param value Enable touch protection?\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/touch/} For more information.\r\n\t */\r\n\tpublic set tapToActivate(value: boolean) {\r\n\t\tif (this._tapToActivate != value) {\r\n\t\t\tthis.setTapToActivate(value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Enable touch protection?\r\n\t */\r\n\tpublic get tapToActivate(): boolean {\r\n\t\treturn this._tapToActivate;\r\n\t}\r\n\r\n\tprotected setTapToActivate(value: boolean): void {\r\n\t\tthis._tapToActivate = value;\r\n\t\tthis.interactions.isTouchProtected = value;\r\n\t\t// setEventDisposer will also remove listeners if value == false\r\n\t\tif (value) {\r\n\t\t\tthis.interactions.setEventDisposer(\"container-tapToActivate\", value, () => new MultiDisposer([\r\n\t\t\t\tthis.events.on(\"hit\", this.handleTapToActivate, this, false),\r\n\t\t\t\tthis.events.on(\"down\", this.initTapTimeout, this, false),\r\n\t\t\t\tthis.events.on(\"track\", this.initTapTimeout, this, false),\r\n\t\t\t\t//this.events.on(\"drag\", this.initTapTimeout, this, false),\r\n\t\t\t\tgetInteraction().body.events.on(\"down\", (ev) => {\r\n\t\t\t\t\tif (!getInteraction().isLocalElement(ev.pointer, this.paper.svg, this.uid)) {\r\n\t\t\t\t\t\tthis.handleTapToActivateDeactivation();\r\n\t\t\t\t\t}\r\n\t\t\t\t}, this, false)\r\n\t\t\t]));\r\n\t\t}\r\n\r\n\t\tgetInteraction()\r\n\t}\r\n\r\n\t/**\r\n\t * @todo Ignore on non-touch events\r\n\t */\r\n\tprotected handleTapToActivate(): void {\r\n\t\tthis.interactions.isTouchProtected = false;\r\n\t\tthis.initTapTimeout();\r\n\t}\r\n\r\n\tprotected handleTapToActivateDeactivation(): void {\r\n\t\tthis.interactions.isTouchProtected = true;\r\n\t}\r\n\r\n\tprotected initTapTimeout(): void {\r\n\t\tif (this._tapToActivateTimeout) {\r\n\t\t\tthis._tapToActivateTimeout.dispose();\r\n\t\t}\r\n\t\tif (this.tapToActivate && !this.interactions.isTouchProtected && this.tapTimeout) {\r\n\t\t\tthis._tapToActivateTimeout = this.setTimeout(() => {\r\n\t\t\t\tthis.handleTapToActivateDeactivation()\r\n\t\t\t}, this.tapTimeout);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t * @return Has license?\r\n\t */\r\n\tpublic hasLicense(): boolean {\r\n\t\tif (options.commercialLicense) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tfor (let i = 0; i < options.licenses.length; i++) {\r\n\t\t\tif (options.licenses[i].match(/^CH.{5,}/i)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Container\"] = Container;\r\n","/**\r\n * Defines functionality for \"Data Item\"\r\n *\r\n * A Data Item can be any object that can hold data. For example [[LineSeries]]\r\n * holds a number of values, that comprise a line graph. Each of those values\r\n * (data points) is a {DataItem}.\r\n *\r\n * Furthermore the [[LineSeries]] itself can be represented as a entry in the\r\n * legend. Since legend needs access to Line Series' value, a DataItem is\r\n * created for the series.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObjectEvents, IBaseObjectEvents } from \"./Base\";\r\nimport { AMEvent } from \"./utils/EventDispatcher\";\r\nimport { Adapter } from \"./utils/Adapter\";\r\nimport { Component, CalculatedValue } from \"./Component\";\r\nimport { IAnimatable, Animation, IAnimationOptions, IAnimationEvents, AnimationDisposer } from \"./utils/Animation\";\r\nimport { Sprite } from \"./Sprite\";\r\nimport { IDisposer } from \"./utils/Disposer\";\r\nimport * as $utils from \"./utils/Utils\";\r\nimport * as $array from \"./utils/Array\";\r\n//import * as $object from \"./utils/Object\";\r\nimport * as $type from \"./utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n *\r\n * @todo Description\r\n */\r\nexport interface IValues { }\r\n\r\n/**\r\n * Defines data events for [[DataItem]]\r\n */\r\nexport interface IDataItemEvents extends IBaseObjectEvents {\r\n\r\n\t/**\r\n\t * Invoked when the visibility of the Data Item changes, i.e. Series is\r\n\t * hidden\r\n\t */\r\n\tvisibilitychanged: {\r\n\t\tvisible: boolean;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when the value is changed\r\n\t */\r\n\tvaluechanged: {\r\n\t\tproperty: string;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when the internal/intermediate value has changed\r\n\t */\r\n\tworkingvaluechanged: {\r\n\t\tproperty: string;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when the calculated value has changed\r\n\t */\r\n\tcalculatedvaluechanged: {\r\n\t\tproperty: string;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when the location of Data Item changes\r\n\t */\r\n\tlocationchanged: {\r\n\t\tproperty: string;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when working location of Data Item changes\r\n\t */\r\n\tworkinglocationchanged: {\r\n\t\tproperty: string;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when a property of the Data Item changes\r\n\t */\r\n\tpropertychanged: {\r\n\t\tproperty: string;\r\n\t\tvalue: any; // TODO don't make this any\r\n\t};\r\n\r\n}\r\n\r\n/**\r\n * Defines adapters for [[DataItem]]\r\n * Includes both the [[Adapter]] definitions and properties\r\n * @see {@link Adapter}\r\n */\r\nexport interface IDataItemAdapters {\r\n\r\n\tduration: number;\r\n\r\n\tvalue: {\r\n\t\tvalue: number,\r\n\t\tfield: string\r\n\t};\r\n\r\n\tworkingValue: {\r\n\t\tworkingValue: number,\r\n\t\tfield: string\r\n\t};\r\n\r\n\tdate: {\r\n\t\tdate: Date,\r\n\t\tfield: string\r\n\t};\r\n\r\n}\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * DataItem represents single element in data, for example a data point in a\r\n * Serial Chart Series, e.g. a column.\r\n *\r\n * DataItem defines relationship between structured data, required for specific\r\n * chart type or task, and raw source data.\r\n *\r\n * It also implements required calculations, updates related visual elements,\r\n * etc.\r\n *\r\n * @todo Description\r\n * @important\r\n */\r\nexport class DataItem extends BaseObjectEvents implements IAnimatable {\r\n\r\n\t/**\r\n\t * When we are using a nested data structure, like for example in a TreeMap,\r\n\t * this property points to a parent Data Item of this one.\r\n\t */\r\n\tpublic parent: $type.Optional;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IDataItemEvents;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IDataItemAdapters;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic _adapterO: Adapter;\r\n\r\n\t/**\r\n\t * Holds Adapter.\r\n\t */\r\n\tpublic get adapter(): Adapter {\r\n\t\tif (!this._adapterO) {\r\n\t\t\tthis._adapterO = new Adapter(this);\r\n\t\t}\r\n\t\treturn this._adapterO;\r\n\t}\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this Data Item is used for.\r\n\t */\r\n\tpublic _component!: Component;\r\n\r\n\t/**\r\n\t * A reference to a [[Component]] this Data Item belongs to.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic component: $type.Optional;\r\n\r\n\t/**\r\n\t * A reference to the original Data Item in raw data.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _dataContext: Object;\r\n\r\n\t/**\r\n\t * This Data Item is currently disabled.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _disabled: boolean = false;\r\n\r\n\t/**\r\n\t * Indicates whether Data Item has any properties set.\r\n\t *\r\n\t * If it does not have any, the code can use this property to check whether\r\n\t * they need to apply costly operation of re-applying properties, whenever\r\n\t * Data Item-related element is redrawn, e.g. series.\r\n\t */\r\n\tpublic hasProperties: boolean = false;\r\n\r\n\t/**\r\n\t * An object containing calculated values.\r\n\t */\r\n\tpublic readonly values: { [index: string]: { [index: string]: number } } = {};\r\n\r\n\t/**\r\n\t * An object container current working values.\r\n\t */\r\n\t//public readonly workingValues: { [index: string]: { [index: string]: number } } = {};\r\n\r\n\t/**\r\n\t * An object containing categories.\r\n\t */\r\n\tpublic readonly categories: { [index: string]: string } = {};\r\n\r\n\t/**\r\n\t * An object containing dates.\r\n\t */\r\n\tpublic readonly dates: { [index: string]: Date } = {};\r\n\r\n\t/**\r\n\t * An object containing locations for the Data Item.\r\n\t *\r\n\t * A location is a position within date or category, or, in some other cases,\r\n\t * where there is no single point but rather some period.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/series/#Data_item_locations} for info how data item locations work\r\n\t */\r\n\tpublic readonly locations: { [index: string]: number } = {};\r\n\r\n\t/**\r\n\t * Current working locations.\r\n\t */\r\n\tpublic readonly workingLocations: { [index: string]: number } = {};\r\n\r\n\t/**\r\n\t * An object containing Data Item specific appearance properties in key-value\r\n\t * pairs.\r\n\t *\r\n\t * Sometimes a single Data Item needs to apply different properties than the\r\n\t * rest of the data [[Series]] it is part of. E.g. a single column,\r\n\t * represented by a Data Item needs to be filled with a different color than\r\n\t * the reset of the [[ColumnSeries]] it belongs to.\r\n\t *\r\n\t * That's where Data Item's `properties` come into play.\r\n\t *\r\n\t * Please note that you should set Data Item-specific properties using\r\n\t * `setProperty()` method, rather than access `properties` object directly.\r\n\t */\r\n\tpublic readonly properties: { [index: string]: any } = {};\r\n\r\n\t/**\r\n\t * A list of [[Sprite]] elements that are associated with this Data Item.\r\n\t *\r\n\t * E.g. an [[Axis]] Data Item has several separate elements associated with\r\n\t * it, like [[AxisTick]], [[AxisLabel]], and [[Grid]].\r\n\t *\r\n\t * Data Item keeps track of all of them, so it can toggle all related visual\r\n\t * elements when it itself is toggled.\r\n\t */\r\n\tpublic sprites: Sprite[] = [];\r\n\r\n\t/**\r\n\t * Identifies if this object is a \"template\" and should not be treated as\r\n\t * real object that is drawn or actually used in the chart.\r\n\t */\r\n\tpublic isTemplate: boolean = false;\r\n\r\n\t/**\r\n\t * List of animations currently animating Data Item's values.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _animations: $type.Optional>;\r\n\r\n\t/**\r\n\t * The current index within the dataItems\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic _index: number | null = null;\r\n\r\n\t/**\r\n\t * Is Data Item currently visible?\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _visible: boolean = true;\r\n\r\n\t/**\r\n\t * Is Data Item currently hidden?\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _hidden: boolean = false;\r\n\r\n\t/**\r\n\t * Should this Data Item be used when calculating data ranges and scales?\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _ignoreMinMax: boolean = false;\r\n\r\n\t/**\r\n\t * Some of the Data Item's data fields may contain an array of children. This\r\n\t * property contains an object indicating which fields hold an array, so that\r\n\t * they can be processed properly.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic hasChildren: { [index: string]: boolean } = {};\r\n\r\n\t/**\r\n\t * Indicates whether Data Item is currently animiting from visible to hidden\r\n\t * state.\r\n\t */\r\n\tpublic isHiding: boolean = false;\r\n\r\n\t/**\r\n\t * Holds a Disposer reference to hiding [[Animation]] currently playing.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _hideDisposer: $type.Optional;\r\n\r\n\t/**\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _valueAnimations: { [key: string]: Animation } = {};\r\n\r\n\t/**\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _locationAnimations: { [key: string]: Animation } = {};\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @todo Adding events to disposers produces errors in some cases, which means that chart is using disposed Data Items which is not right\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"DataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Data Item's position index in Component's data.\r\n\t *\r\n\t * @return Index\r\n\t */\r\n\tpublic get index(): number {\r\n\t\tif (this.component) {\r\n\t\t\tif (this._index != null) {\r\n\t\t\t\treturn this._index;\r\n\t\t\t} else {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A list of [[Animations]] objects currently mutating Data Item's values.\r\n\t *\r\n\t * @return [description]\r\n\t */\r\n\tpublic get animations(): Array {\r\n\t\tif (!this._animations) {\r\n\t\t\tthis._animations = [];\r\n\t\t\tthis._disposers.push(new AnimationDisposer(this._animations));\r\n\t\t}\r\n\t\treturn this._animations;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets visibility of the Data Item.\r\n\t *\r\n\t * @param value Visible?\r\n\t */\r\n\tpublic set visible(value: boolean) {\r\n\t\tif (value) {\r\n\t\t\tthis.hidden = false;\r\n\t\t}\r\n\t\tif (this._visible != value) {\r\n\t\t\tthis.setVisibility(value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets hidden flag for data item. Mostly used to initially hide data item.\r\n\t *\r\n\t * @param value Hidden?\r\n\t */\r\n\tpublic set hidden(value: boolean) {\r\n\t\tif (this._hidden != value) {\r\n\t\t\tthis._hidden = value;\r\n\t\t\tif (value) {\r\n\t\t\t\tthis.setVisibility(false);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.setVisibility(true, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if this Data Item is currently hidden.\r\n\t *\r\n\t * @return Hidden?\r\n\t */\r\n\tpublic get hidden(): boolean {\r\n\t\treturn this._hidden;\r\n\t}\r\n\r\n\t/**\r\n\t * Disables all Sprites associated with this Data Item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param {boolean}\r\n\t */\r\n\tpublic set __disabled(value: boolean) {\r\n\t\t//\tif (this._disabled != value) { // not good\r\n\t\tthis._disabled = value;\r\n\r\n\t\t$array.each(this.sprites, (sprite) => {\r\n\t\t\tsprite.__disabled = value;\r\n\t\t});\r\n\t\t//\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Is this Data Item currently disabled?\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param {boolean}\r\n\t */\r\n\tpublic get __disabled(): boolean {\r\n\t\treturn this._disabled;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets visibility of the Data Item.\r\n\t *\r\n\t * @param value Data Item\r\n\t */\r\n\tpublic setVisibility(value: boolean, noChangeValues?: boolean): void {\r\n\t\t$array.each(this.sprites, (sprite) => {\r\n\t\t\tif (value) {\r\n\t\t\t\tsprite.visible = sprite.defaultState.properties.visible;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (sprite.hiddenState) {\r\n\t\t\t\t\tsprite.visible = sprite.hiddenState.properties.visible;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tsprite.visible = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._visible = value;\r\n\t\tif (this._eventDispatcher && !this.__disabled) {\r\n\t\t\tif (this.events.isEnabled(\"visibilitychanged\")) {\r\n\t\t\t\tconst event: AMEvent[\"visibilitychanged\"] = {\r\n\t\t\t\t\ttype: \"visibilitychanged\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tvisible: value\r\n\t\t\t\t};\r\n\t\t\t\tthis.events.dispatchImmediately(\"visibilitychanged\", event);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if this Data Item is currently visible.\r\n\t *\r\n\t * @return Visible?\r\n\t */\r\n\tpublic get visible(): boolean {\r\n\t\tif (this._hidden) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn this._visible;\r\n\t}\r\n\r\n\t/**\r\n\t * Shows the Data Item and related visual elements.\r\n\t *\r\n\t * @param duration Animation duration (ms)\r\n\t * @param delay Delay animation (ms)\r\n\t * @param fields A list of fields to set values of\r\n\t */\r\n\tpublic show(duration?: number, delay?: number, fields?: string[]): $type.Optional {\r\n\t\tif (!this.hidden) {\r\n\t\t\tthis.setVisibility(true, true);\r\n\r\n\t\t\tthis.isHiding = false;\r\n\r\n\t\t\tif (this._hideDisposer) {\r\n\t\t\t\tthis.removeDispose(this._hideDisposer);\r\n\t\t\t}\r\n\r\n\t\t\tlet animation: $type.Optional;\r\n\r\n\t\t\tif (fields) {\r\n\t\t\t\t$array.each(fields, (field) => {\r\n\t\t\t\t\tanimation = this.setWorkingValue(field, this.values[field].value, duration, delay);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t$array.each(this.sprites, (sprite) => {\r\n\t\t\t\tlet animation = sprite.show(duration);\r\n\r\n\t\t\t\tif (animation != null && !animation.isFinished()) {\r\n\t\t\t\t\tthis._disposers.push(animation);\r\n\r\n\t\t\t\t\tif (delay != null && delay > 0) {\r\n\t\t\t\t\t\tanimation.delay(delay);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\treturn animation;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Destroys this object and all related data.\r\n\t */\r\n\tpublic dispose() {\r\n\t\tsuper.dispose();\r\n\r\n\t\t$array.each(this.sprites, (sprite) => {\r\n\t\t\tsprite.dispose();\r\n\t\t});\r\n\r\n\t\tthis.sprites = [];\r\n\t}\r\n\r\n\t/**\r\n\t * Hides the Data Item and related visual elements.\r\n\t *\r\n\t * @param duration Animation duration (ms)\r\n\t * @param delay Delay animation (ms)\r\n\t * @param toValue A value to set to `fields` when hiding\r\n\t * @param fields A list of data fields to set value to `toValue`\r\n\t */\r\n\tpublic hide(duration?: number, delay?: number, toValue?: number, fields?: string[]): $type.Optional {\r\n\t\tthis.isHiding = true;\r\n\r\n\t\t$array.each(this.sprites, (sprite) => {\r\n\r\n\t\t\tlet animation = sprite.hide(duration);\r\n\r\n\t\t\tif (animation != null && !animation.isFinished()) {\r\n\t\t\t\tthis._disposers.push(animation);\r\n\r\n\t\t\t\tif (delay != null && delay > 0) {\r\n\t\t\t\t\tanimation.delay(delay);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif ($type.isNumber(toValue) && fields) {\r\n\t\t\tlet animation: $type.Optional;\r\n\r\n\t\t\t$array.each(fields, (field) => {\r\n\t\t\t\tlet anim = this.setWorkingValue(field, toValue, duration, delay);\r\n\t\t\t\tif (anim) {\r\n\t\t\t\t\tanimation = anim;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (animation && !animation.isFinished()) {\r\n\t\t\t\tthis._hideDisposer = animation.events.on(\"animationended\", () => {\r\n\t\t\t\t\tthis.setVisibility(false, true);\r\n\t\t\t\t\tthis.isHiding = false;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._disposers.push(this._hideDisposer);\r\n\t\t\t\treturn animation;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.isHiding = false;\r\n\t\t\t\tthis.setVisibility(false, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.isHiding = false;\r\n\t\t\tthis.setVisibility(false);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a duration (ms) the Data Item should take to animate from one\r\n\t * value to another.\r\n\t *\r\n\t * If the duration is not specified via parameter, this method will try to\r\n\t * request a default duration from the related `Component`.\r\n\t *\r\n\t * @param duration Default duration (ms)\r\n\t * @return Duration (ms)\r\n\t */\r\n\tpublic getDuration(duration?: number): $type.Optional {\r\n\t\tif (!$type.isNumber(duration)) {\r\n\t\t\tlet component: $type.Optional = this.component;\r\n\t\t\tif (component) {\r\n\t\t\t\tduration = component.interpolationDuration;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (duration != null) {\r\n\t\t\tif (!this._adapterO) {\r\n\t\t\t\treturn duration;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn this._adapterO.apply(\"duration\", duration);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a numeric value for specific data field.\r\n\t *\r\n\t * If `calculated` is not set, it will return a raw value, as it is in\r\n\t * source data.\r\n\t *\r\n\t * If `calculated` is set, it will return a pre-calculated specific value.\r\n\t *\r\n\t * @param name Data field name\r\n\t * @param calculated A calculated value name\r\n\t * @return Value\r\n\t */\r\n\tpublic getValue(name: string, calculated?: CalculatedValue): $type.Optional {\r\n\t\tif (name && this.component) {\r\n\t\t\tif (!calculated) {\r\n\t\t\t\tcalculated = (this.component.dataFields)[name + \"Show\"];\r\n\t\t\t\tif (!calculated) {\r\n\t\t\t\t\tcalculated = \"value\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst value = this.values[name][calculated];\r\n\r\n\t\t\tif (this._adapterO && this._adapterO.isEnabled(\"value\")) {\r\n\t\t\t\treturn this._adapterO.apply(\"value\", {\r\n\t\t\t\t\tvalue: value,\r\n\t\t\t\t\tfield: name\r\n\t\t\t\t}).value;\r\n\r\n\t\t\t} else {\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a current working value for a specific data field.\r\n\t *\r\n\t * The actual value may differ from the one returned by `getValue()`. The\r\n\t * latter returns static values from the data source.\r\n\t *\r\n\t * `getWorkingValue()` returns current value, which is usually different if\r\n\t * Data Item is animating from one state to another.\r\n\t *\r\n\t * @param name Data field name\r\n\t * @return Value\r\n\t */\r\n\tpublic getWorkingValue(name: string): $type.Optional {\r\n\t\tif (name && this.component) {\r\n\t\t\tlet realName = (this.component.dataFields)[name + \"Show\"];\r\n\r\n\t\t\tif (!realName) {\r\n\t\t\t\trealName = \"workingValue\";\r\n\t\t\t}\r\n\t\t\tif (this._adapterO) {\r\n\t\t\t\treturn this._adapterO.apply(\"workingValue\", {\r\n\t\t\t\t\tworkingValue: this.values[name][realName],\r\n\t\t\t\t\tfield: name\r\n\t\t\t\t}).workingValue;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn this.values[name][realName];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t * @return Value\r\n\t */\r\n\tpublic getActualWorkingValue(name: string): $type.Optional {\r\n\t\treturn this.values[name].workingValue;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Sets a numeric value for specific data field.\r\n\t *\r\n\t * @param name Data field name\r\n\t * @param value Value\r\n\t * @param calculated Calculated data field name\r\n\t * @param duration Duration (ms) to animate to new value to\r\n\t * @param delay Delay animation (ms)\r\n\t */\r\n\tpublic setValue(name: string, value: number, duration?: number, delay?: number): void {\r\n\t\tlet currentValue: number = this.values[name].value;\r\n\t\tlet newDuration: $type.Optional = this.getDuration(duration);\r\n\t\tvalue = $type.toNumber(value);\r\n\t\tif (currentValue !== value) {\r\n\t\t\tthis.values[name].value = value;\r\n\t\t\tif (this._eventDispatcher && !this.__disabled) {\r\n\t\t\t\tif (this.events.isEnabled(\"valuechanged\")) {\r\n\t\t\t\t\tconst event: AMEvent[\"valuechanged\"] = {\r\n\t\t\t\t\t\ttype: \"valuechanged\",\r\n\t\t\t\t\t\ttarget: this,\r\n\t\t\t\t\t\tproperty: name\r\n\t\t\t\t\t};\r\n\t\t\t\t\tthis.events.dispatchImmediately(\"valuechanged\", event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.component) {\r\n\t\t\t\tthis.component.handleDataItemValueChange(this, name);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setWorkingValue(name, value, newDuration, delay);\r\n\t}\r\n\r\n\tsetCalculatedValue(name: string, value: number, calculated: CalculatedValue): void {\r\n\t\tlet currentValue: number = this.values[name][calculated];\r\n\r\n\t\tif (currentValue !== value && $type.isNumber(value)) {\r\n\t\t\tthis.values[name][calculated] = value;\r\n\r\n\t\t\tif (this._eventDispatcher && !this.__disabled) {\r\n\t\t\t\tif (this.events.isEnabled(\"calculatedvaluechanged\")) {\r\n\t\t\t\t\tconst event: AMEvent[\"calculatedvaluechanged\"] = {\r\n\t\t\t\t\t\ttype: \"calculatedvaluechanged\",\r\n\t\t\t\t\t\ttarget: this,\r\n\t\t\t\t\t\tproperty: name\r\n\t\t\t\t\t};\r\n\t\t\t\t\tthis.events.dispatchImmediately(\"calculatedvaluechanged\", event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.component) {\r\n\t\t\t\tthis.component.handleDataItemCalculatedValueChange(this, name);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set current working numeric value for a specific data field.\r\n\t *\r\n\t * @param name Data field name\r\n\t * @param value Value\r\n\t * @param calculated Calculated data field name\r\n\t * @param duration Duration (ms) to animate to new value to\r\n\t * @param delay Delay animation (ms)\r\n\t * @return An [[Animation]] object used for transition to new values\r\n\t */\r\n\tpublic setWorkingValue(name: string, value: number, duration?: number, delay?: number): $type.Optional {\r\n\t\tif ($type.isNumber(this.values[name].value)) {\r\n\t\t\tlet newDuration: $type.Optional = this.getDuration(duration);\r\n\r\n\t\t\tlet workingValue: number = this.values[name].workingValue;\r\n\r\n\t\t\tif (newDuration != null && newDuration > 0 && $type.isNumber(workingValue) && this.component) { // sometimes NaN is passed, so only change this to != null if all cases of NaN are handled, otherwise animation won't stop\r\n\r\n\t\t\t\tif (workingValue != value) {\r\n\t\t\t\t\tlet animation: Animation = this.animate({ childObject: this.values[name], property: \"workingValue\", from: workingValue, to: value, dummyData: name }, newDuration, this.component.interpolationEasing);\r\n\t\t\t\t\tif (delay != null) {\r\n\t\t\t\t\t\tanimation.delay(delay);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tanimation.events.on(\"animationstarted\", this.handleInterpolationProgress, this);\r\n\t\t\t\t\tanimation.events.on(\"animationprogress\", this.handleInterpolationProgress, this);\r\n\t\t\t\t\tanimation.events.on(\"animationended\", this.handleInterpolationProgress, this);\r\n\t\t\t\t\tthis._valueAnimations[name] = animation;\r\n\t\t\t\t\treturn animation;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tlet valueAnimation = this._valueAnimations[name];\r\n\t\t\t\t\tif (valueAnimation) {\r\n\t\t\t\t\t\tvalueAnimation.stop();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.values[name].workingValue = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\r\n\t\t\t\tlet valueAnimation = this._valueAnimations[name];\r\n\t\t\t\tif (valueAnimation) {\r\n\t\t\t\t\tvalueAnimation.stop();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.values[name].workingValue = value;\r\n\t\t\t\tif (this._eventDispatcher && !this.__disabled) {\r\n\t\t\t\t\tif (this.events.isEnabled(\"workingvaluechanged\")) {\r\n\t\t\t\t\t\tconst event: AMEvent[\"workingvaluechanged\"] = {\r\n\t\t\t\t\t\t\ttype: \"workingvaluechanged\",\r\n\t\t\t\t\t\t\ttarget: this,\r\n\t\t\t\t\t\t\tproperty: name\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tthis.events.dispatchImmediately(\"workingvaluechanged\", event);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.component) {\r\n\t\t\t\t\tthis.component.handleDataItemWorkingValueChange(this, name);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a relative location for a data field.\r\n\t *\r\n\t * A location is always relative on a 0 to 1 scale, with 0 being beginning,\r\n\t * 0.5 middle and 1 end.\r\n\t *\r\n\t * @todo Rewiew description\r\n\t * @param name Data field name\r\n\t * @param value Location (0-1)\r\n\t * @param duration Duration (ms) to animate to new value to\r\n\t * @param delay Delay animation (ms)\r\n\t */\r\n\tpublic setLocation(name: string, value: number, duration?: number, delay?: number) {\r\n\t\tlet currentLocation: number = this.locations[name];\r\n\r\n\t\tif (currentLocation !== value) {\r\n\t\t\tthis.locations[name] = value;\r\n\t\t\tif (this._eventDispatcher && !this.__disabled) {\r\n\t\t\t\tif (this.events.isEnabled(\"locationchanged\")) {\r\n\t\t\t\t\tconst event: AMEvent[\"locationchanged\"] = {\r\n\t\t\t\t\t\ttype: \"locationchanged\",\r\n\t\t\t\t\t\ttarget: this,\r\n\t\t\t\t\t\tproperty: name\r\n\t\t\t\t\t};\r\n\t\t\t\t\tthis.events.dispatchImmediately(\"locationchanged\", event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.component) {\r\n\t\t\t\tthis.component.handleDataItemValueChange(this, name); // correct\r\n\t\t\t}\r\n\r\n\t\t\tthis.setWorkingLocation(name, value, duration, delay);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a current working location for a data field.\r\n\t *\r\n\t * @todo Rewiew description\r\n\t * @param name Data field name\r\n\t * @param value Location (0-1)\r\n\t * @param duration Duration (ms) to animate to new value to\r\n\t * @param delay Delay animation (ms)\r\n\t */\r\n\tpublic setWorkingLocation(name: string, value: number, duration?: number, delay?: number): $type.Optional {\r\n\t\tlet newDuration: $type.Optional = this.getDuration(duration);\r\n\t\tlet workingLocation: number = this.workingLocations[name];\r\n\r\n\t\tif (newDuration != null && newDuration > 0 && $type.isNumber(workingLocation) && this.component) { // sometimes NaN is passed, so only change this to != null if all cases of NaN are handled, otherwise animation won't stop\r\n\t\t\tif (workingLocation != value) {\r\n\t\t\t\tlet animation: Animation = this.animate({ childObject: this.workingLocations, property: name, from: workingLocation, to: value, dummyData: name }, newDuration, this.component.interpolationEasing);\r\n\t\t\t\tif (delay != null) {\r\n\t\t\t\t\tanimation.delay(delay);\r\n\t\t\t\t}\r\n\t\t\t\tanimation.events.on(\"animationstarted\", this.handleInterpolationProgress, this);\r\n\t\t\t\tanimation.events.on(\"animationprogress\", this.handleInterpolationProgress, this);\r\n\t\t\t\tanimation.events.on(\"animationended\", this.handleInterpolationProgress, this);\r\n\t\t\t\tthis._locationAnimations[name] = animation;\r\n\t\t\t\treturn animation;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet locationAnimation = this._locationAnimations[name];\r\n\t\t\t\tif (locationAnimation) {\r\n\t\t\t\t\tlocationAnimation.stop();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.workingLocations[name] = value;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet locationAnimation = this._locationAnimations[name];\r\n\t\t\tif (locationAnimation) {\r\n\t\t\t\tlocationAnimation.stop();\r\n\t\t\t}\r\n\r\n\t\t\tthis.workingLocations[name] = value;\r\n\r\n\t\t\tif (this._eventDispatcher && !this.__disabled) {\r\n\t\t\t\tif (this.events.isEnabled(\"workinglocationchanged\")) {\r\n\t\t\t\t\tconst event: AMEvent[\"workinglocationchanged\"] = {\r\n\t\t\t\t\t\ttype: \"workinglocationchanged\",\r\n\t\t\t\t\t\ttarget: this,\r\n\t\t\t\t\t\tproperty: name\r\n\t\t\t\t\t};\r\n\t\t\t\t\tthis.events.dispatchImmediately(\"workinglocationchanged\", event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.component) {\r\n\t\t\t\tthis.component.handleDataItemWorkingLocationChange(this, name);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets Date value to a data field.\r\n\t *\r\n\t * @param name Data field name\r\n\t * @param date Date object\r\n\t * @param duration Duration (ms) to animate to new value to\r\n\t */\r\n\tpublic setDate(name: string, date: Date, duration?: number) {\r\n\r\n\t\tif (!$type.isDate(date) && this.component) {\r\n\t\t\tdate = this.component.dateFormatter.parse(date);\r\n\t\t}\r\n\r\n\t\tlet currentDate: Date = this.dates[name];\r\n\t\tif (currentDate !== date) {\r\n\t\t\tthis.dates[name] = date;\r\n\t\t\tthis.setValue(name, date.getTime(), duration);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a Date value of the data field.\r\n\t *\r\n\t * @param name Data field name\r\n\t * @return Date object\r\n\t */\r\n\tpublic getDate(name: string): Date {\r\n\t\tif (this._adapterO) {\r\n\t\t\treturn this._adapterO.apply(\"date\", {\r\n\t\t\t\tdate: this.dates[name],\r\n\t\t\t\tfield: name\r\n\t\t\t}).date;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.dates[name];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a Data Item-specific visual properties to apply to related elements.\r\n\t *\r\n\t * @param name Property name\r\n\t * @param value Property value\r\n\t */\r\n\tpublic setProperty(name: string, value: any) {\r\n\t\tif (this.properties[name] !== value) {\r\n\t\t\tthis.hasProperties = true;\r\n\t\t\tthis.properties[name] = value;\r\n\t\t\tif (this._eventDispatcher && !this.__disabled) {\r\n\t\t\t\tif (this.events.isEnabled(\"propertychanged\")) {\r\n\t\t\t\t\tconst event: AMEvent[\"propertychanged\"] = {\r\n\t\t\t\t\t\ttype: \"propertychanged\",\r\n\t\t\t\t\t\ttarget: this,\r\n\t\t\t\t\t\tproperty: name,\r\n\t\t\t\t\t\tvalue: value\r\n\t\t\t\t\t};\r\n\t\t\t\t\tthis.events.dispatchImmediately(\"propertychanged\", event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.component) {\r\n\t\t\t\tthis.component.handleDataItemPropertyChange(this, name);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a related category for this Data Item.\r\n\t *\r\n\t * @todo Review description\r\n\t * @param name Data field name\r\n\t * @param value Category\r\n\t */\r\n\tpublic setCategory(name: string, value: string) {\r\n\t\tif (!$type.isString(value)) {\r\n\t\t\tvalue = $type.castString(value);\r\n\t\t}\r\n\r\n\t\tif (this.categories[name] !== value) {\r\n\t\t\tthis.categories[name] = value;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Clones the Data Item, including all related data.\r\n\t *\r\n\t * @return New Data Item clone\r\n\t */\r\n\t//public clone(cloneId?: string): this {\r\n\t//\tlet dataItem: this = super.clone(cloneId);\r\n\t//\tdataItem.copyFrom(this);\r\n\t//\treturn dataItem;\r\n\t//}\r\n\r\n\t/**\r\n\t * Copies all properties and related data from different data item.\r\n\t *\r\n\t * @param object Source data item\r\n\t */\r\n\tpublic copyFrom(source: this) {\r\n\r\n\t\tsuper.copyFrom(source);\r\n\r\n\t\tif (source.dataContext) {\r\n\t\t\tthis.dataContext = $utils.copy(source.dataContext, {});\r\n\t\t}\r\n\r\n\t\t$utils.copyProperties(source.locations, this.locations);\r\n\t\t/*\r\n\t\t$utils.copyProperties(source.properties, this.properties);\r\n\t\t$utils.copyProperties(source.categories, this.categories);\r\n\t\t$utils.copyProperties(source.values, this.values);\r\n\t\t$utils.copyProperties(source.dates, this.dates);\r\n\r\n\t\t$object.each(source.values, (name, value) => {\r\n\t\t\tthis.values[name] = $object.copy(value);\r\n\t\t});*/\r\n\t\tif (source._adapterO) {\r\n\t\t\tthis.adapter.copyFrom(source._adapterO);\r\n\t\t}\r\n\t\t//this.events.copyFrom(source.events); // because copied in Base\r\n\t\tthis.component = source.component;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets opacity for all Data Item's related elements (Sprites).\r\n\t *\r\n\t * @param value Opacity (0-1)\r\n\t */\r\n\tpublic set opacity(value: number) {\r\n\t\t$array.each(this.sprites, (sprite) => {\r\n\t\t\tsprite.opacity = value;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets whether this data point should not be included in the scale and\r\n\t * minimum/maximum calculations.\r\n\t *\r\n\t * E.g. some we may want to exclude a particular data point from influencing\r\n\t * [[ValueAxis]] scale.\r\n\t *\r\n\t * @param value Exclude from min/max calculations?\r\n\t */\r\n\tpublic set ignoreMinMax(value: boolean) {\r\n\t\tthis._ignoreMinMax = value;\r\n\t\tif (this._eventDispatcher && !this.__disabled) {\r\n\t\t\tif (this.events.isEnabled(\"propertychanged\")) {\r\n\t\t\t\tconst event: AMEvent[\"propertychanged\"] = {\r\n\t\t\t\t\ttype: \"propertychanged\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tproperty: \"ignoreMinMax\",\r\n\t\t\t\t\tvalue: value\r\n\t\t\t\t};\r\n\t\t\t\tthis.events.dispatchImmediately(\"propertychanged\", event);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.component) {\r\n\t\t\tthis.component.handleDataItemPropertyChange(this, \"ignoreMinMax\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Exclude from min/max calculations?\r\n\t * @return Exclude from min/max calculations?\r\n\t */\r\n\tpublic get ignoreMinMax(): boolean {\r\n\t\treturn this._ignoreMinMax;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and starts an [[Animation]] to interpolate (morph) Data Item's\r\n\t * properties and/or values.\r\n\t *\r\n\t * @see {@link Animation}\r\n\t * @param animationOptions Animation options\r\n\t * @param duration Animation duration (ms)\r\n\t * @param easing Easing function\r\n\t * @return Animation\r\n\t */\r\n\tpublic animate(animationOptions: IAnimationOptions[] | IAnimationOptions, duration: number, easing?: (value: number) => number): Animation {\r\n\t\treturn new Animation(this, animationOptions, duration, easing).start();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles intermediate steps when Data Item is interpolating (morphing) from\r\n\t * one value to another.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Event object\r\n\t */\r\n\tpublic handleInterpolationProgress(event: AMEvent[\"animationstarted\" | \"animationended\" | \"animationprogress\"]) {\r\n\t\tlet animation: Animation = event.target;\r\n\r\n\t\t// it's always only one options, no need cycle\r\n\t\tlet animationOptions: IAnimationOptions = animation.animationOptions[0];\r\n\t\tif (animationOptions) {\r\n\t\t\tif (this._eventDispatcher && !this.__disabled) {\r\n\t\t\t\tif (this.events.isEnabled(\"workingvaluechanged\")) {\r\n\t\t\t\t\tconst event: AMEvent[\"workingvaluechanged\"] = {\r\n\t\t\t\t\t\ttype: \"workingvaluechanged\",\r\n\t\t\t\t\t\ttarget: this,\r\n\t\t\t\t\t\tproperty: animationOptions.dummyData\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tthis.events.dispatchImmediately(\"workingvaluechanged\", event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.component) {\r\n\t\t\t\tthis.component.handleDataItemWorkingValueChange(this, animationOptions.dummyData);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks whether Data Item has values set for all of the data fields,\r\n\t * supplied via argument.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param fields Field list to check\r\n\t * @return Has values for all fields?\r\n\t */\r\n\tpublic hasValue(fields: string[]): boolean {\r\n\t\t// todo: what about categories?\r\n\t\tfor (let i = 0, len = fields.length; i < len; i++) {\r\n\t\t\tlet values = this.values[fields[i]];\r\n\t\t\tif (!values || !$type.hasValue(values.value)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Depth of the Data Item.\r\n\t *\r\n\t * In nested data structures, like TreeMap, this indicates the level this\r\n\t * data point is at, in relation to the parent Data Item.\r\n\t *\r\n\t * @return Depth\r\n\t */\r\n\tpublic get depth(): number {\r\n\t\tif (!this.parent) {\r\n\t\t\treturn 0;\r\n\r\n\t\t} else {\r\n\t\t\treturn this.parent.depth + 1;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets to a reference to an original object from Component's data.\r\n\t *\r\n\t * @return [description]\r\n\t */\r\n\tpublic get dataContext(): Object {\r\n\t\treturn this._dataContext;\r\n\t}\r\n\r\n\t/**\r\n\t * A reference to an original object in Component's data, that this Data Item\r\n\t * is derived from.\r\n\t *\r\n\t * @param value Original data object\r\n\t */\r\n\tpublic set dataContext(value: Object) {\r\n\t\tthis._dataContext = value;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * adds a sprite to dataItem.sprites array\r\n\t * @ignore\r\n\t */\r\n\taddSprite(sprite: Sprite) {\r\n\t\tif (sprite.dataItem && sprite.dataItem != this) {\r\n\t\t\t$array.remove(sprite.dataItem.sprites, sprite);\r\n\t\t}\r\n\t\tif (!this.visible) {\r\n\t\t\tsprite.hide(0);\r\n\t\t}\r\n\r\n\t\tif (this.isHiding) {\r\n\t\t\tsprite.hide();\r\n\t\t}\r\n\t\tthis.sprites.push(sprite);\r\n\t\tsprite.dataItem = this;\r\n\t}\r\n}\r\n","/**\n * ============================================================================\n * IMPORTS\n * ============================================================================\n * @hidden\n */\nimport { ILocale } from \"./utils/Language\";\n\n/**\n * Defines system-wide options for amCharts 4.\n *\n * Accessible via singleton object `am4core.options`.\n *\n * Options set here are will be applicable to all charts created afterwards.\n *\n * E.g.:\n *\n * ```TypeScript\n * am4core.options.autoSetClassName = true;\n * ```\n * ```JavaScript\n * am4core.options.autoSetClassName = true;\n * ```\n */\nexport interface Options {\n\t/**\n\t * Console output enabled.\n\t */\n\tverbose: boolean;\n\n\t/**\n\t * @ignore\n\t */\n\tcommercialLicense: boolean;\n\n\t/**\n\t * amCharts will add `class` property to some elements. All those class names\n\t * will be prefixed by `classNamePrefix`.\n\t *\n\t * @default \"amcharts-\"\n\t */\n\tclassNamePrefix: string;\n\n\t/**\n\t * Normally, the chart will create its elements without any `className`\n\t * attributes.\n\t *\n\t * If you set this to `true`, it will set class names that will reflect\n\t * the actual class this the SVG element corresponds to.\n\t *\n\t * The className will contain class prefixed with `amcharts-`. (prefix is\n\t * configurable via `classNamePrefix`)\n\t *\n\t * E.g. `\"amcharts-button\"`.\n\t *\n\t * @default false\n\t */\n\tautoSetClassName: boolean;\n\n\t/**\n\t * A default locale to auto-apply to all new charts created.\n\t */\n\tdefaultLocale?: ILocale;\n\n\t/**\n\t * When multi-segment lines ([[Polyline]]) are drawn some points may be\n\t * simplified if they are closer than `minPolylineStep`.\n\t *\n\t * The bigger this value, the more simplified lines will come out.\n\t *\n\t * This setting will effect [[LineSeries]] and derivative classes.\n\t * \n\t * @default 0.5\n\t * @since 4.2.5\n\t */\n\tminPolylineStep?: number;\n\n\t/**\n\t * Whether the chart should only display when its container is visible\n\t * on the document viewport.\n\t * \n\t * This setting can be combined with `queue` for better performance.\n\t * \n\t * @default false\n\t * @since 4.5.0\n\t */\n\tonlyShowOnViewport: boolean;\n\n\t/**\n\t * A reference to the HTML element to be used as a secondary viewport for\n\t * charts.\n\t *\n\t * Use this if you are placing charts in a scrollable container and using\n\t * with `onlyShowOnViewport = true`.\n\t *\n\t * @since 4.7.4\n\t */\n\tviewportTarget?: HTMLElement;\n\n\t/**\n\t * Whether to queue all charts rendering. One chart will be rendered at a time. The next\n\t * chart starts to render after the previous chart's ready event.\n\t * \n\t * This setting can be combined with `onlyShowOnViewport` for better performance.\n\t * \n\t * @default false\n\t * @since 4.5.0\n\t */\n\tqueue: boolean;\n\n\t/**\n\t * List of applied licenses.\n\t * \n\t * @type {String[]}\n\t */\n\tlicenses: String[];\n\n}\n\n/**\n * Global options.\n */\nexport const options: Options = {\n\tverbose: true,\n\tcommercialLicense: false,\n\tclassNamePrefix: \"amcharts-\",\n\tautoSetClassName: false,\n\tminPolylineStep: 0.5,\n\tonlyShowOnViewport: false,\n\tqueue: false,\n\tlicenses: []\n};","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ITheme } from \"../themes/ITheme\";\r\nimport { EventDispatcher, AMEvent } from \"./utils/EventDispatcher\";\r\nimport { Dictionary } from \"./utils/Dictionary\";\r\nimport { Sprite } from \"./Sprite\";\r\nimport { Container } from \"./Container\";\r\nimport { Component } from \"./Component\";\r\nimport { cache } from \"./utils/Cache\";\r\nimport * as $type from \"./utils/Type\";\r\nimport * as $string from \"./utils/String\";\r\nimport * as $array from \"./utils/Array\";\r\n\r\n\r\n/**\r\n * Define events available for [[Registry]]\r\n */\r\nexport interface IRegistryEvents {\r\n\r\n\t/**\r\n\t * Invoked when update cycle starts. Before invalid elements are re-validated.\r\n\t */\r\n\tenterframe: {};\r\n\r\n\t/**\r\n\t * Invoked when udpate cycle ends. After invalid elements have been\r\n\t * re-validated.\r\n\t */\r\n\texitframe: {};\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Registry is used to store miscellaneous system-wide information, like ids,\r\n * maps, themes, and registered classes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport class Registry {\r\n\r\n\t/**\r\n\t * Unique ID of the object.\r\n\t */\r\n\tpublic uid: string;\r\n\r\n\t/**\r\n\t * Event dispacther.\r\n\t */\r\n\tpublic events: EventDispatcher> = new EventDispatcher();\r\n\r\n\t/**\r\n\t * Holds a universal mapping collection, so that elements and their children\r\n\t * can create and look up all kinds of relations between id and object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _map: $type.Optional>;\r\n\r\n\t/**\r\n\t * All currently applied themes. All new chart instances created will\r\n\t * automatically inherit and retain System's themes.\r\n\t */\r\n\tpublic themes: ITheme[] = [];\r\n\r\n\t/**\r\n\t * List of all loaded available themes.\r\n\t *\r\n\t * Whenever a theme loads, it registers itself in System's `loadedThemes`\r\n\t * collection.\r\n\t */\r\n\tpublic loadedThemes: { [index: string]: ITheme } = {};\r\n\r\n\t/**\r\n\t * An indeternal counter used to generate unique IDs.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _uidCount: number = 0;\r\n\r\n\t/**\r\n\t * Keeps register of class references so that they can be instnatiated using\r\n\t * string key.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic registeredClasses: { [index: string]: any } = {};\r\n\r\n\t/**\r\n\t * Holds all generated placeholders.\r\n\t */\r\n\tprotected _placeholders: { [index: string]: string } = {};\r\n\r\n\t/**\r\n\t * A list of invalid(ated) [[Sprite]] objects that need to be re-validated\r\n\t * during next cycle.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidSprites: { [index: string]: Array } = {};\r\n\r\n\t/**\r\n\t * Components are added to this list when their data provider changes to\r\n\t * a new one or data is added/removed from their data provider.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidDatas: { [index: string]: Array } = {};\r\n\r\n\t/**\r\n\t * Components are added to this list when values of their raw data change.\r\n\t * Used when we want a smooth animation from one set of values to another.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidRawDatas: Array = [];\r\n\r\n\t/**\r\n\t * Components are added to this list when values of their data changes\r\n\t * (but not data provider itself).\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidDataItems: Array = [];\r\n\r\n\t/**\r\n\t * Components are added to this list when their data range (selection) is\r\n\t * changed, e.g. zoomed.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidDataRange: Array = [];\r\n\r\n\t/**\r\n\t * A list of [[Sprite]] objects that have invalid(ated) positions, that need\r\n\t * to be recalculated.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidPositions: { [index: string]: Array } = {};\r\n\r\n\t/**\r\n\t * A list of [[Container]] objects with invalid(ated) layouts.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidLayouts: { [index: string]: Array } = {};\r\n\r\n\t/**\r\n\t * An array holding all active (non-disposed) top level elemens.\r\n\t *\r\n\t * When, for example, a new chart is created, its instance will be added to\r\n\t * this array, and will be removed when the chart is disposed.\r\n\t */\r\n\tpublic baseSprites: Array = [];\r\n\r\n\tpublic baseSpritesByUid: { [index: string]: Sprite } = {};\r\n\r\n\tpublic queue: Array = [];\r\n\r\n\tconstructor() {\r\n\t\tthis.uid = this.getUniqueId();\r\n\r\n\t\tthis.invalidSprites.noBase = [];\r\n\t\tthis.invalidDatas.noBase = [];\r\n\t\tthis.invalidLayouts.noBase = [];\r\n\t\tthis.invalidPositions.noBase = [];\r\n\t}\r\n\r\n\t/**\r\n\t * Generates a unique chart system-wide ID.\r\n\t *\r\n\t * @return Generated ID\r\n\t */\r\n\tpublic getUniqueId(): string {\r\n\t\tlet uid = this._uidCount;\r\n\t\tthis._uidCount += 1;\r\n\t\treturn \"id-\" + uid;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a universal collection for mapping ids with objects.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Map collection\r\n\t */\r\n\tpublic get map(): Dictionary {\r\n\t\tif (!this._map) {\r\n\t\t\tthis._map = new Dictionary();\r\n\t\t}\r\n\t\treturn this._map;\r\n\t}\r\n\r\n\t/**\r\n\t * Caches value in object's cache.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param key Key\r\n\t * @param value Value\r\n\t * @param ttl TTL in seconds\r\n\t */\r\n\tpublic setCache(key: string, value: any, ttl?: number): void {\r\n\t\tcache.set(this.uid, key, value, ttl);\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieves cached value.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param key Key\r\n\t * @param value Value to return if cache is not available\r\n\t * @return Value\r\n\t */\r\n\tpublic getCache(key: string, value: any = undefined): any {\r\n\t\treturn cache.get(this.uid, key, value);\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches an event using own event dispatcher. Will automatically\r\n\t * populate event data object with event type and target (this element).\r\n\t * It also checks if there are any handlers registered for this sepecific\r\n\t * event.\r\n\t *\r\n\t * @param eventType Event type (name)\r\n\t * @param data Data to pass into event handler(s)\r\n\t */\r\n\tpublic dispatch(eventType: Key, data?: any): void {\r\n\t\t// @todo Implement proper type check\r\n\t\tif (this.events.isEnabled(eventType)) {\r\n\t\t\tif (data) {\r\n\t\t\t\tdata.type = eventType;\r\n\t\t\t\tdata.target = data.target || this;\r\n\t\t\t\t(this.events).dispatch(eventType, {\r\n\t\t\t\t\ttype: eventType,\r\n\t\t\t\t\ttarget: this\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t(this.events).dispatch(eventType, {\r\n\t\t\t\t\ttype: eventType,\r\n\t\t\t\t\ttarget: this\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Works like `dispatch`, except event is triggered immediately, without\r\n\t * waiting for the next frame cycle.\r\n\t *\r\n\t * @param eventType Event type (name)\r\n\t * @param data Data to pass into event handler(s)\r\n\t */\r\n\tpublic dispatchImmediately(eventType: Key, data?: any): void {\r\n\t\t// @todo Implement proper type check\r\n\t\tif (this.events.isEnabled(eventType)) {\r\n\t\t\tif (data) {\r\n\t\t\t\tdata.type = eventType;\r\n\t\t\t\tdata.target = data.target || this;\r\n\t\t\t\t(this.events).dispatchImmediately(eventType, data);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t(this.events).dispatchImmediately(eventType, {\r\n\t\t\t\t\ttype: eventType,\r\n\t\t\t\t\ttarget: this\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a unique placeholder suitable for the key.\r\n\t *\r\n\t * @param key Key\r\n\t * @return Random string to be used as placeholder\r\n\t */\r\n\tpublic getPlaceholder(key: string): string {\r\n\t\tif ($type.hasValue(this._placeholders[key])) {\r\n\t\t\treturn this._placeholders[key];\r\n\t\t}\r\n\t\tthis._placeholders[key] = \"__amcharts_\" + key + \"_\" + $string.random(8) + \"__\";\r\n\t\treturn this._placeholders[key];\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic addToInvalidComponents(component: Component) {\r\n\t\tif (component.baseId) {\r\n\t\t\t$array.move(this.invalidDatas[component.baseId], component);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t$array.move(this.invalidDatas[\"noBase\"], component);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic removeFromInvalidComponents(component: Component) {\r\n\t\tif (component.baseId) {\r\n\t\t\t$array.remove(this.invalidDatas[component.baseId], component);\r\n\t\t}\r\n\r\n\t\t$array.remove(this.invalidDatas[\"noBase\"], component);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic addToInvalidSprites(sprite: Sprite) {\r\n\t\tif (sprite.baseId) {\r\n\t\t\t$array.add(this.invalidSprites[sprite.baseId], sprite);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t$array.add(this.invalidSprites[\"noBase\"], sprite);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic removeFromInvalidSprites(sprite: Sprite) {\r\n\t\tif (sprite.baseId) {\r\n\t\t\t$array.remove(this.invalidSprites[sprite.baseId], sprite);\r\n\t\t}\r\n\r\n\t\t$array.remove(this.invalidSprites[\"noBase\"], sprite);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic addToInvalidPositions(sprite: Sprite) {\r\n\t\tif (sprite.baseId) {\r\n\t\t\t$array.add(this.invalidPositions[sprite.baseId], sprite);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t$array.add(this.invalidPositions[\"noBase\"], sprite);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic removeFromInvalidPositions(sprite: Sprite) {\r\n\t\tif (sprite.baseId) {\r\n\t\t\t$array.remove(this.invalidPositions[sprite.baseId], sprite);\r\n\t\t}\r\n\r\n\t\t$array.remove(this.invalidPositions[\"noBase\"], sprite);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic addToInvalidLayouts(sprite: Container) {\r\n\t\tif (sprite.baseId) {\r\n\t\t\t$array.add(this.invalidLayouts[sprite.baseId], sprite);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t$array.add(this.invalidLayouts[\"noBase\"], sprite);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic removeFromInvalidLayouts(sprite: Container) {\r\n\t\tif (sprite.baseId) {\r\n\t\t\t$array.remove(this.invalidLayouts[sprite.baseId], sprite);\r\n\t\t}\r\n\r\n\t\t$array.remove(this.invalidLayouts[\"noBase\"], sprite);\r\n\t}\r\n}\r\n\r\n/**\r\n * A singleton global instance of [[Registry]].\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport let registry = new Registry();\r\n\r\n\r\n/**\r\n * Returns `true` if object is an instance of the class. It's the same as `instanceof` except it doesn't need to import the class.\r\n *\r\n * @param object Object\r\n * @param name Class name\r\n * @return Is instance of class\r\n */\r\nexport function is(object: any, name: string): object is A {\r\n\tconst x = registry.registeredClasses[name];\r\n\treturn x != null && object instanceof x;\r\n}\r\n","/**\r\n * This is the main class that encapsulates every object on the chart.\r\n *\r\n * If it's an element that is to be displayed on the screen at some point, its\r\n * class must extend [[Sprite]] class.\r\n */\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { SpriteState } from \"./SpriteState\";\r\nimport { ISpriteEvents, SpriteEventDispatcher, AMEvent } from \"./SpriteEvents\";\r\nexport { ISpriteEvents, SpriteEventDispatcher, AMEvent };\r\n\r\nimport { BaseObjectEvents } from \"./Base\";\r\nimport { Adapter } from \"./utils/Adapter\";\r\nimport { ITheme } from \"../themes/ITheme\";\r\nimport { Dictionary, IDictionaryEvents, DictionaryTemplate, DictionaryDisposer } from \"./utils/Dictionary\";\r\nimport { ListTemplate, ListDisposer, List } from \"./utils/List\";\r\nimport { EventDispatcher } from \"./utils/EventDispatcher\";\r\nimport { MultiDisposer, IDisposer, Disposer, MutableValueDisposer } from \"./utils/Disposer\";\r\nimport { Animation, IAnimatable, IAnimationOptions, AnimationDisposer } from \"./utils/Animation\";\r\nimport { Optional } from \"./utils/Type\";\r\nimport { Group } from \"./rendering/Group\";\r\nimport { Paper, getGhostPaper } from \"./rendering/Paper\";\r\nimport { DataItem } from \"./DataItem\";\r\nimport { Container } from \"./Container\";\r\nimport { Pattern } from \"./rendering/fills/Pattern\";\r\nimport { LinearGradient } from \"./rendering/fills/LinearGradient\";\r\nimport { RadialGradient } from \"./rendering/fills/RadialGradient\";\r\nimport { SVGContainer } from \"./rendering/SVGContainer\";\r\nimport { Align } from \"./defs/Align\";\r\nimport { Roles, AriaLive } from \"./defs/Accessibility\";\r\nimport { IPlugin } from \"./utils/Plugin\";\r\nimport { Popup } from \"./elements/Popup\";\r\nimport { Modal } from \"./elements/Modal\";\r\nimport { Color, color, toColor } from \"./utils/Color\";\r\nimport { Ordering } from \"./utils/Order\";\r\n\r\nimport { HorizontalCenter } from \"./defs/HorizontalCenter\";\r\nimport { VerticalCenter } from \"./defs/VerticalCenter\";\r\nimport { VerticalAlign } from \"./defs/VerticalAlign\";\r\nimport { ShapeRendering } from \"./defs/ShapeRendering\";\r\nimport { AMElement } from \"./rendering/AMElement\";\r\nimport { Filter } from \"./rendering/filters/Filter\";\r\n\r\nimport { ColorModifier } from \"./rendering/fills/ColorModifier\";\r\n\r\nimport { getInteraction } from \"./interaction/Interaction\";\r\nimport { InteractionObject } from \"./interaction/InteractionObject\";\r\n\r\nimport { IInertiaOptions, ISwipeOptions, IHitOptions, IHoverOptions, ICursorOptions, IKeyboardOptions, IMouseOptions } from \"./interaction/InteractionOptions\";\r\nimport { IPointer } from \"./interaction/Pointer\";\r\nimport { MouseCursorStyle } from \"./interaction/Mouse\";\r\nimport { InertiaTypes } from \"./interaction/Inertia\";\r\nimport { IStyleProperty } from \"./defs/IStyleProperty\";\r\n\r\nimport { options } from \"./Options\";\r\nimport { registry } from \"./Registry\";\r\nimport { IPoint } from \"./defs/IPoint\";\r\nimport { IRectangle } from \"./defs/IRectangle\";\r\nimport { Tooltip } from \"./elements/Tooltip\";\r\n\r\nimport { NumberFormatter } from \"./formatters/NumberFormatter\";\r\nimport { DateFormatter } from \"./formatters/DateFormatter\";\r\nimport { DurationFormatter } from \"./formatters/DurationFormatter\";\r\nimport { getTextFormatter } from \"./formatters/TextFormatter\";\r\nimport { Language } from \"./utils/Language\";\r\nimport { Export } from \"./export/Export\";\r\nimport { AmChartsLogo } from \"./elements/AmChartsLogo\";\r\n\r\n\r\nimport { ISVGAttribute } from \"./rendering/AMElement\";\r\n\r\nimport * as $utils from \"./utils/Utils\";\r\nimport * as $math from \"./utils/Math\";\r\nimport * as $strings from \"./utils/Strings\";\r\nimport * as $array from \"./utils/Array\";\r\nimport * as $object from \"./utils/Object\";\r\nimport * as $type from \"./utils/Type\";\r\nimport * as $iter from \"./utils/Iterator\";\r\n\r\nimport { system } from \"./System\";\r\n\r\nimport { Percent, percent } from \"./utils/Percent\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Sprite]]\r\n */\r\nexport interface ISpriteProperties {\r\n\tdisabled?: boolean;\r\n\tx?: number | Percent;\r\n\ty?: number | Percent;\r\n\twidth?: number | Percent;\r\n\theight?: number | Percent;\r\n\tscale?: number;\r\n\trotation?: number;\r\n\tpixelPerfect?: boolean;\r\n\tmarginLeft?: number;\r\n\tmarginRight?: number;\r\n\tmarginTop?: number;\r\n\tmarginBottom?: number;\r\n\tfillOpacity?: number;\r\n\tfill?: Color | LinearGradient | RadialGradient | Pattern;\r\n\topacity?: number;\r\n\tstroke?: Color | LinearGradient | RadialGradient | Pattern;\r\n\tstrokeOpacity?: number;\r\n\tstrokeWidth?: number;\r\n\tstrokeDasharray?: string;\r\n\tstrokeDashoffset?: number;\r\n\tstrokeLinecap?: \"butt\" | \"square\" | \"round\";\r\n\tstrokeLinejoin?: \"miter\" | \"round\" | \"bevel\";\r\n\tshapeRendering?: ShapeRendering;\r\n\tdraggable?: boolean;\r\n\tinert?: boolean;\r\n\tresizable?: boolean;\r\n\tswipeable?: boolean;\r\n\ttrackable?: boolean;\r\n\thoverable?: boolean;\r\n\tclickable?: boolean;\r\n\ttogglable?: boolean;\r\n\twheelable?: boolean;\r\n\tfocusable?: boolean;\r\n\ttabindex?: number;\r\n\tcontextMenuDisabled?: boolean;\r\n\tvisible?: boolean;\r\n\ttooltipText?: string;\r\n\ttooltipHTML?: string;\r\n\ttooltipX?: number | Percent;\r\n\ttooltipY?: number | Percent;\r\n\talwaysShowTooltip?: boolean;\r\n\ttooltipPosition?: \"fixed\" | \"pointer\";\r\n\tshowTooltipOn?: \"hover\" | \"hit\" | \"always\";\r\n\tinteractionsEnabled?: boolean;\r\n\thorizontalCenter?: HorizontalCenter;\r\n\tverticalCenter?: VerticalCenter;\r\n\talign?: Align;\r\n\tvalign?: VerticalAlign;\r\n\tpaddingLeft?: number;\r\n\tpaddingRight?: number;\r\n\tpaddingTop?: number;\r\n\tpaddingBottom?: number;\r\n\tminX?: number;\r\n\tminY?: number;\r\n\tmaxX?: number;\r\n\tmaxY?: number;\r\n\tdx?: number;\r\n\tdy?: number;\r\n\trole?: Roles;\r\n\treaderDescribedBy?: string;\r\n\treaderLabelledBy?: string;\r\n\treaderLive?: AriaLive;\r\n\treaderControls?: string;\r\n\treaderChecked?: boolean;\r\n\treaderHidden?: boolean;\r\n\treaderDescription?: string;\r\n\treaderTitle?: string;\r\n\treaderOrientation?: string;\r\n\treaderValueNow?: string;\r\n\treaderValueText?: string;\r\n\tnonScaling?: boolean;\r\n\tnonScalingStroke?: boolean;\r\n\tzIndex?: number;\r\n\tminWidth?: number;\r\n\tmaxWidth?: number;\r\n\tminHeight?: number;\r\n\tmaxHeight?: number;\r\n\tfillModifier?: ColorModifier;\r\n\tstrokeModifier?: ColorModifier;\r\n\thoverOnFocus?: boolean;\r\n\tpath?: string;\r\n\turlTarget?: string;\r\n\turl?: string;\r\n\thidden?: boolean;\r\n\tshowOnInit?: boolean;\r\n\tid?: string;\r\n\tisActive?: boolean;\r\n\tisHover?: boolean;\r\n}\r\n\r\n/**\r\n * Defines animation options\r\n */\r\nexport interface ISpriteAnimationOptions {\r\n\tfrom?: Percent | Color | number | string;\r\n\tto: Percent | Color | number | string;\r\n\tproperty: any; // todo: this[\"_properties\"] can not be used here, think.\r\n}\r\n\r\n/**\r\n * Defines list ofvisual properties\r\n */\r\nexport const visualProperties: (keyof ISpriteProperties)[] = [\"fill\", \"fillOpacity\", \"stroke\", \"strokeOpacity\", \"strokeWidth\", \"strokeDasharray\", \"strokeDashoffset\", \"strokeLinecap\", \"strokeLinejoin\"]; // do not add opacity here, as it is used for showing/hiding\r\n\r\n/**\r\n * Represents a list of available adapters for [[Sprite]]\r\n */\r\nexport interface ISpriteAdapters extends ISpriteProperties {\r\n\r\n\tpixelHeight: number;\r\n\tpixelWidth: number;\r\n\trelativeHeight: number\r\n\trelativeWidth: number;\r\n\tmeasuredHeight: number;\r\n\tmeasuredWidth: number;\r\n\touterHeight: number;\r\n\touterWidth: number;\r\n\tinnerHeight: number;\r\n\tinnerWidth: number;\r\n\tglobalScale: number;\r\n\tpixelMarginRight: number;\r\n\trelativeMarginRight: number;\r\n\tpixelMarginLeft: number;\r\n\trelativeMarginLeft: number;\r\n\tpixelMarginTop: number;\r\n\trelativeMarginTop: number;\r\n\tpixelMarginBottom: number;\r\n\trelativeMarginBottom: number;\r\n\tpixelX: number;\r\n\trelativeX: number;\r\n\tpixelY: number;\r\n\trelativeY: number;\r\n\tmask: Sprite;\r\n\tpopulateString: string;\r\n\r\n\tinertiaOptions: Dictionary;\r\n\thitOptions: IHitOptions;\r\n\thoverOptions: IHoverOptions;\r\n\tswipeOptions: ISwipeOptions;\r\n\tkeyboardOptions: IKeyboardOptions;\r\n\tmouseOptions: IMouseOptions;\r\n\tcursorOptions: ICursorOptions;\r\n\tcriticalError: Error;\r\n};\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Sprite represents any displayable element.\r\n *\r\n * This is the main class that encapsulates every object on the chart.\r\n *\r\n * If it's an element that is to be displayed on the screen at some point, its\r\n * class must extend [[Sprite]] class.\r\n *\r\n * [[Sprite]] class represents the a hierarchical structure. Every object that\r\n * extends [[Sprite]] can have children, that would inherit their properties,\r\n * such as language, formatters, etc.\r\n *\r\n * @see {@link SpriteState}\r\n * @see {@link ISpriteEvents} for a list of available events\r\n * @see {@link ISpriteAdapters} for a list of available Adapters\r\n *\r\n * @todo Review child elements that need to go into `_disposers`\r\n * @important\r\n */\r\nexport class Sprite extends BaseObjectEvents implements IAnimatable {\r\n\r\n\t/**\r\n\t * Defines property types.\r\n\t */\r\n\tpublic _properties!: ISpriteProperties;\r\n\r\n\t/**\r\n\t * Defines state type.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\t//public _state: SpriteState;\r\n\r\n\t/**\r\n\t * Defines type used in the Sprite.\r\n\t */\r\n\tpublic _adapter!: ISpriteAdapters;\r\n\r\n\t/**\r\n\t * Holds values for Sprite's properties.\r\n\t */\r\n\tpublic properties: this[\"_properties\"] = {};\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ISpriteEvents;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic _eventDispatcher: SpriteEventDispatcher> = new SpriteEventDispatcher(this);\r\n\r\n\t/**\r\n\t * Event dispatcher.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/event-listeners/} for more info about Events\r\n\t */\r\n\tpublic get events(): SpriteEventDispatcher> {\r\n\t\treturn this._eventDispatcher;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic _adapterO: Adapter;\r\n\r\n\t/**\r\n\t * Holds Adapter.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/adapters/} for more info about Adapters\r\n\t */\r\n\tpublic get adapter(): Adapter {\r\n\t\tif (!this._adapterO) {\r\n\t\t\tthis._adapterO = new Adapter(this);\r\n\t\t}\r\n\t\treturn this._adapterO;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tprivate _bindings: { [key: string]: IDisposer } = {};\r\n\r\n\t/**\r\n\t * Holds indicator if this Sprite is a \"template\" to be used for creating\r\n\t * other Sprites from and should not be treated as full-fledged element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _isTemplate: boolean = false;\r\n\r\n\tprotected _isPath: boolean = false;\r\n\r\n\t/**\r\n\t * Holds collection of Sprite States.\r\n\t */\r\n\tpublic _states: $type.Optional>>;\r\n\r\n\t/**\r\n\t * Holds indicator whether this sprite was already initialized.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _inited: boolean = false;\r\n\r\n\t/**\r\n\t * Holds indicator whether this sprite was already initialized and ready.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _ready: boolean = false;\r\n\r\n\t/**\r\n\t * A reference to a Tooltip for this Sprite.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _tooltip: $type.Optional;\r\n\r\n\t/**\r\n\t * A special data item which tooltip will use when formatting data. In case\r\n\t * it is not set, dataItem will be used.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _tooltipDataItem: $type.Optional;\r\n\r\n\t/**\r\n\t * A reference to another sprite or sprite template from which tooltip should take colors if getFillFromObject or getStrokeFromObject are set to true.\r\n\t * Mostly used when we need to adjust tooltip color for a series, depending on column or bullet color.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _tooltipColorSource: $type.Optional;\r\n\r\n\t/**\r\n\t * If `sprite.hide()` is called and we have \"hidden\" state and\r\n\t * `transitionDuration > 0`, we set `isHiding` flag to `true` in order to\r\n\t * avoid restarting animations in case `hide()` method is called multiple\r\n\t * times.\r\n\t */\r\n\tpublic isHiding: boolean = false;\r\n\r\n\t/**\r\n\t * If `sprite.hide()` is called, we set isHidden to true when sprite is hidden.\r\n\t * This was added becaus hidden state might have visibility set to true and so\r\n\t * there would not be possible to find out if a sprite is technically hidden or not.\r\n\t */\r\n\tprotected _isHidden: boolean = false;\r\n\r\n\t/**\r\n\t * This property indicates if Sprite is currently being revealed from hidden\r\n\t * state. This is used to prevent multiple calls to `sprite.show()` to\r\n\t * restart reveal animation. (if enabled)\r\n\t */\r\n\tpublic isShowing: boolean = false;\r\n\r\n\t/**\r\n\t * Indicates if this element is a standalone instance. A \"standalone\r\n\t * instance\" means this is a autonomous object which maintains its own\r\n\t * set of controls like Preloader, Export, etc.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic isStandaloneInstance: boolean = false;\r\n\r\n\t/**\r\n\t * Indicates if togglable Sprite is currently active (toggled on).\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _isActive: boolean = false;\r\n\r\n\t/**\r\n\t * A Sprite element to use as a mask for this Sprite.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _mask = new MutableValueDisposer();\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tprotected _clipPath: Optional;\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tprotected _clipElement: $type.Optional;\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tprotected _positionPrecision: number = 3;\r\n\r\n\t/**\r\n\t * Holds reference to Sprite's [[InteractionObject]]. Sprite does not\r\n\t * perform any user interactions directly, it happens via [[InteractionObject]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _interaction: $type.Optional;\r\n\r\n\t/**\r\n\t * An instance of [[Language]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _language = new MutableValueDisposer();\r\n\r\n\t/**\r\n\t * An instance of [[NumberFormatter]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _numberFormatter: $type.Optional;\r\n\r\n\t/**\r\n\t * An instance of [[DateFormatter]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _dateFormatter: $type.Optional;\r\n\r\n\t/**\r\n\t * An instance of [[DurationFormatter]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _durationFormatter: $type.Optional;\r\n\r\n\t/**\r\n\t * An HTML element to which [[svgContainer]] is added.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _htmlContainer: $type.Optional;\r\n\r\n\t/**\r\n\t * An HTML element to which all chart elements are added.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _svgContainer: $type.Optional;\r\n\r\n\t/**\r\n\t * A [[Container]] instance to place this element's [[Tooltip]] elements in\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _tooltipContainer: $type.Optional;\r\n\r\n\r\n\tprotected _urlDisposer: $type.Optional;\r\n\r\n\t/**\r\n\t * Should this element be measured when measuring its parent container's\r\n\t * dimentions?\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _isMeasured: $type.Optional;\r\n\r\n\t/**\r\n\t * Indicates if the chart should follow right-to-left rules.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _rtl: boolean;\r\n\r\n\t/**\r\n\t * Holds [[Export]] object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _exporting = new MutableValueDisposer();\r\n\r\n\t/**\r\n\t * Should this Sprite be included when exporting?\r\n\t */\r\n\tprotected _exportable: boolean = true;\r\n\r\n\t/**\r\n\t * A reference to a top-level SVG node for this Sprite element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _element: Optional;\r\n\r\n\t/**\r\n\t * Holds Sprite's main SVG group (``) element. Other Sprite's elements\r\n\t * are all placed in this group.\r\n\t */\r\n\tpublic group: Group;\r\n\r\n\t/**\r\n\t * A reference to [[Paper]] SVG renderer used to create SVG nodes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _paper: $type.Optional;\r\n\r\n\t/**\r\n\t * Elements's top-level [[Container]].\r\n\t *\r\n\t * In most cases that will be a Chart.\r\n\t *\r\n\t * @return Top-level ascendant\r\n\t */\r\n\tprotected _topParent: Optional;\r\n\r\n\t/**\r\n\t * Data item assigned to the sprite. It might contain information defining\r\n\t * some style properties.\r\n\t */\r\n\tpublic _dataItem: $type.Optional;\r\n\r\n\t/**\r\n\t * Parent container.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _parent: Container;\r\n\r\n\t/**\r\n\t * Sprite's \"virtual\" parent.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _virtualParent: Sprite;\r\n\r\n\t/**\r\n\t * Defines bounding box (square) for this element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _bbox: IRectangle = { x: 0, y: 0, width: 0, height: 0 };\r\n\r\n\t/**\r\n\t * Base tab index for the Sprite. Used for TAB-key selection order.\r\n\t *\r\n\t * Use accessors `tabIndex` to set and retrieve.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _tabindex: $type.Optional;\r\n\r\n\t/**\r\n\t * Should system tooltips be allowed to be displayed if the element has\r\n\t * `readerTitle` set?\r\n\t *\r\n\t * Use accessors `showSystemTooltip` to set and retrieve.\r\n\t *\r\n\t * This is an accessibility feature.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _showSystemTooltip: $type.Optional;\r\n\r\n\t/**\r\n\t * List of animations currently playing for this Sprite.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _animations: $type.Optional>;\r\n\r\n\t/**\r\n\t * A link to [[Disposer]] for event handler which is attached to hide\r\n\t * animation. In some cases we need to cancel this event. This property is\r\n\t * used to hold the reference to disposer of this event so that we can\r\n\t * cancel it by calling its `dispose()` method.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _showHideDisposer: $type.Optional;\r\n\r\n\t/**\r\n\t * If element is currently hiding, this property will hold a reference to\r\n\t * [[Animation]] instance, which is handling hiding animation.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _hideAnimation: $type.Optional;\r\n\r\n\t/**\r\n\t * List of [[Filter]] items that are currently applied to the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _filters: $type.Optional>;\r\n\r\n\t/**\r\n\t * A shortcut to the special \"Focus\" filter which is applied when the element\r\n\t * gains focus.\r\n\t *\r\n\t * This is an accessibility feature.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _focusFilter: $type.Optional;\r\n\r\n\t/**\r\n\t * Indicates if this element is invalid and should be re-validated (redrawn).\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalid: boolean = false;\r\n\r\n\t/**\r\n\t * Indicates if this elements position is invalid and should be repositioned\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic positionInvalid: boolean = false;\r\n\r\n\t/**\r\n\t * A collection of key/value pairs that can be used to bind specific Sprite\r\n\t * properties to [[DataItem]].\r\n\t *\r\n\t * For example: `fill` property can be bound to `myCustomColor` field in\r\n\t * DataItem. The Sprite will automatically get the value for `fill` from its\r\n\t * DataItem.\r\n\t *\r\n\t * Can be set for each [[SpriteState]] individually to override default\r\n\t * bindings.\r\n\t *\r\n\t * @see {@link SpriteState}\r\n\t */\r\n\tpublic propertyFields: { [index in keyof this[\"_properties\"]]?: string } = {};\r\n\t//public propertyFields: Dictionary = new Dictionary();\r\n\r\n\t/**\r\n\t * Element's relative width.\r\n\t *\r\n\t * Do not set this property directly. Use `width` accessor with [[Percent]]\r\n\t * value instead.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic percentWidth: $type.Optional;\r\n\r\n\t/**\r\n\t * Element's relative height.\r\n\t *\r\n\t * Do not set this property directly. Use `height` accessor with [[Percent]]\r\n\t * value instead.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic percentHeight: $type.Optional;\r\n\r\n\t/**\r\n\t * An SVG group element that is used to put all SVG filters to.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic filterElement: $type.Optional;\r\n\r\n\t/**\r\n\t * A field in data context of element's `dataItem` that holds config values\r\n\t * for this element.\r\n\t *\r\n\t * This is a very powerful feature, allowing changing virtually any setting,\r\n\t * including those for element's children, for the element via data.\r\n\t *\r\n\t * Example data:\r\n\t *\r\n\t * ```JSON\r\n\t * {\r\n\t * \"value\": 100,\r\n\t * \"config\": {\r\n\t * \"fill\": \"#F00\"\r\n\t * }\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * If you set element's `configField = \"config\"`, the element for this\r\n\t * specific data point will have a red fill.\r\n\t */\r\n\tpublic configField: $type.Optional;\r\n\r\n\t/**\r\n\t * Reference to element's `` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _titleElement: Optional<AMElement>;\r\n\r\n\t/**\r\n\t * Reference to element's `<description>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _descriptionElement: Optional<AMElement>;\r\n\r\n\t/**\r\n\t * Specifies if property changes on this object should be propagated to the\r\n\t * objects cloned from this object.\r\n\t *\r\n\t * This setting affects property changes *after* cloning, since at the moment\r\n\t * of cloning all of properties from source object are copied to the clone\r\n\t * anyway.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tpublic applyOnClones: boolean = false;\r\n\r\n\t/**\r\n\t * a reference to an object which should be used when populating string. used for tooltip label mostly.\r\n\t * @ignore\r\n\t */\r\n\tpublic populateStringFrom: any;\r\n\r\n\t/**\r\n\t * Internal storage properties.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\r\n\tprotected _measuredWidth: number;\r\n\tprotected _measuredHeight: number;\r\n\r\n\t// unrotated unscaled\r\n\tprotected _measuredWidthSelf: number = 0;\r\n\tprotected _measuredHeightSelf: number = 0;\r\n\r\n\tprotected _prevMeasuredWidth: number;\r\n\tprotected _prevMeasuredHeight: number;\r\n\r\n\tprotected _pixelWidth: $type.Optional<number>;\r\n\tprotected _pixelHeight: $type.Optional<number>;\r\n\r\n\tprotected _relativeWidth: $type.Optional<number>;\r\n\tprotected _relativeHeight: $type.Optional<number>;\r\n\r\n\t// read only, sprite extreme coordinates\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic maxLeft: number = 0;\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic maxRight: number = 0;\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic maxTop: number = 0;\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic maxBottom: number = 0;\r\n\r\n\t// not rotated and not scaled\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic maxLeftSelf: number = 0;\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic maxRightSelf: number = 0;\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic maxTopSelf: number = 0;\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic maxBottomSelf: number = 0;\r\n\r\n\tprotected _isDragged: boolean = false;\r\n\r\n\tprotected _isResized: boolean = false;\r\n\r\n\t/**\r\n\t * @deprecated Moved to [[SpriteProperties]]\r\n\t */\r\n\tprotected _disabled: boolean = false;\r\n\r\n\tprotected _internalDisabled: boolean = false;\r\n\r\n\tprotected _updateDisabled: boolean = false;\r\n\r\n\tprotected _maskRectangle: $type.Optional<IRectangle>;\r\n\r\n\tprotected _internalDefaultsApplied: boolean = false;\r\n\r\n\tprotected _interactionDisposer: $type.Optional<IDisposer>;\r\n\r\n\t/**\r\n\t * You can set bbox from outside if you know what size your element must be (used in radar chart for example)\r\n\t * @ignore\r\n\t */\r\n\tpublic definedBBox: IRectangle;\r\n\r\n\t/**\r\n\t * Time in milliseconds after which rollout event happens when user rolls-out of the sprite. This helps to avoid flickering in some cases.\r\n\t */\r\n\tpublic rollOutDelay: number = 0;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected _outTimeout: $type.Optional<IDisposer>;\r\n\r\n\t/**\r\n\t * This flag is set to `true` for the initial sprite you create and place\r\n\t * to the div so that we could clear all additional\r\n\t * sprites/containers when this sprite is disposed.\r\n\t *\r\n\t * @ignore\r\n\t */\r\n\tpublic isBaseSprite: boolean = false;\r\n\r\n\t/**\r\n\t * Indicates whether this sprite should be cloned when cloning its parent\r\n\t * container. We set this to `false` in those cases when a sprite is created\r\n\t * by the class, so that when cloning a duplicate sprite would not appear.\r\n\t */\r\n\tpublic shouldClone: boolean = true;\r\n\r\n\t/**\r\n\t * A property which you can use to store any data you want.\r\n\t */\r\n\tpublic dummyData: any;\r\n\r\n\t/**\r\n\t * A reference to a real fill object. Sometimes might be useful to modify\r\n\t * gradient (when fill is color but we have FillModifier).\r\n\t */\r\n\tpublic realFill: Color | Pattern | LinearGradient | RadialGradient;\r\n\r\n\t/**\r\n\t * A reference to a real stroke object. Sometimes might be useful to modify\r\n\t * gradient (when fill is color but we have a FillModifier).\r\n\t */\r\n\tpublic realStroke: Color | Pattern | LinearGradient | RadialGradient;\r\n\r\n\t/**\r\n\t * A reference to amCharts logo element.\r\n\t *\r\n\t * @ignore\r\n\t */\r\n\tpublic logo: AmChartsLogo;\r\n\r\n\t/**\r\n\t * [_baseId description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _baseId: string;\r\n\r\n\t/**\r\n\t * A read-only flag which indicates if a sprite has completed its initial\r\n\t * animation (if `showOnInit = true`).\r\n\t *\r\n\t * In case `showOnInit = false`, `appeared` is set to `true` on init.\r\n\t *\r\n\t * @readonly\r\n\t */\r\n\tpublic appeared: boolean = false;\r\n\r\n\t/**\r\n\t * [ex description]\r\n\t *\r\n\t * @todo Description\r\n\t * @ignore\r\n\t */\r\n\tpublic ex: number = 0;\r\n\r\n\t/**\r\n\t * [ey description]\r\n\t *\r\n\t * @todo Description\r\n\t * @ignore\r\n\t */\r\n\tpublic ey: number = 0;\r\n\r\n\t/**\r\n\t * [_showOnInitDisposer description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _showOnInitDisposer: MultiDisposer;\r\n\r\n\t/**\r\n\t * Holds the list of plugins attached to this Sprite.\r\n\t */\r\n\tprotected _plugins: $type.Optional<List<IPlugin>>;\r\n\r\n\t/**\r\n\t * Indicates if the sprite can be moved around when resizing it with two fingers (will only work if draggable = false)\r\n\t * @ignore\r\n\t */\r\n\tpublic dragWhileResize: boolean = false;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic vpDisposer: MultiDisposer;\r\n\r\n\tprotected _alwaysShowDisposers: IDisposer[];\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic measureFailed: boolean = false;\r\n\r\n\t/**\r\n\t * If this flag is set to true, calling show() will not reveal the sprite.\r\n\t * \r\n\t * @ignore\r\n\t */\r\n\tpublic preventShow: boolean = false;\r\n\r\n\t/**\r\n\t * When cloning a sprite, if the template has it's own tooltip assigned, this tooltip is also cloned by default. \r\n\t * This is not good for cpu and sometimes you might only need one single tooltip for all clones. Set this to false in order not to clone tooltip.\r\n\t */\r\n\tpublic cloneTooltip: boolean = true;\r\n\r\n\t/**\r\n\t * Constructor:\r\n\t * * Creates initial node\r\n\t * * Sets default properties\r\n\t * * Creates required default states\r\n\t * * Inits accessibility\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\r\n\t\tthis.className = \"Sprite\";\r\n\r\n\t\tthis._disposers.push(this._eventDispatcher);\r\n\r\n\t\t// Generate a unique ID\r\n\t\t$utils.used(this.uid);\r\n\r\n\t\t// Create SVG group to hold everything in\r\n\t\tthis.group = this.paper.addGroup(\"g\");\r\n\r\n\t\t// Set defaults\r\n\t\t// it is better to set defauls like this in order to save invaliation calls and events\r\n\t\tthis.setPropertyValue(\"scale\", 1);\r\n\t\tthis.setPropertyValue(\"rotation\", 0);\r\n\t\tthis.setPropertyValue(\"align\", \"none\");\r\n\t\tthis.setPropertyValue(\"valign\", \"none\");\r\n\t\tthis.setPropertyValue(\"pixelPerfect\", false);\r\n\t\tthis.setPropertyValue(\"visible\", true);\r\n\t\tthis.setPropertyValue(\"tooltipPosition\", \"fixed\");\r\n\t\tthis.setPropertyValue(\"verticalCenter\", \"none\");\r\n\t\tthis.setPropertyValue(\"horizontalCenter\", \"none\");\r\n\r\n\t\tthis.setPropertyValue(\"tooltipX\", percent(50));\r\n\t\tthis.setPropertyValue(\"tooltipX\", percent(50));\r\n\r\n\t\tthis.setPropertyValue(\"marginTop\", 0);\r\n\t\tthis.setPropertyValue(\"marginBottom\", 0);\r\n\t\tthis.setPropertyValue(\"marginLeft\", 0);\r\n\t\tthis.setPropertyValue(\"marginRight\", 0);\r\n\r\n\t\tthis.setPropertyValue(\"dx\", 0);\r\n\t\tthis.setPropertyValue(\"dy\", 0);\r\n\r\n\t\tthis.setPropertyValue(\"paddingTop\", 0);\r\n\t\tthis.setPropertyValue(\"paddingBottom\", 0);\r\n\t\tthis.setPropertyValue(\"paddingRight\", 0);\r\n\t\tthis.setPropertyValue(\"paddingLeft\", 0);\r\n\r\n\t\tthis.setPropertyValue(\"togglable\", false);\r\n\t\tthis.setPropertyValue(\"hidden\", false);\r\n\t\tthis.setPropertyValue(\"urlTarget\", \"_self\");\r\n\t\tthis.setPropertyValue(\"alwaysShowTooltip\", false);\r\n\t\tthis.setPropertyValue(\"showTooltipOn\", \"hover\");\r\n\r\n\t\tthis._prevMeasuredWidth = 0;\r\n\t\tthis._prevMeasuredHeight = 0;\r\n\t\tthis._measuredWidth = 0;\r\n\t\tthis._measuredHeight = 0;\r\n\r\n\t\tthis._isMeasured = true;\r\n\r\n\t\t// Invalidate the Sprite so that renderer knows it needs to be drawn\r\n\t\tthis.invalidate();\r\n\r\n\t\t//this.states.create(\"default\").properties.opacity = 1;\r\n\r\n\t\t// Apply the theme\r\n\t\tthis.applyTheme();\r\n\r\n\t\t//this._disposers.push(this._clickable);\r\n\r\n\t\t// Decorate adapter with events so that we can apply its settings whenever\r\n\t\t// it is modified\r\n\t\t// @todo Think what to do here. We can't just apply the adapter value to\r\n\t\t// property since not all of those are for properties. Commented out for\r\n\t\t// now.\r\n\t\t/*this.adapter.events.on(\"inserted\", (ev: any) => {\r\n\t\t\t(<any>this)[ev.newValue.key] = (<any>this)[ev.newValue.key];\r\n\t\t});\r\n\t\tthis.adapter.events.on(\"removed\", (ev: any) => {\r\n\t\t\t(<any>this)[ev.newValue.key] = (<any>this)[ev.newValue.key];\r\n\t\t});*/\r\n\r\n\t\t// Add disposable dependencies to `_disposers` so they are automatically\r\n\t\t// disposed of when this object is disposed\r\n\t\tthis._disposers.push(this.events);\r\n\t\tthis._disposers.push(this.group);\r\n\t\tthis._disposers.push(this._mask);\r\n\t\tthis._disposers.push(this._language);\r\n\t\tthis._disposers.push(this._exporting);\r\n\t\t//this._disposers.push(this._parent);\r\n\t\t//this._disposers.push(this._modal);\r\n\r\n\t\tthis._disposers.push(new Disposer(() => {\r\n\t\t\t$object.each(this._bindings, (key, value) => {\r\n\t\t\t\tvalue.dispose();\r\n\t\t\t});\r\n\t\t}));\r\n\r\n\t\tthis.setPropertyValue(\"interactionsEnabled\", true);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * ELEMENT VALIDATION, INIT, AND DRAWING STUFF\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Applies properties from all assigned themes.\r\n\t *\r\n\t * We do this here so that we can apply class names as well.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic applyTheme(): void {\r\n\t\tsuper.applyTheme();\r\n\t\tif (options.autoSetClassName) {\r\n\t\t\tthis.setClassName();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns theme(s) used by this object either set explicitly on this\r\n\t * element, inherited from parent, or inherited from [[System]].\r\n\t *\r\n\t * @return An array of theme references\r\n\t */\r\n\tpublic getCurrentThemes(): ITheme[] {\r\n\t\tconst themes = this._themes;\r\n\r\n\t\tif (themes) {\r\n\t\t\treturn themes;\r\n\r\n\t\t} else {\r\n\t\t\tconst parent = this.parent;\r\n\r\n\t\t\tif (parent) {\r\n\t\t\t\treturn parent.getCurrentThemes();\r\n\r\n\t\t\t} else {\r\n\t\t\t\treturn registry.themes;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Called just before element's validation, this function allows setting\r\n\t * defaults.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected applyInternalDefaults(): void {\r\n\r\n\t\t// Nothing here, but extending classes might override this function\r\n\t\t// so that they can set their defaults\r\n\t\tthis._internalDefaultsApplied = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Invalidates element.\r\n\t *\r\n\t * Object will be redrawn during the next update cycle.\r\n\t *\r\n\t * Please note that in most cases elements will auto-invalidate when needed. If\r\n\t * everything works, DO NOT use this method. Use it only if some changes do\r\n\t * not take otherwise.\r\n\t */\r\n\tpublic invalidate(): void {\r\n\t\tif (this.disabled || this._isTemplate) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// We no longer reset this on each invalidate, so that they are applied\r\n\t\t// only once, and do not overwrite user-defined settings\r\n\t\t//this._internalDefaultsApplied = false;\r\n\r\n\t\tif (!this.invalid) {\r\n\t\t\tthis.invalid = true;\r\n\t\t\tregistry.addToInvalidSprites(this);\r\n\t\t\tsystem.requestFrame();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Validates element:\r\n\t * * Triggers events\r\n\t * * Redraws the element\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate(): void {\r\n\t\tthis.dispatchImmediately(\"beforevalidated\");\r\n\r\n\t\t// prevents from drawing if topparent is 0x0\r\n\t\t/*\r\n\t\tlet topParent = this.topParent;\r\n\r\n\t\tif (topParent) {\r\n\t\t\tif (!topParent.maxWidth || !topParent.maxHeight) {\r\n\t\t\t\tthis._disposers.push(topParent.events.once(\"maxsizechanged\", this.invalidate, this));\r\n\t\t\t}\r\n\t\t}*/\r\n\r\n\t\t// Set internal defaults\r\n\t\tif (!this._internalDefaultsApplied) {\r\n\t\t\tthis.applyInternalDefaults();\r\n\t\t}\r\n\r\n\t\tthis.beforeDraw();\r\n\t\tthis.draw();\r\n\r\n\t\tthis.invalid = false;\r\n\r\n\t\tregistry.removeFromInvalidSprites(this);\r\n\t\tthis.afterDraw();\r\n\t}\r\n\r\n\t/**\r\n\t * Invalidates element's position.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidatePosition(): void {\r\n\t\tif (this.disabled || this._isTemplate) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!this.positionInvalid) {\r\n\t\t\tthis.positionInvalid = true;\r\n\t\t\tregistry.addToInvalidPositions(this);\r\n\t\t\tsystem.requestFrame();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Transforms the element.\r\n\t *\r\n\t * @todo Description (review)\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validatePosition(): void {\r\n\r\n\t\tlet pixelX = this.pixelX;\r\n\t\tlet pixelY = this.pixelY;\r\n\t\tlet dx = this.dx;\r\n\t\tlet dy = this.dy;\r\n\r\n\t\tlet x: number = pixelX + dx;\r\n\t\tlet y: number = pixelY + dy;\r\n\r\n\t\tif (this._updateDisabled) {\r\n\t\t\tif (this._internalDisabled) {\r\n\t\t\t\tthis.group.attr({ \"display\": \"none\" })\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (!this.disabled) {\r\n\t\t\t\t\tthis.removeSVGAttribute(\"display\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._updateDisabled = false;\r\n\t\t}\r\n\r\n\t\tlet sizeChanged: boolean = this.measure();\r\n\r\n\t\t//if (!this.invalid) {\r\n\t\tlet prevGroupTransform: string = this.group.transformString;\r\n\r\n\t\tthis.group.moveTo({ x: x, y: y });\r\n\t\tthis.group.rotation = this.rotation;\r\n\t\tif (this.nonScaling) {\r\n\t\t\tthis.group.scale = this.scale / this.globalScale;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.group.scale = this.scale;\r\n\t\t}\r\n\r\n\t\tif (prevGroupTransform != this.group.transformString || sizeChanged) {\r\n\t\t\t// not yet sure, this is to avoid many transforms=>container layout invalidation on initial buid\r\n\t\t\tif (prevGroupTransform == null) {\r\n\t\t\t\tthis.dispatch(\"transformed\");\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.dispatchImmediately(\"transformed\");\r\n\t\t\t}\r\n\t\t\t// TODO clear existing positionchanged dispatches ?\r\n\t\t\tthis.dispatch(\"positionchanged\");\r\n\r\n\t\t\tif (this.showTooltipOn == \"hit\" || this.showTooltipOn == \"always\") {\r\n\t\t\t\tthis.updateTooltipPosition();\r\n\t\t\t}\r\n\t\t}\r\n\t\t//}\r\n\r\n\t\t// it might happen that x and y changed again, so we only remove if they didn't\r\n\t\tif (pixelX + dx == x && pixelY + dy == y) {\r\n\t\t\tregistry.removeFromInvalidPositions(this);\r\n\t\t\tthis.positionInvalid = false;\r\n\t\t}\r\n\t\tlet maskRectangle = this._maskRectangle;\r\n\t\t// todo: verify this\r\n\t\tif (maskRectangle) {\r\n\t\t\tthis._clipElement.moveTo({ x: maskRectangle.x - pixelX, y: maskRectangle.y - pixelY });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A placeholder method that is called **before** element begins to be drawn.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected beforeDraw(): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * A placeholder method that draws the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected draw(): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * A placeholder method that is called **after** element finishes drawing\r\n\t * itself.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected afterDraw(): void {\r\n\t\tif (this.isMeasured || this.horizontalCenter !== \"none\" || this.verticalCenter !== \"none\") {\r\n\t\t\tthis.measureElement();\r\n\t\t}\r\n\r\n\t\t//this.applyMask();\r\n\r\n\t\tif (!this._inited) {\r\n\t\t\tif (this._adapterO) {\r\n\t\t\t\t// used to be applySVGAttrbutes here, this is more efficient\r\n\t\t\t\tfor (let key of this._adapterO.keys()) {\r\n\t\t\t\t\tswitch (key) {\r\n\t\t\t\t\t\tcase \"mask\":\r\n\t\t\t\t\t\tcase \"fill\":\r\n\t\t\t\t\t\tcase \"opacity\":\r\n\t\t\t\t\t\tcase \"fillOpacity\":\r\n\t\t\t\t\t\tcase \"stroke\":\r\n\t\t\t\t\t\tcase \"strokeOpacity\":\r\n\t\t\t\t\t\tcase \"strokeWidth\":\r\n\t\t\t\t\t\tcase \"shapeRendering\":\r\n\t\t\t\t\t\tcase \"strokeDasharray\":\r\n\t\t\t\t\t\tcase \"strokeDashoffset\":\r\n\t\t\t\t\t\tcase \"strokeLinecap\":\r\n\t\t\t\t\t\tcase \"strokeLinejoin\":\r\n\t\t\t\t\t\tcase \"textDecoration\":\r\n\t\t\t\t\t\tcase \"fontSize\":\r\n\t\t\t\t\t\tcase \"fontFamily\":\r\n\t\t\t\t\t\tcase \"fontWeight\":\r\n\t\t\t\t\t\t\t//case \"focusable\":\r\n\t\t\t\t\t\t\t//case \"tabindex\":\r\n\t\t\t\t\t\t\t//case \"role\":\r\n\t\t\t\t\t\t\t(<any>this)[key] = (<any>this)[key];\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.applyFilters();\r\n\r\n\t\t\tthis.visible = this.visible;\r\n\t\t\tthis.interactionsEnabled = this.getPropertyValue(\"interactionsEnabled\"); // can't use .interactionsEnabled as it get's parent's\r\n\r\n\t\t\tthis._inited = true;\r\n\r\n\t\t\tif (!this.showOnInit) {\r\n\t\t\t\tthis.appeared = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.hidden) {\r\n\t\t\t\tthis.hide(0);\r\n\t\t\t}\r\n\r\n\t\t\tthis.applyMask();\r\n\t\t\tthis.dispatch(\"validated\");\r\n\t\t\tthis.dispatch(\"inited\");\r\n\t\t\tthis.dispatchReady();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.dispatch(\"validated\");\r\n\t\t}\r\n\r\n\t\tif (this.showTooltipOn == \"always\") {\r\n\t\t\tif (this.visible && !this.disabled && !this.__disabled) {\r\n\t\t\t\tthis.showTooltip();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.hideTooltip(0);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches `\"ready\"` event. Sprite dispatches it right after `\"inited\"` event.\r\n\t *\r\n\t * @ignore\r\n\t */\r\n\tpublic dispatchReady(): void {\r\n\t\tif (!this.isReady()) {\r\n\t\t\tthis._ready = true;\r\n\t\t\tthis.dispatch(\"ready\");\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Triggers a re-initialization of this element.\r\n\t *\r\n\t * Will result in complete redrawing of the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic reinit(): void {\r\n\t\tthis._inited = false;\r\n\t\tthis.setState(this.defaultState);\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the situation where parent element is resized.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic handleGlobalScale(): void {\r\n\t\tthis.dispatch(\"globalscalechanged\");\r\n\r\n\t\tif (this.nonScalingStroke) {\r\n\t\t\tthis.strokeWidth = this.strokeWidth;\r\n\t\t}\r\n\r\n\t\tif (this.nonScaling) {\r\n\t\t\tthis.validatePosition();\r\n\t\t}\r\n\r\n\t\tthis.updateFilterScale();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Updates filter properties which might depend on scale\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected updateFilterScale(): void {\r\n\t\t$iter.each(this.filters.iterator(), (filter) => {\r\n\t\t\tfilter.scale = this.globalScale;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Removes itself from system's invalid lists.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected removeFromInvalids() {\r\n\t\tregistry.removeFromInvalidSprites(this);\r\n\t\tregistry.removeFromInvalidPositions(this);\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all parameters from another [[Sprite]].\r\n\t *\r\n\t * @param source Source Sprite\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\tsuper.copyFrom(source);\r\n\r\n\t\tthis.isMeasured = source.isMeasured;\r\n\r\n\t\tthis.states.copyFrom(source.states);\r\n\r\n\t\tif (source.filters.length > 0) {\r\n\t\t\tsource.filters.each((filter) => {\r\n\t\t\t\tthis.filters.push(filter.clone());\r\n\t\t\t})\r\n\t\t}\r\n\t\tif (source._adapterO) {\r\n\t\t\tthis.adapter.copyFrom(source._adapterO);\r\n\t\t}\r\n\r\n\t\t//helps to avoid calling getter which creates instance\r\n\t\tif ((<any>source)[\"_interaction\"]) {\r\n\t\t\tthis.interactions.copyFrom(source.interactions);\r\n\t\t}\r\n\r\n\t\tif ((<any>source)[\"_plugins\"]) {\r\n\t\t\tthis.plugins.copyFrom(source.plugins);\r\n\t\t}\r\n\r\n\t\tthis.configField = source.configField;\r\n\r\n\t\tthis.applyOnClones = source.applyOnClones;\r\n\r\n\t\t// this.numberFormatter = source.numberFormatter; // todo: this creates loose number formatter and copies it to all clones. somehow we need to know if source had numberFormatter explicitly created and not just because a getter was called.\r\n\r\n\t\t//this.mask = source.mask; need to think about this, generally this causes a lot of problems\r\n\t\tthis.disabled = source.disabled;\r\n\r\n\t\tthis.virtualParent = source.virtualParent;\r\n\r\n\t\tthis.exportable = source.exportable;\r\n\t\t//@todo: create tooltip if it's on source but not on this?\r\n\t\t//const tooltip = this._tooltip;\r\n\t\t//if (tooltip) {\r\n\t\t//\ttooltip.copyFrom(source.tooltip);\r\n\t\t//}\r\n\r\n\t\tif (source._tooltip) {\r\n\t\t\tif (this._tooltip) {\r\n\t\t\t\tthis._tooltip.copyFrom(source.tooltip);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (source.cloneTooltip) {\r\n\t\t\t\t\tthis.tooltip = source.tooltip.clone();\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._tooltip = source.tooltip;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//if ((<any>source)[\"_tooltip\"] && !this._tooltip) {\r\n\t\t//\tthis._tooltip = (<any>source)[\"_tooltip\"];\r\n\t\t//}\r\n\r\n\t\tthis._showSystemTooltip = source.showSystemTooltip;\r\n\r\n\t\t$utils.copyProperties(source.propertyFields, this.propertyFields);\r\n\t\t$utils.copyProperties(source.properties, this);\r\n\r\n\t\tif (source.fillModifier) {\r\n\t\t\tthis.fillModifier = source.fillModifier.clone();\r\n\t\t}\r\n\r\n\t\tif (source.strokeModifier) {\r\n\t\t\tthis.strokeModifier = source.strokeModifier.clone();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Destroys this object and all related data.\r\n\t */\r\n\tpublic dispose(): void {\r\n\t\tif (!this.isDisposed()) {\r\n\r\n\t\t\tif (this.showTooltipOn == \"always\" && this.tooltip) {\r\n\t\t\t\tthis.tooltip.hide();\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchImmediately(\"beforedisposed\");\r\n\r\n\t\t\tif (this.isBaseSprite) {\r\n\t\t\t\tif (this.htmlContainer) {\r\n\t\t\t\t\twhile (this.htmlContainer.childNodes.length > 0) {\r\n\t\t\t\t\t\tthis.htmlContainer.removeChild(this.htmlContainer.firstChild);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.isBaseSprite = false;\r\n\t\t\t}\r\n\r\n\t\t\tsuper.dispose();\r\n\r\n\t\t\t// Clear adapters\r\n\t\t\tif (this._adapterO) {\r\n\t\t\t\tthis._adapterO.clear();\r\n\t\t\t}\r\n\r\n\t\t\tif (this.applyOnClones) {\r\n\t\t\t\tif (this._clones) {\r\n\t\t\t\t\tfor (let i = this._clones.length - 1; i >= 0; i--) {\r\n\t\t\t\t\t\tlet clone = this._clones.getIndex(i);\r\n\t\t\t\t\t\tclone.dispose();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this._svgContainer) {\r\n\t\t\t\tthis._svgContainer.dispose();\r\n\t\t\t}\r\n\r\n\t\t\tif (this._interactionDisposer) {\r\n\t\t\t\tthis._interactionDisposer.dispose();\r\n\t\t\t\tthis._interactionDisposer = undefined;\r\n\t\t\t}\r\n\r\n\t\t\tif (this._urlDisposer) {\r\n\t\t\t\tthis._urlDisposer.dispose();\r\n\t\t\t}\r\n\r\n\t\t\tthis.removeFromInvalids();\r\n\r\n\t\t\tif (this.element) {\r\n\t\t\t\tthis.element.dispose();\r\n\t\t\t}\r\n\t\t\tif (this.group) {\r\n\t\t\t\tthis.group.dispose();\r\n\t\t\t}\r\n\r\n\t\t\tif (this._numberFormatter) {\r\n\t\t\t\tthis._numberFormatter.dispose();\r\n\t\t\t}\r\n\r\n\t\t\tif (this._focusFilter) {\r\n\t\t\t\tthis._focusFilter.dispose();\r\n\t\t\t}\r\n\r\n\t\t\tlet stroke = this.stroke;\r\n\t\t\tif (stroke && !(stroke instanceof Color) && stroke.dispose) {\r\n\t\t\t\tif (this.clonedFrom && this.clonedFrom.stroke == stroke) {\r\n\t\t\t\t\t// do nothing\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tstroke.dispose();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// TODO a bit hacky\r\n\t\t\tlet fill = this.fill;\r\n\t\t\tif (fill && !(fill instanceof Color) && fill.dispose) {\r\n\t\t\t\tif (this.clonedFrom && this.clonedFrom.fill == fill) {\r\n\t\t\t\t\t// do nothing\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tfill.dispose();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// remove from map\r\n\t\t\tif ($type.hasValue(this.id)) {\r\n\t\t\t\tthis.map.removeKey(this.id);\r\n\t\t\t}\r\n\r\n\t\t\tthis.parent = undefined;\r\n\t\t\tif (this._filters) {\r\n\t\t\t\twhile (this._filters.length > 0) {\r\n\t\t\t\t\tlet filter = <Filter>this._filters.getIndex(0);\r\n\t\t\t\t\tfilter.dispose();\r\n\t\t\t\t\tthis._filters.removeValue(filter);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis._alwaysShowDisposers = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if this element is a \"template\".\r\n\t *\r\n\t * Template Sprites act only as a holders for config for other \"real\"\r\n\t * elements to be cloned from.\r\n\t *\r\n\t * Templates are treated differently, as they are not validated, redrawn, or\r\n\t * otherwise are processed.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Is template?\r\n\t */\r\n\tpublic set isTemplate(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (this._isTemplate != value) {\r\n\t\t\tthis._isTemplate = value;\r\n\r\n\t\t\tif (this instanceof Container) {\r\n\t\t\t\t$iter.each(this.children.iterator(), (child) => {\r\n\t\t\t\t\tchild.isTemplate = value;\r\n\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\tif (value) {\r\n\t\t\t\tthis.parent = this.parent;\r\n\t\t\t\tthis.removeFromInvalids();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.invalidate();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Is template?\r\n\t */\r\n\tpublic get isTemplate(): boolean {\r\n\t\treturn this._isTemplate;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether the element should attempt to construct itself in a way\r\n\t * so that system tooltip is shown if its `readerTitle` is set.\r\n\t *\r\n\t * @param value Show system tooltip?\r\n\t */\r\n\tpublic set showSystemTooltip(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (this._showSystemTooltip != value) {\r\n\t\t\tthis._showSystemTooltip = value;\r\n\t\t\tthis.applyAccessibility();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Show system tooltip?\r\n\t */\r\n\tpublic get showSystemTooltip(): boolean {\r\n\t\tif (!$type.hasValue(this._showSystemTooltip)) {\r\n\t\t\tif (this.virtualParent) {\r\n\t\t\t\treturn this.virtualParent.showSystemTooltip;\r\n\t\t\t}\r\n\t\t\telse if (this.parent) {\r\n\t\t\t\treturn this.parent.showSystemTooltip;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this._showSystemTooltip;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * HIERARCHY AND STRUCTURE RELATED STUFF\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Sprites's top-level [[Container]].\r\n\t *\r\n\t * Please note that in most cases it won't be the chart element.\r\n\t *\r\n\t * To access base chart element, use `baseSprite` instead.\r\n\t *\r\n\t * @return Top-level ascendant\r\n\t */\r\n\tpublic get topParent(): Optional<Container> {\r\n\t\tif (this._topParent) {\r\n\t\t\treturn this._topParent;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.parent) {\r\n\t\t\t\treturn this.parent.topParent;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t * @param value {Container} top parent of a sprite\r\n\t */\r\n\tpublic set topParent(value: Container) {\r\n\t\tthis._topParent = value;\r\n\t}\r\n\r\n\t/**\r\n\t * Elements' parent [[Container]].\r\n\t *\r\n\t * @param parent Parent container\r\n\t */\r\n\tpublic set parent(parent: Optional<Container>) {\r\n\t\tif (this._isTemplate) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// TODO is this needed ?\r\n\t\t$utils.used(this.paper);\r\n\r\n\t\tlet oldParent = this._parent;\r\n\t\tif (oldParent != parent) {\r\n\r\n\t\t\tif (oldParent) {\r\n\t\t\t\toldParent.children.removeValue(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis._parent = parent;\r\n\r\n\t\t\tif (parent) {\r\n\r\n\t\t\t\tthis.topParent = parent.topParent;\r\n\r\n\t\t\t\tif (parent.isTemplate) {\r\n\t\t\t\t\tthis.isTemplate = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.baseId = parent.baseId;\r\n\r\n\t\t\t\tparent.children.push(this);\r\n\t\t\t\t// insert handler at Container invalidates + invalidatesLayout + adds to group\r\n\r\n\t\t\t\tif (this._tooltip && !this._tooltipContainer) {\r\n\t\t\t\t\tthis._tooltip.parent = parent.tooltipContainer;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this._dataItem) {\r\n\t\t\t\t\tthis.dataItem = parent.dataItem;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.handleAlwaysShowTooltip();\r\n\r\n\t\t\t\tthis.dispatchImmediately(\"parentset\");\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.topParent = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected handleAlwaysShow() {\r\n\t\tthis.showTooltip();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected handleAlwaysShowTooltip() {\r\n\t\tlet sprite: Sprite = this;\r\n\r\n\t\tlet oldDisposers = this._alwaysShowDisposers;\r\n\t\tif (oldDisposers) {\r\n\t\t\t$array.each(oldDisposers, (oldDisposer) => {\r\n\t\t\t\toldDisposer.dispose();\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tthis._alwaysShowDisposers = [];\r\n\r\n\t\tif (this.showTooltipOn == \"always\") {\r\n\t\t\twhile (sprite != undefined) {\r\n\t\t\t\tlet disposer = sprite.events.on(\"visibilitychanged\", this.handleAlwaysShow, this, false);\r\n\t\t\t\tthis.addDisposer(disposer);\r\n\t\t\t\tthis._alwaysShowDisposers.push(disposer);\r\n\t\t\t\tsprite = sprite.parent;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Parent container\r\n\t */\r\n\tpublic get parent(): Optional<Container> {\r\n\t\treturn this._parent;\r\n\t}\r\n\r\n\t/**\r\n\t * Element's \"virtual\" parent.\r\n\t *\r\n\t * This is required in ordere to maintain proper inheritance (like\r\n\t * formatters).\r\n\t *\r\n\t * Sometimes an element is a \"logical\" parent, even though it's not a direct\r\n\t * ascendant.\r\n\t *\r\n\t * Example: a bullet is not a child of the axis, but it would make sense\r\n\t * for it to inherit series' formatters.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Virtual parent\r\n\t */\r\n\tpublic set virtualParent(value: Sprite) {\r\n\t\tthis._virtualParent = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Virtual parent\r\n\t */\r\n\tpublic get virtualParent(): Optional<Sprite> {\r\n\t\treturn this._virtualParent;\r\n\t}\r\n\r\n\t/**\r\n\t * Moves `<defs>` to correct place in DOM.\r\n\t *\r\n\t * Some elements are initially created in \"ghost\" container. When moving\r\n\t * those into proper place in DOM, their respective `<defs>` need to be moved\r\n\t * as well.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic appendDefs(): void {\r\n\r\n\t\tif (this.filterElement) {\r\n\t\t\tthis.paper.appendDef(this.filterElement);\r\n\t\t}\r\n\r\n\t\tlet fill = <any>this.fill;\r\n\r\n\t\tif (fill && fill.element) {\r\n\t\t\tthis.paper.appendDef(fill.element);\r\n\t\t}\r\n\r\n\t\tlet stroke = <any>this.stroke;\r\n\t\tif (stroke && stroke.element) {\r\n\t\t\tthis.paper.appendDef(stroke.element);\r\n\t\t}\r\n\r\n\t\tif (this.fillModifier && this.fill instanceof Color) {\r\n\t\t\tlet fill = <any>this.fillModifier.modify(this.fill);\r\n\t\t\tif (fill && fill.element) {\r\n\t\t\t\tthis.paper.appendDef(fill.element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.strokeModifier && this.stroke instanceof Color) {\r\n\t\t\tlet stroke = <any>this.strokeModifier.modify(this.stroke);\r\n\t\t\tif (stroke && stroke.element) {\r\n\t\t\t\tthis.paper.appendDef(stroke.element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._clipPath) {\r\n\t\t\tthis.paper.appendDef(this._clipPath);\r\n\t\t}\r\n\r\n\t\tif (this._exportable === false) {\r\n\t\t\tthis.exportable = false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a [[Dictionary]] which maps object ids with their respective\r\n\t * objects.\r\n\t *\r\n\t * Can be used to retrieve any object by id, e.g.:\r\n\t *\r\n\t * ```TypeScript\r\n\t * console.log(mySprite.map.getKey(\"myid\"));\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * console.log(mySprite.map.getKey(\"myid\"));\r\n\t * ```\r\n\t *\r\n\t * @return Map collection\r\n\t */\r\n\tpublic get map(): Dictionary<string, any> {\r\n\t\tconst top = this.topParent;\r\n\r\n\t\tif (top) {\r\n\t\t\treturn top.map;\r\n\t\t} else if (!this._map) {\r\n\t\t\tthis._map = new Dictionary<string, any>();\r\n\t\t}\r\n\r\n\t\treturn this._map;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t * @return Map collection\r\n\t */\r\n\tpublic get delayedMap(): Dictionary<string, any> {\r\n\t\tconst top = this.topParent;\r\n\r\n\t\tif (top) {\r\n\t\t\treturn top.delayedMap;\r\n\t\t} else if (!this._delayedMap) {\r\n\t\t\tthis._delayedMap = new Dictionary<string, any>();\r\n\t\t}\r\n\r\n\t\treturn this._delayedMap;\r\n\t}\r\n\r\n\t/**\r\n\t * Element's user-defined ID.\r\n\t *\r\n\t * Will throw an Error if there already is an object with the same ID.\r\n\t *\r\n\t * Please note that above check will be performed withing the scope of the\r\n\t * current chart instance. It will not do checks across other chart instances\r\n\t * or in globally in DOM.\r\n\t *\r\n\t * Make sure the IDs are unique.\r\n\t *\r\n\t * @param value ID\r\n\t */\r\n\tpublic set id(value: string) {\r\n\t\tif (this._id != value) {\r\n\t\t\tthis._id = value;\r\n\t\t\tif (this.map.hasKey(value)) {\r\n\t\t\t\tthrow Error(\"Duplicate id (\" + value + \") used on multiple objects.\");\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.map.setKey(value, this);\r\n\t\t\t}\r\n\t\t\tif (options.autoSetClassName) {\r\n\t\t\t\tthis.setClassName();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return ID\r\n\t */\r\n\tpublic get id(): string {\r\n\t\treturn this._id;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * ELEMENT AND DOM TREE MANIPULATION AND MEASURING\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Returns DOM element reference associated with this element.\r\n\t *\r\n\t * @readonly\r\n\t * @return DOM element\r\n\t */\r\n\tpublic get dom(): SVGSVGElement {\r\n\t\treturn this.group.node;\r\n\t}\r\n\r\n\t/**\r\n\t * A [[Paper]] instance to place elements on.\r\n\t *\r\n\t * If there's no Paper set for this element, it goes up the ascendant tree\r\n\t * until it finds one.\r\n\t *\r\n\t * This method is used by important `addChild()` method, so it's essential\r\n\t * to have a [[Paper]] instance.\r\n\t *\r\n\t * If this element has a separate `htmlContainer` set, it will have a\r\n\t * [[Paper]] instance itself.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param paper Paper\r\n\t */\r\n\tpublic set paper(paper: Paper) {\r\n\t\tthis.setPaper(paper);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets [[Paper]] instance to use to draw elements.\r\n\t * @ignore\r\n\t * @param paper Paper\r\n\t * @return true if paper was changed, false, if it's the same\r\n\t */\r\n\tpublic setPaper(paper: Paper): boolean {\r\n\t\tlet oldPaper = this._paper;\r\n\r\n\t\tif (oldPaper != paper) {\r\n\t\t\tthis._paper = paper;\r\n\r\n\t\t\tthis.appendDefs();\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Paper\r\n\t */\r\n\tpublic get paper(): Paper {\r\n\t\tif (this._paper) {\r\n\t\t\treturn this._paper;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.parent) {\r\n\t\t\t\treturn this.parent.paper;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn getGhostPaper();\r\n\t}\r\n\r\n\t/**\r\n\t * An HTML element to be used when placing wrapper element (`<div>`)\r\n\t * for the whole chart.\r\n\t *\r\n\t * This is the same for **all** elements within the same chart.\r\n\t *\r\n\t * @param htmlContainer HTML element\r\n\t */\r\n\tpublic set htmlContainer(htmlContainer: $type.Optional<HTMLElement>) {\r\n\t\tthis._htmlContainer = htmlContainer;\r\n\t}\r\n\r\n\t/**\r\n\t * @return HTML element\r\n\t */\r\n\tpublic get htmlContainer(): $type.Optional<HTMLElement> {\r\n\t\tif (this._htmlContainer) {\r\n\t\t\treturn this._htmlContainer;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.parent) {\r\n\t\t\t\treturn this.parent.htmlContainer;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates (if not yet created) and returns element's `<title>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Title element\r\n\t */\r\n\tpublic get titleElement(): AMElement {\r\n\t\tif (!this._titleElement) {\r\n\t\t\tthis._titleElement = this.paper.add(\"title\");\r\n\t\t\tthis.group.add(this._titleElement);\r\n\t\t}\r\n\t\treturn this._titleElement;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates (if not yet created) and returns element's `<desc>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Desc element\r\n\t */\r\n\tpublic get descriptionElement(): AMElement {\r\n\t\tif (!this._descriptionElement) {\r\n\t\t\tthis._descriptionElement = this.paper.add(\"desc\");\r\n\t\t\tthis.group.add(this._descriptionElement);\r\n\t\t}\r\n\t\treturn this._descriptionElement;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns list of SVG filters (effects) applied to element. If the filter\r\n\t * list is not yet initilized, creates and returns an empty one.\r\n\t * Note, not all filters combine well with one another. We recommend using one filter per sprite.\r\n\t *\r\n\t * @return List of filters\r\n\t */\r\n\tpublic get filters(): List<Filter> {\r\n\t\tif (!this._filters) {\r\n\t\t\tthis._filters = new List<Filter>();\r\n\t\t\t// TODO only add certain events ?\r\n\t\t\tthis._disposers.push(this._filters.events.onAll(this.applyFilters, this));\r\n\t\t\tthis._disposers.push(new ListDisposer(this._filters));\r\n\t\t}\r\n\t\treturn this._filters;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets required SVG attributes. Must be called every time an element is\r\n\t * redrawn so that attributes are (re)applied.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected setSVGAttributes(): void {\r\n\t\tthis.fill = this.fill;\r\n\t\tthis.opacity = this.opacity;\r\n\t\tthis.fillOpacity = this.fillOpacity;\r\n\t\tthis.stroke = this.stroke;\r\n\t\tthis.strokeOpacity = this.strokeOpacity;\r\n\t\tthis.shapeRendering = this.shapeRendering;\r\n\t\tthis.strokeDasharray = this.strokeDasharray;\r\n\t\tthis.strokeDashoffset = this.strokeDashoffset;\r\n\t\tthis.strokeLinecap = this.strokeLinecap;\r\n\t\tthis.strokeLinejoin = this.strokeLinejoin;\r\n\t\tthis.focusable = this.focusable;\r\n\t\tthis.tabindex = this.tabindex;\r\n\t\tthis.role = this.role;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets an attribute directly on an SVG element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param attribute Attribute object\r\n\t */\r\n\tprotected setSVGAttribute(attribute: ISVGAttribute): void {\r\n\t\tthis.group.attr(attribute);\r\n\t}\r\n\r\n\t/**\r\n\t * Removes an attribute directly from SVG element.\r\n\t *\r\n\t * @param attribute Attribute key to remove\r\n\t */\r\n\tprotected removeSVGAttribute(attribute: string): void {\r\n\t\tthis.group.removeAttr(attribute);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets `class` attribute of the elements SVG node.\r\n\t *\r\n\t * Uses `am4core.options.classNamePrefix`.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic setClassName(): void {\r\n\r\n\t\tlet className = this.className;\r\n\t\tlet classNamePrefix = options.classNamePrefix;\r\n\r\n\t\tif (this.element) {\r\n\t\t\tthis.element.addClass(classNamePrefix + className);\r\n\t\t}\r\n\r\n\t\tthis.group.addClass(classNamePrefix + className + \"-group\");\r\n\r\n\t\tif ($type.hasValue(this.id)) {\r\n\t\t\tthis.group.addClass(classNamePrefix + this.id);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Adds an `id` attribute the the element and returns the id.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Element's ID\r\n\t */\r\n\tpublic uidAttr(): string {\r\n\t\tthis.setSVGAttribute({ \"id\": this.uid });\r\n\t\treturn this.uid;\r\n\t}\r\n\r\n\t/**\r\n\t * [updateClipPath description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected updateClipPath(): void {\r\n\t\tconst element = this._clipElement;\r\n\r\n\t\tif (element) {\r\n\t\t\telement.moveTo({ x: this.mask.pixelX, y: this.mask.pixelY });\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected createClipPath() {\r\n\t\tif (!this._clipPath) {\r\n\t\t\tthis._clipPath = this.paper.addGroup(\"clipPath\");\r\n\t\t\tthis.paper.appendDef(this._clipPath);\r\n\t\t\tthis._disposers.push(this._clipPath);\r\n\t\t\tlet id: string = registry.getUniqueId();\r\n\t\t\tthis._clipPath.attr({ \"id\": id });\r\n\t\t\tthis.group.attr({ \"clip-path\": \"url(\\\"\" + $utils.getBaseURI() + id + \"\\\")\" });\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Applies the mask Sprite.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected applyMask(): void {\r\n\t\tlet mask = this.mask;\r\n\r\n\t\tif (this._clipPath && mask) {\r\n\t\t\t// Container\r\n\t\t\tif (mask instanceof Container) {\r\n\t\t\t\tthis._clipElement.attr({ \"width\": $math.max(0, mask.pixelWidth), \"height\": $math.max(0, mask.pixelHeight) });\r\n\r\n\t\t\t\tlet point = $utils.spritePointToSprite({ x: mask.pixelX, y: mask.pixelY }, mask.parent, this);\r\n\r\n\t\t\t\tthis._clipPath.x = point.x;\r\n\t\t\t\tthis._clipPath.y = point.y;\r\n\t\t\t}\r\n\t\t\t// Sprite\r\n\t\t\telse {\r\n\t\t\t\tif (mask.element && mask.element != this._clipElement) {\r\n\t\t\t\t\tthis._clipElement = mask.element;\r\n\t\t\t\t\tthis._clipPath.add(this._clipElement);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._clipPath.scale = mask.scale;\r\n\t\t\t\tthis._clipPath.x = mask.pixelX;\r\n\t\t\t\tthis._clipPath.y = mask.pixelY;\r\n\t\t\t\tthis._clipPath.rotation = mask.rotation;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Applies filters to the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected applyFilters(): void {\r\n\t\t// we create a separate filter for each sprite as otherwise it would be impossible to animate filter.\r\n\t\t// svg doesn't support multiple filters applied to one element, so we put all the primitives to one filterElement of a sprite.\r\n\t\tif (this._filters && this._filters.length > 0) {\r\n\r\n\t\t\tlet width = 100;\r\n\t\t\tlet height = 100;\r\n\r\n\t\t\tif (!this.filterElement) {\r\n\t\t\t\tthis.filterElement = this.paper.addGroup(\"filter\");\r\n\t\t\t\tthis._disposers.push(this.filterElement);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.filterElement.removeChildNodes();\r\n\t\t\t}\r\n\r\n\t\t\tthis.paper.appendDef(this.filterElement);\r\n\r\n\t\t\tlet id: string = \"filter-\" + this.uid;\r\n\t\t\tthis.filterElement.attr({ \"id\": id });\r\n\r\n\t\t\t$iter.each(this.filters.iterator(), (filter) => {\r\n\t\t\t\tfilter.sprite = this;\r\n\t\t\t\tfilter.paper = this.paper;\r\n\r\n\t\t\t\tfilter.appendPrimitives(this.filterElement);\r\n\r\n\t\t\t\tif (filter.width > width) {\r\n\t\t\t\t\twidth = filter.width;\r\n\t\t\t\t}\r\n\t\t\t\tif (filter.height > height) {\r\n\t\t\t\t\theight = filter.height;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilter.scale = this.globalScale;\r\n\t\t\t});\r\n\r\n\t\t\tlet w = width + \"%\";\r\n\t\t\tlet h = height + \"%\";\r\n\r\n\t\t\t/* temporarily removed as it is breaking tooltips on Safari @todo come back to this\r\n\t\t\tif (this._measuredHeight <= 1) {\r\n\t\t\t\th = height + \"\";\r\n\t\t\t}\r\n\r\n\t\t\tif (this._measuredWidth <= 1) {\r\n\t\t\t\th = width + \"\";\r\n\t\t\t}*/\r\n\r\n\t\t\tthis.filterElement.attr({ \"width\": w, \"height\": h, \"x\": -(width - 100) / 2 + \"%\", \"y\": -(height - 100) / 2 + \"%\" });\r\n\r\n\t\t\tthis.group.attr({ \"filter\": \"url(\\\"\" + $utils.getBaseURI() + id + \"\\\")\" });\r\n\t\t}\r\n\t\telse if (this.filterElement) {\r\n\t\t\tthis.group.removeAttr(\"filter\");\r\n\t\t\tthis.filterElement.removeChildNodes();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [removeClipPath description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tprotected removeClipPath(): void {\r\n\t\tif (this._clipPath) {\r\n\t\t\t//this._clipPath.dispose();\r\n\t\t\tthis.removeDispose(this._clipPath);\r\n\t\t\tthis._clipPath = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [setElement description]\r\n\t *\r\n\t * @ignore\r\n\t * @todo Description\r\n\t * @param element [description]\r\n\t */\r\n\tpublic setElement(element: AMElement) {\r\n\t\tthis.element = element;\r\n\t\tthis.setSVGAttributes();\r\n\t\tthis.applyAccessibility();\r\n\t}\r\n\r\n\t/**\r\n\t * The main element for this Sprite, usually an SVG `<g>`.\r\n\t *\r\n\t * All other sub-elements are created in it.\r\n\t *\r\n\t * @param element Element\r\n\t */\r\n\tpublic set element(element: Optional<AMElement>) {\r\n\r\n\t\t// Destroy previous element if there was one before\r\n\t\tthis.removeElement();\r\n\r\n\t\t// Set new element\r\n\t\tthis._element = element;\r\n\r\n\t\t// Add element to group\r\n\t\t// Since we are adding Element to group, which is already in the\r\n\t\t// `.disposers` it will be removed automatically when Sprite is disposed\r\n\t\t// of\r\n\t\tthis.group.add(element);\r\n\r\n\t\tif (element.node instanceof SVGPathElement) {\r\n\t\t\tthis._isPath = true;\r\n\t\t}\r\n\r\n\t\t// This is needed if someone is setting element not in draw method but\r\n\t\t// from outside\r\n\t\tif (!this.invalid) {\r\n\t\t\tthis.validate();\r\n\t\t}\r\n\r\n\t\tif (options.autoSetClassName) {\r\n\t\t\tthis.setClassName();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Element\r\n\t */\r\n\tpublic get element(): Optional<AMElement> {\r\n\t\treturn this._element;\r\n\t}\r\n\r\n\t/**\r\n\t * HTML container (`<div>`) which is used to place chart's `<svg>` element\r\n\t * in.\r\n\t *\r\n\t * @return Container for chart elements\r\n\t */\r\n\tpublic get svgContainer(): $type.Optional<SVGContainer> {\r\n\t\tif (this._svgContainer) {\r\n\t\t\treturn this._svgContainer;\r\n\t\t}\r\n\t\telse if (this.parent) {\r\n\t\t\treturn this.parent.svgContainer;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets HTML container to add SVG and other chart elements to.\r\n\t *\r\n\t * @param svgContainer Container for chart elements\r\n\t */\r\n\tpublic set svgContainer(svgContainer: $type.Optional<SVGContainer>) {\r\n\t\tthis._svgContainer = svgContainer;\r\n\t}\r\n\r\n\t/**\r\n\t * Measures main element.\r\n\t *\r\n\t * Saves measurements into private `_bbox` property.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected measureElement() {\r\n\t\tif (this.element) {\r\n\t\t\tif (this.definedBBox) {\r\n\t\t\t\tthis._bbox = this.definedBBox;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet svgBBox: IRectangle = this.element.getBBox();\r\n\t\t\t\tthis._bbox = { x: svgBBox.x, y: svgBBox.y, width: svgBBox.width, height: svgBBox.height };\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t * Positions element according its center settings.\r\n\t *\r\n\t * @todo Description (review)\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateCenter() {\r\n\t\tif (this.element) {\r\n\t\t\tlet prevElementTransform: string = this.element.transformString;\r\n\r\n\t\t\tlet bbox = this.bbox;\r\n\r\n\t\t\tlet ex = 0;\r\n\t\t\tlet ey = 0;\r\n\r\n\t\t\tlet elementX = bbox.x;\r\n\t\t\tlet elementY = bbox.y;\r\n\r\n\t\t\tlet elementWidth = bbox.width;\r\n\t\t\tlet elementHeigth = bbox.height;\r\n\r\n\t\t\tlet pixelPaddingLeft = this.pixelPaddingLeft;\r\n\t\t\tlet pixelPaddingRight = this.pixelPaddingRight;\r\n\t\t\tlet pixelPaddingTop = this.pixelPaddingTop;\r\n\t\t\tlet pixelPaddingBottom = this.pixelPaddingBottom;\r\n\r\n\t\t\t// add padding to the measured size\r\n\t\t\tlet measuredWidth = $math.max(elementWidth + pixelPaddingLeft + pixelPaddingRight, this.pixelWidth);\r\n\t\t\tlet measuredHeight = $math.max(elementHeigth + pixelPaddingTop + pixelPaddingBottom, this.pixelHeight);\r\n\r\n\t\t\t// extremes\r\n\t\t\tlet left = bbox.x;\r\n\t\t\tlet right = bbox.x + measuredWidth;\r\n\r\n\t\t\tlet top = bbox.y;\r\n\t\t\tlet bottom = bbox.y + measuredHeight;\r\n\r\n\t\t\tlet horizontalCenter = this.horizontalCenter;\r\n\t\t\tlet verticalCenter = this.verticalCenter;\r\n\r\n\t\t\tswitch (horizontalCenter) {\r\n\t\t\t\tcase \"none\":\r\n\t\t\t\t\tex = elementX + pixelPaddingLeft;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tex = pixelPaddingLeft;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tex = pixelPaddingLeft - (elementWidth + pixelPaddingRight + pixelPaddingLeft) / 2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tex = -pixelPaddingRight - elementWidth;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tswitch (verticalCenter) {\r\n\t\t\t\tcase \"none\":\r\n\t\t\t\t\tey = elementY + pixelPaddingTop;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"top\":\r\n\t\t\t\t\tey = pixelPaddingTop;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"middle\":\r\n\t\t\t\t\tey = pixelPaddingTop - (elementHeigth + pixelPaddingBottom + pixelPaddingTop) / 2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"bottom\":\r\n\t\t\t\t\tey = -pixelPaddingBottom - elementHeigth;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis._measuredHeight = measuredHeight;\r\n\t\t\tthis._measuredWidth = measuredWidth;\r\n\r\n\t\t\tlet x: number = $math.round(ex - elementX, this._positionPrecision, true);\r\n\t\t\tlet y: number = $math.round(ey - elementY, this._positionPrecision, true);\r\n\r\n\t\t\tthis.ex = x - pixelPaddingLeft;\r\n\t\t\tthis.ey = y - pixelPaddingTop;\r\n\r\n\t\t\tthis.maxLeft = left + x - pixelPaddingLeft;\r\n\t\t\tthis.maxRight = right + x - pixelPaddingLeft;\r\n\r\n\t\t\tthis.maxTop = top + y - pixelPaddingTop;\r\n\t\t\tthis.maxBottom = bottom + y - pixelPaddingTop;\r\n\r\n\t\t\tif (this.pixelPerfect) {\r\n\t\t\t\tx -= 0.5;\r\n\t\t\t\ty -= 0.5;\r\n\t\t\t}\r\n\r\n\t\t\tthis.element.moveTo({ x: x, y: y });\r\n\r\n\t\t\tif (prevElementTransform != this.element.transformString) {\r\n\t\t\t\tthis.dispatchImmediately(\"transformed\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Measures the whole element.\r\n\t *\r\n\t * Returns `true` if the size has changed from the last measurement.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Did the size changed from the last measurement?\r\n\t */\r\n\tpublic measure(): boolean {\r\n\r\n\t\tthis.updateCenter();\r\n\r\n\t\tlet measuredWidth = this._measuredWidth;\r\n\t\tlet measuredHeight = this._measuredHeight;\r\n\r\n\t\t// extremes\r\n\t\tlet left = this.maxLeft;\r\n\t\tlet right = this.maxRight;\r\n\r\n\t\tlet top = this.maxTop;\r\n\t\tlet bottom = this.maxBottom;\r\n\r\n\t\t// non-parent wise size\r\n\t\tthis._measuredWidthSelf = measuredWidth;\r\n\t\tthis._measuredHeightSelf = measuredHeight;\r\n\r\n\t\tlet positionPrecision = this._positionPrecision;\r\n\r\n\t\tthis.maxLeftSelf = this.maxLeft;\r\n\t\tthis.maxRightSelf = this.maxRight;\r\n\t\tthis.maxTopSelf = this.maxTop;\r\n\t\tthis.maxBottomSelf = this.maxBottom;\r\n\r\n\t\t// if a sprite is rotated or scaled, calculate measured size after transformations\r\n\t\tif (this.rotation !== 0 || this.scale !== 1) {\r\n\r\n\t\t\t// not good to handleGlobalScale here.\r\n\t\t\tif (this.nonScalingStroke) {\r\n\t\t\t\tthis.strokeWidth = this.strokeWidth;\r\n\t\t\t}\r\n\r\n\t\t\tlet svg = this.paper.svg;\r\n\r\n\t\t\tlet matrix: SVGMatrix = svg.createSVGMatrix();\r\n\t\t\tlet rotation: number = this.rotation;\r\n\r\n\t\t\tmatrix.a = $math.cos(rotation) * this.scale;\r\n\t\t\tmatrix.c = - $math.sin(rotation) * this.scale;\r\n\t\t\tmatrix.e = 0;\r\n\t\t\tmatrix.b = $math.sin(rotation) * this.scale;\r\n\t\t\tmatrix.d = $math.cos(rotation) * this.scale;\r\n\t\t\tmatrix.f = 0;\r\n\r\n\t\t\tlet p1: SVGPoint = svg.createSVGPoint();\r\n\t\t\tp1.x = left;\r\n\t\t\tp1.y = top;\r\n\r\n\t\t\tlet p2: SVGPoint = svg.createSVGPoint();\r\n\t\t\tp2.x = right;\r\n\t\t\tp2.y = top;\r\n\r\n\t\t\tlet p3: SVGPoint = svg.createSVGPoint();\r\n\t\t\tp3.x = right;\r\n\t\t\tp3.y = bottom;\r\n\r\n\t\t\tlet p4: SVGPoint = svg.createSVGPoint();\r\n\t\t\tp4.x = left;\r\n\t\t\tp4.y = bottom;\r\n\r\n\t\t\tlet pt1: SVGPoint = p1.matrixTransform(matrix);\r\n\t\t\tlet pt2: SVGPoint = p2.matrixTransform(matrix);\r\n\t\t\tlet pt3: SVGPoint = p3.matrixTransform(matrix);\r\n\t\t\tlet pt4: SVGPoint = p4.matrixTransform(matrix);\r\n\r\n\t\t\tleft = Math.min(pt1.x, pt2.x, pt3.x, pt4.x);\r\n\t\t\tright = Math.max(pt1.x, pt2.x, pt3.x, pt4.x);\r\n\t\t\ttop = Math.min(pt1.y, pt2.y, pt3.y, pt4.y);\r\n\t\t\tbottom = Math.max(pt1.y, pt2.y, pt3.y, pt4.y);\r\n\r\n\t\t\tmeasuredWidth = right - left;\r\n\t\t\tmeasuredHeight = bottom - top;\r\n\r\n\t\t\tthis.maxLeft = $math.round(left, positionPrecision, true);\r\n\t\t\tthis.maxRight = $math.round(right, positionPrecision, true);\r\n\t\t\tthis.maxTop = $math.round(top, positionPrecision, true);\r\n\t\t\tthis.maxBottom = $math.round(bottom, positionPrecision, true);\r\n\t\t}\r\n\r\n\t\tthis._measuredWidth = $math.round(measuredWidth, positionPrecision, true);\r\n\t\tthis._measuredHeight = $math.round(measuredHeight, positionPrecision, true);\r\n\r\n\r\n\t\t// dispatch event\r\n\t\tif (this._measuredWidth != this._prevMeasuredWidth || this._measuredHeight != this._prevMeasuredHeight) {\r\n\t\t\tthis._prevMeasuredHeight = this._measuredHeight;\r\n\t\t\tthis._prevMeasuredWidth = this._measuredWidth;\r\n\r\n\t\t\t// TODO clear existing sizechanged dispatches ?\r\n\t\t\tthis.dispatch(\"sizechanged\");\r\n\r\n\t\t\tif ((this.isHover || this.showTooltipOn == \"hit\" || this.showTooltipOn == \"always\") && this.tooltip && this.tooltip.visible && ($type.hasValue(this.tooltipText) || $type.hasValue(this.tooltipHTML))) {\r\n\t\t\t\tthis.updateTooltipPosition();\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Insert this element before sibling element.\r\n\t *\r\n\t * @param sprite Target element\r\n\t * @return This element\r\n\t */\r\n\tpublic insertBefore(sprite: Sprite): Sprite {\r\n\t\tlet parent = this.parent;\r\n\r\n\t\tif (parent) {\r\n\t\t\tlet index: number = parent.children.indexOf(sprite);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tparent.children.moveValue(this, index);\r\n\t\t\t\tparent.sortChildren();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Insert this element after sibling element.\r\n\t *\r\n\t * @param sprite Target element\r\n\t * @return This element\r\n\t */\r\n\tpublic insertAfter(sprite: Sprite): Sprite {\r\n\t\tlet parent = this.parent;\r\n\r\n\t\tif (parent) {\r\n\t\t\tlet index: number = parent.children.indexOf(sprite);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tparent.children.moveValue(this, index + 1);\r\n\t\t\t\tparent.sortChildren();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Removes the main SVG element.\r\n\t *\r\n\t * This does not destroy the whole Sprite element. To do that use\r\n\t * `dispose()` instead.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected removeElement() {\r\n\t\t// remove visual element\r\n\t\tif (this._element) {\r\n\t\t\tthis.removeDispose(this._element);\r\n\t\t\tthis._element = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns relative (percent) value of the X coordindate within this element.\r\n\t *\r\n\t * A relative value is a hundredth of a percent. So 100% would result in a 1\r\n\t * as relative value.\r\n\t *\r\n\t * @param value Absolute or relative X coordinate\r\n\t * @return Relative value\r\n\t */\r\n\tpublic getRelativeX(value: number | Percent): number {\r\n\t\tif (value instanceof Percent) {\r\n\t\t\treturn value.value;\r\n\t\t}\r\n\t\telse if (this.parent) {\r\n\t\t\treturn value / this.parent.innerWidth;\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns relative (percent) value of the Y coordindate within this element.\r\n\t *\r\n\t * A relative value is a hundredth of a percent. So 100% would result in a 1\r\n\t * as relative value.\r\n\t *\r\n\t * @param value Absolute or relative Y coordinate\r\n\t * @return Relative value\r\n\t */\r\n\tpublic getRelativeY(value: number | Percent): number {\r\n\t\tif (value instanceof Percent) {\r\n\t\t\treturn value.value;\r\n\t\t}\r\n\t\telse if (this.parent) {\r\n\t\t\treturn value / this.parent.innerHeight;\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an X coordinate in pixel within the element.\r\n\t *\r\n\t * If number is passed in as parameter, the same number will be returned\r\n\t * back.\r\n\t *\r\n\t * If [[Percent]] is passed in, it will be recalculated to pixels.\r\n\t *\r\n\t * @param value Absolute or relative X coordinate\r\n\t * @return X coordinate in pixels\r\n\t */\r\n\tpublic getPixelX(value: number | Percent): number {\r\n\r\n\t\t// we don't use $utils.valueToRelative as this would mean that we should access parent.innerWidth\r\n\t\t// all the time and this would result chain of the same actions and will slow down the system a lot\r\n\r\n\t\tlet pixel: number = 0;\r\n\t\tif ($type.isNumber(value)) {\r\n\t\t\tpixel = value;\r\n\t\t}\r\n\t\telse if (value instanceof Percent) {\r\n\t\t\tlet relative: number = value.value;\r\n\r\n\t\t\tif (this.parent) {\r\n\t\t\t\tpixel = $math.round(this.parent.innerWidth * relative, this._positionPrecision, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn pixel;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an Y coordinate in pixel within the element.\r\n\t *\r\n\t * If number is passed in as parameter, the same number will be returned\r\n\t * back.\r\n\t *\r\n\t * If [[Percent]] is passed in, it will be recalculated to pixels.\r\n\t *\r\n\t * @param value Absolute or relative Y coordinate\r\n\t * @return Y coordinate in pixels\r\n\t */\r\n\tpublic getPixelY(value: number | Percent): number {\r\n\r\n\t\t// we don't use $utils.valueToRelative as this would mean that we should access parent.innerWidth\r\n\t\t// all the time and this would result chain of the same actions and will slow down the system a lot\r\n\r\n\t\tlet pixel: number = 0;\r\n\t\tif ($type.isNumber(value)) {\r\n\t\t\tpixel = value;\r\n\t\t}\r\n\t\telse if (value instanceof Percent) {\r\n\t\t\tlet relative: number = value.value;\r\n\r\n\t\t\tif (this.parent) {\r\n\t\t\t\tpixel = $math.round(this.parent.innerHeight * relative, this._positionPrecision, true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn pixel;\r\n\t}\r\n\r\n\t/**\r\n\t * Moves the element to a specified coordinates.\r\n\t *\r\n\t * Using this method is preferred method of moving element, as it saves some\r\n\t * CPU processing power over setting `x` and `y` properties separately.\r\n\t *\r\n\t * The method respects element's center settings. The element will be\r\n\t * positioned so that `point` coordinates come in whatever \"center\" of the\r\n\t * element is, as set in `horizontalCenter` and `verticalCenter`.\r\n\t *\r\n\t * Besides moving the element, you can also at the same time scale and\r\n\t * rotate the element.\r\n\t *\r\n\t * @param point New coordinates\r\n\t * @param rotation New rotation\r\n\t * @param scale New Scale\r\n\t */\r\n\tpublic moveTo(point: IPoint, rotation?: number, scale?: number, isDragged?: boolean): void {\r\n\t\tif (this.isDragged && !isDragged) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (point) {\r\n\t\t\tif ($type.isNumber(point.x)) {\r\n\t\t\t\tthis.setPropertyValue(\"x\", $math.round(point.x, this._positionPrecision, true));\r\n\t\t\t}\r\n\t\t\tif ($type.isNumber(point.y)) {\r\n\t\t\t\tthis.setPropertyValue(\"y\", $math.round(point.y, this._positionPrecision, true));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ($type.isNumber(rotation)) {\r\n\t\t\tthis.rotation = rotation;\r\n\t\t}\r\n\r\n\t\tif ($type.isNumber(scale)) {\r\n\t\t\tthis.scale = scale;\r\n\t\t}\r\n\r\n\t\t// must leave this\r\n\t\tthis.invalidatePosition();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets another [[Sprite]] element as this elements mask.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param mask A [[Sprite]] to use as mask\r\n\t */\r\n\tpublic set mask(mask: Optional<Sprite>) {\r\n\t\tif (this._mask.get() !== mask) {\r\n\t\t\t// this is good\r\n\t\t\tif (mask) {\r\n\r\n\t\t\t\tthis.createClipPath();\r\n\r\n\t\t\t\tif (!(mask instanceof Container)) {\r\n\t\t\t\t\tmask.isMeasured = false;\r\n\t\t\t\t\tif (mask.element) {\r\n\t\t\t\t\t\tthis._clipElement = mask.element;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._clipElement = this.paper.add(\"rect\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._clipElement) {\r\n\t\t\t\t\tthis._clipPath.add(this._clipElement);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._mask.set(mask, new MultiDisposer([\r\n\t\t\t\t\t//mask.addEventListener(SpriteEvent.TRANSFORMED, this.applyMask, false, this);\r\n\t\t\t\t\tmask.events.on(\"maxsizechanged\", () => { if (this.inited) { this.applyMask(); } }, undefined, false),\r\n\t\t\t\t\tmask.events.on(\"validated\", this.applyMask, this, false),\r\n\t\t\t\t\tmask.events.on(\"positionchanged\", this.applyMask, this, false)\r\n\t\t\t\t]));\r\n\r\n\t\t\t\tthis.applyMask();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis._mask.reset();\r\n\t\t\t\tthis.group.removeAttr(\"clip-path\");\r\n\t\t\t\tthis.removeClipPath();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns [[Sprite]] element currently used as mask for this element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return A [[Sprite]] to use as mask\r\n\t */\r\n\tpublic get mask(): Optional<Sprite> {\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn this._mask.get();\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"mask\", this._mask.get());\r\n\t\t}\r\n\t}\r\n\r\n\t// you can set IRectangle as a mask instead o a sprite. Note, the changes of the object won't be monitored\r\n\r\n\t/**\r\n\t * Instead of creating a [[Sprite]] for mask, you can just use a\r\n\t * [[Rectangle]] by setting this accessor.\r\n\t *\r\n\t * Please note that the element will not monitor any changes to the mask\r\n\t * rectangle.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param rect Mask Rectangle\r\n\t */\r\n\tpublic set maskRectangle(rect: IRectangle) {\r\n\t\tif (rect) {\r\n\r\n\t\t\tthis.createClipPath();\r\n\r\n\t\t\tif (!this._clipElement) {\r\n\t\t\t\tthis._clipElement = this.paper.add(\"rect\");\r\n\t\t\t\tthis._clipPath.add(this._clipElement);\r\n\t\t\t}\r\n\t\t\tthis._clipElement.attr({ \"width\": rect.width, \"height\": rect.height });\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.removeClipPath();\r\n\t\t\tthis._clipElement = undefined;\r\n\t\t}\r\n\t\tthis._maskRectangle = rect;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Mask Rectangle\r\n\t */\r\n\tpublic get maskRectangle(): IRectangle {\r\n\t\treturn this._maskRectangle;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if this element was already measured.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Was element already measured?\r\n\t */\r\n\tpublic set isMeasured(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\r\n\t\tif (!value) {\r\n\t\t\tthis._measuredWidth = 0;\r\n\t\t\tthis._measuredHeight = 0;\r\n\t\t\t//this._pixelHeight = 0;\r\n\t\t\t//this._pixelWidth = 0;\r\n\t\t}\r\n\r\n\t\tif (this._isMeasured != value) {\r\n\t\t\tthis._isMeasured = value;\r\n\t\t\tthis.invalidatePosition();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Was element already measured?\r\n\t */\r\n\tpublic get isMeasured(): boolean {\r\n\t\treturn this._isMeasured;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the this element has any of its parts overlapping with another\r\n\t * element.\r\n\t *\r\n\t * @todo Description (review)\r\n\t * @param sprite Second element to test again\r\n\t * @return Overlapping?\r\n\t */\r\n\tpublic hitTest(sprite: Sprite): boolean {\r\n\t\t// validate, otherwise we will not know measuredWidth and measuredHeight\r\n\t\tif (this.invalid) {\r\n\t\t\tthis.validate();\r\n\t\t}\r\n\t\tif (sprite.invalid) {\r\n\t\t\tsprite.validate();\r\n\t\t}\r\n\r\n\t\tlet ax1 = this.pixelX;\r\n\t\tlet ay1 = this.pixelY;\r\n\t\tlet ax2 = ax1 + this.measuredWidth;\r\n\t\tlet ay2 = ay1 + this.measuredHeight;\r\n\r\n\t\tlet bx1 = sprite.pixelX;\r\n\t\tlet by1 = sprite.pixelY;\r\n\t\tlet bx2 = bx1 + sprite.measuredWidth;\r\n\t\tlet by2 = by1 + sprite.measuredHeight;\r\n\r\n\t\treturn !(bx1 > ax2 || bx2 < ax1 || by1 > ay2 || by2 < ay1);\r\n\t}\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * STATE-RELATED\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Returns `true` if Sprite has already finished initializing.\r\n\t *\r\n\t * @return Initialized?\r\n\t */\r\n\tpublic get inited(): boolean {\r\n\t\treturn this._inited;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if Sprite has already finished initializing and is ready.\r\n\t *\r\n\t * If this object is a [[Container]] it will wait for all of its children\r\n\t * are ready before becoming ready itself and firing a `\"ready\"` event.\r\n\t *\r\n\t * @return is ready?\r\n\t */\r\n\tpublic isReady(): boolean {\r\n\t\treturn this._ready;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a collection of element's available [[SpriteState]] entries.\r\n\t *\r\n\t * @see {@link SpriteState}\r\n\t * @return States\r\n\t */\r\n\tpublic get states(): DictionaryTemplate<string, SpriteState<this[\"_properties\"], this[\"_adapter\"]>> {\r\n\t\tif (!this._states) {\r\n\t\t\tconst state = new SpriteState<this[\"_properties\"], this[\"_adapter\"]>();\r\n\r\n\t\t\t// works\r\n\t\t\tthis._states = new DictionaryTemplate<string, SpriteState<this[\"_properties\"], this[\"_adapter\"]>>(state);\r\n\r\n\t\t\t// TODO what about removeKey ?\r\n\t\t\tthis._disposers.push(this._states.events.on(\"insertKey\", this.processState, this, false));\r\n\t\t\tthis._disposers.push(this._states.events.on(\"setKey\", this.processState, this, false));\r\n\r\n\t\t\tthis._disposers.push(new DictionaryDisposer(this._states));\r\n\t\t\tthis._disposers.push(state);\r\n\t\t}\r\n\t\treturn this._states;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a [[SpriteState]] object for \"hidden\" state.\r\n\t *\r\n\t * This is a shortcut to `this.states.getKey(\"hidden\")`.\r\n\t *\r\n\t * @return Hidden state\r\n\t */\r\n\tpublic get hiddenState(): SpriteState<this[\"_properties\"], this[\"_adapter\"]> {\r\n\t\tif (!this.states.getKey(\"hidden\")) {\r\n\t\t\tlet hiddenState = this.states.create(\"hidden\");\r\n\t\t\thiddenState.properties.opacity = 0;\r\n\t\t\thiddenState.properties.visible = false;\r\n\t\t}\r\n\r\n\t\treturn this.states.getKey(\"hidden\");\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a [[SpriteState]] object for \"default\" state.\r\n\t *\r\n\t * This is a shortcut to `this.states.getKey(\"default\")`.\r\n\t *\r\n\t * @return Hidden state\r\n\t */\r\n\tpublic get defaultState(): SpriteState<this[\"_properties\"], this[\"_adapter\"]> {\r\n\r\n\t\tif (!this.states.getKey(\"default\")) {\r\n\t\t\tlet defaultState = this.states.create(\"default\");\r\n\t\t\tdefaultState.properties.opacity = 1;\r\n\t\t}\r\n\r\n\t\treturn this.states.getKey(\"default\");\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if some key states are defined and updates Sprite properties\r\n\t * accordingly.\r\n\t *\r\n\t * For example if there's a state \"down\" defined for Sprite, we automatically\r\n\t * make it \"clickable\".\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event An event which caused state list update\r\n\t */\r\n\tprotected processState(event: IDictionaryEvents<string, SpriteState<this[\"_properties\"], this[\"_adapter\"]>>[\"insertKey\" | \"setKey\"]): void {\r\n\t\tlet state: SpriteState<this[\"_properties\"], this[\"_adapter\"]> = event.newValue;\r\n\t\tstate.sprite = this;\r\n\t\tstate.name = event.key;\r\n\t\tif (this.states.hasKey(\"hover\") || (this.showTooltipOn == \"hover\" && ($type.hasValue(this.tooltipHTML) || $type.hasValue(this.tooltipText)))) {\r\n\t\t\tthis.hoverable = true;\r\n\t\t}\r\n\r\n\t\tif (this.states.hasKey(\"down\") || (this.showTooltipOn == \"hover\" && ($type.hasValue(this.tooltipHTML) || $type.hasValue(this.tooltipText)))) {\r\n\t\t\tthis.clickable = true;\r\n\t\t}\r\n\r\n\t\tif (this.states.hasKey(\"focus\")) {\r\n\t\t\tthis.focusable = true;\r\n\t\t}\r\n\r\n\t\t// Propagate the new state to clones\r\n\t\tif (this.applyOnClones) {\r\n\t\t\tconst clones = this.clones.values;\r\n\t\t\tconst length = clones.length;\r\n\r\n\t\t\tfor (let i = 0; i < length; ++i) {\r\n\t\t\t\tconst clone = clones[i];\r\n\t\t\t\tif (!clone.isDisposed()) {\r\n\t\t\t\t\tclone.states.setKey(state.name, state);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a list elements's animations currently being played.\r\n\t *\r\n\t * If the list has not been initialized it is created.\r\n\t *\r\n\t * @return List of animations\r\n\t */\r\n\tpublic get animations(): Array<Animation> {\r\n\t\tif (!this._animations) {\r\n\t\t\tthis._animations = [];\r\n\t\t\tthis._disposers.push(new AnimationDisposer(this._animations));\r\n\t\t}\r\n\t\treturn this._animations;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts element's local coordinates to the coordinates within the main\r\n\t * chart container.\r\n\t *\r\n\t * @param point Local point\r\n\t * @return Global point\r\n\t */\r\n\tpublic getSvgPoint(point: IPoint): IPoint {\r\n\t\ttry {\r\n\t\t\t// Calculate SVG point\r\n\t\t\tlet bbox = this.htmlContainer.getBoundingClientRect();\r\n\r\n\t\t\treturn {\r\n\t\t\t\t\"x\": point.x - bbox.left,\r\n\t\t\t\t\"y\": point.y - bbox.top\r\n\t\t\t};\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\treturn point;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and starts an [[Animation]] with given `animationOptions`.\r\n\t *\r\n\t * @see {@link Animation} for additional information about available options\r\n\t * @param animationOptions Animation options\r\n\t * @param duration Duration in milliseconds\r\n\t * @param easing Easing function\r\n\t * @return Animation instance\r\n\t */\r\n\tpublic animate(animationOptions: ISpriteAnimationOptions[] | ISpriteAnimationOptions, duration: number, easing?: (value: number) => number): Animation {\r\n\t\treturn new Animation(this, animationOptions, duration, easing).start();\r\n\t}\r\n\r\n\t/**\r\n\t * Applies a [[SpriteState]] on this element.\r\n\t *\r\n\t * The first parameter can either be a name state or a [[SpriteState]]\r\n\t * instance.\r\n\t *\r\n\t * When run, this method will apply SVG properties defined in a\r\n\t * [[SpriteState]], but only those that are relevant to this particular\r\n\t * element, i.e. are in the `properties` array.\r\n\t *\r\n\t * @see {@link SpriteState}\r\n\t * @param value A state - name key or instance\r\n\t * @param transitionDuration Duration of the transition between current and new state\r\n\t * @param easing An easing function\r\n\t */\r\n\tpublic setState(value: string | SpriteState<this[\"_properties\"], this[\"_adapter\"]>, transitionDuration?: number, easing?: (value: number) => number): $type.Optional<Animation> {\r\n\t\tlet state: Optional<SpriteState<this[\"_properties\"], this[\"_adapter\"]>>;\r\n\t\tif (value instanceof SpriteState) {\r\n\t\t\tthis.states.setKey(value.name, value);\r\n\t\t\tstate = value;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tstate = this.states.getKey(value);\r\n\t\t\tif (!state) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// stop previous transition\r\n\t\t// not good - foe expample, we are animating to some \"active\" state and in them middle \"hover\" state happens. then \"active\" stat won't be applied\r\n\t\t//if (this._transition) {\r\n\t\t//this._transition.stop();\r\n\t\t//}\r\n\r\n\t\tif (state.name == \"hover\") {\r\n\t\t\tif (this.isHidden) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.isHover = true;\r\n\t\t}\r\n\r\n\t\tif (state.name == \"hidden\") {\r\n\t\t\tthis.isHiding = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (!this.visible) {\r\n\t\t\t\tthis.setVisibility(state.properties.visible || this.defaultState.properties.visible);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (state.name == \"active\") {\r\n\t\t\tthis.isActive = true;\r\n\t\t}\r\n\t\t// we do not set isActive = false here if it's not active, but container does that if setStateOnChildren = true\r\n\r\n\r\n\t\tif (!$type.isNumber(transitionDuration)) {\r\n\t\t\ttransitionDuration = state.transitionDuration;\r\n\t\t}\r\n\r\n\t\tif (!$type.hasValue(easing)) {\r\n\t\t\teasing = state.transitionEasing;\r\n\t\t}\r\n\r\n\t\treturn this.transitTo(state, transitionDuration, easing);\r\n\t}\r\n\r\n\t/**\r\n\t * Applies proper state based on the condition of the element. A condition is\r\n\t * deducted in this order:\r\n\t * * \"hover\" if Sprite has currently any pointers over it\r\n\t * * \"down\" if Sprite has any pointers (touch or mouse) currently pressed over it\r\n\t * * \"focus\" if Sprite has currently got focus (accessibility)\r\n\t * * \"hidden\" if Sprite is currently hidden\r\n\t *\r\n\t * Returns an [[Animation]] object, which is handling gradual transition from\r\n\t * current values of properties, to the new target state(s).\r\n\t *\r\n\t * @param duration Duration for the animation (ms)\r\n\t * @return [[Animation]] object which is handling the transition\r\n\t */\r\n\tpublic applyCurrentState(duration?: number): $type.Optional<Animation> {\r\n\r\n\t\t//if (!this.isHidden) { // this was done for hover state not to take effect if \"hidden\" is actually visible, need to think about it.\r\n\r\n\t\tlet animation: $type.Optional<Animation> = this.setState(this.defaultState, duration);\r\n\r\n\t\tif (this.isHover) {\r\n\t\t\tanimation = this.setState(\"hover\", duration);\r\n\t\t}\r\n\r\n\t\tif (this.isDown && this.interactions.downPointers.length) {\r\n\t\t\tanimation = this.setState(\"down\", duration);\r\n\t\t}\r\n\r\n\t\tthis.isFocused = this.isFocused;\r\n\r\n\t\tif (this.isActive) {\r\n\t\t\tanimation = this.setState(\"active\", duration);\r\n\t\t\tif (this.isHover && this.states.hasKey(\"hoverActive\")) {\r\n\t\t\t\tanimation = this.setState(\"hoverActive\", duration);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn animation;\r\n\t\t//}\r\n\t}\r\n\r\n\t/**\r\n\t * Starts an [[Animation]] of the properties to specific values as they are\r\n\t * set in `state`.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param state Target State\r\n\t * @param duration Duration in milliseconds\r\n\t * @param easing Easing function\r\n\t * @return Transition Animation\r\n\t */\r\n\tprotected transitTo(state: SpriteState<this[\"_properties\"], this[\"_adapter\"]>, duration: number, easing?: (value: number) => number): Optional<Animation> {\r\n\t\t// Init\r\n\t\tlet options: ISpriteAnimationOptions[] = [],\r\n\t\t\tpropValues = state.allValues,\r\n\t\t\ttransition: Optional<Animation>;\r\n\r\n\t\t// todo: do this for numeric/color properties only?\r\n\t\t// @todo use state.getPropertyValue instead\r\n\t\t$object.each(propValues, (propertyName, finalValue) => {\r\n\t\t\tlet currentValue: any = (<any>this)[propertyName];\r\n\t\t\t// save current value to default state. this solves a big problem where values must be set both on sprite and default state\r\n\t\t\tif (finalValue != currentValue && this.defaultState.properties[propertyName] == undefined) {\r\n\t\t\t\tthis.defaultState.properties[propertyName] = currentValue;\r\n\t\t\t}\r\n\r\n\t\t\t//if (finalValue != currentValue && $type.hasValue(finalValue)) {\r\n\t\t\tif (<any>finalValue != \"__unset\") {\r\n\t\t\t\tlet option: ISpriteAnimationOptions = { from: currentValue, to: <any>finalValue, property: propertyName };\r\n\t\t\t\toptions.push(option);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (options.length > 0) {\r\n\t\t\ttransition = this.animate(options, duration, easing);\r\n\t\t\tif (transition && !transition.isFinished()) {\r\n\t\t\t\t// TODO should this use events.once ?\r\n\t\t\t\t// TODO push onto _disposers array ?\r\n\t\t\t\tthis._disposers.push(transition.events.on(\"animationended\", () => {\r\n\t\t\t\t\tthis.dispatchImmediately(\"transitionended\");\r\n\t\t\t\t}));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.dispatchImmediately(\"transitionended\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// apply filters if set\r\n\t\tif (state.filters.length > 0) {\r\n\t\t\tlet newFilters: Filter[] = [];\r\n\t\t\t// check for the same filters\r\n\t\t\t$iter.each(state.filters.iterator(), (stateFilter) => {\r\n\t\t\t\tlet newFilter: Filter = <Filter>stateFilter.clone();\r\n\t\t\t\tnewFilters.push(newFilter);\r\n\t\t\t\tlet animationOptions: IAnimationOptions[] = [];\r\n\r\n\t\t\t\t$iter.each(this.filters.iterator(), (currentFilter) => {\r\n\t\t\t\t\t// if we have the same filters\r\n\t\t\t\t\tif (currentFilter.className == newFilter.className) {\r\n\r\n\t\t\t\t\t\tif (!$iter.contains(this.defaultState.filters.iterator(), (x) => x.className === newFilter.className)) {\r\n\t\t\t\t\t\t\tthis.defaultState.filters.push(currentFilter);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t$object.each(newFilter.properties, (propertyName, newValue) => {\r\n\t\t\t\t\t\t\tlet currentValue = (<any>currentFilter).properties[propertyName];\r\n\t\t\t\t\t\t\t// if values are not the same, push to animation options array\r\n\t\t\t\t\t\t\tif (currentValue != newValue) {\r\n\t\t\t\t\t\t\t\tanimationOptions.push({ property: propertyName, from: currentValue, to: newValue });\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\t// animate to new value\r\n\t\t\t\tnewFilter.animate(animationOptions, duration, easing);\r\n\t\t\t});\r\n\t\t\tthis.filters.clear();\r\n\t\t\tthis.filters.pushAll(newFilters);\r\n\t\t}\r\n\r\n\t\treturn transition;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if Sprite is currently transiting from one state/value to\r\n\t * another.\r\n\t *\r\n\t * @return Is in transition?\r\n\t */\r\n\tpublic isInTransition(): boolean {\r\n\t\treturn this.animations.length > 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if this element has a mouse pointer currently hovering\r\n\t * over it, or if it has any touch pointers pressed on it.\r\n\t *\r\n\t * @param value Is hovered?\r\n\t */\r\n\tpublic set isHover(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (value !== this.isHover) {\r\n\t\t\tif (this.isInteractive()) {\r\n\t\t\t\tthis.interactions.isHover = value;\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tthis.handleOver();\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.handleOut();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns indicator if this element has a mouse pointer currently hovering\r\n\t * over it, or if it has any touch pointers pressed on it.\r\n\t *\r\n\t * @return Is hovered?\r\n\t */\r\n\tpublic get isHover(): boolean {\r\n\t\tif (this.isInteractive()) {\r\n\t\t\treturn this.interactions.isHover;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns indicator if this element is being dragged at the moment.\r\n\t *\r\n\t * @return Is dragged?\r\n\t */\r\n\tpublic get isDragged(): boolean {\r\n\t\treturn this._isDragged;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns indicator if this element is being resized at the moment.\r\n\t *\r\n\t * @return Is resized?\r\n\t */\r\n\tpublic get isResized(): boolean {\r\n\t\treturn this._isResized;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if this element has any pointers (mouse or touch) pressing down\r\n\t * on it.\r\n\t *\r\n\t * @param value Is down?\r\n\t */\r\n\tpublic set isDown(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (this.isInteractive() && this.isDown != value) {\r\n\t\t\tthis.interactions.isDown = value;\r\n\t\t\tif (value) {\r\n\t\t\t\tthis.handleDown();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.handleUp();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Is down?\r\n\t */\r\n\tpublic get isDown(): boolean {\r\n\t\tif (this.isInteractive()) {\r\n\t\t\treturn this.interactions.isDown;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if this element is focused (possibly by tab navigation).\r\n\t *\r\n\t * @param value Is focused?\r\n\t */\r\n\tpublic set isFocused(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (this.focusable && this.isFocused != value) {\r\n\t\t\tif (this.isInteractive()) {\r\n\t\t\t\tthis.interactions.isFocused = value;\r\n\t\t\t\tif (value === true) {\r\n\t\t\t\t\tthis.handleFocus();\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.handleBlur();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Is focused?\r\n\t */\r\n\tpublic get isFocused(): boolean {\r\n\t\tif (this.isInteractive()) {\r\n\t\t\treturn this.interactions.isFocused;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if this element is currently active (toggled on) or not\r\n\t * (toggled off).\r\n\t *\r\n\t * @param value Is active?\r\n\t */\r\n\tpublic set isActive(value: boolean) {\r\n\t\tthis.setActive(value);\r\n\t}\r\n\r\n\r\n\tprotected setActive(value: boolean) {\r\n\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (this._isActive !== value) {\r\n\t\t\tthis._isActive = value;\r\n\t\t\tif (value && this.states.hasKey(\"active\")) {\r\n\t\t\t\tthis.setState(\"active\");\r\n\t\t\t\tif (this.isHover && this.states.hasKey(\"hoverActive\")) {\r\n\t\t\t\t\tthis.setState(\"hoverActive\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.applyCurrentState();\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchImmediately(\"toggled\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Is active?\r\n\t */\r\n\tpublic get isActive(): boolean {\r\n\t\treturn this._isActive;\r\n\t}\r\n\r\n\t/**\r\n\t * Controls if element is disabled.\r\n\t *\r\n\t * A disabled element is hidden, and is removed from any processing, layout\r\n\t * calculations, and generally treated as if it does not exist.\r\n\t *\r\n\t * The element itself is not destroyed, though. Setting this back to `false`,\r\n\t * will \"resurrect\" the element.\r\n\t *\r\n\t * @param value Disabled?\r\n\t */\r\n\tpublic set disabled(value: boolean) {\r\n\t\tthis.setDisabled(value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Disabled?\r\n\t */\r\n\tpublic get disabled(): boolean {\r\n\t\t//if(this._internalDisabled){\r\n\t\t//\treturn true;\r\n\t\t//}\r\n\t\tlet current = this.getPropertyValue(\"disabled\");\r\n\t\tif ($type.hasValue(current)) {\r\n\t\t\treturn current;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.virtualParent) {\r\n\t\t\t\treturn this.virtualParent.disabled;\r\n\t\t\t}\r\n\t\t\tif (this.parent) {\r\n\t\t\t\treturn this.parent.disabled;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\r\n\tprotected setDisabled(value: boolean): boolean {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tlet current = this.getPropertyValue(\"disabled\");\r\n\t\tif (current != value) {\r\n\t\t\tthis.setPropertyValue(\"disabled\", value, true);\r\n\t\t\tif (value) {\r\n\t\t\t\tthis.parent = this.parent;\r\n\t\t\t\tthis.removeFromInvalids();\r\n\t\t\t\tthis.group.attr({ \"display\": \"none\" });\r\n\t\t\t\tthis.dispatch(\"disabled\");\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (this.parent) {\r\n\t\t\t\t\tlet group = <Group>this.parent.element;\r\n\t\t\t\t\tif (!group.hasChild(this.group)) {\r\n\t\t\t\t\t\tgroup.add(this.group);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this instanceof Container) {\r\n\t\t\t\t\tthis.deepInvalidate();\r\n\t\t\t\t\tif (this._background) {\r\n\t\t\t\t\t\tthis._background.invalidate();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.invalidate();\r\n\t\t\t\t}\r\n\t\t\t\tif (!this.__disabled) {\r\n\t\t\t\t\tthis.removeSVGAttribute(\"display\");\r\n\t\t\t\t}\r\n\t\t\t\tthis.dispatch(\"enabled\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatch(\"transformed\");\r\n\t\t\tsystem.requestFrame();\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Internal disable method.\r\n\t *\r\n\t * Do not use it for disabling elements. Use `disabled` accessor instead.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Disabled?\r\n\t */\r\n\tpublic set __disabled(value: boolean) {\r\n\t\tif (this._internalDisabled != value) {\r\n\t\t\tthis._internalDisabled = value;\r\n\t\t\tthis._updateDisabled = true;\r\n\t\t\tthis.invalidatePosition(); // better use this instead of invalidate()\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t * @return Disabled?\r\n\t */\r\n\tpublic get __disabled(): boolean {\r\n\t\treturn this._internalDisabled;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * FORMATTERS AND OTHER EXTERNAL HELPERS\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * A [[NumberFormatter]] instance.\r\n\t *\r\n\t * This is used to format numbers.\r\n\t *\r\n\t * ```TypeScript\r\n\t * chart.numberFormatter.numberFormat = \"#,###.#####\";\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * chart.numberFormatter.numberFormat = \"#,###.#####\";\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"numberFormatter\": {\r\n\t * \"numberFormat\": \"#,###.#####\"\r\n\t * }\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * You can set a separate instance of formatter for each\r\n\t * individual element. However that would be unnecessary overhead as\r\n\t * all elements would automatically inherit formatter from their parents,\r\n\t * all the way up to the chart itself.\r\n\t *\r\n\t *\r\n\t * @see {@link NumberFormatter} for more info on formatting numbers\r\n\t * @param value An instance of NumberFormatter\r\n\t */\r\n\tpublic set numberFormatter(value: NumberFormatter) {\r\n\t\tthis._numberFormatter = value;\r\n\t\tthis._numberFormatter.language = this.language;\r\n\t}\r\n\r\n\t/**\r\n\t * @return A [[NumberFormatter]] instance to be used\r\n\t */\r\n\tpublic get numberFormatter(): NumberFormatter {\r\n\t\tif (this._numberFormatter) {\r\n\t\t\treturn this._numberFormatter;\r\n\t\t}\r\n\t\telse if (this.virtualParent) {\r\n\t\t\treturn this.virtualParent.numberFormatter;\r\n\t\t}\r\n\t\telse if (this.parent) {\r\n\t\t\treturn this.parent.numberFormatter;\r\n\t\t}\r\n\t\tthis._numberFormatter = new NumberFormatter();\r\n\t\tthis._numberFormatter.language = this.language;\r\n\t\treturn this.numberFormatter;\r\n\t}\r\n\r\n\t/**\r\n\t * A [[DateFormatter]] instance.\r\n\t *\r\n\t * This is used to format dates, e.g. on a date axes, balloons, etc.\r\n\t *\r\n\t * ```TypeScript\r\n\t * chart.dateFormatter.dateFormat = \"yyyy-MM-dd\";\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * chart.dateFormatter.dateFormat = \"yyyy-MM-dd\";\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"dateFormatter\": {\r\n\t * \"dateFormat\": \"yyyy-MM-dd\"\r\n\t * }\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * You can set a separate instance of formatter for each\r\n\t * individual element. However that would be unnecessary overhead as\r\n\t * all elements would automatically inherit formatter from their parents,\r\n\t * all the way up to the chart itself.\r\n\t *\r\n\t * @see {@link DateFormatter} for more info on dates formatting\r\n\t * @param value An instance of DateFormatter\r\n\t */\r\n\tpublic set dateFormatter(value: DateFormatter) {\r\n\t\tthis._dateFormatter = value;\r\n\t\tthis._dateFormatter.language = this.language;\r\n\t}\r\n\r\n\t/**\r\n\t * @return An instance of DateFormatter\r\n\t */\r\n\tpublic get dateFormatter(): DateFormatter {\r\n\t\tif (this._dateFormatter) {\r\n\t\t\treturn this._dateFormatter;\r\n\t\t}\r\n\t\telse if (this.virtualParent) {\r\n\t\t\treturn this.virtualParent.dateFormatter;\r\n\t\t}\r\n\t\telse if (this.parent) {\r\n\t\t\treturn this.parent.dateFormatter;\r\n\t\t}\r\n\t\tthis._dateFormatter = new DateFormatter();\r\n\t\tthis._dateFormatter.language = this.language;\r\n\t\treturn this.dateFormatter;\r\n\t}\r\n\r\n\t/**\r\n\t * A [[DurationFormatter]] instance.\r\n\t *\r\n\t * This is used to format numbers as durations, e.g. on a value axes.\r\n\t *\r\n\t * You can set a separate instance of formatter for each\r\n\t * individual element. However that would be unnecessary overhead as\r\n\t * all elements would automatically inherit formatter from their parents,\r\n\t * all the way up to the chart itself.\r\n\t *\r\n\t * @see {@link DurationFormatter} for more info on durations\r\n\t * @param value An instance of DurationFormatter\r\n\t */\r\n\tpublic set durationFormatter(value: DurationFormatter) {\r\n\t\tthis._durationFormatter = value;\r\n\t\tthis._durationFormatter.language = this.language;\r\n\t}\r\n\r\n\t/**\r\n\t * @return An instance of DurationFormatter\r\n\t */\r\n\tpublic get durationFormatter(): DurationFormatter {\r\n\t\tif (this._durationFormatter) {\r\n\t\t\treturn this._durationFormatter;\r\n\t\t}\r\n\t\telse if (this.virtualParent) {\r\n\t\t\treturn this.virtualParent.durationFormatter;\r\n\t\t}\r\n\t\telse if (this.parent) {\r\n\t\t\treturn this.parent.durationFormatter;\r\n\t\t}\r\n\t\tthis._durationFormatter = new DurationFormatter();\r\n\t\tthis._durationFormatter.language = this.language;\r\n\t\treturn this.durationFormatter;\r\n\t}\r\n\r\n\t/**\r\n\t * A [[Language]] instance to use for translations.\r\n\t *\r\n\t * Normally it is enough to set language for the top-most element - chart.\r\n\t *\r\n\t * All other element child elements will automatically re-use that language\r\n\t * object.\r\n\t *\r\n\t * @param value An instance of Language\r\n\t */\r\n\tpublic set language(value: Language) {\r\n\t\tif (this._language.get() !== value) {\r\n\t\t\tthis._language.set(value, value.events.on(\"localechanged\", (ev) => {\r\n\t\t\t\tif (this._numberFormatter) {\r\n\t\t\t\t\tthis._numberFormatter.language = this.language;\r\n\t\t\t\t}\r\n\t\t\t\tif (this._dateFormatter) {\r\n\t\t\t\t\tthis._dateFormatter.language = this.language;\r\n\t\t\t\t}\r\n\t\t\t\tif (this._durationFormatter) {\r\n\t\t\t\t\tthis._durationFormatter.language = this.language;\r\n\t\t\t\t}\r\n\t\t\t\tif (this._exporting.get()) {\r\n\t\t\t\t\tconst exporting = this._exporting.get();\r\n\t\t\t\t\texporting.numberFormatter.language = this.language;\r\n\t\t\t\t\texporting.dateFormatter.language = this.language;\r\n\t\t\t\t\texporting.durationFormatter.language = this.language;\r\n\t\t\t\t\texporting.language = this.language;\r\n\t\t\t\t}\r\n\t\t\t\tif (this instanceof Container) {\r\n\t\t\t\t\tthis.deepInvalidate();\r\n\t\t\t\t}\r\n\t\t\t}));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return An instance of Language\r\n\t */\r\n\tpublic get language(): Language {\r\n\t\tlet language = this._language.get();\r\n\t\tif (language) {\r\n\t\t\treturn language;\r\n\t\t}\r\n\t\telse if (this.virtualParent) {\r\n\t\t\treturn this.virtualParent.language;\r\n\t\t}\r\n\t\telse if (this.parent) {\r\n\t\t\treturn this.parent.language;\r\n\t\t}\r\n\t\tlanguage = new Language();\r\n\t\tthis.language = language;\r\n\t\treturn language;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * DATA-RELATED STUFF\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Parses the string for meta tags `{tag}` and replaces them with a real\r\n\t * value. Supports straight up tags referring to the field in data, i.e.\r\n\t * `{value}` or tags with additional formatting info. E.g.:\r\n\t *\r\n\t * ```Text\r\n\t * {myfield.formatDate(\"yyyy-MM-dd\")}\r\n\t * {myfield.formatDate()}\r\n\t * {myfield.formatNumber(\"#,####.00\")}\r\n\t * {myfield.formatNumber()}\r\n\t * {myField.formatDuration(\"mm:ss\")}\r\n\t * ```\r\n\t *\r\n\t * Etc.\r\n\t *\r\n\t * This method Will automatically detect and use proper formatter for the\r\n\t * value.\r\n\t *\r\n\t * The source value will be looked up in various places: (in order)\r\n\t * * Sprite's own `dataItem`\r\n\t * * Sprite's properties\r\n\t * * Parent's `dataItem`\r\n\t * * Parent's properties\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param string A string to format\r\n\t * @param dataItem DataItem\r\n\t * @return Formatted string\r\n\t */\r\n\r\n\tpublic populateString(string: string, dataItem?: DataItem): string {\r\n\t\tif ($type.hasValue(string)) {\r\n\t\t\tstring = $type.castString(string);\r\n\t\t\tstring = getTextFormatter().escape(string);\r\n\t\t\tlet tags = string.match(/\\{([^}]+)\\}/g);\r\n\t\t\tlet i;\r\n\t\t\tif (tags) {\r\n\t\t\t\tfor (i = 0; i < tags.length; i++) {\r\n\t\t\t\t\tlet tag = tags[i].replace(/\\{([^}]+)\\}/, \"$1\");\r\n\t\t\t\t\tlet value = this.getTagValue(tag, \"\", dataItem);\r\n\r\n\t\t\t\t\tif (!$type.hasValue(value)) {\r\n\t\t\t\t\t\tvalue = \"\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tstring = string.split(tags[i]).join(value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tstring = getTextFormatter().unescape(string);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tstring = \"\";\r\n\t\t}\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn string;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"populateString\", string);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the value from data item and formats it according to specified format.\r\n\t *\r\n\t * If `format` is specified, it will use its contents to choose formatter for\r\n\t * the value. Otherwise it will select formatter accordingly to actual value\r\n\t * type.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Ability to force certain formatter on known numeric and date values\r\n\t * @see {@link NumberFormatter}\r\n\t * @see {@link DateFormatter}\r\n\t * @see {@link DurationFormatter}\r\n\t * @param tagName Tag name to replace\r\n\t * @param format Format to use\r\n\t * @param dataItem DataItem\r\n\t * @return Formatted value\r\n\t */\r\n\tpublic getTagValue(tagName: string, format?: string, dataItem?: DataItem): string {\r\n\t\tlet value: any;\r\n\t\tif (!$type.hasValue(dataItem)) {\r\n\t\t\tdataItem = this.dataItem;\r\n\t\t}\r\n\r\n\t\t// Parse parts\r\n\t\tlet parts: any[] = [];\r\n\t\tlet reg = /([^.]+)\\(([^)]*)\\)|([^.]+)/g;;\r\n\t\tlet matches;\r\n\r\n\t\twhile (true) {\r\n\t\t\tmatches = reg.exec(tagName);\r\n\r\n\t\t\tif (matches === null) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (matches[3]) {\r\n\t\t\t\t// Simple property\r\n\t\t\t\tparts.push({\r\n\t\t\t\t\tprop: matches[3]\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Method\r\n\t\t\t\t// Parse parameters\r\n\t\t\t\tlet params: any[] = [];\r\n\t\t\t\tif ($utils.trim(matches[2]) != \"\") {\r\n\t\t\t\t\tlet reg2 = /'([^']*)'|\"([^\"]*)\"|([0-9\\-]+)/g;\r\n\t\t\t\t\tlet matches2;\r\n\r\n\t\t\t\t\twhile (true) {\r\n\t\t\t\t\t\tmatches2 = reg2.exec(matches[2]);\r\n\r\n\t\t\t\t\t\tif (matches2 === null) {\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tparams.push(matches2[1] || matches2[2] || matches2[3])\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tparts.push({\r\n\t\t\t\t\tmethod: matches[1],\r\n\t\t\t\t\tparams: params\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t// Check if we can retrieve the value from data item\r\n\t\tif (dataItem) {\r\n\r\n\r\n\t\t\t// Check values\r\n\t\t\tvalue = this.getTagValueFromObject(parts, dataItem.values);\r\n\r\n\t\t\t// Check properties\r\n\t\t\tif (!$type.hasValue(value) || $type.isObject(value)) { // isObject helps to solve problem with date axis, as for example dateX will get dateX from values object and wont't get to the dateX date.\r\n\t\t\t\tvalue = this.getTagValueFromObject(parts, dataItem);\r\n\t\t\t}\r\n\r\n\t\t\t// Check data context\r\n\t\t\tlet dataContext: any = dataItem.dataContext;\r\n\t\t\tif (!$type.hasValue(value) && dataContext) {\r\n\t\t\t\tvalue = this.getTagValueFromObject(parts, dataItem.dataContext);\r\n\r\n\t\t\t\t// scond data context level sometimes exist (tree map)\r\n\t\t\t\tif (!$type.hasValue(value) && dataContext.dataContext) {\r\n\t\t\t\t\tvalue = this.getTagValueFromObject(parts, dataContext.dataContext);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Check component's data item\r\n\t\t\tif (!$type.hasValue(value) && dataItem.component && dataItem.component.dataItem !== dataItem) {\r\n\t\t\t\tvalue = dataItem.component.getTagValue(tagName, format);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Check sprite's properties\r\n\t\tif (!$type.hasValue(value)) {\r\n\t\t\tvalue = this.getTagValueFromObject(parts, this.populateStringFrom || <any>this);\r\n\t\t}\r\n\r\n\t\t// Finally, check the parent\r\n\t\tif (!$type.hasValue(value) && this.parent) {\r\n\t\t\tvalue = this.parent.getTagValue(tagName, format);\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Tries to retrieve values from properties of any object, then applies\r\n\t * proper formatting to it.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (improve)\r\n\t * @param parts Properties ant methods to access\r\n\t * @param object Source object\r\n\t * @param format A specific format to apply\r\n\t * @return Formatted value\r\n\t */\r\n\tpublic getTagValueFromObject(parts: any[], object: any, format?: string): any {\r\n\t\tlet current: any = object;\r\n\t\tlet formatApplied = false;\r\n\t\tfor (let i = 0, len = parts.length; i < len; i++) {\r\n\t\t\tlet part = parts[i];\r\n\t\t\tif (part.prop) {\r\n\t\t\t\t// Regular property\r\n\t\t\t\tcurrent = current[part.prop];\r\n\t\t\t\tif (!$type.hasValue(current)) {\r\n\t\t\t\t\t// Not set, return undefined\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Method\r\n\r\n\t\t\t\tswitch (part.method) {\r\n\t\t\t\t\tcase \"formatNumber\":\r\n\t\t\t\t\t\tlet numberValue = $utils.anyToNumber(current);\r\n\t\t\t\t\t\tif ($type.hasValue(numberValue)) {\r\n\t\t\t\t\t\t\tcurrent = this.numberFormatter.format(\r\n\t\t\t\t\t\t\t\tnumberValue,\r\n\t\t\t\t\t\t\t\tformat || part.params[0] || undefined\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tformatApplied = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"formatDate\":\r\n\t\t\t\t\t\tlet dateValue;\r\n\t\t\t\t\t\tif ($type.isString(current)) {\r\n\t\t\t\t\t\t\tdateValue = this.dateFormatter.parse(current);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tdateValue = $utils.anyToDate(current);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (!$type.isDate(dateValue) || $type.isNaN(dateValue.getTime())) {\r\n\t\t\t\t\t\t\t// Was not able to get date out of value, quitting and letting\r\n\t\t\t\t\t\t\t// calling method try another value\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ($type.hasValue(dateValue)) {\r\n\t\t\t\t\t\t\tcurrent = this.dateFormatter.format(\r\n\t\t\t\t\t\t\t\tdateValue,\r\n\t\t\t\t\t\t\t\tformat || part.params[0] || undefined\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tformatApplied = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"formatDuration\":\r\n\t\t\t\t\t\tlet durationValue = $utils.anyToNumber(current);\r\n\t\t\t\t\t\tif ($type.hasValue(durationValue)) {\r\n\t\t\t\t\t\t\tcurrent = this.durationFormatter.format(\r\n\t\t\t\t\t\t\t\tdurationValue,\r\n\t\t\t\t\t\t\t\tformat || part.params[0] || undefined,\r\n\t\t\t\t\t\t\t\tpart.params[1] || undefined\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tformatApplied = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"urlEncode\":\r\n\t\t\t\t\tcase \"encodeURIComponent\":\r\n\t\t\t\t\t\tcurrent = encodeURIComponent(current);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif (current[part.method]) {\r\n\t\t\t\t\t\t\tcurrent[part.method].apply(this, part.params);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Apply default format if it wasn't applied explicitly\r\n\t\tif (!formatApplied) {\r\n\r\n\t\t\tlet formatParts = [{\r\n\t\t\t\tmethod: \"\",\r\n\t\t\t\tparams: format\r\n\t\t\t}];\r\n\r\n\t\t\tif (!$type.hasValue(format)) {\r\n\r\n\t\t\t\t// Format is not set\r\n\t\t\t\t// Determine from the type of the value\r\n\t\t\t\tif ($type.isNumber(current)) {\r\n\t\t\t\t\tformatParts[0].method = \"formatNumber\";\r\n\t\t\t\t\tformatParts[0].params = \"\";\r\n\t\t\t\t}\r\n\t\t\t\telse if ($type.isDate(current)) {\r\n\t\t\t\t\tformatParts[0].method = \"formatDate\";\r\n\t\t\t\t\tformatParts[0].params = \"\";\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\telse {\r\n\r\n\t\t\t\t// Format set\r\n\t\t\t\t// Try to determine formatter based on the format\r\n\t\t\t\tlet formatterType: string = $utils.getFormat(format);\r\n\r\n\t\t\t\t// format\r\n\t\t\t\tif (formatterType === $strings.NUMBER) {\r\n\t\t\t\t\tformatParts[0].method = \"formatNumber\";\r\n\t\t\t\t}\r\n\t\t\t\telse if (formatterType === $strings.DATE) {\r\n\t\t\t\t\tformatParts[0].method = \"formatDate\";\r\n\t\t\t\t}\r\n\t\t\t\telse if (formatterType === $strings.DURATION) {\r\n\t\t\t\t\tformatParts[0].method = \"formatDuration\";\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Apply format\r\n\t\t\tif (formatParts[0].method) {\r\n\t\t\t\tcurrent = this.getTagValueFromObject(formatParts, current);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn current;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * A [[DataItem]] to use as element's data source.\r\n\t *\r\n\t * @todo Review type\r\n\t * @param dataItem DataItem\r\n\t */\r\n\tpublic set dataItem(dataItem: this[\"_dataItem\"]) {\r\n\t\t//an not use this[\"_dataItem\"] here, as we return parent data item if this sprite doesn't have one.\r\n\t\t// @todo:think about it\r\n\t\tthis.setDataItem(dataItem);\r\n\t}\r\n\r\n\t/**\r\n\t * @return [[DataItem]]\r\n\t */\r\n\tpublic get dataItem(): this[\"_dataItem\"] {\r\n\t\tif (!this._dataItem) {\r\n\t\t\tif (this.virtualParent) {\r\n\t\t\t\treturn this.virtualParent.dataItem;\r\n\t\t\t}\r\n\t\t\tif (this.parent) {\r\n\t\t\t\treturn this.parent.dataItem;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this._dataItem;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets currently used [[DataItem]].\r\n\t *\r\n\t * If the element has also `configField` set, it will also look for any\r\n\t * config in DataItem's data context to apply to this element.\r\n\t *\r\n\t * @param dataItem DataItem\r\n\t */\r\n\tprotected setDataItem(dataItem: DataItem) {\r\n\t\tif (this._dataItem != dataItem) {\r\n\t\t\tthis._dataItem = dataItem;\r\n\t\t\tif (dataItem) {\r\n\t\t\t\tif (this.configField) {\r\n\t\t\t\t\tlet dataContext: any = dataItem.dataContext;\r\n\t\t\t\t\tif (dataContext) {\r\n\t\t\t\t\t\tthis.config = dataContext[this.configField];\r\n\t\t\t\t\t\tif (!this.config && dataContext.dataContext) {\r\n\t\t\t\t\t\t\tthis.config = dataContext.dataContext[this.configField];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet dataContext = <any>dataItem.dataContext;\r\n\r\n\t\t\t\tif (dataContext) {\r\n\r\n\t\t\t\t\tlet dataContext2 = dataContext.dataContext;\r\n\r\n\t\t\t\t\t$object.each(this.propertyFields, (propertyName, fieldValue) => {\r\n\t\t\t\t\t\tif ($type.hasValue(dataContext[fieldValue])) {\r\n\t\t\t\t\t\t\tlet anyThis = <any>this;\r\n\t\t\t\t\t\t\tanyThis[propertyName] = dataContext[fieldValue];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (dataContext2) {\r\n\t\t\t\t\t\t\t\tlet value = dataContext2[fieldValue];\r\n\t\t\t\t\t\t\t\tif ($type.hasValue(value)) {\r\n\t\t\t\t\t\t\t\t\tlet anyThis = <any>this;\r\n\t\t\t\t\t\t\t\t\tanyThis[propertyName] = value;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * PROPERTY UTILITIES\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Returns element's property value.\r\n\t *\r\n\t * Will check if there are any bindings with [[DataItem]].\r\n\t *\r\n\t * Will also apply any adapters bound to `propertyName`.\r\n\t *\r\n\t * @param propertyName Property name\r\n\t * @return Property value\r\n\t */\r\n\tpublic getPropertyValue<Key extends keyof this[\"_properties\"]>(propertyName: Key): this[\"_properties\"][Key] {\r\n\t\tlet propValue: this[\"_properties\"][Key] = this.properties[propertyName];\r\n\r\n\t\t// Apply adapter\r\n\t\tif (!this._isTemplate) {\r\n\t\t\tif (this._adapterO) {\r\n\t\t\t\tpropValue = this._adapterO.apply(propertyName, <any>propValue);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn propValue;\r\n\t}\r\n\r\n\r\n\tprotected setColorProperty<Key extends keyof this[\"properties\"]>(property: Key, value: $type.Optional<Color | Pattern | LinearGradient | RadialGradient>, invalidate?: boolean): boolean {\r\n\t\tlet currentValue = this.properties[property];\r\n\t\tif (value instanceof Color && currentValue instanceof Color && value.toString() == currentValue.toString()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.setPropertyValue(property, value, invalidate);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tprotected setPercentProperty<Key extends keyof this[\"properties\"]>(property: Key, value: Percent | number, invalidate?: boolean, transform?: boolean, precision?: number, floor?: boolean): boolean {\r\n\t\tvalue = $type.toNumberOrPercent(value);\r\n\r\n\t\tif ($type.isNumber(value)) {\r\n\r\n\t\t\tvalue = $math.round(value, precision, floor);\r\n\r\n\t\t\treturn this.setPropertyValue(property, value, invalidate, transform);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet currentValue = this.properties[property];\r\n\r\n\t\t\tif (value instanceof Percent && currentValue instanceof Percent && value.value == currentValue.value) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn this.setPropertyValue(property, value, invalidate, transform);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Sets elements's property value. Will also propagate the same property value\r\n\t * on all element's clones.\r\n\t *\r\n\t * @param property Property\r\n\t * @param value Value\r\n\t * @param invalidate Should the sprite be invalidated, cause it's re-rendering\r\n\t * @param transform Re-apply positioning of the element\r\n\t * @return Did the value change? It will return `true` if the new value and the old value of the property are not the same\r\n\t * @todo Review propagation to clones. Right now we simply check if clone is disposed before setting the same property on it. It's better to remove from clone list altogether.\r\n\t */\r\n\tpublic setPropertyValue<Key extends keyof this[\"properties\"]>(property: Key, value: any, invalidate?: boolean, transform?: boolean): boolean {\r\n\t\tif (this.properties[property] !== value && !this.isDisposed()) {\r\n\t\t\tthis.properties[property] = value;\r\n\r\n\t\t\tif (this.events.isEnabled(\"propertychanged\")) {\r\n\r\n\t\t\t\tconst event: AMEvent<this, ISpriteEvents>[\"propertychanged\"] = {\r\n\t\t\t\t\ttype: \"propertychanged\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tproperty: <string>property\r\n\t\t\t\t};\r\n\t\t\t\tthis.events.dispatchImmediately(\"propertychanged\", event);\r\n\t\t\t}\r\n\r\n\t\t\tif (invalidate) {\r\n\t\t\t\tthis.invalidate();\r\n\t\t\t}\r\n\r\n\t\t\tif (transform) {\r\n\t\t\t\tthis.invalidatePosition();\r\n\t\t\t}\r\n\r\n\t\t\tif (this.applyOnClones) {\r\n\t\t\t\tconst clones = this.clones.values;\r\n\t\t\t\tconst length = clones.length;\r\n\r\n\t\t\t\tfor (let i = 0; i < length; ++i) {\r\n\t\t\t\t\tconst clone = clones[i];\r\n\r\n\t\t\t\t\tif (!clone.isDisposed()) {\r\n\t\t\t\t\t\t//(<Sprite>clone).setPropertyValue(<any>property, value, invalidate, transform);\r\n\t\t\t\t\t\t(<any>clone)[property] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @todo Verify this\r\n\t */\r\n\tpublic bind<\r\n\t\tS extends { cloneId: string, events: EventDispatcher<{ propertychanged: { property: string } }> },\r\n\t\tFrom extends (keyof S & keyof this),\r\n\t\tTo extends keyof this\r\n\t>(\r\n\t\tproperty: To,\r\n\t\tsource: S,\r\n\t\tbindToProperty: From,\r\n\t\tmodifier?: (value: this[From]) => this[To]\r\n\t): void;\r\n\tpublic bind<\r\n\t\tS extends { cloneId: string, events: EventDispatcher<{ propertychanged: { property: string } }> },\r\n\t\tKey extends (keyof S & keyof this)\r\n\t>(\r\n\t\tproperty: Key,\r\n\t\tsource: S,\r\n\t\tmodifier?: (value: this[Key]) => this[Key]\r\n\t): void;\r\n\tpublic bind<\r\n\t\tS extends this & { cloneId: string, events: EventDispatcher<{ propertychanged: { property: string } }> },\r\n\t\tKey extends (keyof S & keyof this)\r\n\t>(\r\n\t\tproperty: Key,\r\n\t\tsource: S,\r\n\t\tbindToProperty: Key = property,\r\n\t\tmodifier?: (value: this[Key]) => this[Key]\r\n\t): void {\r\n\t\tif ($type.hasValue(this._bindings[<string>property])) {\r\n\t\t\tthis._bindings[<string>property].dispose();\r\n\t\t}\r\n\r\n\t\t// set current value\r\n\t\tthis[property] = source[bindToProperty];\r\n\r\n\t\t//source.addEventListener(AMEvent.PROPERTY_CHANGED, this.handleBindings, false, this);\r\n\t\tthis._bindings[<string>property] = source.events.on(\"propertychanged\", (event) => {\r\n\t\t\tif (event.property === bindToProperty) {\r\n\t\t\t\tlet value: this[Key] = source[bindToProperty];\r\n\r\n\t\t\t\tif (modifier) {\r\n\t\t\t\t\tvalue = modifier(value);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// TODO clonesById\r\n\t\t\t\tthis[property] = value;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up and obeserver function to monitor changes in particular property\r\n\t * or properties.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param property Element's property name\r\n\t * @param listener Handler function\r\n\t * @param context Context for handler function\r\n\t * @returns Event Disposer\r\n\t */\r\n\tpublic observe<C>(property: string | string[], listener: (this: C, event: AMEvent<this, ISpriteEvents>[\"propertychanged\"]) => void, context?: C, shouldClone?: boolean): IDisposer {\r\n\t\treturn new MultiDisposer($array.map($array.toArray(property), (prop) => {\r\n\t\t\treturn this.events.on(\"propertychanged\", (e) => {\r\n\t\t\t\tif (e.property === prop) {\r\n\t\t\t\t\tlistener.call(context, e);\r\n\t\t\t\t}\r\n\t\t\t}, context, shouldClone);\r\n\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * ACCESSIBILITY-RELATED PROPERTIES\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Applies accessibility to the SVG element.\r\n\t *\r\n\t * Adds `<title>` and `<description>` elements as well as `aria-labelledby`\r\n\t * and `role` properties.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected applyAccessibility(): void {\r\n\r\n\t\t// Check if we need to add label and description\r\n\t\tlet title = this.readerTitle,\r\n\t\t\tdescription = this.readerDescription,\r\n\t\t\trole = this.role,\r\n\t\t\thidden = this.readerHidden,\r\n\t\t\tchecked = this.readerChecked,\r\n\t\t\tcontrols = this.readerControls,\r\n\t\t\tlive = this.readerLive,\r\n\t\t\torientation = this.readerOrientation,\r\n\t\t\tvalueNow = this.readerValueNow,\r\n\t\t\tvalueText = this.readerValueText;\r\n\r\n\t\t// Init label/describe ids\r\n\t\tlet labelledByIds: string[] = [],\r\n\t\t\tdescribedByIds: string[] = [];\r\n\r\n\t\tlet labelledBy: string = this.readerLabelledBy;\r\n\t\tif (labelledBy) {\r\n\t\t\tlabelledByIds.push(labelledBy);\r\n\t\t}\r\n\r\n\t\tlet describedBy: string = this.readerDescribedBy;\r\n\t\tif (describedBy) {\r\n\t\t\tdescribedByIds.push(describedBy);\r\n\t\t}\r\n\r\n\t\t// Consolidate title and description if system tooltip is disabled\r\n\t\tif (!this.showSystemTooltip && title) {\r\n\t\t\tif (description) {\r\n\t\t\t\tdescription = title + \" -- \" + description;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tdescription = title;\r\n\t\t\t}\r\n\t\t\ttitle = undefined;\r\n\t\t}\r\n\r\n\t\t// If we have only label, we use `aria-label` attribute.\r\n\t\t// If there are both label and description, we'll go with separate tags and\r\n\t\t// use `aria-labelledby`\r\n\t\tif (title && !description && !this.showSystemTooltip) {\r\n\r\n\r\n\t\t\t// Only label is set, use attribute\r\n\t\t\tthis.setSVGAttribute({\r\n\t\t\t\t\"aria-label\": title\r\n\t\t\t});\r\n\r\n\t\t\t// Remove previous elements\r\n\t\t\tthis.removeSVGAttribute(\"aria-description\");\r\n\t\t\tif (this._titleElement) {\r\n\t\t\t\tthis.group.removeElement(this._titleElement);\r\n\t\t\t\tthis._titleElement = undefined;\r\n\t\t\t}\r\n\t\t\tif (this._descriptionElement) {\r\n\t\t\t\tthis.group.removeElement(this._descriptionElement);\r\n\t\t\t\tthis._descriptionElement = undefined;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\telse {\r\n\r\n\t\t\tif (title) {\r\n\t\t\t\tlet titleElement = this.titleElement;\r\n\t\t\t\tlet titleId = this.uid + \"-title\";\r\n\t\t\t\tif (titleElement.node.textContent != title) {\r\n\t\t\t\t\ttitleElement.node.textContent = title;\r\n\t\t\t\t\ttitleElement.attr({ id: titleId });\r\n\t\t\t\t}\r\n\t\t\t\tlabelledByIds.push(titleId);\r\n\t\t\t}\r\n\t\t\telse if (this._titleElement) {\r\n\t\t\t\tthis.group.removeElement(this._titleElement);\r\n\t\t\t\tthis._titleElement = undefined;\r\n\t\t\t}\r\n\r\n\t\t\tlet descriptionId = this.uid + \"-description\";\r\n\t\t\tif (description) {\r\n\t\t\t\tlet descriptionElement = this.descriptionElement;\r\n\r\n\t\t\t\tif (descriptionElement.node.textContent != description) {\r\n\t\t\t\t\tdescriptionElement.node.textContent = description;\r\n\t\t\t\t\tdescriptionElement.attr({ id: descriptionId });\r\n\t\t\t\t}\r\n\t\t\t\tdescribedByIds.push(descriptionId);\r\n\t\t\t}\r\n\t\t\telse if (this._descriptionElement) {\r\n\t\t\t\tthis.group.removeElement(this._descriptionElement);\r\n\t\t\t\tthis._descriptionElement = undefined;\r\n\t\t\t\t$array.remove(describedByIds, descriptionId);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// Add label and described properties\r\n\t\tif (labelledByIds.length) {\r\n\t\t\tthis.setSVGAttribute({ \"aria-labelledby\": labelledByIds.join(\" \") });\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.removeSVGAttribute(\"aria-labelledby\");\r\n\t\t}\r\n\r\n\t\tif (describedByIds.length) {\r\n\t\t\tthis.setSVGAttribute({ \"aria-describedby\": describedByIds.join(\" \") });\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.removeSVGAttribute(\"aria-describedby\");\r\n\t\t}\r\n\r\n\t\t// Apply role\r\n\t\tif (role) {\r\n\t\t\tthis.setSVGAttribute({ \"role\": role });\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.removeSVGAttribute(\"role\");\r\n\t\t}\r\n\r\n\t\t// Apply aria-hidden\r\n\t\tif (hidden) {\r\n\t\t\tthis.setSVGAttribute({ \"aria-hidden\": \"true\" });\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.removeSVGAttribute(\"aria-hidden\");\r\n\t\t}\r\n\r\n\t\t// Apply aria-checked\r\n\t\tif (checked) {\r\n\t\t\tthis.setSVGAttribute({ \"aria-checked\": \"true\" });\r\n\t\t}\r\n\t\telse if (checked === false) {\r\n\t\t\tthis.setSVGAttribute({ \"aria-checked\": \"false\" });\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.removeSVGAttribute(\"aria-checked\");\r\n\t\t}\r\n\r\n\t\t// Apply aria-controls\r\n\t\tif (controls) {\r\n\t\t\tthis.setSVGAttribute({ \"aria-controls\": controls });\r\n\t\t} else {\r\n\t\t\tthis.removeSVGAttribute(\"aria-controls\");\r\n\t\t}\r\n\r\n\t\t// Apply aria-live\r\n\t\tif (live) {\r\n\t\t\tthis.setSVGAttribute({ \"aria-live\": live });\r\n\t\t} else {\r\n\t\t\tthis.removeSVGAttribute(\"aria-live\");\r\n\t\t}\r\n\r\n\t\t// Apply aria-orientation\r\n\t\tif (orientation) {\r\n\t\t\tthis.setSVGAttribute({ \"aria-orientation\": orientation });\r\n\t\t} else {\r\n\t\t\tthis.removeSVGAttribute(\"aria-orientation\");\r\n\t\t}\r\n\r\n\t\t// Apply aria-valuenow\r\n\t\tif (valueNow) {\r\n\t\t\tthis.setSVGAttribute({ \"aria-valuenow\": valueNow });\r\n\t\t} else {\r\n\t\t\tthis.removeSVGAttribute(\"aria-valuenow\");\r\n\t\t}\r\n\r\n\t\t// Apply aria-valuetext\r\n\t\tif (valueText) {\r\n\t\t\tthis.setSVGAttribute({ \"aria-valuetext\": valueText });\r\n\t\t} else {\r\n\t\t\tthis.removeSVGAttribute(\"aria-valuetext\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Screen reader title of the element.\r\n\t *\r\n\t * @param value Title\r\n\t */\r\n\tpublic set readerTitle(value: string) {\r\n\t\tvalue = $type.toText(value);\r\n\t\tif (this.setPropertyValue(\"readerTitle\", value)) {\r\n\t\t\tthis.applyAccessibility();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Title\r\n\t */\r\n\tpublic get readerTitle(): string {\r\n\t\tconst title = this.getPropertyValue(\"readerTitle\");\r\n\t\tif ($type.hasValue(title) && this.dataItem) {\r\n\t\t\treturn this.populateString(title);\r\n\t\t}\r\n\t\treturn title;\r\n\t}\r\n\r\n\t/**\r\n\t * Screen reader description of the element.\r\n\t *\r\n\t * @param value Description\r\n\t */\r\n\tpublic set readerDescription(value: string) {\r\n\t\tvalue = $type.toText(value);\r\n\t\tif (this.setPropertyValue(\"readerDescription\", value)) {\r\n\t\t\tthis.applyAccessibility();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Description\r\n\t */\r\n\tpublic get readerDescription(): string {\r\n\t\treturn this.getPropertyValue(\"readerDescription\");\r\n\t}\r\n\r\n\t/**\r\n\t * A WAI-ARIA role for the element.\r\n\t *\r\n\t * @see {@link https://www.w3.org/TR/wai-aria-1.1/#role_definitions} for more information on WAI-ARIA roles\r\n\t * @param value Role\r\n\t */\r\n\tpublic set role(value: Roles) {\r\n\t\tvalue = <Roles>$type.toText(value);\r\n\t\tif (this.setPropertyValue(\"role\", value)) {\r\n\t\t\tthis.applyAccessibility();\r\n\r\n\t\t\tif (value == \"slider\") {\r\n\t\t\t\tthis.setSVGAttribute({ \"aria-valuemin\": \"0\" });\r\n\t\t\t\tthis.setSVGAttribute({ \"aria-valuemax\": \"100\" });\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Role\r\n\t */\r\n\tpublic get role(): Roles {\r\n\t\treturn this.getPropertyValue(\"role\");\r\n\t}\r\n\r\n\t/**\r\n\t * Controls if element should be hidden from screen readers.\r\n\t *\r\n\t * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-hidden} for more information\r\n\t * @param value Hidden?\r\n\t */\r\n\tpublic set readerHidden(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (this.setPropertyValue(\"readerHidden\", value)) {\r\n\t\t\tthis.applyAccessibility();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Hidden?\r\n\t */\r\n\tpublic get readerHidden(): boolean {\r\n\t\treturn this.getPropertyValue(\"readerHidden\");\r\n\t}\r\n\r\n\t/**\r\n\t * Controls if element is currently marked as \"checked\".\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-checked} for more information\r\n\t * @param value Checked?\r\n\t */\r\n\tpublic set readerChecked(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (this.setPropertyValue(\"readerChecked\", value)) {\r\n\t\t\tthis.applyAccessibility();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Checked?\r\n\t */\r\n\tpublic get readerChecked(): boolean {\r\n\t\treturn this.getPropertyValue(\"readerChecked\");\r\n\t}\r\n\r\n\t/**\r\n\t * A `uid` of an element this element controls.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-controls} for more information\r\n\t * @param value Setting value\r\n\t */\r\n\tpublic set readerControls(value: string) {\r\n\t\tvalue = $type.toText(value);\r\n\t\tif (this.setPropertyValue(\"readerControls\", value)) {\r\n\t\t\tthis.applyAccessibility();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Setting value\r\n\t */\r\n\tpublic get readerControls(): string {\r\n\t\treturn this.getPropertyValue(\"readerControls\");\r\n\t}\r\n\r\n\t/**\r\n\t * Controls accessibility setting \"aria-live\" for the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @see {@link https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions} for more information\r\n\t * @param value Setting value\r\n\t */\r\n\tpublic set readerLive(value: AriaLive) {\r\n\t\tvalue = <AriaLive>$type.toText(value);\r\n\t\tif (this.setPropertyValue(\"readerLive\", value)) {\r\n\t\t\tthis.applyAccessibility();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Setting value\r\n\t */\r\n\tpublic get readerLive(): AriaLive {\r\n\t\treturn this.getPropertyValue(\"readerLive\");\r\n\t}\r\n\r\n\t/**\r\n\t * A `uid` of an element that describes this element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby} for more information\r\n\t * @param value Target element\r\n\t */\r\n\tpublic set readerLabelledBy(value: string) {\r\n\t\tvalue = $type.toText(value);\r\n\t\tif (this.setPropertyValue(\"readerLabelledBy\", value)) {\r\n\t\t\tthis.applyAccessibility();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Target element\r\n\t */\r\n\tpublic get readerLabelledBy(): string {\r\n\t\treturn this.getPropertyValue(\"readerLabelledBy\");\r\n\t}\r\n\r\n\t/**\r\n\t * A `uid` of an element that describes this element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-describedby} for more information\r\n\t * @param value Target element\r\n\t */\r\n\tpublic set readerDescribedBy(value: string) {\r\n\t\tvalue = $type.toText(value);\r\n\t\tif (this.setPropertyValue(\"readerDescribedBy\", value)) {\r\n\t\t\tthis.applyAccessibility();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Target element\r\n\t */\r\n\tpublic get readerDescribedBy(): string {\r\n\t\treturn this.getPropertyValue(\"readerDescribedBy\");\r\n\t}\r\n\r\n\t/**\r\n\t * Orientation of the element.\r\n\t *\r\n\t * @since 4.7.16\r\n\t * @param value Orientation\r\n\t */\r\n\tpublic set readerOrientation(value: string) {\r\n\t\tvalue = $type.toText(value);\r\n\t\tif (this.setPropertyValue(\"readerOrientation\", value)) {\r\n\t\t\tthis.applyAccessibility();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Orientation\r\n\t */\r\n\tpublic get readerOrientation(): string {\r\n\t\treturn this.getPropertyValue(\"readerOrientation\");\r\n\t}\r\n\r\n\t/**\r\n\t * Current value of the element.\r\n\t *\r\n\t * @since 4.7.16\r\n\t * @param value Current value\r\n\t */\r\n\tpublic set readerValueNow(value: string) {\r\n\t\tvalue = $type.toText(value);\r\n\t\tif (this.setPropertyValue(\"readerValueNow\", value)) {\r\n\t\t\tthis.applyAccessibility();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Current value\r\n\t */\r\n\tpublic get readerValueNow(): string {\r\n\t\treturn this.getPropertyValue(\"readerValueNow\");\r\n\t}\r\n\r\n\t/**\r\n\t * Text representation of the current value of the element.\r\n\t *\r\n\t * @since 4.7.16\r\n\t * @param value Current value (text)\r\n\t */\r\n\tpublic set readerValueText(value: string) {\r\n\t\tvalue = $type.toText(value);\r\n\t\tif (this.setPropertyValue(\"readerValueText\", value)) {\r\n\t\t\tthis.applyAccessibility();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Current value (text)\r\n\t */\r\n\tpublic get readerValueText(): string {\r\n\t\treturn this.getPropertyValue(\"readerValueText\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * USER INTERACTIONS\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Returns elements keyboard options.\r\n\t *\r\n\t * @return Keyboard options\r\n\t */\r\n\tpublic get keyboardOptions(): IKeyboardOptions {\r\n\t\tif (!this.interactions.keyboardOptions) {\r\n\t\t\tif (this.virtualParent) {\r\n\t\t\t\treturn this.virtualParent.keyboardOptions;\r\n\t\t\t}\r\n\t\t\tif (this.parent) {\r\n\t\t\t\treturn this.parent.keyboardOptions;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.interactions.keyboardOptions;\r\n\t}\r\n\r\n\t/**\r\n\t * Mouse options.\r\n\t *\r\n\t * Enables controlling options related to the mouse, for example sensitivity\r\n\t * of its mouse wheel.\r\n\t *\r\n\t * E.g. the below will reduce chart's wheel-zoom speed to half its default\r\n\t * speed:\r\n\t *\r\n\t * ```TypeScript\r\n\t * chart.plotContainer.mouseOptions.sensitivity = 0.5;\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * chart.plotContainer.mouseOptions.sensitivity = 0.5;\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"plotContainer\": {\r\n\t * \"mouseOptions\": {\r\n\t * \"sensitivity\": 0.5\r\n\t * }\r\n\t * }\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @return Mouse options\r\n\t */\r\n\tpublic get mouseOptions(): IMouseOptions {\r\n\t\tif (!this.interactions.mouseOptions) {\r\n\t\t\tif (this.virtualParent) {\r\n\t\t\t\treturn this.virtualParent.mouseOptions;\r\n\t\t\t}\r\n\t\t\tif (this.parent) {\r\n\t\t\t\treturn this.parent.mouseOptions;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.interactions.mouseOptions;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns (creates if necessary) an [[InteractionObject]] associated with\r\n\t * this element.\r\n\t *\r\n\t * [[InteractionObject]] is used to attach all kinds of user-interactions to\r\n\t * the element, e.g. click/touch, dragging, hovering, and similar events.\r\n\t *\r\n\t * @return Interaction object\r\n\t */\r\n\tpublic get interactions(): InteractionObject {\r\n\t\tif (!this._interaction) {\r\n\t\t\tconst interaction = getInteraction().getInteraction(this.dom);\r\n\t\t\tthis._interaction = interaction;\r\n\t\t\tthis._interaction.clickable = this.clickable;\r\n\t\t\tthis._interaction.hoverable = this.hoverable;\r\n\t\t\tthis._interaction.trackable = this.trackable;\r\n\t\t\tthis._interaction.draggable = this.draggable;\r\n\t\t\tthis._interaction.swipeable = this.swipeable;\r\n\t\t\tthis._interaction.resizable = this.resizable;\r\n\t\t\tthis._interaction.wheelable = this.wheelable;\r\n\t\t\tthis._interaction.contextMenuDisabled = this.contextMenuDisabled;\r\n\t\t\tthis._interaction.inert = this.inert;\r\n\t\t\tthis._interaction.sprite = this;\r\n\t\t\tthis._disposers.push(this._interaction);\r\n\t\t}\r\n\t\treturn this._interaction;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns true if interactions object was created. Mostly used just to avoid creating interactions object if not needed.\r\n\t * @return Is Sprite interactive?\r\n\t */\r\n\tpublic isInteractive(): boolean {\r\n\t\tif (this._interaction) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * ELEMENT FOCUS-RELATED STUFF\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Controls if the element can gain focus.\r\n\t *\r\n\t * Focusable element will be selectable via TAB key.\r\n\t *\r\n\t * Please note, clicking it with a mouse or touching will not add focus to\r\n\t * it.\r\n\t *\r\n\t * Focused element will show a system-specific highlight, which might ruin\r\n\t * the overal look. This is why we don't focus element on click/touch.\r\n\t *\r\n\t * A default setting varies for different elements. By default all elements\r\n\t * are not focusable, except certain items like buttons, legend items, etc.\r\n\t *\r\n\t * @default undefined (auto)\r\n\t * @param value Can element be focused?\r\n\t */\r\n\tpublic set focusable(value: Optional<boolean>) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (this.setPropertyValue(\"focusable\", value)) {\r\n\t\t\tif (!value && !this.isInteractive()) {\r\n\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.interactions.focusable = value;\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tthis.setSVGAttribute({ \"focusable\": value });\r\n\t\t\t\t\tif (!this._tabindex) {\r\n\t\t\t\t\t\tthis.tabindex = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.removeSVGAttribute(\"focusable\");\r\n\t\t\t\t\tthis.tabindex = undefined;\r\n\t\t\t\t}\r\n\t\t\t\t// Set focus events that would apply \"focus\" state\r\n\t\t\t\t// setEventDisposer will also remove listeners if value == false\r\n\t\t\t\tthis.interactions.setEventDisposer(\"sprite-focusable\", value, () => new MultiDisposer([\r\n\t\t\t\t\tthis.events.on(\"blur\", this.handleBlur, this, false),\r\n\t\t\t\t\tthis.events.on(\"focus\", this.handleFocus, this, false)\r\n\t\t\t\t]));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Can element be focused?\r\n\t */\r\n\tpublic get focusable(): Optional<boolean> {\r\n\t\treturn this.getPropertyValue(\"focusable\");\r\n\t}\r\n\r\n\t/**\r\n\t * Applies filters (if set) when element gains focus.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic handleFocus(ev?: AMEvent<Sprite, ISpriteEvents>[\"focus\"]): void {\r\n\t\tif (this.focusable) {\r\n\t\t\tif (this.topParent) {\r\n\t\t\t\tthis.topParent.hasFocused = true;\r\n\t\t\t}\r\n\t\t\tif (this.focusFilter) {\r\n\t\t\t\t// Any `filters` manipulation will trigger `applyFilters()` so we don't\r\n\t\t\t\t// need to call it here\r\n\t\t\t\tthis.filters.push(this.focusFilter);\r\n\t\t\t}\r\n\t\t\tif (this.hoverOnFocus) {\r\n\t\t\t\t// Trigger a hover event as well\r\n\t\t\t\tthis.isHover = true;\r\n\t\t\t\tthis.handleOver();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Removes focus filter (if set) when elementloses focus.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic handleBlur(ev?: AMEvent<Sprite, ISpriteEvents>[\"blur\"]): void {\r\n\t\tif (this.focusable) {\r\n\t\t\tif (this.topParent) {\r\n\t\t\t\tthis.topParent.hasFocused = false;\r\n\t\t\t}\r\n\t\t\tif (this.focusFilter) {\r\n\t\t\t\t// Any `filters` manipulation will trigger `applyFilters()` so we don't\r\n\t\t\t\t// need to call it here\r\n\t\t\t\tthis.filters.removeValue(this.focusFilter);\r\n\t\t\t}\r\n\t\t\tif (this.hoverOnFocus) {\r\n\t\t\t\t// Trigger a out event as well\r\n\t\t\t\tthis.isHover = false;\r\n\t\t\t\tthis.handleOut();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A reference to a [[Filter]] to apply to element when it gains focus.\r\n\t *\r\n\t * Normally, browsers will draw a default ugly square around focused element,\r\n\t * which totally makes sense because its purpose is to help identify active\r\n\t * element for visually impaired people.\r\n\t *\r\n\t * However, if you would rather apply a filter, so you can modify how focused\r\n\t * element looks like, use `focusFilter`.\r\n\t *\r\n\t * Simply set it to an anstance of [[FocusFilter]], or any other filter\r\n\t * object.\r\n\t *\r\n\t * ```TypeScript\r\n\t * chart.focusFilter = new am4core.FocusFilter();\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * chart.focusFilter = new am4core.FocusFilter();\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"focusFilter\": {\r\n\t * \"type\": \"FocusFilter\"\r\n\t * },\r\n\t * // ...\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @see {@link Filter}\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/accessibility/} more about accessibility\r\n\t * @see {@link https://www.amcharts.com/docs/v4/tutorials/changing-appearance-of-focused-items/} cusomizing focus appearance\r\n\t * @ignore Exclude from docs\r\n\t * @return Focused element filter\r\n\t */\r\n\tpublic get focusFilter(): $type.Optional<Filter> {\r\n\t\t/*if (!this._focusFilter) {\r\n\t\t\tthis._focusFilter = new FocusFilter();\r\n\t\t\tthis._disposers.push(this._focusFilter);\r\n\t\t}*/\r\n\t\t//return this._focusFilter;\r\n\r\n\t\tconst focusFilter = this._focusFilter;\r\n\r\n\t\tif (focusFilter) {\r\n\t\t\treturn focusFilter;\r\n\t\t}\r\n\t\tif (this.virtualParent) {\r\n\t\t\treturn this.virtualParent.focusFilter;\r\n\t\t}\r\n\t\telse if (this.parent) {\r\n\t\t\treturn this.parent.focusFilter;\r\n\t\t}\r\n\r\n\t\t//this._focusFilter = new FocusFilter();\r\n\t\t//this._disposers.push(this._focusFilter);\r\n\t}\r\n\r\n\t/**\r\n\t * @see {@link Filter}\r\n\t * @ignore Exclude from docs\r\n\t * @todo This is still experimental, don't use it\r\n\t */\r\n\tpublic set focusFilter(value: $type.Optional<Filter>) {\r\n\t\tthis._focusFilter = value;\r\n\t}\r\n\r\n\t/**\r\n\t * If set to `true`, this element will also trigger `\"over\"` event with all\r\n\t * the related consequences, like \"hover\" state being applied and tooltip\r\n\t * being shown.\r\n\t *\r\n\t * Useful as an accessibility feature to display rollover tooltips on items\r\n\t * selected via keyboard.\r\n\t *\r\n\t * @param value Trigger hover on focus?\r\n\t * @default false\r\n\t */\r\n\tpublic set hoverOnFocus(value: boolean) {\r\n\t\tif (value !== this.hoverOnFocus) {\r\n\t\t\tthis.setPropertyValue(\"hoverOnFocus\", value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Trigger hover on focus?\r\n\t */\r\n\tpublic get hoverOnFocus(): boolean {\r\n\t\treturn this.getPropertyValue(\"hoverOnFocus\");\r\n\t}\r\n\r\n\t/**\r\n\t * Sets TAB index.\r\n\t *\r\n\t * Tab index maintains the order in which focusable elements gain focus when\r\n\t * TAB key is pressed.\r\n\t *\r\n\t * Please note, tab index is not local to the chart. It affects the whole\r\n\t * of the page, including non-SVG elements. Maintain extreme causion when\r\n\t * setting tab indexes, as it affects the user experience for the whole\r\n\t * web page.\r\n\t *\r\n\t * @param value TAB index\r\n\t */\r\n\tpublic set tabindex(value: number) {\r\n\t\tvalue = $type.toNumber(value);\r\n\t\tif (this.setPropertyValue(\"tabindex\", value) && $type.isNumber(value)) {\r\n\t\t\tthis.interactions.tabindex = value;\r\n\t\t\tthis.setSVGAttribute({ \"tabindex\": value });\r\n\t\t\tif (value > -1) {\r\n\t\t\t\tthis.focusable = true;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.focusable = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current TAB index for focusable item.\r\n\t *\r\n\t * @return TAB index\r\n\t */\r\n\tpublic get tabindex(): $type.Optional<number> {\r\n\t\tconst index = this._tabindex;\r\n\r\n\t\tif (index != null) {\r\n\t\t\treturn index;\r\n\t\t}\r\n\t\telse if (this.virtualParent) {\r\n\t\t\treturn this.virtualParent.tabindex;\r\n\t\t}\r\n\t\telse if (this.parent) {\r\n\t\t\treturn this.parent.tabindex;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * DRAGGING AND RELATED STUFF\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Returns element's options to be used for inertia. This setting is\r\n\t * inheritable, meaning that if not set directly, it will search in all its\r\n\t * ascendants until very top.\r\n\t *\r\n\t * Inertia is used only if element's `inert` is set to `true`.\r\n\t *\r\n\t * \"Inert\" element, when dragged and released, will carry the momentum of the\r\n\t * movement, and will continue moving in the same drag direction, gradually\r\n\t * reducing in speed until finally stops.\r\n\t *\r\n\t * Check [[IInertiaOptions]] for how you tweak inertia animations.\r\n\t *\r\n\t * @return Inertia options\r\n\t */\r\n\tpublic get inertiaOptions(): Dictionary<InertiaTypes, IInertiaOptions> {\r\n\t\tif (!this.interactions.inertiaOptions) {\r\n\t\t\tif (this.parent) {\r\n\t\t\t\treturn this.parent.inertiaOptions;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.interactions.inertiaOptions;\r\n\t}\r\n\r\n\t/**\r\n\t * Controls if the element is draggable.\r\n\t *\r\n\t * @param value `true` if element can be dragged\r\n\t */\r\n\tpublic set draggable(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (this.setPropertyValue(\"draggable\", value)) {\r\n\r\n\t\t\tif (!value && !this.isInteractive()) {\r\n\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.applyCursorStyle();\r\n\t\t\t\tthis.interactions.draggable = value;\r\n\t\t\t\t//interaction.processDraggable(this);\r\n\r\n\t\t\t\t// Add events\r\n\t\t\t\t// @todo Maybe attach to InteractionObject's multidisposer so that\r\n\t\t\t\t// sprites events get disposed together with them?\r\n\t\t\t\t// this.interactions.disposers.getItem(\"movable\")\r\n\t\t\t\t// setEventDisposer will also remove listeners if value == false\r\n\t\t\t\tthis.interactions.setEventDisposer(\"sprite-draggable\", value, () => new MultiDisposer([\r\n\t\t\t\t\tthis.events.on(\"down\", this.handleDown, this, false),\r\n\t\t\t\t\tthis.events.on(\"dragstart\", this.handleDragStart, this, false),\r\n\t\t\t\t\tthis.events.on(\"drag\", this.handleDragMove, this, false),\r\n\t\t\t\t\tthis.events.on(\"dragstop\", this.handleDragStop, this, false)\r\n\t\t\t\t]));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return `true` if element can be dragged\r\n\t */\r\n\tpublic get draggable(): boolean {\r\n\t\treturn this.getPropertyValue(\"draggable\");\r\n\t}\r\n\r\n\t/**\r\n\t * Executes when dragged element is being started to drag.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected handleDragStart(ev: AMEvent<Sprite, ISpriteEvents>[\"dragstart\"]): void {\r\n\t\tif (!this.interactions.isTouchProtected || !ev.touch) {\r\n\t\t\tthis.interactions.originalPosition = {\r\n\t\t\t\tx: this.pixelX,\r\n\t\t\t\ty: this.pixelY\r\n\t\t\t};\r\n\t\t\tthis._isDragged = true;\r\n\t\t\tthis.hideTooltip(0);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Tell this element to start being dragged. This is useful if you want to\r\n\t * drag items by interactions performed not directly on the target element.\r\n\t *\r\n\t * Parameter `pointer` is highly recommended. By passing in the Pointer you\r\n\t * will ensure that movement is tracked for the pointer that you want. If not\r\n\t * supplied, the system will try to determine the most logical pointer.\r\n\t *\r\n\t * However this may fail if you have more than one pointer active, which\r\n\t * might happen if you have several objects being dragged on a touch device.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param pointer Pointer to use for movement\r\n\t */\r\n\tpublic dragStart(pointer?: IPointer): void {\r\n\t\t//this.dragStop(pointer);\r\n\t\t//this.draggable = true;\r\n\t\tthis._isDragged = true;\r\n\t\tgetInteraction().dragStart(this.interactions, pointer);\r\n\t}\r\n\r\n\t/**\r\n\t * Executes when dragged element is being dropped.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected handleDragStop(ev: AMEvent<Sprite, ISpriteEvents>[\"dragstop\"]): void {\r\n\t\tif (!this.interactions.isTouchProtected || !ev.touch) {\r\n\t\t\tthis._isDragged = false;\r\n\t\t\tthis.showTooltip();\r\n\t\t\tthis.interactions.originalPosition = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Stops manually initiated dragging of the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param pointer Pointer to use as a reference\r\n\t */\r\n\tpublic dragStop(pointer?: IPointer): void {\r\n\t\t//this.draggable = false;\r\n\t\tthis._isDragged = false;\r\n\t\tgetInteraction().dragStop(this.interactions, pointer);\r\n\t\t//this.handleDragStop();\r\n\t}\r\n\r\n\t/**\r\n\t * Executes when {Sprite} is being dragged.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev Event object\r\n\t * @todo Implement parent position offset calculation\r\n\t */\r\n\tpublic handleDragMove(ev: AMEvent<Sprite, ISpriteEvents>[\"drag\"]): void {\r\n\t\tif (!this.interactions.isTouchProtected || !ev.touch) {\r\n\t\t\tlet point: Optional<IPoint> = this.interactions.originalPosition;\r\n\r\n\t\t\tif (point && this._isDragged) {\r\n\t\t\t\tlet globalScale = this.parent.globalScale * this.svgContainer.cssScale;\r\n\t\t\t\tthis.moveTo({ x: point.x + ev.shift.x / globalScale, y: point.y + ev.shift.y / globalScale }, undefined, undefined, true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.dispatchImmediately(\"dragged\", ev);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Controls if the element should use inertia when interacted with.\r\n\t *\r\n\t * \"Inert\" element, when dragged and released, will carry the momentum of the\r\n\t * movement, and will continue moving in the same drag direction, gradually\r\n\t * reducing in speed until finally stops.\r\n\t *\r\n\t * @default false\r\n\t * @param value `true` if element should use inertia when animated\r\n\t */\r\n\tpublic set inert(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (this.setPropertyValue(\"inert\", value)) {\r\n\t\t\tif (!value && !this.isInteractive()) {\r\n\t\t\t\t// void\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.interactions.inert = value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return `true` if element should use inertia when animated\r\n\t */\r\n\tpublic get inert(): boolean {\r\n\t\treturn this.getPropertyValue(\"inert\");\r\n\t}\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * HOVERING\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Returns Sprite's hover options.\r\n\t *\r\n\t * @see {@link IHoverOptions} for available options.\r\n\t * @return Options\r\n\t */\r\n\tpublic get hoverOptions(): IHoverOptions {\r\n\t\tif (!this.interactions.hoverOptions) {\r\n\t\t\tif (this.virtualParent) {\r\n\t\t\t\treturn this.virtualParent.hoverOptions;\r\n\t\t\t}\r\n\t\t\tif (this.parent) {\r\n\t\t\t\treturn this.parent.hoverOptions;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.interactions.hoverOptions;\r\n\t}\r\n\r\n\t/**\r\n\t * Controls if the element is hoverable (hover events are registered).\r\n\t *\r\n\t * Use `over` and `out` events, to watch for those respective actions.\r\n\t *\r\n\t * @default false\r\n\t * @param value `true` if element can be hovered\r\n\t */\r\n\tpublic set hoverable(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (this.setPropertyValue(\"hoverable\", value)) {\r\n\t\t\tif (!value && !this.isInteractive()) {\r\n\t\t\t\t// void\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.applyCursorStyle();\r\n\t\t\t\tthis.interactions.hoverable = value;\r\n\r\n\t\t\t\t// setEventDisposer will also remove listeners if value == false\r\n\t\t\t\tthis.interactions.setEventDisposer(\"sprite-hoverable\", value, () => new MultiDisposer([\r\n\t\t\t\t\tthis.events.on(\"over\", this.handleOver, this, false),\r\n\t\t\t\t\tthis.events.on(\"out\", this.handleOut, this, false),\r\n\t\t\t\t]));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return `true` if element is hoverable\r\n\t */\r\n\tpublic get hoverable(): boolean {\r\n\t\treturn this.getPropertyValue(\"hoverable\");\r\n\t}\r\n\r\n\t/**\r\n\t * Handles tasks when element becomes hovered:\r\n\t * * Shows [[Tooltip]] if applicable\r\n\t * * Applies \"hover\" state\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev Event object\r\n\t */\r\n\tpublic handleOver(ev?: AMEvent<Sprite, ISpriteEvents>[\"over\"]): void {\r\n\t\tif (this._outTimeout) {\r\n\t\t\tthis._outTimeout.dispose();\r\n\t\t}\r\n\t\tif (this.isHover) {\r\n\r\n\t\t\tif (this.states.hasKey(\"hover\")) {\r\n\t\t\t\t//this.setState(\"hover\");\r\n\t\t\t\t// This will check `isHover` and will set \"hover\" state\r\n\t\t\t\tif (!this.isHidden) {\r\n\t\t\t\t\tthis.applyCurrentState();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlet point: IPoint\r\n\t\t\tif (ev && ev.pointer) {\r\n\t\t\t\tpoint = $utils.documentPointToSvg(ev.pointer.point, this.svgContainer.SVGContainer, this.svgContainer.cssScale)\r\n\t\t\t}\r\n\r\n\t\t\tif (this.showTooltipOn == \"hover\") {\r\n\t\t\t\tthis.showTooltip(point);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.showTooltipOn == \"hover\") {\r\n\t\t\t\tthis.hideTooltip();\r\n\t\t\t}\r\n\t\t\tif (!this.isHidden && this.states.hasKey(\"hover\")) {\r\n\t\t\t\tthis.applyCurrentState();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles tasks when element loses hover:\r\n\t *\r\n\t * * Hides [[Tooltip]]\r\n\t * * Applies default state\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev [description]\r\n\t */\r\n\tpublic handleOut(ev?: AMEvent<Sprite, ISpriteEvents>[\"out\"]): void {\r\n\t\tif (this.tooltip && this.tooltip.targetSprite == this && this.tooltip.keepTargetHover) {\r\n\t\t\tthis._outTimeout = this.setTimeout(() => {\r\n\t\t\t\tif (!this.tooltip.isHover) {\r\n\t\t\t\t\tif (this.tooltip.targetSprite == this) {\r\n\t\t\t\t\t\tthis.hideTooltip();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._outTimeout = this.setTimeout(this.handleOutReal.bind(this), this.rollOutDelay);\r\n\t\t\t\t}\r\n\t\t\t}, 10);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this.showTooltipOn == \"hover\") {\r\n\t\t\tthis.hideTooltip();\r\n\t\t}\r\n\t\tthis._outTimeout = this.setTimeout(this.handleOutReal.bind(this), this.rollOutDelay);\r\n\t}\r\n\r\n\t/**\r\n\t * [handleOutReal description]\r\n\t *\r\n\t * @ignore\r\n\t * @todo description\r\n\t */\r\n\tpublic handleOutReal() {\r\n\t\tif (!this.isHidden && !this.isHiding && this.states.hasKey(\"hover\")) {\r\n\t\t\tthis.applyCurrentState();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * CLICKING/TAPPING AND TOGGLING STUFF\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Returns Sprite's click (hit) options.\r\n\t *\r\n\t * Click (hit) options control things like double-click, timeouts, etc.\r\n\t *\r\n\t * @see {@link IHitOptions} for available options.\r\n\t * @return Options\r\n\t */\r\n\tpublic get hitOptions(): IHitOptions {\r\n\t\tif (!this.interactions.hitOptions) {\r\n\t\t\tif (this.virtualParent) {\r\n\t\t\t\treturn this.virtualParent.hitOptions;\r\n\t\t\t}\r\n\t\t\tif (this.parent) {\r\n\t\t\t\treturn this.parent.hitOptions;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.interactions.hitOptions;\r\n\t}\r\n\r\n\t/**\r\n\t * Prepares element's after `down` event.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev Event\r\n\t */\r\n\tpublic handleDown(ev?: AMEvent<Sprite, ISpriteEvents>[\"down\"]): void {\r\n\t\tif (this.interactions.downPointers.length === 1) {\r\n\t\t\tthis.interactions.originalPosition = {\r\n\t\t\t\tx: this.pixelX,\r\n\t\t\t\ty: this.pixelY\r\n\t\t\t};\r\n\t\t\tthis.interactions.originalAngle = this.rotation;\r\n\t\t\tthis.interactions.originalScale = this.scale;\r\n\t\t\tif (this.states.hasKey(\"down\")) {\r\n\t\t\t\tthis.setState(\"down\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Prepares element's after `up` event.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev Event\r\n\t */\r\n\tpublic handleUp(ev?: AMEvent<Sprite, ISpriteEvents>[\"up\"]): void {\r\n\t\t/*if (!this.isDown) {\r\n\t\t\tthis.interactions.originalPosition = null;\r\n\t\t\tthis.interactions.originalAngle = null;\r\n\t\t\tthis.interactions.originalScale = null;\r\n\t\t}*/\r\n\t\tthis._isResized = false;\r\n\t\tif (this.states.hasKey(\"down\")) {\r\n\t\t\tthis.applyCurrentState();\r\n\t\t}\r\n\t\tif (this.showTooltipOn == \"hit\") {\r\n\t\t\tthis.showTooltip();\r\n\t\t\tthis._disposers.push(getInteraction().body.events.once(\"down\", (ev) => {\r\n\t\t\t\tthis.hideTooltip();\r\n\t\t\t}));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if the element is clickable.\r\n\t *\r\n\t * Some type of the elements, like buttons are clickable by default.\r\n\t *\r\n\t * Most of the elements are not clickable by default.\r\n\t *\r\n\t * Use `hit`, `doublehit`, `up`, `down`, `toggled` events to watch for\r\n\t * respective click/touch actions.\r\n\t *\r\n\t * @param value `true` if element can be clicked\r\n\t */\r\n\tpublic set clickable(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (this.setPropertyValue(\"clickable\", value)) {\r\n\t\t\tif (!value && !this.isInteractive()) {\r\n\t\t\t\t// void\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.applyCursorStyle();\r\n\t\t\t\tthis.interactions.clickable = value;\r\n\r\n\t\t\t\t// setEventDisposer will also remove listeners if value == false\r\n\t\t\t\tthis.interactions.setEventDisposer(\"sprite-clickable\", value, () => new MultiDisposer([\r\n\t\t\t\t\tthis.events.on(\"down\", this.handleDown, this, false),\r\n\t\t\t\t\tthis.events.on(\"up\", this.handleUp, this, false)\r\n\t\t\t\t]));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return {boolean}\r\n\t */\r\n\tpublic get clickable(): boolean {\r\n\t\treturn this.getPropertyValue(\"clickable\");\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if element can be toggled on and off by subsequent clicks/taps.\r\n\t *\r\n\t * Togglable element will alternate its `isActive` property between `true`\r\n\t * and `false` with each click.\r\n\t *\r\n\t * @param value Is togglable?\r\n\t */\r\n\tpublic set togglable(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (this.setPropertyValue(\"togglable\", value)) {\r\n\t\t\tif (!value && !this.isInteractive()) {\r\n\t\t\t\t// void\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// setEventDisposer will also remove listeners if value == false\r\n\t\t\t\tthis.interactions.setEventDisposer(\"sprite-togglable\", value, () => this.events.on(\"hit\", this.handleToggle, this, false));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Is togglable?\r\n\t */\r\n\tpublic get togglable(): boolean {\r\n\t\treturn this.getPropertyValue(\"togglable\");\r\n\t}\r\n\r\n\t/**\r\n\t * Handles toggling of the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev Event\r\n\t */\r\n\tpublic handleToggle(ev: AMEvent<Sprite, ISpriteEvents>[\"hit\"]) {\r\n\t\tthis.isActive = !this.isActive;\r\n\t}\r\n\r\n\t/**\r\n\t * Should element prevent context menu to be displayed, e.g. when\r\n\t * right-clicked?\r\n\t *\r\n\t * @default false\r\n\t * @param value Context menu disabled?\r\n\t */\r\n\tpublic set contextMenuDisabled(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (this.setPropertyValue(\"contextMenuDisabled\", value)) {\r\n\t\t\tthis.interactions.contextMenuDisabled = value;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Context menu disabled?\r\n\t */\r\n\tpublic get contextMenuDisabled(): boolean {\r\n\t\treturn this.getPropertyValue(\"contextMenuDisabled\");\r\n\t}\r\n\r\n\t/**\r\n\t * Click-through URL for this element.\r\n\t *\r\n\t * If set, clicking/tapping this element will open the new URL in a target\r\n\t * window/tab as set by `urlTarget`.\r\n\t *\r\n\t * Please note that URL will be parsed by data placeholders in curly\r\n\t * brackets, to be populated from data. E.g.:\r\n\t *\r\n\t * ```TypeScript\r\n\t * series.columns.template.url = \"https://www.google.com/search?q={category.urlEncode()}\";\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * series.columns.template.url = \"https://www.google.com/search?q={category.urlEncode()}\";\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"series\": [{\r\n\t * // ...\r\n\t * \"columns\": {\r\n\t * \"url\": \"https://www.google.com/search?q={category.urlEncode()}\"\r\n\t * }\r\n\t * }]\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @param value URL\r\n\t */\r\n\tpublic set url(value: $type.Optional<string>) {\r\n\t\tif (this.setPropertyValue(\"url\", value)) {\r\n\t\t\tif (this._urlDisposer) {\r\n\t\t\t\tthis._urlDisposer.dispose();\r\n\t\t\t}\r\n\r\n\t\t\t// If URL is not empty, set up events\r\n\t\t\tif ($utils.isNotEmpty(value)) {\r\n\t\t\t\tthis._urlDisposer = this.events.on(\"hit\", this.urlHandler, this, false);\r\n\r\n\t\t\t\t// Set other required parameters\r\n\t\t\t\tthis.clickable = true;\r\n\t\t\t\tthis.cursorOverStyle = MouseCursorStyle.pointer;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return URL\r\n\t */\r\n\tpublic get url(): $type.Optional<string> {\r\n\t\treturn this.getPropertyValue(\"url\");\r\n\t}\r\n\r\n\t/**\r\n\t * [baseId description]\r\n\t *\r\n\t * @ignore\r\n\t * @param value [description]\r\n\t */\r\n\tpublic set baseId(value: string) {\r\n\t\tthis.setBaseId(value);\r\n\t}\r\n\r\n\t/**\r\n\t * [baseId description]\r\n\t *\r\n\t * @ignore\r\n\t * @return [description]\r\n\t */\r\n\tpublic get baseId(): string {\r\n\t\tif (!this._baseId && this.parent) {\r\n\t\t\tthis.baseId = this.parent.baseId;\r\n\t\t}\r\n\r\n\t\treturn this._baseId;\r\n\t}\r\n\r\n\tprotected setBaseId(value: string) {\r\n\t\tif (value != this._baseId) {\r\n\t\t\tif (this.invalid) {\r\n\t\t\t\tthis.invalid = false;\r\n\t\t\t\tregistry.removeFromInvalidSprites(this);\r\n\t\t\t\tthis.invalidate();\r\n\t\t\t}\r\n\t\t\tthis._baseId = value;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the mail chart object that this element belongs to.\r\n\t *\r\n\t * In most cases it will mean the chart object.\r\n\t *\r\n\t * Can be used to retrieve chart object in various events and adapters.\r\n\t *\r\n\t * ```TypeScript\r\n\t * chart.seriesContainer.events.on(\"hit\", function(ev) {\r\n\t * console.log(ev.target.baseSprite);\r\n\t * });\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * chart.seriesContainer.events.on(\"hit\", function(ev) {\r\n\t * console.log(ev.target.baseSprite);\r\n\t * });\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"seriesContainer\": {\r\n\t * \"events\": {\r\n\t * \"hit\": function(ev) {\r\n\t * console.log(ev.target.baseSprite);\r\n\t * }\r\n\t * }\r\n\t * }\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @readonly\r\n\t * @return Base chart object\r\n\t */\r\n\tpublic get baseSprite(): $type.Optional<Sprite> {\r\n\t\tif (this.isBaseSprite) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\telse if (this.parent) {\r\n\t\t\treturn this.parent.baseSprite;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Target to use for URL clicks:\r\n\t *\r\n\t * * _blank\r\n\t * * _self (default)\r\n\t * * _parent\r\n\t * * _top\r\n\t * * Name of the window/frame\r\n\t *\r\n\t * Ignored if `url` is not set.\r\n\t *\r\n\t * @param value URL target\r\n\t */\r\n\tpublic set urlTarget(value: string) {\r\n\t\tthis.setPropertyValue(\"urlTarget\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return URL target\r\n\t */\r\n\tpublic get urlTarget(): string {\r\n\t\treturn this.getPropertyValue(\"urlTarget\");\r\n\t}\r\n\r\n\t/**\r\n\t * Handles URL transition on element click.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev An event object\r\n\t */\r\n\tpublic urlHandler(ev: AMEvent<Sprite, ISpriteEvents>[\"hit\"]): void {\r\n\t\t// Is URL set?\r\n\t\tif ($utils.isNotEmpty(this.url)) {\r\n\t\t\t// Proceed to the URL\r\n\t\t\tlet url = this.populateString(this.url);\r\n\t\t\tif (this.urlTarget === \"_self\") {\r\n\t\t\t\twindow.location.href = url;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\twindow.open(url, this.urlTarget);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * SWIPING GESTURE TRACKING\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Returns element's swipe gesture options.\r\n\t *\r\n\t * @return Swipe gesture options\r\n\t */\r\n\tpublic get swipeOptions(): ISwipeOptions {\r\n\t\tif (!this.interactions.swipeOptions) {\r\n\t\t\tif (this.virtualParent) {\r\n\t\t\t\treturn this.virtualParent.swipeOptions;\r\n\t\t\t}\r\n\t\t\tif (this.parent) {\r\n\t\t\t\treturn this.parent.swipeOptions;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.interactions.swipeOptions;\r\n\t}\r\n\r\n\t/**\r\n\t * Controls if element is swipeable.\r\n\t *\r\n\t * Swipable element will invoke `swipe`, `swipeleft` and `swiperight` events,\r\n\t * when quick horizontal drag action is performed with either mouse or touch.\r\n\t *\r\n\t * Please note that combining swipe and drag is possible, however will incur\r\n\t * a slight but noticeable delay in drag start.\r\n\t *\r\n\t * @param value Element swipable?\r\n\t */\r\n\tpublic set swipeable(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (this.setPropertyValue(\"swipeable\", value)) {\r\n\t\t\tthis.applyCursorStyle();\r\n\t\t\tif (!value && !this.isInteractive()) {\r\n\t\t\t\t// void\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.interactions.swipeable = value;\r\n\t\t\t}\r\n\t\t\t//interaction.processSwipeable(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Element swipable?\r\n\t */\r\n\tpublic get swipeable(): boolean {\r\n\t\treturn this.getPropertyValue(\"swipeable\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * POINTER TRACKING\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Indicates if the element is trackable (mouse position over it is reported to\r\n\t * event listeners).\r\n\t *\r\n\t * Will invoke `track` events whenever pointer (cursor) changes position\r\n\t * while over element.\r\n\t *\r\n\t * Please note, touch devices will also invoke `track` events when touch\r\n\t * point is moved while holding down on a trackable element.\r\n\t *\r\n\t * @param value Track cursor movement over element?\r\n\t */\r\n\tpublic set trackable(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (this.setPropertyValue(\"trackable\", value)) {\r\n\t\t\tif (!value && !this.isInteractive()) {\r\n\t\t\t\t// void\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.applyCursorStyle();\r\n\t\t\t\tthis.interactions.trackable = value;\r\n\t\t\t}\r\n\t\t\t//interaction.processTrackable(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Track cursor movement over element?\r\n\t */\r\n\tpublic get trackable(): boolean {\r\n\t\treturn this.getPropertyValue(\"trackable\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * MOUSE-WHEEL RELATED\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Indicates if the element can be interacted with mouse wheel.\r\n\t *\r\n\t * Will invoke `wheel`, `wheelup`, `wheeldown`, `wheelleft`, and `wheelright`\r\n\t * events when using mouse wheel over the element.\r\n\t *\r\n\t * @param value Mouse wheel events enabled?\r\n\t */\r\n\tpublic set wheelable(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"wheelable\", value)) {\r\n\t\t\tif (!value && !this.isInteractive()) {\r\n\t\t\t\t// void\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.applyCursorStyle();\r\n\t\t\t\tthis.interactions.wheelable = value;\r\n\t\t\t}\r\n\t\t\t//interaction.processWheelable(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Mouse wheel events enabled?\r\n\t */\r\n\tpublic get wheelable(): boolean {\r\n\t\treturn this.getPropertyValue(\"wheelable\");\r\n\t}\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * RESIZE\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Indicates if this element is resizable.\r\n\t *\r\n\t * Enabling resize will turn on various interactions on the element. Their\r\n\t * actual functionality will depend on other properties.\r\n\t *\r\n\t * If the element also `draggable`, resize will only happen with two points\r\n\t * of contact on a touch device.\r\n\t *\r\n\t * If the element is not draggable, resize can be performed with just one\r\n\t * point of contact, touch or mouse.\r\n\t *\r\n\t * Will invoke `resize` event every time the size of the element changes.\r\n\t *\r\n\t * @param value Element resizable?\r\n\t */\r\n\tpublic set resizable(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (this.setPropertyValue(\"resizable\", value)) {\r\n\t\t\tif (!value && !this.isInteractive()) {\r\n\t\t\t\t// void\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.applyCursorStyle();\r\n\t\t\t\tthis.interactions.resizable = value;\r\n\t\t\t\t// setEventDisposer will also remove listeners if value == false\r\n\t\t\t\tthis.interactions.setEventDisposer(\"sprite-resizable\", value, () => new MultiDisposer([\r\n\t\t\t\t\tthis.events.on(\"down\", this.handleDown, this, false),\r\n\t\t\t\t\tthis.events.on(\"resize\", this.handleResize, this, false)\r\n\t\t\t\t]));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Element resizable?\r\n\t */\r\n\tpublic get resizable(): boolean {\r\n\t\treturn this.getPropertyValue(\"resizable\");\r\n\t}\r\n\r\n\t/**\r\n\t * Handles resize intermediate step.\r\n\t *\r\n\t * By default this method resizes actual element. Each element, can override\r\n\t * this method to implement their own resize logic.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev Event object\r\n\t */\r\n\tpublic handleResize(ev: AMEvent<Sprite, ISpriteEvents>[\"resize\"]): void {\r\n\t\tif (!this.interactions.isTouchProtected || !ev.touch) {\r\n\t\t\tthis._isResized = true;\r\n\r\n\t\t\tthis.scale = this.interactions.originalScale * ev.scale;\r\n\r\n\t\t\tthis.validatePosition();\r\n\t\t\t/*center: (io.draggable\r\n\t\t\t? $math.getMidPoint(point1, point2)\r\n\t\t\t: {\r\n\t\t\t\t\"x\": io.originalPosition.x,\r\n\t\t\t\t\"y\": io.originalPosition.y\r\n\t\t\t})*/\r\n\t\t\t//this.moveTo(this.originalPosition.x + ev.shift.x, this.originalPosition.y + ev.shift.y);\r\n\t\t\tif (this.draggable || this.dragWhileResize) {\r\n\t\t\t\tthis._isDragged = false;\r\n\t\t\t\tlet svgPoint1: IPoint = $utils.documentPointToSvg(ev.point1, this.htmlContainer, this.svgContainer.cssScale);\r\n\t\t\t\tlet svgPoint2: IPoint = $utils.documentPointToSvg(ev.point2, this.htmlContainer, this.svgContainer.cssScale);\r\n\t\t\t\tlet svgMidPoint: IPoint = $math.getMidPoint(svgPoint1, svgPoint2);\r\n\r\n\t\t\t\tlet parentPoint1: IPoint = $utils.documentPointToSprite(ev.startPoint1, this.parent);\r\n\t\t\t\tlet parentPoint2: IPoint = $utils.documentPointToSprite(ev.startPoint2, this.parent);\r\n\r\n\t\t\t\tlet originalPosition: Optional<IPoint> = this.interactions.originalPosition;\r\n\t\t\t\tlet originalScale: number = this.interactions.originalScale;\r\n\r\n\t\t\t\tif (originalPosition) {\r\n\t\t\t\t\tlet spritePoint1: IPoint = { x: (parentPoint1.x - originalPosition.x) / originalScale, y: (parentPoint1.y - originalPosition.y) / originalScale };\r\n\t\t\t\t\tlet spritePoint2: IPoint = { x: (parentPoint2.x - originalPosition.x) / originalScale, y: (parentPoint2.y - originalPosition.y) / originalScale };\r\n\r\n\t\t\t\t\tlet spriteMidPoint: IPoint = $math.getMidPoint(spritePoint1, spritePoint2);\r\n\r\n\t\t\t\t\tlet parentPoint: IPoint = $utils.svgPointToSprite(svgMidPoint, this.parent);\r\n\t\t\t\t\tthis.moveTo({ x: parentPoint.x - spriteMidPoint.x * this.scale, y: parentPoint.y - spriteMidPoint.y * this.scale }, undefined, undefined, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * MOUSE-RELATED\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Returns element's cursor options.\r\n\t *\r\n\t * Cursor options usually define cursor style for various states of the\r\n\t * hovered element.\r\n\t *\r\n\t * Elements inherit `cursorOptions` from their parents if they don't have\r\n\t * them set explicitly.\r\n\t *\r\n\t * @see {@link ICursorOptions} for a list of available options\r\n\t * @return Cursor options\r\n\t */\r\n\tpublic get cursorOptions(): ICursorOptions {\r\n\t\tif (!this.interactions.cursorOptions) {\r\n\t\t\tif (this.virtualParent) {\r\n\t\t\t\treturn this.virtualParent.cursorOptions;\r\n\t\t\t}\r\n\t\t\tif (this.parent) {\r\n\t\t\t\treturn this.parent.cursorOptions;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.interactions.cursorOptions;\r\n\t}\r\n\r\n\t/**\r\n\t * A shortcut to setting mouse cursor on hover.\r\n\t *\r\n\t * Example:\r\n\t *\r\n\t * ```TypeScript\r\n\t * series.slices.template.cursorOverStyle = am4core.MouseCursorStyle.pointer;\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * series.slices.template.cursorOverStyle = am4core.MouseCursorStyle.pointer;\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"series\": {\r\n\t * // ...\r\n\t * \"slices\": {\r\n\t * \"cursorOverStyle\": \"pointer\"\r\n\t * }\r\n\t * }\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @param style An array of styles to apply onhover\r\n\t */\r\n\tpublic set cursorOverStyle(style: Array<IStyleProperty>) {\r\n\t\tif (!this.cursorOptions.overStyle) {\r\n\t\t\tthis.interactions.cursorOptions = {\r\n\t\t\t\tdefaultStyle: this.cursorOptions.defaultStyle\r\n\t\t\t};\r\n\t\t}\r\n\t\tthis.cursorOptions.overStyle = style;\r\n\t\tgetInteraction().applyCursorOverStyle(this.interactions);\r\n\t}\r\n\r\n\t/**\r\n\t * A shortcut to setting mouse cursor when button is pressed down.\r\n\t *\r\n\t * Example:\r\n\t *\r\n\t * ```TypeScript\r\n\t * series.slices.template.cursorDownStyle = am4core.MouseCursorStyle.grabbing;\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * series.slices.template.cursorDownStyle = am4core.MouseCursorStyle.grabbing;\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"series\": {\r\n\t * // ...\r\n\t * \"slices\": {\r\n\t * \"cursorDownStyle\": \"grabbing\"\r\n\t * }\r\n\t * }\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @param style An array of styles to apply onhover\r\n\t */\r\n\tpublic set cursorDownStyle(style: Array<IStyleProperty>) {\r\n\t\tthis.cursorOptions.downStyle = style;\r\n\t}\r\n\r\n\t/**\r\n\t * Applies default cursor styles for interactable elements.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Determine if this is necessary. Maybe let's not apply any cursor styles by default\r\n\t */\r\n\tpublic applyCursorStyle(): void {\r\n\r\n\t\t// Draggable styles\r\n\t\t/*if (this.draggable) {\r\n\r\n\t\t\tif (!$type.hasValue(this.cursorOptions.overStyle)) {\r\n\t\t\t\tthis.cursorOptions.overStyle = MouseCursorStyle.grab;\r\n\t\t\t}\r\n\r\n\t\t\tif (!$type.hasValue(this.cursorOptions.downStyle)) {\r\n\t\t\t\tthis.cursorOptions.downStyle = MouseCursorStyle.grabbing;\r\n\t\t\t}\r\n\t\t}*/\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Setting this to `false` will effectively disable all interactivity on the\r\n\t * element.\r\n\t *\r\n\t * @param value Is interaction enabled for this element?\r\n\t */\r\n\tpublic set interactionsEnabled(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\r\n\t\tif (this.setPropertyValue(\"interactionsEnabled\", value)) {\r\n\t\t\tlet pointerEvents = null; // must be null, not \"null\"!\r\n\t\t\tif (!value) {\r\n\t\t\t\tpointerEvents = \"none\";\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// this is for IE\r\n\t\t\t\tthis.group.node.style.pointerEvents = \"\";\r\n\t\t\t}\r\n\t\t\tthis.group.node.style.pointerEvents = pointerEvents;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Is interaction enabled for this element?\r\n\t */\r\n\tpublic get interactionsEnabled(): boolean {\r\n\t\tlet value = this.getPropertyValue(\"interactionsEnabled\");\r\n\t\tif (value === false) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (this.virtualParent) {\r\n\t\t\treturn this.virtualParent.interactionsEnabled;\r\n\t\t}\r\n\t\tif (this.parent) {\r\n\t\t\treturn this.parent.interactionsEnabled;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * EXPORT-RELATED STUFF\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * An [[Export]] instance.\r\n\t *\r\n\t * Used to access API of the chart export functionality.\r\n\t *\r\n\t * If `exporting` is not set, the element inherits [[Export]] instance from\r\n\t * its parents.\r\n\t *\r\n\t * Upon request, if no parent has such instance, a new one is created, using\r\n\t * default settings, what in most cases is just enough.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/exporting/} for more info about exporting\r\n\t * @param exp Export\r\n\t */\r\n\tpublic set exporting(exp: Export) {\r\n\t\tthis._exporting.set(exp, exp);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Export instance\r\n\t */\r\n\tpublic get exporting(): Export {\r\n\t\treturn this.getExporting();\r\n\t}\r\n\r\n\t/**\r\n\t * This is here as a method so that inheriting classes could override it.\r\n\t *\r\n\t * @return Export instance\r\n\t */\r\n\tprotected getExporting(): Export {\r\n\t\tlet _export = this._exporting.get();\r\n\r\n\t\tif (_export) {\r\n\t\t\treturn _export;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.isStandaloneInstance || !this.parent) {\r\n\t\t\t\t_export = new Export(this.svgContainer.SVGContainer);\r\n\t\t\t\t_export.sprite = this;\r\n\t\t\t\t_export.language = this.language;\r\n\t\t\t\t_export.numberFormatter = this.numberFormatter;\r\n\t\t\t\t_export.dateFormatter = this.dateFormatter;\r\n\t\t\t\t_export.durationFormatter = this.durationFormatter;\r\n\t\t\t\tthis._exporting.set(_export, _export);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn this.parent.exporting;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn _export;\r\n\t}\r\n\r\n\t/**\r\n\t * If set to `false` this element will be omitted when exporting the chart\r\n\t * to an image.\r\n\t *\r\n\t * @default true\r\n\t * @param value Export?\r\n\t */\r\n\tpublic set exportable(value: boolean) {\r\n\t\tconst svgContainer = this.svgContainer;\r\n\t\tthis._exportable = value;\r\n\t\tif (svgContainer) {\r\n\t\t\tif (value) {\r\n\t\t\t\t$array.remove(svgContainer.nonExportableSprites, this);\r\n\t\t\t}\r\n\t\t\telse if ($array.indexOf(svgContainer.nonExportableSprites, this) == -1) {\r\n\t\t\t\tsvgContainer.nonExportableSprites.push(this);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Export?\r\n\t */\r\n\tpublic get exportable(): boolean {\r\n\t\treturn this._exportable;\r\n\t\t/*const svgContainer = this.svgContainer;\r\n\t\treturn !svgContainer || $array.indexOf(svgContainer.nonExportableSprites, this) == -1;*/\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * MODAL/POPUP RELATED STUFF\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Private method to be used for \"classPrefix\" adapter for modals/popups.\r\n\t *\r\n\t * @param value Prefix\r\n\t */\r\n\tprivate modalPrefix(value: string) {\r\n\t\tvalue = options.classNamePrefix + value;\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a [[Modal]] instance, associated with this chart.\r\n\t * (elements top parent)\r\n\t *\r\n\t * Accessing modal does not make it appear. To make a modal appear, use\r\n\t * `showModal()` method.\r\n\t *\r\n\t * @see {@link Modal} for more information about using Modal windows\r\n\t * @return Modal instance\r\n\t */\r\n\tpublic get modal(): Optional<Modal> {\r\n\t\tconst svgContainer = this.svgContainer;\r\n\t\tif (svgContainer) {\r\n\t\t\tconst modal = svgContainer.modal;\r\n\t\t\tif (!modal.adapter.has(\"classPrefix\", this.modalPrefix)) {\r\n\t\t\t\tmodal.adapter.add(\"classPrefix\", this.modalPrefix);\r\n\t\t\t}\r\n\t\t\treturn modal;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Opens a modal window with specific content (`text` parameter) and,\r\n\t * optionally, `title`.\r\n\t *\r\n\t * The `text` parameter can contain HTML content.\r\n\t *\r\n\t * @see {@link Modal} for more information about using Modal windows\r\n\t * @param text Modal contents\r\n\t * @param title Title for the modal window\r\n\t */\r\n\tpublic openModal(text: string, title?: string): Optional<Modal> {\r\n\t\tconst svgContainer = this.svgContainer;\r\n\t\tif (svgContainer) {\r\n\t\t\treturn svgContainer.openModal(text, title);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Hides modal window if there is one currently open.\r\n\t */\r\n\tpublic closeModal(): void {\r\n\t\tconst svgContainer = this.svgContainer;\r\n\t\tif (svgContainer) {\r\n\t\t\tsvgContainer.closeModal();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A list of popups for this chart.\r\n\t *\r\n\t * @return Popups\r\n\t */\r\n\tpublic get popups(): Optional<ListTemplate<Popup>> {\r\n\t\tconst svgContainer = this.svgContainer;\r\n\t\tif (svgContainer) {\r\n\t\t\tconst popups = svgContainer.popups;\r\n\t\t\tpopups.template.sprite = this;\r\n\r\n\t\t\tif (!popups.template.adapter.has(\"classPrefix\", this.modalPrefix)) {\r\n\t\t\t\tpopups.template.adapter.add(\"classPrefix\", this.modalPrefix);\r\n\t\t\t}\r\n\t\t\treturn popups;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Creates, opens, and returns a new [[Popup]] window.\r\n\t *\r\n\t * `text` can be any valid HTML.\r\n\t *\r\n\t * `title` is currently not supported.\r\n\t *\r\n\t * @param text Popup contents\r\n\t * @param title Popup title\r\n\t * @return Popup instance\r\n\t */\r\n\tpublic openPopup(text: string, title?: string): Optional<Popup> {\r\n\t\tconst svgContainer = this.svgContainer;\r\n\t\tif (svgContainer) {\r\n\t\t\treturn svgContainer.openPopup(text, title);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Closes all currently open popup windows\r\n\t */\r\n\tpublic closeAllPopups(): void {\r\n\t\tconst svgContainer = this.svgContainer;\r\n\t\tif (svgContainer) {\r\n\t\t\tsvgContainer.closeAllPopups();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * POSITIONAL PROPERTIES AND RELATED STUFF\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Element's absolute or relative X coordinate.\r\n\t *\r\n\t * If setting both X and Y, please consider using `moveTo()` method instead,\r\n\t * as it will be faster to set both coordinates at once.\r\n\t *\r\n\t * @param value X coordinate\r\n\t */\r\n\tpublic set x(value: number | Percent) {\r\n\t\tif (!this.isDragged) {\r\n\t\t\tthis.setPercentProperty(\"x\", value, false, true, this._positionPrecision, true);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return X coordinate\r\n\t */\r\n\tpublic get x(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"x\");\r\n\t}\r\n\r\n\t/**\r\n\t * Returns element's current absolute X coordinate in pixels.\r\n\t *\r\n\t * @readonly\r\n\t * @return X coordinate (px)\r\n\t */\r\n\tpublic get pixelX(): number {\r\n\t\tlet value = $math.fitToRange(this.getPixelX(this.x), this.minX, this.maxX);\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"pixelX\", value);\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns element's current relative X coordinate in [[Percent]].\r\n\t *\r\n\t * @return X coordinate ([[Percent]])\r\n\t */\r\n\tpublic get relativeX(): number {\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn this.getRelativeX(this.x)\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"relativeX\", this.getRelativeX(this.x));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * The smallest allowable absolute X coordinate for this element.\r\n\t *\r\n\t * This is used to contain element movement within certain boundaries.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Min X (px)\r\n\t */\r\n\tpublic set minX(value: number) {\r\n\t\tif ($type.isNumber(value)) {\r\n\t\t\tvalue = $math.round(value, this._positionPrecision, true);\r\n\t\t\tthis.setPropertyValue(\"minX\", value, false, true);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Min X (px)\r\n\t */\r\n\tpublic get minX(): number {\r\n\t\treturn this.getPropertyValue(\"minX\");\r\n\t}\r\n\r\n\t/**\r\n\t * The biggest allowable absolute X coordinate for this element.\r\n\t *\r\n\t * This is used to contain element movement within certain boundaries.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Max X (px)\r\n\t */\r\n\tpublic set maxX(value: number) {\r\n\t\tif ($type.isNumber(value)) {\r\n\t\t\tvalue = $math.round(value, this._positionPrecision, true);\r\n\t\t\tthis.setPropertyValue(\"maxX\", value, false, true);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Max X (px)\r\n\t */\r\n\tpublic get maxX(): number {\r\n\t\treturn this.getPropertyValue(\"maxX\");\r\n\t}\r\n\r\n\t/**\r\n\t * Element's absolute or relative Y coordinate.\r\n\t *\r\n\t * If setting both X and Y, please consider using `moveTo()` method instead,\r\n\t * as it will be faster to set both coordinates at once.\r\n\t *\r\n\t * @param value Y coordinate\r\n\t */\r\n\tpublic set y(value: number | Percent) {\r\n\t\tif (!this.isDragged) {\r\n\t\t\tthis.setPercentProperty(\"y\", value, false, true, this._positionPrecision, true);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Y coordinate\r\n\t */\r\n\tpublic get y(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"y\");\r\n\t}\r\n\r\n\t/**\r\n\t * Returns element's current absolute Y coordinate in pixels.\r\n\t *\r\n\t * @readonly\r\n\t * @return Y coordinate (px)\r\n\t */\r\n\tpublic get pixelY(): number {\r\n\t\tlet value = $math.fitToRange(this.getPixelY(this.y), this.minY, this.maxY);\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"pixelY\", value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns element's current relative Y coordinate in [[Percent]].\r\n\t *\r\n\t * @readonly\r\n\t * @return Y coordinate ([[Percent]])\r\n\t */\r\n\tpublic get relativeY(): number {\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn this.getRelativeX(this.y);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"relativeY\", this.getRelativeX(this.y));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * The smallest allowable absolute Y coordinate for this element.\r\n\t *\r\n\t * This is used to contain element movement within certain boundaries.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Min Y (px)\r\n\t */\r\n\tpublic set minY(value: number) {\r\n\t\tif ($type.isNumber(value)) {\r\n\t\t\tvalue = $math.round(value, this._positionPrecision, true);\r\n\t\t\tthis.setPropertyValue(\"minY\", value, false, true);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Min Y (px)\r\n\t */\r\n\tpublic get minY(): number {\r\n\t\treturn this.getPropertyValue(\"minY\");\r\n\t}\r\n\r\n\t/**\r\n\t * The biggest allowable absolute Y coordinate for this element.\r\n\t *\r\n\t * This is used to contain element movement within certain boundaries.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Max Y (px)\r\n\t */\r\n\tpublic set maxY(value: number) {\r\n\t\tif ($type.isNumber(value)) {\r\n\t\t\tvalue = $math.round(value, this._positionPrecision, true);\r\n\t\t\tthis.setPropertyValue(\"maxY\", value, false, true);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Max Y (px)\r\n\t */\r\n\tpublic get maxY(): number {\r\n\t\treturn this.getPropertyValue(\"maxY\");\r\n\t}\r\n\r\n\t/**\r\n\t * A horizontal offset for the element in pixels.\r\n\t *\r\n\t * Can be negative value for offset to the left.\r\n\t *\r\n\t * @param value Horizontal offset (px)\r\n\t */\r\n\tpublic set dx(value: number) {\r\n\t\tif ($type.isNumber(value)) {\r\n\t\t\tvalue = $math.round(value, this._positionPrecision, true);\r\n\t\t\tthis.setPropertyValue(\"dx\", value, false, true);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Horizontal offset (px)\r\n\t */\r\n\tpublic get dx(): number {\r\n\t\treturn this.getPropertyValue(\"dx\");\r\n\t}\r\n\r\n\t/**\r\n\t * A vertical offset for the element in pixels.\r\n\t *\r\n\t * Can be negative value for offset upwards.\r\n\t *\r\n\t * @param value Vertical offset (px)\r\n\t */\r\n\tpublic set dy(value: number) {\r\n\t\tif ($type.isNumber(value)) {\r\n\t\t\tvalue = $math.round(value, this._positionPrecision, true);\r\n\t\t\tthis.setPropertyValue(\"dy\", value, false, true);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Vertical offset (px)\r\n\t */\r\n\tpublic get dy(): number {\r\n\t\treturn this.getPropertyValue(\"dy\");\r\n\t}\r\n\r\n\t/**\r\n\t * Rotation of the element in degrees. (0-360)\r\n\t *\r\n\t * @param value Rotation (0-360)\r\n\t */\r\n\tpublic set rotation(value: number) {\r\n\t\tvalue = $type.toNumber(value);\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = 0;\r\n\t\t}\r\n\t\tthis.setPropertyValue(\"rotation\", value, false, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Rotation (0-360)\r\n\t */\r\n\tpublic get rotation(): number {\r\n\t\treturn this.getPropertyValue(\"rotation\");\r\n\t}\r\n\r\n\t/**\r\n\t * Controls horizontal alignment of the element.\r\n\t *\r\n\t * This is used by parent [[Container]] when layouting its children.\r\n\t *\r\n\t * @param value Horizontal align\r\n\t */\r\n\tpublic set align(value: Align) {\r\n\t\tvalue = <Align>$type.toText(value);\r\n\t\tif (this.setPropertyValue(\"align\", value)) {\r\n\t\t\tif (this.parent) {\r\n\t\t\t\tthis.parent.invalidateLayout();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Horizontal align\r\n\t */\r\n\tpublic get align(): Align {\r\n\t\treturn this.getPropertyValue(\"align\");\r\n\t}\r\n\r\n\t/**\r\n\t * Controls vertical alignment of the element.\r\n\t *\r\n\t * This is used by parent [[Container]] when layouting its children.\r\n\t *\r\n\t * @param value Vertical align\r\n\t */\r\n\tpublic set valign(value: VerticalAlign) {\r\n\t\tvalue = <VerticalAlign>$type.toText(value);\r\n\t\tif (this.setPropertyValue(\"valign\", value)) {\r\n\t\t\tif (this.parent) {\r\n\t\t\t\tthis.parent.invalidateLayout();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Vertical align\r\n\t */\r\n\tpublic get valign(): VerticalAlign {\r\n\t\treturn this.getPropertyValue(\"valign\");\r\n\t}\r\n\r\n\t/**\r\n\t * Controls which part of the element to treat as a horizontal center.\r\n\t *\r\n\t * The setting will be used when positioning, resizing and rotating the\r\n\t * element.\r\n\t *\r\n\t * @param value Horizontal center\r\n\t */\r\n\tpublic set horizontalCenter(value: HorizontalCenter) {\r\n\t\tvalue = <HorizontalCenter>$type.toText(value);\r\n\t\tif (this.setPropertyValue(\"horizontalCenter\", value)) {\r\n\t\t\tthis.updateCenter();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Horizontal center\r\n\t */\r\n\tpublic get horizontalCenter(): HorizontalCenter {\r\n\t\treturn this.getPropertyValue(\"horizontalCenter\");\r\n\t}\r\n\r\n\t/**\r\n\t * Controls which part of the element to treat as a vertical center.\r\n\t *\r\n\t * The setting will be used when positioning, resizing and rotating the\r\n\t * element.\r\n\t *\r\n\t * @param value Vertical center\r\n\t */\r\n\tpublic set verticalCenter(value: VerticalCenter) {\r\n\t\tvalue = <VerticalCenter>$type.toText(value);\r\n\t\tif (this.setPropertyValue(\"verticalCenter\", value)) {\r\n\t\t\tthis.updateCenter();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Vertical center\r\n\t */\r\n\tpublic get verticalCenter(): VerticalCenter {\r\n\t\treturn this.getPropertyValue(\"verticalCenter\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * DIMENSIONAL PROPERTIES AND RELATED STUFF\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Maximum allowed width for the element in pixels.\r\n\t *\r\n\t * @param value Maximum width (px)\r\n\t */\r\n\tpublic set maxWidth(value: number) {\r\n\t\tthis.setMaxWidth(value);\r\n\t}\r\n\r\n\tprotected setMaxWidth(value: number) {\r\n\t\tlet prevWidth = this.maxWidth;\r\n\t\tlet prevHeight = this.maxHeight;\r\n\t\tif (this.setPropertyValue(\"maxWidth\", value)) {\r\n\t\t\tif ($type.isNumber(this.relativeWidth)) {\r\n\t\t\t\tthis.invalidate();\r\n\t\t\t}\r\n\r\n\t\t\tconst event: AMEvent<this, ISpriteEvents>[\"maxsizechanged\"] = {\r\n\t\t\t\ttype: \"maxsizechanged\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\tpreviousWidth: prevWidth,\r\n\t\t\t\tpreviousHeight: prevHeight\r\n\t\t\t};\r\n\r\n\t\t\tthis.dispatchImmediately(\"maxsizechanged\", event);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Maximum width (px)\r\n\t */\r\n\tpublic get maxWidth(): number {\r\n\t\tlet maxWidth = this.getPropertyValue(\"maxWidth\");\r\n\r\n\t\tif (!$type.isNumber(maxWidth)) {\r\n\t\t\tif (this.parent) {\r\n\t\t\t\tlet parentWidth = this.parent.maxWidth;\r\n\t\t\t\tif (this.parent.layout != \"absolute\" && this.align != \"none\" && this.align != undefined) {\r\n\t\t\t\t\tparentWidth = parentWidth - this.pixelMarginLeft - this.pixelMarginRight;\r\n\t\t\t\t}\r\n\t\t\t\treturn parentWidth;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn maxWidth;\r\n\t}\r\n\r\n\t/**\r\n\t * Maximum allowed height for the element in pixels.\r\n\t *\r\n\t * @param value Maximum height (px)\r\n\t */\r\n\tpublic set maxHeight(value: number) {\r\n\t\tthis.setMaxHeight(value);\r\n\t}\r\n\r\n\tprotected setMaxHeight(value: number) {\r\n\r\n\t\tlet prevWidth = this.maxWidth;\r\n\t\tlet prevHeight = this.maxHeight;\r\n\r\n\t\tif (this.setPropertyValue(\"maxHeight\", value)) {\r\n\r\n\t\t\tif ($type.isNumber(this.relativeHeight)) {\r\n\t\t\t\tthis.invalidate();\r\n\t\t\t}\r\n\r\n\t\t\tconst event: AMEvent<this, ISpriteEvents>[\"maxsizechanged\"] = {\r\n\t\t\t\ttype: \"maxsizechanged\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\tpreviousWidth: prevWidth,\r\n\t\t\t\tpreviousHeight: prevHeight\r\n\t\t\t};\r\n\r\n\t\t\tthis.dispatchImmediately(\"maxsizechanged\", event);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Maximum height (px)\r\n\t */\r\n\tpublic get maxHeight(): number {\r\n\t\tlet maxHeight = this.getPropertyValue(\"maxHeight\");\r\n\t\tif (!$type.isNumber(maxHeight)) {\r\n\t\t\tif (this.parent) {\r\n\t\t\t\tlet parentHeight = this.parent.maxHeight;\r\n\t\t\t\tif (this.parent.layout != \"absolute\" && this.valign != \"none\" && this.valign != undefined) {\r\n\t\t\t\t\tparentHeight = parentHeight - this.pixelMarginTop - this.pixelMarginBottom;\r\n\t\t\t\t}\r\n\t\t\t\treturn parentHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn maxHeight;\r\n\t}\r\n\r\n\t/**\r\n\t * Minimum width of the element in pixels.\r\n\t *\r\n\t * Set to `undefined` to remove the limit.\r\n\t *\r\n\t * @param value Minimum width (px)\r\n\t */\r\n\tpublic set minWidth(value: Optional<number>) {\r\n\t\tthis.setPropertyValue(\"minWidth\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Minimum width (px)\r\n\t */\r\n\tpublic get minWidth(): Optional<number> {\r\n\t\treturn this.getPropertyValue(\"minWidth\");\r\n\t}\r\n\r\n\t/**\r\n\t * Minimum height for the element in pixels.\r\n\t *\r\n\t * Set to `undefined` to remove the limit.\r\n\t *\r\n\t * @param value Minimum height (px)\r\n\t */\r\n\tpublic set minHeight(value: Optional<number>) {\r\n\t\tthis.setPropertyValue(\"minHeight\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Minimum height (px)\r\n\t */\r\n\tpublic get minHeight(): Optional<number> {\r\n\t\treturn this.getPropertyValue(\"minHeight\");\r\n\t}\r\n\r\n\t/**\r\n\t * Element's absolute or relative width.\r\n\t *\r\n\t * The width can either be absolute, set in numeric pixels, or relative, set\r\n\t * in [[Percent]].\r\n\t *\r\n\t * Relative width will be calculated using closest measured ancestor\r\n\t * [[Container]].\r\n\t *\r\n\t * @param value Width (numeric in pixels or relative)\r\n\t */\r\n\tpublic set width(value: number | Percent) {\r\n\r\n\t\tlet changed: boolean = this.setPercentProperty(\"width\", value, true, false, this._positionPrecision, true);\r\n\r\n\t\tif (changed) {\r\n\t\t\tthis.percentWidth = undefined;\r\n\t\t\tthis.relativeWidth = undefined;\r\n\r\n\t\t\tif (value instanceof Percent) {\r\n\t\t\t\tthis.percentWidth = value.percent;\r\n\t\t\t\tif ($type.isNumber(this._pixelWidth)) {\r\n\t\t\t\t\tthis.maxWidth = undefined;\r\n\t\t\t\t}\r\n\t\t\t\tthis._pixelWidth = undefined;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis._pixelWidth = Number(value);\r\n\t\t\t\t//this._measuredWidth = this._pixelWidth;\r\n\t\t\t\tthis.maxWidth = this._pixelWidth;\r\n\t\t\t}\r\n\t\t\tthis.invalidatePosition();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Width (absolute or relative)\r\n\t */\r\n\tpublic get width(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"width\");\r\n\t}\r\n\r\n\t/**\r\n\t * Element's absolute or relative height.\r\n\t *\r\n\t * The height can either be absolute, set in numeric pixels, or relative, set\r\n\t * in [[Percent]].\r\n\t *\r\n\t * Relative height will be calculated using closest measured ancestor\r\n\t * [[Container]].\r\n\t *\r\n\t * @param value Height (numeric in pixels or relative)\r\n\t */\r\n\tpublic set height(value: number | Percent) {\r\n\r\n\t\tlet changed: boolean = this.setPercentProperty(\"height\", value, true, false, this._positionPrecision, true);\r\n\r\n\t\tif (changed) {\r\n\t\t\tthis.percentHeight = undefined;\r\n\t\t\tthis._relativeHeight = undefined;\r\n\r\n\t\t\tif (value instanceof Percent) {\r\n\t\t\t\tthis.percentHeight = value.percent;\r\n\t\t\t\tif ($type.isNumber(this._pixelHeight)) {\r\n\t\t\t\t\tthis.maxHeight = undefined;\r\n\t\t\t\t}\r\n\t\t\t\tthis._pixelHeight = undefined;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis._pixelHeight = Number(value);\r\n\t\t\t\t//this._measuredHeight = this._pixelHeight;\r\n\t\t\t\tthis.maxHeight = this._pixelHeight; // yes, we reset maxWidth\r\n\t\t\t}\r\n\r\n\t\t\tthis.invalidatePosition();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return height (absolute or relative)\r\n\t */\r\n\tpublic get height(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"height\");\r\n\t}\r\n\r\n\t/**\r\n\t * Returns element's width in pixels, if width was set. For actual width use measuredWidth property.\r\n\t *\r\n\t * @readonly\r\n\t * @return Width (px)\r\n\t */\r\n\tpublic get pixelWidth(): number {\r\n\t\tlet width: number;\r\n\t\tif ($type.isNumber(this.percentWidth)) {\r\n\t\t\twidth = this.maxWidth;\r\n\t\t}\r\n\t\telse if ($type.isNumber(this._pixelWidth)) {\r\n\t\t\twidth = this._pixelWidth;\r\n\t\t}\r\n\t\telse {\r\n\t\t\twidth = 0;\r\n\t\t}\r\n\r\n\t\tconst minWidth = this.minWidth;\r\n\r\n\t\tif (minWidth != null && width < minWidth) {\r\n\t\t\twidth = minWidth;\r\n\t\t}\r\n\t\tlet value = $math.round(width, this._positionPrecision, true);\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"pixelWidth\", value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns element's height in pixels. For actual height use measuredHeight property.\r\n\t *\r\n\t * @readonly\r\n\t * @return Height (px)\r\n\t */\r\n\tpublic get pixelHeight(): number {\r\n\t\tlet height: number;\r\n\t\tif ($type.isNumber(this.percentHeight)) {\r\n\t\t\theight = this.maxHeight;\r\n\t\t}\r\n\t\telse if ($type.isNumber(this._pixelHeight)) {\r\n\t\t\theight = this._pixelHeight;\r\n\t\t}\r\n\t\telse {\r\n\t\t\theight = 0//this._measuredHeightSelf;\r\n\t\t}\r\n\r\n\t\tconst minHeight = this.minHeight;\r\n\r\n\t\tif (minHeight != null && height < minHeight) {\r\n\t\t\theight = minHeight;\r\n\t\t}\r\n\t\tlet value = $math.round(height, this._positionPrecision, true);\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"pixelHeight\", value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Element's relative width in [[Percent]].\r\n\t * @ignore\r\n\t *\r\n\t * @param value Relative width\r\n\t */\r\n\tpublic set relativeWidth(value: $type.Optional<number>) {\r\n\t\tif (this._relativeWidth != value) {\r\n\t\t\tthis._relativeWidth = value;\r\n\t\t\t//\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Relative width\r\n\t * @ignore\r\n\t */\r\n\tpublic get relativeWidth(): $type.Optional<number> {\r\n\t\tconst relativeWidth = this._relativeWidth;\r\n\r\n\t\tif ($type.isNumber(relativeWidth)) {\r\n\t\t\tif (!this._adapterO) {\r\n\t\t\t\treturn relativeWidth;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn this._adapterO.apply(\"relativeWidth\", relativeWidth);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Element's relative height in [[Percent]].\r\n\t *\r\n\t * @param value Relative height\r\n\t * @ignore\r\n\t */\r\n\tpublic set relativeHeight(value: $type.Optional<number>) {\r\n\t\tif (this._relativeHeight != value) {\r\n\t\t\tthis._relativeHeight = value;\r\n\t\t\t//\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Relative height\r\n\t * @ignore\r\n\t */\r\n\tpublic get relativeHeight(): $type.Optional<number> {\r\n\t\tconst relativeHeight = this._relativeHeight;\r\n\r\n\t\tif ($type.isNumber(relativeHeight)) {\r\n\t\t\tif (!this._adapterO) {\r\n\t\t\t\treturn relativeHeight;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn this._adapterO.apply(\"relativeHeight\", relativeHeight);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns element's measured width in pixels.\r\n\t *\r\n\t * A measured width is actual width of contents plus `paddingRight` and* `paddingLeft`, relative to sprite parent, meaning that\r\n\t * rotation and scale is taken into account.\r\n\t *\r\n\t * @readonly\r\n\t * @return Width (px)\r\n\t */\r\n\tpublic get measuredWidth(): number {\r\n\r\n\t\tif (this.disabled || this.__disabled) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn this._measuredWidth;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"measuredWidth\", this._measuredWidth);\r\n\t\t}\r\n\t\t// it's not good to fit to min/max range as then rotations and scale won't be taken into account\r\n\t\t//return this.adapter.apply(\"measuredWidth\", $math.fitToRange(this._measuredWidth, this.minWidth, this.maxWidth));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns elements's measured height in pixels.\r\n\t *\r\n\t * A measured height is actual height of contents plus `paddingTop` and `paddingBottom`, relative to sprite parent, meaning that\r\n\t * rotation and scale taken into account.\r\n\t *\r\n\t * @readonly\r\n\t * @return Height (px)\r\n\t */\r\n\tpublic get measuredHeight(): number {\r\n\r\n\t\tif (this.disabled || this.__disabled) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// it's not good to fit to min/max range as then rotations and scale won't be taken into account\r\n\t\t//return this.adapter.apply(\"measuredHeight\", $math.fitToRange(this._measuredHeight, this.minHeight, this.maxHeight));\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn this._measuredHeight;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"measuredHeight\", this._measuredHeight);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns element's measured width plus its left and right margins in\r\n\t * pixels.\r\n\t *\r\n\t * @readonly\r\n\t * @return Outer width (px)\r\n\t */\r\n\tpublic get outerWidth(): number {\r\n\t\tlet value = this.pixelWidth + this.pixelMarginRight + this.pixelMarginLeft;\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"outerWidth\", value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns element's measured height plus its top and bottom margins in\r\n\t * pixels.\r\n\t *\r\n\t * @readonly\r\n\t * @return Outer height (px)\r\n\t */\r\n\tpublic get outerHeight(): number {\r\n\t\tlet value = this.pixelHeight + this.pixelMarginTop + this.pixelMarginBottom;\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"outerHeight\", value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns element's measured inner width in pixels.\r\n\t *\r\n\t * Inner width is actual available space for content, e.g. element's width\r\n\t * minus horizontal padding.\r\n\t *\r\n\t * @readonly\r\n\t * @return Inner width (px)\r\n\t */\r\n\tpublic get innerWidth(): number {\r\n\t\tlet value = Math.max(0, this.pixelWidth - this.pixelPaddingRight - this.pixelPaddingLeft);\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"innerWidth\", value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns element's measured inner height in pixels.\r\n\t *\r\n\t * Inner height is actual available space for content, e.g. element's height\r\n\t * minus vertical padding.\r\n\t *\r\n\t * @readonly\r\n\t * @return Inner height (px)\r\n\t */\r\n\tpublic get innerHeight(): number {\r\n\t\tlet value = Math.max(0, this.pixelHeight - this.pixelPaddingTop - this.pixelPaddingBottom);\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"innerHeight\", value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns element's current \"global\" scale.\r\n\t *\r\n\t * Scale values accumulate over hierarchy of elements.\r\n\t *\r\n\t * E.g. if a [[Container]] has `scale = 2` and it's child has a `scale = 2`,\r\n\t * the child's `globalScale` will be 4. (a multitude of `2 x 2`)\r\n\t *\r\n\t * @readonly\r\n\t * @return Global scale\r\n\t */\r\n\tpublic get globalScale(): number {\r\n\t\tlet scale: number = this.scale;\r\n\t\tif (this.parent) {\r\n\t\t\tscale = scale * this.parent.globalScale;\r\n\t\t}\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn scale;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"globalScale\", scale);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Scale of the element.\r\n\t *\r\n\t * The scale is set from 0 (element reduced to nothing) to 1 (default size).\r\n\t * * 2 will mean element is increased twice.\r\n\t * * 0.5 - reduced by 50%.\r\n\t *\r\n\t * Etc.\r\n\t *\r\n\t * @param value Scale (0-1)\r\n\t */\r\n\tpublic set scale(value: number) {\r\n\t\tvalue = $type.toNumber(value);\r\n\t\tif (value < 0) {\r\n\t\t\tvalue = 0;\r\n\t\t}\r\n\t\tif (value != this.getPropertyValue(\"scale\")) {\r\n\t\t\tthis.setPropertyValue(\"scale\", value, false, true);\r\n\t\t\tthis.handleGlobalScale();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Scale (0-1)\r\n\t */\r\n\tpublic get scale(): number {\r\n\t\treturn this.getPropertyValue(\"scale\");\r\n\t}\r\n\r\n\t/**\r\n\t * Sets all four margins for the element at once.\r\n\t *\r\n\t * Margins are set in pixels.\r\n\t *\r\n\t * @param top Top margin\r\n\t * @param right Right margin\r\n\t * @param bottom Bottom margin\r\n\t * @param left Left margin\r\n\t * @return Current element\r\n\t */\r\n\tpublic margin(top: number, right: number, bottom: number, left: number): Sprite {\r\n\t\tthis.marginTop = top;\r\n\t\tthis.marginRight = right;\r\n\t\tthis.marginBottom = bottom;\r\n\t\tthis.marginLeft = left;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Left margin - absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @param value Margin value\r\n\t */\r\n\tpublic set marginLeft(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"marginLeft\", value, true, true, this._positionPrecision, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Margin value\r\n\t */\r\n\tpublic get marginLeft(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"marginLeft\");\r\n\t}\r\n\r\n\t/**\r\n\t * Right margin - absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @param value Margin value\r\n\t */\r\n\tpublic set marginRight(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"marginRight\", value, true, true, this._positionPrecision, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Margin value\r\n\t */\r\n\tpublic get marginRight(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"marginRight\");\r\n\t}\r\n\r\n\t/**\r\n\t * Top margin - absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @param value Margin value\r\n\t */\r\n\tpublic set marginTop(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"marginTop\", value, true, true, this._positionPrecision, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Margin value\r\n\t */\r\n\tpublic get marginTop(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"marginTop\");\r\n\t}\r\n\r\n\t/**\r\n\t * Bottom margin - absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @param value Margin value\r\n\t */\r\n\tpublic set marginBottom(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"marginBottom\", value, true, true, this._positionPrecision, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Margin value\r\n\t */\r\n\tpublic get marginBottom(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"marginBottom\");\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current right margin in pixels.\r\n\t *\r\n\t * @readonly\r\n\t * @return Right margin (px)\r\n\t */\r\n\tpublic get pixelMarginRight(): number {\r\n\t\tlet value = this.getPixelX(this.marginRight);\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"pixelMarginRight\", value);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current relative right margin.\r\n\t *\r\n\t * @readonly\r\n\t * @return Relative right margin\r\n\t */\r\n\tpublic get relativeMarginRight(): number {\r\n\t\t// @todo Maybe use [[Percent]]?\r\n\t\tlet value = this.getRelativeX(this.marginRight);\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"relativeMarginRight\", value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current left margin in pixels.\r\n\t *\r\n\t * @readonly\r\n\t * @return Left margin (px)\r\n\t */\r\n\tpublic get pixelMarginLeft(): number {\r\n\t\tlet value = this.getPixelX(this.marginLeft);\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"pixelMarginLeft\", value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current relative left margin.\r\n\t *\r\n\t * @readonly\r\n\t * @return Relative left margin\r\n\t */\r\n\tpublic get relativeMarginLeft(): number {\r\n\t\t//@todo Maybe use [[Percent]]?\r\n\t\tlet value = this.getRelativeX(this.marginLeft);\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"relativeMarginLeft\", value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current top margin in pixels.\r\n\t *\r\n\t * @readonly\r\n\t * @return Top margin (px)\r\n\t */\r\n\tpublic get pixelMarginTop(): number {\r\n\t\tlet value = this.getPixelY(this.marginTop);\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"pixelMarginTop\", value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current relative top margin.\r\n\t *\r\n\t * @readonly\r\n\t * @return Relative top margin\r\n\t */\r\n\tpublic get relativeMarginTop(): number {\r\n\t\t// @todo Maybe use [[Percent]]?\r\n\t\tlet value = this.getRelativeY(this.marginTop);\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"relativeMarginTop\", value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current bottom margin in pixels.\r\n\t *\r\n\t * @readonly\r\n\t * @return Bottom margin (px)\r\n\t */\r\n\tpublic get pixelMarginBottom(): number {\r\n\t\tlet value = this.getPixelY(this.marginBottom);\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"pixelMarginBottom\", value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current relative bottom margin.\r\n\t *\r\n\t * @readonly\r\n\t * @return Relative bottom margin\r\n\t */\r\n\tpublic get relativeMarginBottom(): number {\r\n\t\t// @todo Maybe use [[Percent]]?\r\n\t\tlet value = this.getRelativeY(this.marginBottom);\r\n\t\tif (!this._adapterO) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._adapterO.apply(\"relativeMarginBottom\", value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets padding for the element in pixels.\r\n\t *\r\n\t * @param top Top padding (px)\r\n\t * @param right Right padding (px)\r\n\t * @param bottom Bottom padding (px)\r\n\t * @param left Left padding (px)\r\n\t * @return Element\r\n\t */\r\n\tpublic padding(top: number, right: number, bottom: number, left: number): Sprite {\r\n\t\tthis.paddingTop = top;\r\n\t\tthis.paddingRight = right;\r\n\t\tthis.paddingBottom = bottom;\r\n\t\tthis.paddingLeft = left;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Left padding - absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @param value Padding value\r\n\t */\r\n\tpublic set paddingLeft(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"paddingLeft\", value, true, true, this._positionPrecision, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Padding value\r\n\t */\r\n\tpublic get paddingLeft(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"paddingLeft\");\r\n\t}\r\n\r\n\t/**\r\n\t * Right padding - absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @param value Padding value\r\n\t */\r\n\tpublic set paddingRight(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"paddingRight\", value, true, true, this._positionPrecision, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Padding value\r\n\t */\r\n\tpublic get paddingRight(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"paddingRight\");\r\n\t}\r\n\r\n\t/**\r\n\t * Top padding - absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @param value Padding value\r\n\t */\r\n\tpublic set paddingTop(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"paddingTop\", value, true, true, this._positionPrecision, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Padding value\r\n\t */\r\n\tpublic get paddingTop(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"paddingTop\");\r\n\t}\r\n\r\n\t/**\r\n\t * Bottom padding - absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @param value Padding value\r\n\t */\r\n\tpublic set paddingBottom(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"paddingBottom\", value, true, true, this._positionPrecision, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Padding value\r\n\t */\r\n\tpublic get paddingBottom(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"paddingBottom\");\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current right padding in pixels.\r\n\t *\r\n\t * @readonly\r\n\t * @return Right padding (px)\r\n\t */\r\n\tpublic get pixelPaddingRight(): number {\r\n\t\treturn this.getPixelX(this.paddingRight);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current relative right padding.\r\n\t *\r\n\t * @readonly\r\n\t * @return Relative right padding\r\n\t */\r\n\tpublic get relativePaddingRight(): number {\r\n\t\t// @todo Maybe use [[Percent]]?\r\n\t\treturn this.getRelativeX(this.paddingRight);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current left padding in pixels.\r\n\t *\r\n\t * @readonly\r\n\t * @return Left padding (px)\r\n\t */\r\n\tpublic get pixelPaddingLeft(): number {\r\n\t\treturn this.getPixelX(this.paddingLeft);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current relative left padding.\r\n\t *\r\n\t * @readonly\r\n\t * @return Relative left padding\r\n\t */\r\n\tpublic get relativePaddingLeft(): number {\r\n\t\t// @todo Maybe use [[Percent]]?\r\n\t\treturn this.getRelativeX(this.paddingLeft);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current top padding in pixels.\r\n\t *\r\n\t * @readonly\r\n\t * @return Top padding (px)\r\n\t */\r\n\tpublic get pixelPaddingTop(): number {\r\n\t\treturn this.getPixelY(this.paddingTop);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current relative top padding.\r\n\t *\r\n\t * @readonly\r\n\t * @return Relative top padding\r\n\t */\r\n\tpublic get relativePaddingTop(): number {\r\n\t\t// @todo Maybe use [[Percent]]?\r\n\t\treturn this.getRelativeY(this.paddingTop);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current bottom padding in pixels.\r\n\t *\r\n\t * @readonly\r\n\t * @return Bottom padding (px)\r\n\t */\r\n\tpublic get pixelPaddingBottom(): number {\r\n\t\treturn this.getPixelY(this.paddingBottom);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current relative bottom padding.\r\n\t *\r\n\t * @readonly\r\n\t * @return Relative bottom padding\r\n\t */\r\n\tpublic get relativePaddingBottom(): number {\r\n\t\t// @todo Maybe use [[Percent]]?\r\n\t\treturn this.getRelativeY(this.paddingBottom);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * APPEARANCE-RELATED PROPERTIES AND RELATED STUFF\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Path of Sprite element\r\n\t */\r\n\tpublic set path(value: string) {\r\n\t\tthis.setPath(value);\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected setPath(value: string): boolean {\r\n\t\tif (this.setPropertyValue(\"path\", value)) {\r\n\r\n\t\t\tif (!this._isPath) {\r\n\t\t\t\tif (!this.element || (this.element.node && !(this.element.node instanceof SVGPathElement))) {\r\n\t\t\t\t\tthis.element = this.paper.add(\"path\");\r\n\t\t\t\t}\r\n\t\t\t\tthis._isPath = true;\r\n\t\t\t}\r\n\t\t\tif ($type.hasValue(value)) {\r\n\t\t\t\tthis.element.attr({ \"d\": value });\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.element.removeAttr(\"d\");\r\n\t\t\t}\r\n\t\t\tthis.invalidatePosition();\r\n\t\t\t// otherwise is 0x0\r\n\t\t\tif (!this.inited) {\r\n\t\t\t\tthis.events.once(\"inited\", this.validatePosition, this, false);\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Path of a Sprite element\r\n\t */\r\n\tpublic get path(): string {\r\n\t\treturn this.getPropertyValue(\"path\");\r\n\t}\r\n\r\n\t/**\r\n\t * [[ColorModifier]] that can be used to modify color and pattern of the\r\n\t * element's fill, e.g. create gradients.\r\n\t *\r\n\t * @param value Fill color modifiier\r\n\t */\r\n\tpublic set fillModifier(value: ColorModifier) {\r\n\t\tif (this.setPropertyValue(\"fillModifier\", value)) {\r\n\t\t\tthis.setFill(this.fill);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Fill color modifier\r\n\t */\r\n\tpublic get fillModifier(): ColorModifier {\r\n\t\treturn this.getPropertyValue(\"fillModifier\");\r\n\t}\r\n\r\n\t/**\r\n\t * [[ColorModifier]] that can be used to modify color and pattern of the\r\n\t * element's stroke (outline), e.g. create gradients.\r\n\t *\r\n\t * @param value Stroke color modifier\r\n\t */\r\n\tpublic set strokeModifier(value: ColorModifier) {\r\n\t\tthis.setPropertyValue(\"strokeModifier\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Stroke color modifier\r\n\t */\r\n\tpublic get strokeModifier(): ColorModifier {\r\n\t\treturn this.getPropertyValue(\"strokeModifier\");\r\n\t}\r\n\r\n\t/**\r\n\t * Element's fill opacity.\r\n\t *\r\n\t * Opacity ranges from 0 (fully transparent) to 1 (fully opaque).\r\n\t *\r\n\t * @param value Opacity (0-1)\r\n\t */\r\n\tpublic set fillOpacity(value: number) {\r\n\t\tvalue = $math.toNumberRange(value, 0, 1);\r\n\t\tif (this.setPropertyValue(\"fillOpacity\", value)) {\r\n\t\t\tthis.setSVGAttribute({ \"fill-opacity\": value });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Opacity (0-9)\r\n\t */\r\n\tpublic get fillOpacity(): number {\r\n\t\treturn this.getPropertyValue(\"fillOpacity\");\r\n\t}\r\n\r\n\t/**\r\n\t * Element's fill color or pattern.\r\n\t *\r\n\t * @param value Fill\r\n\t */\r\n\tpublic set fill(value: $type.Optional<Color | Pattern | LinearGradient | RadialGradient>) {\r\n\t\tthis.setFill(value);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets actual `fill` property on the SVG element, including applicable color\r\n\t * modifiers.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Fill\r\n\t */\r\n\tprotected setFill(value: $type.Optional<Color | Pattern | LinearGradient | RadialGradient>): void {\r\n\t\tif (!$type.isObject(value)) {\r\n\t\t\tvalue = toColor(value);\r\n\t\t}\r\n\r\n\t\tif (this.setColorProperty(\"fill\", value) || this.fillModifier) {\r\n\t\t\t// this can not go into next if, as value is turned to Gradient\r\n\t\t\tif (value instanceof Color) {\r\n\t\t\t\tif (this.fillModifier) {\r\n\t\t\t\t\tvalue = this.fillModifier.modify(value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.realFill = value;\r\n\r\n\t\t\t// todo: review this place when some Color type will be added\r\n\t\t\tif (value instanceof Color) {\r\n\t\t\t\tthis.setSVGAttribute({ \"fill\": value.toString() });\r\n\t\t\t}\r\n\t\t\telse if (!$type.hasValue(value)) {\r\n\t\t\t\tthis.removeSVGAttribute(\"fill\");\r\n\t\t\t}\r\n\t\t\telse if (<any>value instanceof Pattern || <any>value instanceof LinearGradient || <any>value instanceof RadialGradient) {\r\n\t\t\t\tlet fill = value;\r\n\t\t\t\tfill.paper = this.paper;\r\n\t\t\t\tthis.setSVGAttribute({ \"fill\": \"url(\\\"\" + $utils.getBaseURI() + fill.id + \"\\\")\" });\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Fill\r\n\t */\r\n\tpublic get fill(): $type.Optional<Color | Pattern | LinearGradient | RadialGradient> {\r\n\t\treturn this.getPropertyValue(\"fill\");\r\n\t}\r\n\r\n\t/**\r\n\t * Element's opacity.\r\n\t *\r\n\t * Opacity setting can range from 0 (fully transparent) to 1 (fully opaque).\r\n\t *\r\n\t * ATTENTION: It is highly not recommended to use `opacity` directly on the\r\n\t * element. The charts use `opacity` to hide/show elements, so your setting\r\n\t * might be lost if element is hidden and then later shown.\r\n\t *\r\n\t * Instead use methods `hide()` and `show()` to completely toggle off and on\r\n\t * the element.\r\n\t *\r\n\t * Or, use properties `fillOpacity` and `strokeOpacity`, if you need to make\r\n\t * the element semi-transparent.\r\n\t *\r\n\t * @param value Opacity (0-1)\r\n\t */\r\n\tpublic set opacity(value: number) {\r\n\t\tvalue = $math.toNumberRange(value, 0, 1);\r\n\t\tif (this.setPropertyValue(\"opacity\", value)) {\r\n\t\t\tthis.setSVGAttribute({ \"opacity\": value });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Opacity (0-1)\r\n\t */\r\n\tpublic get opacity(): number {\r\n\t\treturn this.getPropertyValue(\"opacity\");\r\n\t}\r\n\r\n\t/**\r\n\t * Element's stroke (outline) color or pattern.\r\n\t *\r\n\t * @param value Stroke setting\r\n\t */\r\n\tpublic set stroke(value: Color | Pattern | LinearGradient | RadialGradient) {\r\n\t\tthis.setStroke(value);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets actual `stroke` property on the SVG element, including applicable\r\n\t * color modifiers.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Stroke setting\r\n\t */\r\n\tprotected setStroke(value: Color | Pattern | LinearGradient | RadialGradient) {\r\n\t\tif (!$type.isObject(value)) {\r\n\t\t\tvalue = toColor(value);\r\n\t\t}\r\n\r\n\t\tif (this.setColorProperty(\"stroke\", value) || this.strokeModifier) {\r\n\r\n\t\t\t// this can not go into next if, as value is turned to Gradient\r\n\t\t\tif (value instanceof Color) {\r\n\t\t\t\tif (this.strokeModifier) {\r\n\t\t\t\t\tvalue = this.strokeModifier.modify(value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.realStroke = value;\r\n\r\n\t\t\tif (value instanceof Color) {\r\n\t\t\t\tif (value.hex == \"none\") {\r\n\t\t\t\t\tthis.removeSVGAttribute(\"stroke\");\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.setSVGAttribute({ \"stroke\": value.toString() });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (!$type.hasValue(value)) {\r\n\t\t\t\tthis.removeSVGAttribute(\"stroke\");\r\n\t\t\t}\r\n\t\t\telse if (<any>value instanceof Pattern || <any>value instanceof LinearGradient || <any>value instanceof RadialGradient) {\r\n\t\t\t\tlet stroke = value;\r\n\t\t\t\tstroke.paper = this.paper;\r\n\t\t\t\tthis.setSVGAttribute({ \"stroke\": \"url(\\\"\" + $utils.getBaseURI() + stroke.id + \"\\\")\" });\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Stroke setting\r\n\t */\r\n\tpublic get stroke(): Color | Pattern | LinearGradient | RadialGradient {\r\n\t\treturn this.getPropertyValue(\"stroke\");\r\n\t}\r\n\r\n\t/**\r\n\t * Stroke (outline) opacity.\r\n\t *\r\n\t * The values may range from 0 (fully transparent) to 1 (fully opaque).\r\n\t *\r\n\t * @param value Opacity (0-1)\r\n\t */\r\n\tpublic set strokeOpacity(value: number) {\r\n\t\tvalue = $math.toNumberRange(value, 0, 1);\r\n\t\tif (this.setPropertyValue(\"strokeOpacity\", value)) {\r\n\t\t\tthis.setSVGAttribute({ \"stroke-opacity\": value });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Opacity (0-1)\r\n\t */\r\n\tpublic get strokeOpacity(): number {\r\n\t\treturn this.getPropertyValue(\"strokeOpacity\");\r\n\t}\r\n\r\n\t/**\r\n\t * Controls if the element's stroke (outline) should remain keep constant\r\n\t * thicnkess and do not scale when the whole element is resized.\r\n\t *\r\n\t * @param value Do not scale stroke (outline)\r\n\t */\r\n\tpublic set nonScalingStroke(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (this.setPropertyValue(\"nonScalingStroke\", value)) {\r\n\t\t\tthis.strokeWidth = this.strokeWidth;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Do not scale stroke (outline)\r\n\t */\r\n\tpublic get nonScalingStroke(): boolean {\r\n\t\treturn this.getPropertyValue(\"nonScalingStroke\");\r\n\t}\r\n\r\n\t/**\r\n\t * Controls if element should keep constant size and not scale even if there is\r\n\t * space available, or it does not fit.\r\n\t *\r\n\t * @param value Is element scaleable?\r\n\t */\r\n\tpublic set nonScaling(value: boolean) {\r\n\t\t// @todo Description (review)\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tthis.setPropertyValue(\"nonScaling\", value, false, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Is element scaleable?\r\n\t */\r\n\tpublic get nonScaling(): boolean {\r\n\t\treturn this.getPropertyValue(\"nonScaling\");\r\n\t}\r\n\r\n\t/**\r\n\t * Stroke (outline) thickness in pixels.\r\n\t *\r\n\t * @param value Thickness (px)\r\n\t */\r\n\tpublic set strokeWidth(value: number) {\r\n\t\tvalue = $type.toNumber(value);\r\n\t\tthis.setPropertyValue(\"strokeWidth\", value, true);\r\n\r\n\t\tif (this.nonScalingStroke) {\r\n\t\t\tif (!$type.isNumber(value)) {\r\n\t\t\t\tvalue = 1;\r\n\t\t\t}\r\n\t\t\tvalue = value / this.globalScale;\r\n\t\t}\r\n\t\tthis.setSVGAttribute({ \"stroke-width\": value });\r\n\t}\r\n\r\n\t/**\r\n\t * @return Thickness (px)\r\n\t */\r\n\tpublic get strokeWidth(): number {\r\n\t\treturn this.getPropertyValue(\"strokeWidth\");\r\n\t}\r\n\r\n\t/**\r\n\t * A `stroke-dasharray` for the stroke (outline).\r\n\t *\r\n\t * \"Dasharray\" allows setting rules to make lines dashed, dotted, etc.\r\n\t *\r\n\t * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray} for more info on `stroke-dasharray`\r\n\t * @param value `stroke-dasharray`\r\n\t */\r\n\tpublic set strokeDasharray(value: string) {\r\n\t\tvalue = $type.toText(value);\r\n\t\tif (this.setPropertyValue(\"strokeDasharray\", value)) {\r\n\t\t\tthis.setSVGAttribute({ \"stroke-dasharray\": value });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return `stroke-dasharray`\r\n\t */\r\n\tpublic get strokeDasharray(): string {\r\n\t\treturn this.getPropertyValue(\"strokeDasharray\");\r\n\t}\r\n\r\n\t/**\r\n\t * A `stroke-dashoffset` for the stroke (outline).\r\n\t *\r\n\t * \"Dashoffset\" allows setting the start position of the dashes if\r\n\t * `strokeDasharray` is used.\r\n\t *\r\n\t * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dashoffset} for more info on `stroke-dashoffset`\r\n\t * @param value `stroke-dashoffset`\r\n\t */\r\n\tpublic set strokeDashoffset(value: number) {\r\n\t\tvalue = $type.toNumber(value);\r\n\t\tif (this.setPropertyValue(\"strokeDashoffset\", value)) {\r\n\t\t\tthis.setSVGAttribute({ \"stroke-dashoffset\": value });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return `stroke-dashoffset`\r\n\t */\r\n\tpublic get strokeDashoffset(): number {\r\n\t\treturn this.getPropertyValue(\"strokeDashoffset\");\r\n\t}\r\n\r\n\t/**\r\n\t * A `stroke-linecap` to indicate how line ends are drawn.\r\n\t *\r\n\t * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Fills_and_Strokes#Stroke} for more info on `stroke-linecap`\r\n\t * @param value `stroke-linecap`\r\n\t */\r\n\tpublic set strokeLinecap(value: \"butt\" | \"square\" | \"round\") {\r\n\t\tif (this.setPropertyValue(\"strokeLinecap\", value)) {\r\n\t\t\tthis.setSVGAttribute({ \"stroke-linecap\": value });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return `stroke-linecap`\r\n\t */\r\n\tpublic get strokeLinecap(): \"butt\" | \"square\" | \"round\" {\r\n\t\treturn this.getPropertyValue(\"strokeLinecap\");\r\n\t}\r\n\r\n\t/**\r\n\t * A `stroke-linejoin` to indicate how line ends are drawn.\r\n\t *\r\n\t * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Fills_and_Strokes#Stroke} for more info on `stroke-linejoin`\r\n\t * @param value `stroke-linejoin`\r\n\t */\r\n\tpublic set strokeLinejoin(value: \"miter\" | \"round\" | \"bevel\") {\r\n\t\tif (this.setPropertyValue(\"strokeLinejoin\", value)) {\r\n\t\t\tthis.setSVGAttribute({ \"stroke-linejoin\": value });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return `stroke-linejoin`\r\n\t */\r\n\tpublic get strokeLinejoin(): \"miter\" | \"round\" | \"bevel\" {\r\n\t\treturn this.getPropertyValue(\"strokeLinejoin\");\r\n\t}\r\n\r\n\t/**\r\n\t * An SVG-specific `shape-rendering` value.\r\n\t *\r\n\t * `shape-rendering` controls how vector graphics are drawn and rendered.\r\n\t *\r\n\t * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering} for more information about `shape-rendering`\r\n\t * @default \"auto\"\r\n\t * @param value 'shape-rendering' value\r\n\t */\r\n\tpublic set shapeRendering(value: ShapeRendering) {\r\n\t\tvalue = <ShapeRendering>$type.toText(value);\r\n\t\tif (this.setPropertyValue(\"shapeRendering\", value)) {\r\n\t\t\tthis.setSVGAttribute({ \"shape-rendering\": value });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return 'shape-rendering' value\r\n\t */\r\n\tpublic get shapeRendering(): ShapeRendering {\r\n\t\treturn this.getPropertyValue(\"shapeRendering\");\r\n\t}\r\n\r\n\t/**\r\n\t * Controls if SVG vectors should be drawn with \"pixel\" precision, producing\r\n\t * perfectly crisp lines on retina displays.\r\n\t *\r\n\t * Setting this to `true` might improve visual quality, but may have a\r\n\t * negative effect on performance.\r\n\t *\r\n\t * Different elements use different default setting for `pixelPerfect`.\r\n\t *\r\n\t * We recommend leaving this at their default settings, unless there's a\r\n\t * specific need.\r\n\t *\r\n\t * @param value Use pixel perfect?\r\n\t */\r\n\tpublic set pixelPerfect(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (value) {\r\n\t\t\tthis._positionPrecision = 0;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._positionPrecision = 3;\r\n\t\t}\r\n\r\n\t\tthis.setPropertyValue(\"pixelPerfect\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Use pixel perfect?\r\n\t */\r\n\tpublic get pixelPerfect(): boolean {\r\n\t\treturn this.getPropertyValue(\"pixelPerfect\");\r\n\t}\r\n\r\n\t/**\r\n\t * An RTL (right-to-left) setting.\r\n\t *\r\n\t * RTL may affect alignment, text, and other visual properties.\r\n\t *\r\n\t * @param value `true` for to use RTL\r\n\t */\r\n\tpublic set rtl(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tthis._rtl = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return RTL?\r\n\t */\r\n\tpublic get rtl(): boolean {\r\n\t\tif ($type.hasValue(this._rtl)) {\r\n\t\t\treturn this._rtl;\r\n\t\t}\r\n\t\telse if (this.virtualParent) {\r\n\t\t\treturn this.virtualParent.rtl;\r\n\t\t}\r\n\t\telse if (this.parent) {\r\n\t\t\treturn this.parent.rtl;\r\n\t\t}\r\n\t\t//this.rtl = false;\r\n\t\treturn false;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * VISIBILITY AND ORDER PROPERTIES AND RELATED STUFF\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n \t * Reveals hidden element.\r\n \t *\r\n \t * Has no effect if element is already visible.\r\n \t *\r\n \t * If `duration` is not specified, it will use default.\r\n \t *\r\n \t * @param duration Fade in duration (ms)\r\n \t * @return Animation object if such object was created\r\n \t */\r\n\tpublic show(duration?: number): $type.Optional<Animation> {\r\n\t\treturn this.showReal(duration);\r\n\t}\r\n\r\n\t/**\r\n\t * Performs actual operations to reveal this element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param duration Fade in duration (ms)\r\n\t * @return Fade in duration (ms)\r\n\t */\r\n\tprotected showReal(duration?: number): $type.Optional<Animation> {\r\n\t\tif (this.preventShow) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet transition: $type.Optional<Animation>;\r\n\r\n\t\tconst properties = this.defaultState.properties;\r\n\r\n\t\tif (!this.disabled && (this.isHidden || !this.visible || this.isHiding || (properties.opacity != null && this.opacity < properties.opacity && !this.isShowing)) && !this.isDisposed()) {\r\n\r\n\t\t\t// helps to avoid flicker, as show might change opacity or visibility but item might be at invalid state/position\r\n\t\t\tif (this.invalid) {\r\n\t\t\t\tthis.validate();\r\n\t\t\t}\r\n\r\n\t\t\tif (this.positionInvalid) {\r\n\t\t\t\tthis.validatePosition();\r\n\t\t\t}\r\n\r\n\t\t\tif (!$type.isNumber(duration)) {\r\n\t\t\t\tduration = this.defaultState.transitionDuration;\r\n\t\t\t}\r\n\r\n\t\t\tif (this._hideAnimation) {\r\n\t\t\t\tthis._hideAnimation.kill();\r\n\t\t\t\tthis._hideAnimation = undefined;\r\n\t\t\t}\r\n\r\n\t\t\t// Cancel hide handler just in case it was there\r\n\t\t\tif (this._showHideDisposer) {\r\n\t\t\t\tthis.removeDispose(this._showHideDisposer);\r\n\t\t\t}\r\n\r\n\t\t\tthis._isHidden = false;\r\n\t\t\tthis.isHiding = false;\r\n\t\t\tthis.isShowing = true;\r\n\r\n\t\t\t// Apply current state\r\n\t\t\ttransition = this.applyCurrentState(duration);\r\n\r\n\t\t\tif (transition && !transition.isFinished()) {\r\n\r\n\t\t\t\tthis._showHideDisposer = transition.events.on(\"animationended\", () => {\r\n\t\t\t\t\tthis.isShowing = false;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._disposers.push(this._showHideDisposer);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.isShowing = false;\r\n\t\t\t}\r\n\t\t\t// Make it visible\r\n\t\t\tlet visible = this.defaultState.properties.visible;\r\n\t\t\tif (!$type.hasValue(visible)) {\r\n\t\t\t\tvisible = true;\r\n\t\t\t}\r\n\t\t\tthis.visible = visible;\r\n\r\n\t\t\t// Unhide from screen readers\r\n\t\t\tthis.readerHidden = false;\r\n\r\n\t\t\t// Dispatch \"show\" event\r\n\t\t\tthis.dispatchImmediately(\"shown\");\r\n\t\t}\r\n\r\n\t\treturn transition;\r\n\t}\r\n\r\n\t/**\r\n\t * Initiates hiding of Sprite.\r\n\t * When called it will fade out the the Sprite to transparency, then make it\r\n\t * invisible.\r\n\t * @param duration Duration in millisecons\r\n\t */\r\n\r\n\t/**\r\n\t * Hides the element, by applying `hidden` state.\r\n\t *\r\n\t * Has no effect if element is already hidden.\r\n \t *\r\n \t * If `duration` is not specified, it will use default.\r\n \t *\r\n \t * While element is fading out, its `isHiding` property will resolve to\r\n \t * `true`.\r\n \t *\r\n \t * When element is hidden, its `visible` property will resolve to `false`.\r\n\t *\r\n\t * @param duration Fade out duration (ms)\r\n\t * @return hide Animation object if such object was created\r\n\t */\r\n\tpublic hide(duration?: number): $type.Optional<Animation> {\r\n\t\treturn this.hideReal(duration);\r\n\t}\r\n\r\n\t/**\r\n\t * Hides actual SVG elements and handles hiding animations.\r\n\t *\r\n\t * @param duration Fade out duration (ms)\r\n\t * @return Fade out duration (ms)\r\n\t * @ignore\r\n\t */\r\n\tprotected hideReal(duration?: number): $type.Optional<Animation> {\r\n\t\tlet transition: $type.Optional<Animation>;\r\n\r\n\t\tif (!this.isHiding && this.visible && !this.isDisposed()) {\r\n\t\t\t// added to solve 51375\r\n\t\t\tif (this.tooltip && this.tooltip.currentSprite == this) {\r\n\t\t\t\tthis.hideTooltip(0);\r\n\t\t\t}\r\n\r\n\t\t\tif (this._hideAnimation) {\r\n\t\t\t\tthis._hideAnimation.kill();\r\n\t\t\t\tthis._hideAnimation = undefined;\r\n\t\t\t}\r\n\r\n\t\t\tthis.isShowing = false;\r\n\r\n\t\t\t// Cancel hide handler just in case it was there\r\n\t\t\tif (this._showHideDisposer) {\r\n\t\t\t\tthis.removeDispose(this._showHideDisposer);\r\n\t\t\t}\r\n\r\n\t\t\t// Get state\r\n\t\t\tlet hiddenState = this.hiddenState;\r\n\r\n\t\t\t// Transition to \"hidden\" state, provided Sprite has one set\r\n\t\t\tif (hiddenState) {\r\n\t\t\t\t// Yes, we have a \"hidden\" state\r\n\t\t\t\t// `setState` will return an `Animation` object which we can set\r\n\t\t\t\t// events on\r\n\t\t\t\ttransition = this.setState(hiddenState, duration, undefined);\r\n\r\n\t\t\t\tif (transition && !transition.isFinished()) {\r\n\t\t\t\t\tthis._hideAnimation = transition;\r\n\t\t\t\t\tthis._showHideDisposer = transition.events.on(\"animationended\", () => {\r\n\t\t\t\t\t\tthis.isHiding = false;\r\n\t\t\t\t\t\tthis._isHidden = true;\r\n\t\t\t\t\t}, this);\r\n\r\n\t\t\t\t\tthis._disposers.push(this._showHideDisposer);\r\n\r\n\t\t\t\t\t// Thrown everything into `_disposers` just in case Sprite gets\r\n\t\t\t\t\t// destroyed in the meantime\r\n\t\t\t\t\tthis._disposers.push(transition);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.isHiding = false;\r\n\t\t\t\t\tthis._isHidden = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// No hidden state, let's just set `visible` and call it a day\r\n\t\t\t\tthis.visible = false;\r\n\t\t\t\tthis.isHiding = false;\r\n\t\t\t\tthis._isHidden = true;\r\n\t\t\t}\r\n\r\n\t\t\t// Hide from screen readers\r\n\t\t\tthis.readerHidden = true;\r\n\r\n\t\t\t// Dispach \"hidden\" event\r\n\t\t\tthis.dispatchImmediately(\"hidden\");\r\n\t\t\tthis.invalidate(); // hide it at once to avoid flickers // validate() causes SO\r\n\t\t}\r\n\r\n\t\tif (!$type.isNumber(duration)) {\r\n\t\t\tduration = this.hiddenState.transitionDuration;\r\n\t\t}\r\n\r\n\t\treturn transition;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets visibility of the element.\r\n\t *\r\n\t * @param value Visible?\r\n\t */\r\n\tpublic set visible(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tthis.setVisibility(value);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current visibility of the element.\r\n\t *\r\n\t * @return Visible?\r\n\t */\r\n\tpublic get visible(): boolean {\r\n\t\treturn this.getVisibility();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns visibility value\r\n\t * @ignore\r\n\t */\r\n\tprotected getVisibility(): boolean {\r\n\t\tlet value = this.getPropertyValue(\"visible\");\r\n\t\tif (!$type.hasValue(value)) {\r\n\t\t\tvalue = true;\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Sets `visibility` property:\r\n\t *\r\n\t * * `true` - visible\r\n\t * * `false` - hidden\r\n\t *\r\n\t * @param value true - visible, false - hidden\r\n\t * @return Current visibility\r\n\t */\r\n\tpublic setVisibility(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"visible\", value)) {\r\n\t\t\tif (value) {\r\n\t\t\t\tthis.group.removeAttr(\"visibility\");\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.group.attr({ \"visibility\": \"hidden\" });\r\n\t\t\t}\r\n\t\t\t//this.invalidatePosition();\r\n\r\n\t\t\tif (this.events.isEnabled(\"visibilitychanged\")) {\r\n\t\t\t\tconst event: AMEvent<this, ISpriteEvents>[\"visibilitychanged\"] = {\r\n\t\t\t\t\ttype: \"visibilitychanged\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tvisible: value\r\n\t\t\t\t};\r\n\t\t\t\tthis.events.dispatchImmediately(\"visibilitychanged\", event);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A \"zIndex\" of the element.\r\n\t *\r\n\t * \"zIndex\" determines the order of how elements are placed over each other.\r\n\t *\r\n\t * Higher \"zIndex\" will mean the element will be draw on top of elements\r\n\t * with lower \"zIndexes\".\r\n\t *\r\n\t * @param value zIndex\r\n\t */\r\n\tpublic set zIndex(value: number) {\r\n\t\tvalue = $type.toNumber(value);\r\n\t\tif (this.setPropertyValue(\"zIndex\", value)) {\r\n\t\t\tthis.dispatch(\"zIndexChanged\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return zIndex\r\n\t */\r\n\tpublic get zIndex(): number {\r\n\t\treturn this.getPropertyValue(\"zIndex\");\r\n\t}\r\n\r\n\t/**\r\n\t * Moves the element to the very top in element order, so that it appears\r\n\t * in front of other elements.\r\n\t */\r\n\tpublic toFront(): void {\r\n\t\tlet parent = this.parent;\r\n\t\tif (parent && parent.children.indexOf(this) != parent.children.length - 1) {\r\n\t\t\tparent.children.moveValue(this, parent.children.length - 1);\r\n\t\t\tthis.dispatch(\"zIndexChanged\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Moves the element to the very bottom in the element order, so that it\r\n\t * appears behind other elements.\r\n\t */\r\n\tpublic toBack(): void {\r\n\t\tlet parent = this.parent;\r\n\t\tif (parent && parent.children.indexOf(this) != 0) {\r\n\t\t\tparent.children.moveValue(this, 0);\r\n\t\t\tthis.dispatch(\"zIndexChanged\");\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * TOOLTIP-RELATED PROPERTIES STUFF\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * A [[Tooltip]] object to be used when displayed rollover information for\r\n\t * the element.\r\n\t *\r\n\t * @param tooltip Tooltip\r\n\t */\r\n\tpublic set tooltip(tooltip: $type.Optional<Tooltip>) {\r\n\t\tif (this._tooltip) {\r\n\t\t\t//this._tooltip.dispose();\r\n\t\t\tthis.removeDispose(this._tooltip);\r\n\t\t}\r\n\r\n\t\tthis._tooltip = tooltip;\r\n\r\n\t\tif (tooltip) {\r\n\t\t\ttooltip.parent = this.tooltipContainer;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Tooltip\r\n\t */\r\n\tpublic get tooltip(): $type.Optional<Tooltip> {\r\n\t\tif (this._tooltip) {\r\n\t\t\treturn this._tooltip;\r\n\t\t}\r\n\t\telse if (this.virtualParent) {\r\n\t\t\treturn this.virtualParent.tooltip;\r\n\t\t}\r\n\t\telse if (this.parent) {\r\n\t\t\treturn this.parent.tooltip;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A [[DataItem]] to use when populating content for the element's\r\n\t * [[Tooltip]].\r\n\t *\r\n\t * @see {@link Tooltip}\r\n\t * @see {@link DataItem}\r\n\t * @param value Tooltip data item\r\n\t */\r\n\tpublic set tooltipDataItem(value: DataItem) {\r\n\t\t// important: do not dispose tooltip dataItem, as it is some actual data item from data!\r\n\t\tthis._tooltipDataItem = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Tooltip data item\r\n\t */\r\n\tpublic get tooltipDataItem(): DataItem {\r\n\t\tconst tooltipDataItem = this._tooltipDataItem;\r\n\r\n\t\tif (tooltipDataItem) {\r\n\t\t\treturn tooltipDataItem;\r\n\r\n\t\t} else {\r\n\t\t\treturn this.dataItem;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A [[Sprite]] or sprite template to use when getting colors for tooltip. If a template is set,\r\n\t * tooltip will look for a clone in tooltipDataItem.sprites. If no clone is found, then template colors will be used.\r\n\t *\r\n\t * @see {@link Tooltip}\r\n\t * @see {@link Sprite}\r\n\t * @param sprite Sprite\r\n\t */\r\n\tpublic set tooltipColorSource(sprite: $type.Optional<Sprite>) {\r\n\t\tthis._tooltipColorSource = sprite;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Tooltip color source\r\n\t */\r\n\tpublic get tooltipColorSource(): $type.Optional<Sprite> {\r\n\t\treturn this._tooltipColorSource;\r\n\t}\r\n\r\n\t/**\r\n\t * Shows the element's [[Tooltip]].\r\n\t *\r\n\t * A tooltip will be populated using text templates in either `tooltipHTML` or\r\n\t * `tooltipText` as well as data in `tooltipDataItem`.\r\n\t *\r\n\t * @see {@link Tooltip}\r\n\t * @param optional point (sprite-related) to which tooltip must point.\r\n\t * @return returns true if the tooltip was shown and false if it wasn't (no text was found)\r\n\t */\r\n\tpublic showTooltip(point?: IPoint): boolean {\r\n\r\n\t\tif (this.showTooltipOn == \"always\" && !this._tooltip && this.tooltip) {\r\n\t\t\tthis._tooltip = this.tooltip.clone();\r\n\t\t}\r\n\r\n\t\t// do not show if hidden\r\n\t\tlet sprite: Sprite = this;\r\n\t\twhile (sprite != undefined) {\r\n\t\t\tif (!sprite.visible || sprite.disabled || sprite.__disabled) {\r\n\t\t\t\tif (this._tooltip && this._tooltip.visible) {\r\n\t\t\t\t\tthis._tooltip.hide(0);\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tsprite = sprite.parent;\r\n\t\t}\r\n\r\n\t\tif ($type.hasValue(this.tooltipText) || $type.hasValue(this.tooltipHTML)) {\r\n\t\t\tlet tooltip = this.tooltip;\r\n\t\t\tlet tooltipDataItem = this.tooltipDataItem;\r\n\r\n\t\t\tif (tooltip) {\r\n\r\n\t\t\t\ttooltip.targetSprite = this;\r\n\r\n\t\t\t\tlet colorSource: Sprite = this;\r\n\t\t\t\tlet tooltipColorSource = this.tooltipColorSource;\r\n\t\t\t\tif ((tooltip.getStrokeFromObject || tooltip.getFillFromObject) && tooltipColorSource) {\r\n\t\t\t\t\tif (tooltipColorSource.isTemplate) {\r\n\t\t\t\t\t\tif (tooltipDataItem) {\r\n\t\t\t\t\t\t\t$array.eachContinue(tooltipDataItem.sprites, (sprite) => {\r\n\t\t\t\t\t\t\t\tif (sprite.clonedFrom == tooltipColorSource) {\r\n\t\t\t\t\t\t\t\t\tcolorSource = sprite;\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tcolorSource = tooltipColorSource;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tif (tooltip.getStrokeFromObject) {\r\n\t\t\t\t\tlet stroke = this.stroke;\r\n\t\t\t\t\tlet source: Sprite = colorSource;\r\n\r\n\t\t\t\t\twhile (source.parent != undefined) {\r\n\t\t\t\t\t\tstroke = source.stroke;\r\n\t\t\t\t\t\tif (stroke == undefined) {\r\n\t\t\t\t\t\t\tsource = source.parent;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (stroke != undefined) {\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (stroke instanceof Color) {\r\n\t\t\t\t\t\ttooltip.background.animate({ property: \"stroke\", to: stroke }, tooltip.animationDuration);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttooltip.background.stroke = stroke;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Set data item\r\n\t\t\t\ttooltip.dataItem = tooltipDataItem;\r\n\t\t\t\ttooltip.label.populateStringFrom = this;\r\n\r\n\t\t\t\tif (tooltip.getFillFromObject) {\r\n\r\n\t\t\t\t\tlet fill = this.fill;\r\n\r\n\t\t\t\t\tlet source: Sprite = colorSource;\r\n\r\n\t\t\t\t\twhile (source.parent != undefined) {\r\n\t\t\t\t\t\tfill = source.fill;\r\n\t\t\t\t\t\tif (fill == undefined || (fill instanceof Color && fill.rgb == undefined)) {\r\n\t\t\t\t\t\t\tsource = source.parent;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse if (fill != undefined) {\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (fill == undefined) {\r\n\t\t\t\t\t\tfill = color(\"#000000\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (fill instanceof Color) {\r\n\t\t\t\t\t\tif (!tooltip.visible) {\r\n\t\t\t\t\t\t\ttooltip.background.fill = fill;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\ttooltip.background.animate({ property: \"fill\", to: fill }, tooltip.animationDuration);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttooltip.background.fill = fill;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (tooltip.autoTextColor && fill instanceof Color) {\r\n\t\t\t\t\t\ttooltip.label.fill = fill.alternative;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Apply tooltip text\r\n\t\t\t\tlet text = \"\";\r\n\t\t\t\tif (this.tooltipHTML) {\r\n\t\t\t\t\ttooltip.html = this.tooltipHTML;\r\n\t\t\t\t\ttext = this.tooltipHTML;\r\n\t\t\t\t}\r\n\t\t\t\tif (this.tooltipText) {\r\n\t\t\t\t\ttooltip.text = this.tooltipText;\r\n\t\t\t\t\ttext = this.tooltipText;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.updateTooltipPosition(point)) {\r\n\r\n\t\t\t\t\t// Set accessibility option\r\n\t\t\t\t\ttooltip.readerDescribedBy = this.uidAttr();\r\n\r\n\t\t\t\t\t// make label to render to be able to check currentText\r\n\t\t\t\t\tif (tooltip.label.invalid) {\r\n\t\t\t\t\t\ttooltip.label.validate();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (text != undefined && text != \"\" && tooltip.label.currentText != \"\") {\r\n\r\n\t\t\t\t\t\t//@todo: think of how to solve this better\r\n\t\t\t\t\t\tif (tooltip && !tooltip.parent) {\r\n\t\t\t\t\t\t\ttooltip.parent = this.tooltipContainer;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Reveal tooltip\r\n\t\t\t\t\t\t// showing it in 1 ms helps to avoid strange flickering in IE\r\n\t\t\t\t\t\tlet duration = tooltip.defaultState.transitionDuration;\r\n\t\t\t\t\t\tif (duration <= 0) {\r\n\t\t\t\t\t\t\tduration = 1;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ttooltip.show(duration);\r\n\t\t\t\t\t\ttooltip.currentSprite = this;\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.hideTooltip(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.hideTooltip(0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected updateTooltipPosition(point?: IPoint): boolean {\r\n\t\tif (this.tooltipPosition == \"pointer\") {\r\n\r\n\t\t\tif (this._interactionDisposer) {\r\n\t\t\t\tthis._interactionDisposer.dispose();\r\n\t\t\t}\r\n\r\n\t\t\tthis._interactionDisposer = getInteraction().body.events.on(\"track\", (ev) => {\r\n\t\t\t\treturn this.pointTooltipTo($utils.documentPointToSvg(ev.point, this.svgContainer.SVGContainer, this.svgContainer.cssScale), true);\r\n\t\t\t});\r\n\t\t\tif (point) {\r\n\t\t\t\treturn this.pointTooltipTo(point, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// Point to the X/Y of this Sprite\r\n\t\t\tlet globalPoint = $utils.spritePointToSvg({\r\n\t\t\t\t\"x\": this.getTooltipX(),\r\n\t\t\t\t\"y\": this.getTooltipY()\r\n\t\t\t}, this);\r\n\r\n\t\t\treturn this.pointTooltipTo(globalPoint);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the point the [[Tooltip]] should point to.\r\n\t *\r\n\t * @param point Coordinates to point to\r\n\t * @param instantly Move instantly without animation\r\n\t */\r\n\tprotected pointTooltipTo(point: IPoint, instantly?: boolean): boolean {\r\n\t\tlet tooltip = this.tooltip;\r\n\t\tif (tooltip && this.topParent) {\r\n\r\n\t\t\tif (tooltip.showInViewport) {\r\n\t\t\t\ttooltip.pointTo(point, instantly);\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif ($math.isInRectangle(point, { x: 0, y: 0, width: this.topParent.maxWidth, height: this.topParent.maxHeight })) {\r\n\t\t\t\ttooltip.pointTo(point, instantly);\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Hides element's [[Tooltip]].\r\n\t *\r\n\t * @see {@link Tooltip}\r\n\t */\r\n\tpublic hideTooltip(duration?: number): void {\r\n\r\n\t\tif (this.showTooltipOn == \"always\") {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet tooltip = this.tooltip;\r\n\t\tif (tooltip) {\r\n\t\t\tif (tooltip.targetSprite == this) {\r\n\t\t\t\ttooltip.targetSprite = undefined;\r\n\t\t\t}\r\n\t\t\ttooltip.hide(duration);\r\n\t\t\tif (this._interactionDisposer) {\r\n\t\t\t\tthis._interactionDisposer.dispose();\r\n\t\t\t\tthis._interactionDisposer = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * An HTML template to be used to populate [[Tooltip]] contents.\r\n\t *\r\n\t * If element has `tooltipDataItem` or `dataItem` set, this will be parsed\r\n\t * for any data values to be replaced with the values from respective data\r\n\t * items.\r\n\t *\r\n\t * @param value Tooltip HTML content template\r\n\t */\r\n\tpublic set tooltipHTML(value: string) {\r\n\t\tvalue = $type.toText(value);\r\n\t\tthis.hoverable = true;\r\n\t\tif (this.setPropertyValue(\"tooltipHTML\", value)) {\r\n\t\t\tif (this.tooltip) {\r\n\t\t\t\tif (this.tooltip.visible) {\r\n\t\t\t\t\tthis.showTooltip();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Tooltip HTML content template\r\n\t */\r\n\tpublic get tooltipHTML(): string {\r\n\t\treturn this.getPropertyValue(\"tooltipHTML\");\r\n\t}\r\n\r\n\t/**\r\n\t * A text template to be used to populate Tooltip's contents.\r\n\t *\r\n\t * If element has `tooltipDataItem` or `dataItem` set, this will be parsed\r\n\t * for any data values to be replaced with the values from respective data\r\n\t * items.\r\n\t *\r\n\t * This template will also be parsed for any special formatting tags.\r\n\t *\r\n\t * @param value Tooltip content template\r\n\t * @see {@link TextFormatter}\r\n\t */\r\n\tpublic set tooltipText(value: string) {\r\n\t\tvalue = $type.toText(value);\r\n\t\tif (value) {\r\n\t\t\tthis.hoverable = true;\r\n\t\t}\r\n\t\tif (this.setPropertyValue(\"tooltipText\", value)) {\r\n\t\t\tif (this.tooltip) {\r\n\t\t\t\tif (this.tooltip.visible) {\r\n\t\t\t\t\tthis.showTooltip();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Tooltip content template\r\n\t */\r\n\tpublic get tooltipText(): string {\r\n\t\treturn this.getPropertyValue(\"tooltipText\");\r\n\t}\r\n\r\n\t/**\r\n\t * A container reference that should be used to place element's\r\n\t * [[Tooltip]] in.\r\n\t *\r\n\t * Will use parent's container if does not have one set.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Container\r\n\t * @todo Dispose of the old _tooltipContainer ?\r\n\t */\r\n\tpublic set tooltipContainer(value: $type.Optional<Container>) {\r\n\t\tthis._tooltipContainer = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Container\r\n\t */\r\n\tpublic get tooltipContainer(): $type.Optional<Container> {\r\n\t\tif (this._tooltipContainer) {\r\n\t\t\treturn this._tooltipContainer;\r\n\t\t}\r\n\t\telse if (this.parent) {\r\n\t\t\treturn this.parent.tooltipContainer;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * X coordinate the [[Tooltip]] should be shown at.\r\n\t *\r\n\t * @param value Tooltip X (px)\r\n\t */\r\n\tpublic set tooltipX(value: number | Percent) {\r\n\t\tif (this.setPercentProperty(\"tooltipX\", value) && this.tooltip) {\r\n\t\t\tthis.tooltip.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Tooltip X (px)\r\n\t */\r\n\tpublic get tooltipX(): number | Percent {\r\n\t\treturn this.getTooltipX();\r\n\t}\r\n\r\n\t/**\r\n\t * DEPRECATION NOTICE: This setting is deprecated in favor of a more flexible\r\n\t * setting: `showTooltipOn`. Please use `showTooltipOn = \"always\"` instead.\r\n\t * \r\n\t * Indicates if this element should display a tooltip permanently.\r\n\t *\r\n\t * Useful, if you want to show permanent tooltips on some items.\r\n\t *\r\n\t * @default false\r\n\t * @since 4.5.4\r\n\t * @deprecated Use `showTooltipOn = \"always\"` instead\r\n\t * @param value Always show tooltip?\r\n\t */\r\n\tpublic set alwaysShowTooltip(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tif (value) {\r\n\t\t\tthis.showTooltipOn = \"always\";\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Always show tooltip?\r\n\t */\r\n\tpublic get alwaysShowTooltip(): boolean {\r\n\t\treturn this.getPropertyValue(\"showTooltipOn\") == \"always\";\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates when tooltip needs to be shown on this element:\r\n\t *\r\n\t * * `\"hover\"` (default) - Tooltip will be shown when element is hovered on.\r\n\t * * `\"hit\"` - Tooltip will be shown when element is clicked/tapped. Tooltip will be hidden when clicked/tapped anywhere else.\r\n\t * * `\"always\"` - Tooltip will be shown on the element permanently.\r\n\t *\r\n\t * For example, if you would like to show tooltips on all of the columns of\r\n\t * a [[ColumnSeries]]:\r\n\t *\r\n\t * ```TypeScript\r\n\t * series.columns.template.showTooltipOn = \"always\";\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * series.columns.template.showTooltipOn = \"always\";\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"series\": [{\r\n\t * // ...\r\n\t * \"columns\": {\r\n\t * \"showTooltipOn\": \"always\"\r\n\t * }\r\n\t * }]\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * It can even be set to display on a selected columns via `propertyFields`:\r\n\t *\r\n\t * ```TypeScript\r\n\t * series.columns.template.propertyFields.showTooltipOn = \"tooltip\";\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * series.columns.template.propertyFields.showTooltipOn = \"tooltip\";\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"series\": [{\r\n\t * // ...\r\n\t * \"columns\": {\r\n\t * \"propertyFields\": {\r\n\t * \"showTooltipOn\": \"tooltip\"\r\n\t * }\r\n\t * }\r\n\t * }]\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @default \"hover\"\r\n\t * @since 4.7.9\r\n\t * @param value When to show tooltip\r\n\t */\r\n\tpublic set showTooltipOn(value: \"hover\" | \"hit\" | \"always\") {\r\n\t\tif (this.setPropertyValue(\"showTooltipOn\", value)) {\r\n\t\t\tif (value == \"hit\") {\r\n\t\t\t\tthis.clickable = true;\r\n\t\t\t}\r\n\t\t\tif (this.tooltip) {\r\n\t\t\t\tif (value == \"always\") {\r\n\t\t\t\t\tthis.showTooltip();\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.handleAlwaysShowTooltip();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return When to show tooltip\r\n\t */\r\n\tpublic get showTooltipOn(): \"hover\" | \"hit\" | \"always\" {\r\n\t\treturn this.getPropertyValue(\"showTooltipOn\");\r\n\t}\r\n\r\n\t/**\r\n\t * Specifies if [[Tooltip]] should follow the mouse or touch pointer or stay\r\n\t * at the fixed position.\r\n\t *\r\n\t * @param value Position\r\n\t */\r\n\tpublic set tooltipPosition(value: \"fixed\" | \"pointer\") {\r\n\t\tthis.setPropertyValue(\"tooltipPosition\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * Position\r\n\t */\r\n\tpublic get tooltipPosition(): \"fixed\" | \"pointer\" {\r\n\t\treturn this.getPropertyValue(\"tooltipPosition\");\r\n\t}\r\n\r\n\t/**\r\n\t * Y coordinate the [[Tooltip]] should be shown at.\r\n\t *\r\n\t * @param value Tooltip Y (px)\r\n\t */\r\n\tpublic set tooltipY(value: number | Percent) {\r\n\t\tif (this.setPercentProperty(\"tooltipY\", value) && this.tooltip) {\r\n\t\t\tthis.tooltip.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Tooltip Y (px)\r\n\t */\r\n\tpublic get tooltipY(): number | Percent {\r\n\t\treturn this.getTooltipY();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns Tooltip X coordinate if it's set, or middle of the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return X (px)\r\n\t */\r\n\tpublic getTooltipX(): number {\r\n\r\n\t\tlet x = this.getPropertyValue(\"tooltipX\");\r\n\r\n\t\tif (!$type.hasValue(x)) {\r\n\t\t\tx = percent(50);\r\n\t\t}\r\n\r\n\t\tlet value: number;\r\n\t\tif ($type.isNumber(x)) {\r\n\t\t\tvalue = x;\r\n\t\t}\r\n\r\n\t\tif (x instanceof Percent) {\r\n\t\t\tvalue = this.maxLeftSelf + this._measuredWidthSelf * x.value - this.pixelPaddingLeft - this.ex; // overflow is know only for measured items, so this is not always good\r\n\t\t}\r\n\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = 0;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns Tooltip Y coordinate if it's set, or middle of the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Y (px)\r\n\t */\r\n\tpublic getTooltipY(): number {\r\n\t\tlet y = this.getPropertyValue(\"tooltipY\");\r\n\r\n\t\tif (!$type.hasValue(y)) {\r\n\t\t\ty = percent(50);\r\n\t\t}\r\n\r\n\t\tlet value: number;\r\n\t\tif ($type.isNumber(y)) {\r\n\t\t\tvalue = y;\r\n\t\t}\r\n\r\n\t\tif (y instanceof Percent) {\r\n\t\t\tvalue = this.maxTopSelf + this._measuredHeightSelf * y.value - this.pixelPaddingTop - this.ey; // overflow is know only for measured items, so this is not always good\r\n\t\t}\r\n\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = 0;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Displays a modal or console message with error, and halts any further\r\n\t * processing of this item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param e Error\r\n\t * @todo Implement from applying further actions to this item\r\n\t */\r\n\tpublic raiseCriticalError(e: Error) {\r\n\r\n\t\tif (this.svgContainer) {\r\n\t\t\tif (!this._adapterO) {\r\n\t\t\t\tthis.modal.content = e.message;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.modal.content = this._adapterO.apply(\"criticalError\", e).message;\r\n\t\t\t}\r\n\r\n\t\t\tthis.modal.closable = false;\r\n\t\t\tthis.modal.open();\r\n\t\t\tthis.disabled = true;\r\n\t\t}\r\n\r\n\t\tif (options.verbose) {\r\n\t\t\tconsole.log(e);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tif (config) {\r\n\r\n\t\t\t// Tooltip color source\r\n\t\t\tif ($type.hasValue(config.tooltipColorSource) && $type.isString(config.tooltipColorSource) && this.map.hasKey(config.tooltipColorSource)) {\r\n\t\t\t\tconfig.tooltipColorSource = this.map.getKey(config.tooltipColorSource);\r\n\t\t\t}\r\n\r\n\t\t\t// Cursor styles\r\n\t\t\tif ($type.hasValue(config.cursorOverStyle) && $type.isString(config.cursorOverStyle)) {\r\n\t\t\t\tconfig.cursorOverStyle = this.getCursorStyle(config.cursorOverStyle);\r\n\t\t\t}\r\n\t\t\tif ($type.hasValue(config.cursorDowntyle) && $type.isString(config.cursorDowntyle)) {\r\n\t\t\t\tconfig.cursorDowntyle = this.getCursorStyle(config.cursorDowntyle);\r\n\t\t\t}\r\n\t\t\tif ($type.hasValue(config.cursorOptions)) {\r\n\t\t\t\tif ($type.hasValue(config.cursorOptions.overStyle) && $type.isString(config.cursorOptions.overStyle)) {\r\n\t\t\t\t\tconfig.cursorOptions.overStyle = this.getCursorStyle(config.cursorOptions.overStyle);\r\n\t\t\t\t}\r\n\t\t\t\tif ($type.hasValue(config.cursorOptions.downStyle) && $type.isString(config.cursorOptions.downStyle)) {\r\n\t\t\t\t\tconfig.cursorOptions.downStyle = this.getCursorStyle(config.cursorOptions.downStyle);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tsuper.processConfig(config);\r\n\r\n\t\tthis.processDelayedMap();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Converts string name of the cursor into actual [[MouseCursorStyle]].\r\n\t *\r\n\t * @param style Cursor type\r\n\t * @return Cursor definition\r\n\t */\r\n\tprivate getCursorStyle(style: string): MouseCursorStyle {\r\n\t\tswitch (style) {\r\n\t\t\tcase \"grab\":\r\n\t\t\t\treturn MouseCursorStyle.grab;\r\n\t\t\tcase \"grabbing\":\r\n\t\t\t\treturn MouseCursorStyle.grabbing;\r\n\t\t\tcase \"pointer\":\r\n\t\t\t\treturn MouseCursorStyle.pointer;\r\n\t\t\tcase \"horizontalResize\":\r\n\t\t\t\treturn MouseCursorStyle.horizontalResize;\r\n\t\t\tcase \"verticalResize\":\r\n\t\t\t\treturn MouseCursorStyle.verticalResize;\r\n\t\t\tdefault:\r\n\t\t\t\treturn MouseCursorStyle.default;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * This function is used to sort element's JSON config properties, so that\r\n\t * some properties that absolutely need to be processed last, can be put at\r\n\t * the end.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param a Element 1\r\n\t * @param b Element 2\r\n\t * @return Sorting number\r\n\t */\r\n\tprotected configOrder(a: string, b: string): Ordering {\r\n\t\tif (a == b) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\t// Must come last\r\n\t\telse if (a == \"tooltipColorSource\") {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\telse if (b == \"tooltipColorSource\") {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn super.configOrder(a, b);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * If `sprite.hide()` is called, we set isHidden to true when sprite is hidden.\r\n\t * This was added becaus hidden state might have visibility set to true and so\r\n\t * there would not be possible to find out if a sprite is technically hidden or not.\r\n\t */\r\n\tpublic get isHidden(): boolean {\r\n\t\tif (this._isHidden) {\r\n\t\t\treturn this._isHidden;\r\n\t\t}\r\n\t\telse if (this._parent) {\r\n\t\t\treturn this._parent.isHidden;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * If this is set to `true`, Sprite, when inited will be instantly hidden\r\n\t * (\"hidden\" state applied) and then shown (\"default\" state applied).\r\n\t *\r\n\t * If your \"default\" state's `transitionDuration > 0` this will result in\r\n\t * initial animation from \"hidden\" state to \"default\" state.\r\n\t *\r\n\t * If you need a Sprite which has `showOnInit = true` not to be shown\r\n\t * initially, set `sprite.hidden = true`. Setting `sprite.visible = false`\r\n\t * will not prevent the animation and the sprite will be shown.\r\n\t *\r\n\t * @param value show on init?\r\n\t */\r\n\tpublic set showOnInit(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tthis.setShowOnInit(value);\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected setShowOnInit(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"showOnInit\", value)) {\r\n\t\t\tif (!this.isTemplate) {\r\n\t\t\t\tif (value && !this.inited && !this.hidden) {\r\n\t\t\t\t\tthis._showOnInitDisposer = new MultiDisposer([\r\n\t\t\t\t\t\tregistry.events.once(\"enterframe\", this.hideInitially, this),\r\n\t\t\t\t\t\tthis.events.once(\"beforevalidated\", this.hideInitially, this, false),\r\n\t\t\t\t\t\tthis.events.on(\"inited\", this.appear, this, false)\r\n\t\t\t\t\t])\r\n\r\n\t\t\t\t\tthis._disposers.push(this._showOnInitDisposer);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (this._showOnInitDisposer) {\r\n\t\t\t\t\t\tthis._showOnInitDisposer.dispose();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected hideInitially() {\r\n\t\tif (!this.isDisposed()) {\r\n\t\t\tthis.appeared = false;\r\n\t\t\t//if (!this.hidden && !this._isHidden) { // not good for series, as on enterframe it doesn't have data items yet.\r\n\t\t\tif (!this.inited) {\r\n\t\t\t\tthis.hide(0);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Hides the chart instantly and then shows it. If defaultState.transitionDuration > 0, this will result an animation in which properties of hidden state will animate to properties of visible state.\r\n\t */\r\n\tpublic appear() {\r\n\t\tthis.appeared = false;\r\n\t\tif (!this.hidden && !this.isHidden) {\r\n\t\t\tthis.hide(0);\r\n\t\t}\r\n\t\tif (!this.hidden) {\r\n\r\n\t\t\tlet animation = this.show();\r\n\r\n\t\t\tif (animation && !animation.isFinished()) {\r\n\t\t\t\tanimation.events.on(\"animationended\", () => {\r\n\t\t\t\t\tthis.appeared = true;\r\n\t\t\t\t\tthis.dispatch(\"appeared\");\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.appeared = true;\r\n\t\t\t\tthis.dispatch(\"appeared\");\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.appeared = true;\r\n\t\t\tthis.dispatch(\"appeared\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Show on init?\r\n\t */\r\n\tpublic get showOnInit(): boolean {\r\n\t\treturn this.getPropertyValue(\"showOnInit\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * If a sprite has `showOnInit = true`, it will animate from \"hidden\" to\r\n\t * \"default\" state when initialized. To prevent this but keep\r\n\t * `showOnInit = true`, you can set `sprite.hidden = true`.\r\n\t *\r\n\t * @param value initially hidden?\r\n\t */\r\n\tpublic set hidden(value: boolean) {\r\n\t\tvalue = $type.toBoolean(value);\r\n\t\tthis.setPropertyValue(\"hidden\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Is initially hidden?\r\n\t */\r\n\tpublic get hidden(): boolean {\r\n\t\treturn this.getPropertyValue(\"hidden\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Returns bounding box (square) for this element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic get bbox(): IRectangle {\r\n\t\tif (this.definedBBox) {\r\n\t\t\treturn this.definedBBox;\r\n\t\t}\r\n\t\treturn this._bbox;\r\n\t}\r\n\r\n\t/**\r\n\t * A list of plugins (objects that implement [[IPlugin]] interface) attached\r\n\t * to this object.\r\n\t *\r\n\t * @since 4.2.2\r\n\t * @return List of plugins\r\n\t */\r\n\tpublic get plugins(): List<IPlugin> {\r\n\t\tif (!this._plugins) {\r\n\t\t\tthis._plugins = new List<IPlugin>();\r\n\t\t\tthis._disposers.push(this._plugins.events.on(\"inserted\", (ev) => {\r\n\t\t\t\tev.newValue.target = this;\r\n\t\t\t\tev.newValue.init();\r\n\t\t\t}));\r\n\t\t\tthis._disposers.push(new ListDisposer(this._plugins));\r\n\t\t}\r\n\t\treturn this._plugins;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Called during the System.update method\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic _systemUpdate(skippedSprites: Array<Sprite>) {\r\n\t\tthis.validate();\r\n\t}\r\n\r\n\t/**\r\n\t * Called during the System.update method\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic _systemCheckIfValidate(): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Called during the System.validatePositions method\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic _systemValidatePositions() {\r\n\t\tthis.validatePosition();\r\n\t}\r\n\r\n\t/**\r\n\t * Called during the System.validateLayouts method\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic _systemValidateLayouts() {\r\n\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Sprite\"] = Sprite;\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"./Sprite\";\r\nimport { Dictionary } from \"./utils/Dictionary\";\r\nimport { EventListener, TargetedEventDispatcher, AMEvent } from \"./utils/EventDispatcher\";\r\nimport { InteractionObject, IInteractionObjectEvents } from \"./interaction/InteractionObject\";\r\nimport { IPointer } from \"./interaction/Pointer\";\r\nimport { MultiDisposer, IDisposer, CounterDisposer } from \"./utils/Disposer\";\r\nimport { IPoint } from \"./defs/IPoint\";\r\nimport * as $utils from \"./utils/Utils\";\r\nimport * as $object from \"./utils/Object\";\r\n\r\n/**\r\n * ============================================================================\r\n * RE-EXPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nexport { AMEvent };\r\n\r\n/**\r\n * An [[EventDispatcher]] for [[Sprite]].\r\n *\r\n * @important\r\n */\r\nexport class SpriteEventDispatcher<T extends AMEvent<Sprite, ISpriteEvents>> extends TargetedEventDispatcher<Sprite, T> {\r\n\r\n\t/**\r\n\t * [_interactionEvents description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprivate _interactionEvents = new Dictionary<keyof IInteractionObjectEvents, CounterDisposer>();\r\n\r\n\t/**\r\n\t * [_dispatchSpriteEvent description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprivate _dispatchSpriteEvent<Key extends keyof IInteractionObjectEvents>(ev: AMEvent<InteractionObject, IInteractionObjectEvents>[Key]): void {\r\n\t\tif (this.target.disabled || this.target.isTemplate) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// TODO remove this <any> later\r\n\t\tif (this.target.events.isEnabled(ev.type)) {\r\n\t\t\tlet imev: AMEvent<Sprite, ISpriteEvents>[Key] = <any>$object.merge(ev, {\r\n\t\t\t\ttarget: this.target\r\n\t\t\t});\r\n\t\t\tthis.target.events.dispatchImmediately(imev.type, imev);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [_dispatchSpritePointEvent description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprivate _dispatchSpritePointEvent<Key extends \"hit\" | \"track\">(ev: AMEvent<InteractionObject, IInteractionObjectEvents>[Key]): void {\r\n\t\tif (this.target.disabled || this.target.isTemplate) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// TODO remove this <any> later\r\n\t\tif (this.target.events.isEnabled(ev.type)) {\r\n\r\n\t\t\tlet imev: AMEvent<Sprite, ISpriteEvents>[Key] = <any>$object.merge(ev, {\r\n\t\t\t\ttarget: this.target,\r\n\t\t\t\tspritePoint: $utils.documentPointToSprite(ev.point, this.target),\r\n\t\t\t\tsvgPoint: this.target.getSvgPoint(ev.point)\r\n\t\t\t});\r\n\t\t\tthis.target.events.dispatchImmediately(imev.type, imev);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [_addInteractionObjectEvent description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprivate _addInteractionObjectEvent<C, Key extends keyof IInteractionObjectEvents>(type: Key, callback: (this: C, ev: AMEvent<InteractionObject, IInteractionObjectEvents>[Key]) => void, context: C, shouldClone: boolean): IDisposer {\r\n\t\tconst counter = this._interactionEvents.insertKeyIfEmpty(type, () => {\r\n\t\t\tconst disposer = this.target.interactions.events.on(type, callback, context, shouldClone);\r\n\r\n\t\t\treturn new CounterDisposer(() => {\r\n\t\t\t\tthis._interactionEvents.removeKey(type);\r\n\t\t\t\tdisposer.dispose();\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn counter.increment();\r\n\t}\r\n\r\n\t/**\r\n\t * [_on description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _on<A, B, Key extends keyof T>(once: boolean, type: Key | null, callback: A, context: B, shouldClone: boolean, dispatch: (type: Key, event: T[Key]) => void): EventListener<T> {\r\n\t\tconst info = super._on(once, type, callback, context, shouldClone, dispatch);\r\n\r\n\t\tconst disposers = [info.disposer];\r\n\r\n\t\t/**\r\n\t\t * Catching Sprite-related events, converting them to [[SpriteEvent]] and\r\n\t\t * triggering them on sprite\r\n\t\t */\r\n\t\tswitch (type) {\r\n\t\t\tcase \"hit\":\r\n\t\t\tcase \"track\":\r\n\t\t\tcase \"doublehit\":\r\n\t\t\tcase \"wheel\":\r\n\t\t\tcase \"wheelup\":\r\n\t\t\tcase \"wheeldown\":\r\n\t\t\tcase \"wheelleft\":\r\n\t\t\tcase \"wheelright\":\r\n\t\t\t\tdisposers.push(this._addInteractionObjectEvent(<any>type, this._dispatchSpritePointEvent, this, shouldClone));\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"rightclick\":\r\n\t\t\tcase \"down\":\r\n\t\t\t//case \"hold\":\r\n\t\t\tcase \"up\":\r\n\t\t\tcase \"drag\":\r\n\t\t\tcase \"dragged\":\r\n\t\t\tcase \"dragstart\":\r\n\t\t\tcase \"dragstop\":\r\n\t\t\tcase \"over\":\r\n\t\t\tcase \"out\":\r\n\t\t\tcase \"swipe\":\r\n\t\t\tcase \"swipeleft\":\r\n\t\t\tcase \"swiperight\":\r\n\t\t\tcase \"resize\":\r\n\t\t\t//case \"rotate\":\r\n\t\t\tcase \"focus\":\r\n\t\t\tcase \"blur\":\r\n\t\t\tcase \"toggled\":\r\n\t\t\t\tdisposers.push(this._addInteractionObjectEvent(<any>type, this._dispatchSpriteEvent, this, shouldClone));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Set functional properties based on events. For example if we add a\r\n\t\t * \"drag\" event handler, we want to make the Sprite draggable, even if we\r\n\t\t * don't explicitly set \"draggable\"\r\n\t\t */\r\n\t\tswitch (type) {\r\n\t\t\tcase \"hit\":\r\n\t\t\tcase \"doublehit\":\r\n\t\t\tcase \"rightclick\":\r\n\t\t\tcase \"down\":\r\n\t\t\tcase \"up\":\r\n\t\t\t\tthis.target.clickable = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"toggled\":\r\n\t\t\t\tthis.target.togglable = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"drag\":\r\n\t\t\tcase \"dragstart\":\r\n\t\t\tcase \"dragstop\":\r\n\t\t\t\tthis.target.draggable = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"track\":\r\n\t\t\t\tthis.target.trackable = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"resize\":\r\n\t\t\t\tthis.target.resizable = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"swipe\":\r\n\t\t\tcase \"swipeleft\":\r\n\t\t\tcase \"swiperight\":\r\n\t\t\t\tthis.target.swipeable = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"wheel\":\r\n\t\t\tcase \"wheelup\":\r\n\t\t\tcase \"wheeldown\":\r\n\t\t\tcase \"wheelleft\":\r\n\t\t\tcase \"wheelright\":\r\n\t\t\t\tthis.target.wheelable = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"over\":\r\n\t\t\t\tthis.target.hoverable = true;\r\n\t\t\tcase \"out\":\r\n\t\t\t\tthis.target.hoverable = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"focus\":\r\n\t\t\tcase \"blur\":\r\n\t\t\t\tthis.target.focusable = true;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tinfo.disposer = new MultiDisposer(disposers);\r\n\r\n\t\treturn info;\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * Defines a type of event that has a single point of reference.\r\n */\r\nexport type SpritePointerTypeEvent = {\r\n\r\n\t/**\r\n\t * Is event originated by touch pointer?\r\n\t */\r\n\ttouch: boolean;\r\n\r\n};\r\n\r\n/**\r\n * Defines property set for a [[Sprite]] event that contains point information.\r\n */\r\nexport type SpritePointEvent = {\r\n\t/**\r\n\t * Event point in global (document) coordinates.\r\n\t */\r\n\tpoint: IPoint;\r\n\r\n\t/**\r\n\t * Event point in local Sprite coordinates.\r\n\t */\r\n\tspritePoint: IPoint;\r\n\r\n\t/**\r\n\t * Event point with chart (svg) coodinates.\r\n\t */\r\n\tsvgPoint: IPoint;\r\n};\r\n\r\n\r\n/**\r\n * Defines a type of event that has a related Pointer.\r\n */\r\nexport type SpritePointerEvent = {\r\n\r\n\t/**\r\n\t * Coordinates of the primary cursor position.\r\n\t */\r\n\tpointer: IPointer;\r\n\r\n};\r\n\r\n\r\n/**\r\n * Defines property set for a [[Sprite]] event that contains mouse or touch\r\n * event.\r\n */\r\nexport type SpriteMouseTouchEvent = {\r\n\r\n\t/**\r\n\t * Original mouse/touch event.\r\n\t */\r\n\tevent: MouseEvent | TouchEvent;\r\n\r\n};\r\n\r\n/**\r\n * Defines property set for a [[Sprite]] event that contains coordinate shift\r\n * information, such as drag events.\r\n */\r\nexport type SpriteShiftEvent = {\r\n\r\n\t/**\r\n\t * Shift in coordinates after dragging.\r\n\t */\r\n\tshift: IPoint;\r\n\r\n};\r\n\r\n/**\r\n * Defines available events available for [[Sprite]].\r\n */\r\nexport interface ISpriteEvents extends IInteractionObjectEvents {\r\n\r\n\t/**\r\n\t * Invoked when Sprite completes transition to a [[SpriteState]].\r\n\t */\r\n\ttransitionended: {};\r\n\r\n\t/**\r\n\t * Invoked when size of the Sprite changes.\r\n\t */\r\n\tsizechanged: {};\r\n\r\n\t/**\r\n\t * Invoked when maximum available size of the Sprite changes, i.e. when the\r\n\t * size of parent container changes.\r\n\t */\r\n\tmaxsizechanged: {\r\n\t\tpreviousWidth: number,\r\n\t\tpreviousHeight: number\r\n\t};\r\n\r\n\t/**\r\n\t * @todo Description\r\n\t */\r\n\ttransformed: {\r\n\r\n\t\t/**\r\n\t\t * [string description]\r\n\t\t * @todo Needs description\r\n\t\t */\r\n\t\tdummyData?: string;\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when position of the [[Sprite]] changes.\r\n\t */\r\n\tpositionchanged: {};\r\n\r\n\t/**\r\n\t * Invoked when [[Sprite]] is initialized.\r\n\t */\r\n\tinited: {};\r\n\r\n\t/**\r\n\t * Invoked when [[Sprite]] appears. Sprite appears when sprite.appear() method is called and show animation is finished.\r\n\t */\r\n\tappeared: {};\r\n\r\n\t/**\r\n\t * Invoked when [[Sprite]] is becomes ready, that is it has finished all\r\n\t * calculations and building itself.\r\n\t *\r\n\t * For [[Container]] object (and all those inheriting it, including charts)\r\n\t * this event will fire when all children become ready.\r\n\t */\r\n\tready: {};\r\n\r\n\t/**\r\n\t * Invoked before [[Sprite]] is validated.\r\n\t *\r\n\t * @todo Description (check)\r\n\t */\r\n\tbeforevalidated: {};\r\n\r\n\t/**\r\n\t * Invoked when [[Sprite]] is validated. (on init or after update)\r\n\t *\r\n\t * @todo Description (check)\r\n\t */\r\n\tvalidated: {};\r\n\r\n\t/**\r\n\t * Invoked when visibility of the [[Sprite]] changes. (from visible to hidden,\r\n\t * and vice versa)\r\n\t */\r\n\tvisibilitychanged: {\r\n\t\tvisible: boolean;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when hidden [[Sprite]] is shown.\r\n\t */\r\n\tshown: {};\r\n\r\n\t/**\r\n\t * Invoked when visible [[Sprite]] is hidden.\r\n\t */\r\n\thidden: {};\r\n\r\n\t/**\r\n\t * Invoked when zIndex of a sprite is changed\r\n\t */\r\n\tzIndexChanged: {};\r\n\r\n\t/**\r\n\t * Invoked when property of the [[Sprite]] changes.\r\n\t */\r\n\tpropertychanged: {\r\n\r\n\t\t/**\r\n\t\t * Property key.\r\n\t\t */\r\n\t\tproperty: string;\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when the global scale changed, meaning that scale of [[Sprite]]\r\n\t * or any of its ascendants changed.\r\n\t */\r\n\tglobalscalechanged: {};\r\n\r\n\t/**\r\n\t * Invoked when [[Sprite]] is clicked or touched.\r\n\t */\r\n\thit: SpritePointerTypeEvent & SpritePointEvent & SpriteMouseTouchEvent;\r\n\r\n\t/**\r\n\t * Invoked when [[Sprite]] is clicked or touched twice in rapid succession.\r\n\t */\r\n\tdoublehit: SpritePointerTypeEvent & SpritePointEvent & SpriteMouseTouchEvent;\r\n\r\n\t/**\r\n\t * Invoked when pointer (mouse cursor or touch point) moves over `trackable`\r\n\t * [[Sprite]].\r\n\t */\r\n\ttrack: SpritePointerTypeEvent & SpritePointEvent & SpritePointerEvent & SpriteMouseTouchEvent;\r\n\r\n\t/**\r\n\t * Invoked when user turns mouse wheel while over the [[Sprite]].\r\n\t */\r\n\twheel: SpritePointEvent & SpriteShiftEvent & {\r\n\r\n\t\t/**\r\n\t\t * Original JavaScript event.\r\n\t\t */\r\n\t\tevent: WheelEvent\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when user turns mouse wheel upwards while over the [[Sprite]].\r\n\t */\r\n\twheelup: SpritePointEvent & SpriteShiftEvent & {\r\n\r\n\t\t/**\r\n\t\t * Original JavaScript event\r\n\t\t */\r\n\t\tevent: WheelEvent\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when user turns mouse wheel downwards while over the [[Sprite]].\r\n\t */\r\n\twheeldown: SpritePointEvent & SpriteShiftEvent & {\r\n\r\n\t\t/**\r\n\t\t * Original JavaScript event.\r\n\t\t */\r\n\t\tevent: WheelEvent\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when user turns mouse wheel leftwards while over the [[Sprite]].\r\n\t */\r\n\twheelleft: SpritePointEvent & SpriteShiftEvent & {\r\n\r\n\t\t/**\r\n\t\t * Original JavaScript event\r\n\t\t */\r\n\t\tevent: WheelEvent\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when user turns mouse wheel rightwards while over the [[Sprite]].\r\n\t */\r\n\twheelright: SpritePointEvent & SpriteShiftEvent & {\r\n\r\n\t\t/**\r\n\t\t * Original JavaScript event.\r\n\t\t */\r\n\t\tevent: WheelEvent\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when `togglable` Sprite is being toggled on and off. (its\r\n\t * `isActive` property is being changed)\r\n\t */\r\n\ttoggled: {};\r\n\r\n\t/**\r\n\t * Invoked just before Sprite is disposed.\r\n\t */\r\n\tbeforedisposed: {};\r\n\r\n\t/**\r\n\t * Invoked when sprite is disabled\r\n\t */\r\n\tdisabled: {};\r\n\r\n\t/**\r\n\t * Invoked when sprite is enabled\r\n\t */\r\n\tenabled: {};\r\n\r\n\t/**\r\n\t * Invoked when `draggable` object is being dragged. (using mouse, touch or\r\n\t * keyboard).\r\n\t *\r\n\t * This is simmilar but different then `\"drag\"` event in that it kicks in\r\n\t * after `\"drag\"` which modifies [[Sprite]] coordinates. This allows doing\r\n\t * own manipulations and corrections to element positions.\r\n\t */\r\n\tdragged: SpritePointerTypeEvent & SpriteShiftEvent & SpritePointEvent & {\r\n\r\n\t\t/**\r\n\t\t * Original coordinates of the pointer's position when the dragging started.\r\n\t\t */\r\n\t\tstartPoint: IPoint,\r\n\r\n\t\t/**\r\n\t\t * An original JavaScript event that triggered dragging.\r\n\t\t */\r\n\t\tevent?: MouseEvent | TouchEvent | KeyboardEvent\r\n\r\n\t};\r\n\r\n\t/** \r\n\t * Invoked when a sprite is added to a parent\r\n\t */\r\n\tparentset: {};\r\n\r\n}\r\n","/**\r\n * Module contains functionality related to [[Sprite]] states.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"./Base\";\r\nimport { registry } from \"./Registry\";\r\nimport { Adapter } from \"./utils/Adapter\";\r\nimport { List, ListDisposer } from \"./utils/List\";\r\nimport { Filter } from \"./rendering/filters/Filter\";\r\nimport { Sprite } from \"./Sprite\";\r\n\r\nimport { toColor } from \"./utils/Color\";\r\nimport { percent } from \"./utils/Percent\";\r\nimport * as $utils from \"./utils/Utils\";\r\nimport * as $ease from \"./utils/Ease\";\r\nimport * as $object from \"./utils/Object\";\r\nimport * as $type from \"./utils/Type\";\r\n\r\n/**\r\n * Defines a state for [[Sprite]].\r\n *\r\n * A \"state\" is a special object that has all the same properties as the\r\n * [[Sprite]] of the same type, and which can be used to quickly apply a set\r\n * of property values. (set state)\r\n *\r\n * When [[Sprite]] (or any object that extends Sprite) is created it creates a\r\n * \"default\" state. You can modify the \"default\" state so that when the Sprite\r\n * returns to default state certain properties are added.\r\n *\r\n * Default state can be accessed using Sprite's `defaultState` getter.\r\n *\r\n * ```TypeScript\r\n * sprite.defaultState.properties.fillOpacity = 0.5;\r\n * ```\r\n * ```JavaScript\r\n * sprite.defaultState.properties.fillOpacity = 0.5;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"defaultState\": {\r\n * \"properties\": {\r\n * \"fillOpacity\": 0.5\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * If Sprite is \"hoverable\", it automatically adds a \"hover\" state, which is\r\n * applied when it has a cursor over it.\r\n *\r\n * ```TypeScript\r\n * let hoverstate = sprite.states.create(\"hover\");\r\n * hoverstate.properties.fillOpacity = 1;\r\n * ```\r\n * ```JavaScript\r\n * var hoverstate = sprite.states.create(\"hover\");\r\n * hoverstate.properties.fillOpacity = 1;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"states\": {\r\n * \"hover\": {\r\n * \"properties\": {\r\n * \"fillOpacity\": 0.5\r\n * }\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * The above will automatically apply \"hover\" state when the Sprite is hovered,\r\n * thus will set its `fillOpacity` property to 1, and will reset it to 0.5 when\r\n * it's no longer hovered.\r\n *\r\n * Every object that inherits from [[Sprite]] can and will add their own\r\n * properties to the available list.\r\n *\r\n * User can create their own states, and apply them as needed:\r\n *\r\n * ```TypeScript\r\n * let myCustomState = sprite.states.create(\"mystate\");\r\n * myCustomState.properties.fillOpacity = 0.5;\r\n * myCustomState.properties.strokeOpacity = 0.8;\r\n * sprite.setState(\"mystate\");\r\n * ```\r\n * ```JavaScript\r\n * var myCustomState = sprite.states.create(\"mystate\");\r\n * myCustomState.properties.fillOpacity = 0.5;\r\n * myCustomState.properties.strokeOpacity = 0.8;\r\n * sprite.setState(\"mystate\");\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/states/}\r\n * @important\r\n */\r\nexport class SpriteState<P, A> extends BaseObject {\r\n\r\n\t/**\r\n\t * Defines property types.\r\n\t */\r\n\tpublic _properties!: P;\r\n\r\n\t/**\r\n\t * Defines adapter types.\r\n\t */\r\n\tpublic _adapter!: A;\r\n\r\n\t/**\r\n\t * Title of the state, i.e. \"default\", \"hidden\", etc.\r\n\t */\r\n\tpublic name: string;\r\n\r\n\t/**\r\n\t * Reference to [[Sprite]] element this State is for.\r\n\t */\r\n\tpublic sprite: $type.Optional<Sprite>;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic _adapterO: Adapter<this, A>;\r\n\r\n\t/**\r\n\t * Holds Adapter.\r\n\t */\r\n\tpublic get adapter(): Adapter<this, A> {\r\n\t\tif (!this._adapterO) {\r\n\t\t\tthis._adapterO = new Adapter<this, A>(this);\r\n\r\n\t\t\t// Decorate adapter with events so that we can apply its settings whenever\r\n\t\t\t// it is modified\r\n\t\t\tthis._adapterO.events.on(\"inserted\", (ev: any) => {\r\n\t\t\t\t(<any>this)[ev.newValue.key] = (<any>this)[ev.newValue.key];\r\n\t\t\t}, undefined, false);\r\n\t\t\tthis._adapterO.events.on(\"removed\", (ev: any) => {\r\n\t\t\t\t(<any>this)[ev.newValue.key] = (<any>this)[ev.newValue.key];\r\n\t\t\t}, undefined, false);\r\n\t\t}\r\n\t\treturn this._adapterO;\r\n\t}\r\n\r\n\t/**\r\n\t * Duration of the transition to this state. 0 means instantenous transition.\r\n\t * Any number means the [[Sprite]] will transit smoothly to this state,\r\n\t * animating all animatable properties.\r\n\t *\r\n\t * @default 0\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n\t */\r\n\tpublic transitionDuration: number = 0;\r\n\r\n\t/**\r\n\t * Easing function to use when transitioning to this state.\r\n\t *\r\n\t * @default cubicOut\r\n\t * @see {@link Ease}\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n\t */\r\n\tpublic transitionEasing: (value: number) => number = $ease.cubicOut;\r\n\r\n\t/**\r\n\t * Collection of properties and their values that should be applied to [[Sprite]]\r\n\t * when switching to this State.\r\n\t *\r\n\t * The property values set on a [[SpriteState]] will override the ones set\r\n\t * directly on a [[Sprite]].\r\n\t */\r\n\tpublic properties: P = <P>{};\r\n\r\n\t/**\r\n\t * A collection of key/value pairs that can be used to bind specific Sprite\r\n\t * properties to [[DataItem]].\r\n\t *\r\n\t * For example: `fill` property can be bound to `myCustomColor` field in\r\n\t * DataItem. The Sprite will automatically get the value for `fill` from its\r\n\t * DataItem.\r\n\t *\r\n\t * SpriteState-specific binding will override binding set directly on\r\n\t * [[Sprite]]. I.e. you can make Sprite use different fill color on hover by\r\n\t * adding a `fill` binding to a different DataItem key for Sprite's \"hover\"\r\n\t * state object.\r\n\t *\r\n\t * @see {@link Sprite}\r\n\t */\r\n\tpublic propertyFields: { [index in keyof this[\"_properties\"]]?: string } = {};\r\n\t//public propertyFields: Dictionary<keyof this[\"_properties\"], string> = new Dictionary<keyof this[\"_properties\"], string>();;\r\n\r\n\t/**\r\n\t * A list of [[Filter]] elements to be applied to the relative [[Sprite]]\r\n\t * when switching to this State.\r\n\t *\r\n\t * @param {List}\r\n\t */\r\n\tpublic filters = new List<Filter>();\r\n\r\n\t/**\r\n\t * Identifies if this object is a \"template\" and should not be treated as\r\n\t * real object that is drawn or actually used in the chart.\r\n\t */\r\n\tpublic isTemplate: boolean = false;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"SpriteState\";\r\n\r\n\t\t// Make filter list disposable\r\n\t\tthis._disposers.push(new ListDisposer(this.filters));\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns [[Sprite]] element's property value.\r\n\t *\r\n\t * Will check if there are any bindings with [[DataItem]] and if there are\r\n\t * any method callbacks set up for the specific property.\r\n\t *\r\n\t * @param propertyName Property name\r\n\t * @return Property value\r\n\t */\r\n\tpublic getPropertyValue<Key extends keyof P>(propertyName: Key): P[Key] {\r\n\t\tlet propValue: any = this.properties[propertyName];\r\n\t\tlet sprite: $type.Optional<Sprite> = this.sprite;\r\n\r\n\t\tif (sprite) {\r\n\t\t\tlet fieldName: string = this.propertyFields[propertyName];\r\n\r\n\t\t\tif ($type.hasValue(fieldName)) {\r\n\t\t\t\tif (sprite.dataItem) {\r\n\t\t\t\t\tpropValue = (<any>sprite.dataItem.dataContext)[fieldName];\r\n\t\t\t\t}\r\n\t\t\t\tif(propValue == undefined){\r\n\t\t\t\t\tpropValue = \"__unset\"\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Apply adapters\r\n\t\t\t// If the value itself is undefined, we're going to pass in Sprite's\r\n\t\t\t// value to adapters\r\n\t\t\t// @todo get rid of <any>\r\n\t\t\tif (!$type.hasValue(propValue)) {\r\n\t\t\t\tlet spriteValue = sprite.getPropertyValue(<any>propertyName);\r\n\t\t\t\tif (this._adapterO) {\r\n\t\t\t\t\tpropValue = this._adapterO.apply(<any>propertyName, spriteValue);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tpropValue = spriteValue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (propValue == spriteValue) {\r\n\t\t\t\t\tpropValue = undefined;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (this._adapterO) {\r\n\t\t\t\t\tpropValue = this._adapterO.apply(<any>propertyName, propValue)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/*let method = this.propertyMethods.getKey(propertyName);\r\n\t\t\tif (method) {\r\n\t\t\t\tpropValue = method(sprite, propertyName);\r\n\t\t\t}*/\r\n\r\n\t\t}\r\n\r\n\t\treturn propValue;\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all property and style values from another [[SpriteState]] object.\r\n\t *\r\n\t * @param source Source [[SpriteState]]\r\n\t */\r\n\tpublic copyFrom(source: this) {\r\n\t\tif (source && source != this) {\r\n\t\t\tthis.transitionDuration = source.transitionDuration;\r\n\t\t\tthis.transitionEasing = source.transitionEasing;\r\n\r\n\t\t\t$utils.copyProperties(source.properties, this.properties);\r\n\t\t\t$utils.copyProperties(source.propertyFields, this.propertyFields);\r\n\t\t\tthis.filters.copyFrom(source.filters);\r\n\t\t\tif(source._adapterO){\r\n\t\t\t\tthis.adapter.copyFrom(source._adapterO);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns all values that should be applied by the SpriteState.\r\n\t *\r\n\t * It takes adapters into account.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Properties\r\n\t * @todo Add adapter values\r\n\t * @todo proper type this[\"_properties\"]\r\n\t */\r\n\tpublic get allValues(): P {\r\n\r\n\t\t// Init return value\r\n\t\tlet res: P = <P>{};\r\n\r\n\t\t// Apply adapters to all values\r\n\t\t$object.each(this.properties, (prop, value) => {\r\n\t\t\tres[prop] = this.getPropertyValue(prop);\r\n\t\t});\r\n\r\n\t\t// Cycle through all adapters and add values for missing properties\r\n\t\tif(this._adapterO){\r\n\t\t\tlet keys = this._adapterO.keys();\r\n\r\n\t\t\t$object.each(keys, (_x, prop) => {\r\n\t\t\t\tlet value = this.getPropertyValue<any>(prop);\r\n\t\t\t\t(<any>res)[prop] = value;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Cycle through all property fileds and add values for missing properties\r\n\t\tlet propertyFields = this.propertyFields;\r\n\r\n\t\t$object.each(propertyFields, (prop) => {\r\n\t\t\tlet value = this.getPropertyValue<any>(prop);\r\n\t\t\t(<any>res)[prop] = value;\r\n\t\t});\r\n\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Resets the State to initial state - no values or Filters applied.\r\n\t */\r\n\tpublic reset(): void {\r\n\t\tthis.properties = <P>{};\r\n\t\tthis.filters.clear();\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tif ($type.hasValue(config) && $type.hasValue(config[\"properties\"])) {\r\n\t\t\t$object.each(config[\"properties\"], (key, value) => {\r\n\t\t\t\tif ($type.isString(value)) {\r\n\t\t\t\t\tif (value.match(/^[0-9.\\-]+\\%$/)) {\r\n\t\t\t\t\t\tconfig[\"properties\"][key] = percent($type.toNumber(value));\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (value.match(/^\\#[0-9abcdef]{3,}$/i)) {\r\n\t\t\t\t\t\tconfig[\"properties\"][key] = toColor(value);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsuper.processConfig(config);\r\n\t}\r\n\r\n\t/**\r\n\t * Adds easing functions to \"function\" fields.\r\n\t *\r\n\t * @param field Field name\r\n\t * @return Assign as function?\r\n\t */\r\n\tprotected asFunction(field: string): boolean {\r\n\t\treturn field == \"transitionEasing\" || super.asIs(field);\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SpriteState\"] = SpriteState;\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { registry, is } from \"./Registry\";\r\nimport { Sprite } from \"./Sprite\";\r\nimport { Container } from \"./Container\";\r\nimport { Component } from \"./Component\";\r\nimport { Label } from \"./elements/Label\";\r\nimport { raf } from \"./utils/AsyncPending\";\r\nimport { IAnimationObject } from \"./utils/Animation\";\r\nimport { triggerIdle } from \"./utils/AsyncPending\";\r\nimport * as $array from \"./utils/Array\";\r\nimport * as $object from \"./utils/Object\";\r\nimport * as $type from \"./utils/Type\";\r\nimport * as $log from \"./utils/Log\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * The main class that handles system-wide tasks, like caching, heartbeats, etc.\r\n * @important\r\n */\r\nexport class System {\r\n\t/**\r\n\t * A flag indicating if the system is on pause.\r\n\t */\r\n\tprotected _isPaused: boolean = false;\r\n\r\n\t/**\r\n\t * Holds the list of currently playing animations.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic animations: Array<IAnimationObject> = [];\r\n\r\n\t/**\r\n\t * Unique ID of the object.\r\n\t */\r\n\tpublic uid: string = registry.getUniqueId();\r\n\r\n\t/**\r\n\t * amCharts Version.\r\n\t *\r\n\t * This follows npm's semver specification.\r\n\t *\r\n\t * @see {@link https://docs.npmjs.com/misc/semver}\r\n\t */\r\n\tstatic VERSION: string = \"4.9.0\";\r\n\r\n\t/**\r\n\t * @todo Description\r\n\t * @todo Needed?\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic dummyCounter: number = 0;\r\n\r\n\t/**\r\n\t * @todo Description\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic time: number;\r\n\r\n\r\n\tprotected _frameRequested: boolean = false;\r\n\r\n\tpublic updateStepDuration: number = 45;\r\n\r\n\t/**\r\n\t * Performs initialization of the System object.\r\n\t *\r\n\t * Called when the first [[Sprite]] object is created.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic constructor() {\r\n\t\tthis.time = Date.now();\r\n\t}\r\n\r\n\t/**\r\n\t * Reports time elapsed since timer was reset.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Needed?\r\n\t * @param msg Message to report in console\r\n\t * @param reset Reset time counter\r\n\t */\r\n\tpublic reportTime(msg: string, reset?: boolean): void {\r\n\t\tif (this.dummyCounter < 6) {\r\n\t\t\t//console.log(Date.now() - this.time, msg, this.dummyCounter2);\r\n\t\t}\r\n\t\tif (reset) {\r\n\t\t\tthis.time = Date.now();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Performs \"heartbeat\" operations `frameRate` number of times per second.\r\n\t *\r\n\t * When the chart element is invalidated, it is not immediately redrawn.\r\n\t *\r\n\t * Instead it waits for the next `update()` cycle to be re-validated.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Maybe should be private?\r\n\t */\r\n\tpublic update(): void {\r\n\r\n\t\tif (this._isPaused) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._frameRequested = false;\r\n\r\n\t\tlet time = Date.now();\r\n\r\n\t\tregistry.dispatchImmediately(\"enterframe\");\r\n\r\n\t\t//this.validateLayouts();\r\n\t\t//this.validatePositions();\r\n\t\t/*\r\n\t\t\t\tfor (let key in registry.invalidLayouts) {\r\n\t\t\t\t\tthis.validateLayouts(key);\r\n\t\t\t\t}\r\n\t\t\t\tfor (let key in registry.invalidPositions) {\r\n\t\t\t\t\tthis.validatePositions(key);\r\n\t\t\t\t}\r\n\t\t*/\r\n\r\n\t\tlet skippedComponents: Component[] = [];\r\n\r\n\t\t// data objects first - do all calculations\r\n\t\t// only data is parsed in chunks, thats why we do for loop instead of a while like with other invalid items.\r\n\t\t// important to go backwards, as items are removed!\r\n\t\t// TODO use iterator instead\r\n\r\n\t\tfor (let key in registry.invalidDatas) {\r\n\t\t\tif ($object.hasKey(registry.invalidDatas, key)) {\r\n\t\t\t\tlet invalidData = registry.invalidDatas[key];\r\n\r\n\t\t\t\twhile (invalidData.length > 0) {\r\n\t\t\t\t\tlet component: Component = invalidData[0];\r\n\t\t\t\t\tlet dataProvider: $type.Optional<Component> = component.dataProvider;\r\n\r\n\t\t\t\t\tif (!component.isDisposed()) {\r\n\r\n\t\t\t\t\t\tif (dataProvider && dataProvider.dataInvalid) {\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\tdataProvider.validateData();\r\n\t\t\t\t\t\t\t\tif (dataProvider.dataValidationProgress < 1) {\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tcatch (e) {\r\n\t\t\t\t\t\t\t\t$array.remove(invalidData, dataProvider);\r\n\t\t\t\t\t\t\t\tdataProvider.raiseCriticalError(e);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\tcomponent.validateData();\r\n\t\t\t\t\t\t\t\tif (component.dataValidationProgress < 1) {\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tcatch (e) {\r\n\t\t\t\t\t\t\t\t$array.remove(invalidData, component);\r\n\t\t\t\t\t\t\t\tcomponent.raiseCriticalError(e);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t$array.remove(invalidData, component);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (Date.now() - time > this.updateStepDuration) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\twhile (registry.invalidRawDatas.length > 0) {\r\n\t\t\tlet component: Component = registry.invalidRawDatas[0];\r\n\t\t\tif (!component.isDisposed()) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tcomponent.validateRawData();\r\n\t\t\t\t}\r\n\t\t\t\tcatch (e) {\r\n\t\t\t\t\t$array.remove(registry.invalidRawDatas, component);\r\n\t\t\t\t\tcomponent.raiseCriticalError(e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t$array.remove(registry.invalidRawDatas, component);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// TODO use iterator instead\r\n\t\twhile (registry.invalidDataItems.length > 0) {\r\n\t\t\tlet component: Component = registry.invalidDataItems[0];\r\n\r\n\t\t\tlet dataProvider: $type.Optional<Component> = component.dataProvider;\r\n\r\n\t\t\t// this is needed to avoid partial value validation when data is parsed in chunks\r\n\t\t\tif (component.isDisposed() || component.dataInvalid || (dataProvider && dataProvider.dataInvalid)) {\r\n\t\t\t\t// void\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tcomponent.validateDataItems();\r\n\t\t\t\t}\r\n\t\t\t\tcatch (e) {\r\n\t\t\t\t\t$array.remove(registry.invalidDataItems, component);\r\n\t\t\t\t\tcomponent.raiseCriticalError(e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// this might seem too much, as validateValues removes from invalidDataItems aswell, but just to be sure (in case validateData is overriden and no super is called)\r\n\t\t\t$array.remove(registry.invalidDataItems, component);\r\n\t\t}\r\n\r\n\t\t// TODO use iterator instead\r\n\t\twhile (registry.invalidDataRange.length > 0) {\r\n\t\t\tlet component: Component = registry.invalidDataRange[0];\r\n\r\n\t\t\tlet dataProvider: $type.Optional<Component> = component.dataProvider;\r\n\r\n\t\t\tif (component.isDisposed() || component.dataInvalid || (dataProvider && dataProvider.dataInvalid)) {\r\n\t\t\t\t// void\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tcomponent.validateDataRange();\r\n\t\t\t\t\tif (!component.skipRangeEvent) {\r\n\t\t\t\t\t\tcomponent.dispatchImmediately(\"datarangechanged\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcomponent.skipRangeEvent = false;\r\n\t\t\t\t}\r\n\t\t\t\tcatch (e) {\r\n\t\t\t\t\t$array.remove(registry.invalidDataRange, component);\r\n\t\t\t\t\tcomponent.raiseCriticalError(e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// this might seem too much, as validateDataRange removes from invalidDataRange aswell, but just to be sure (in case validateData is overriden and no super is called)\r\n\t\t\t$array.remove(registry.invalidDataRange, component);\r\n\t\t}\r\n\r\n\t\tlet skippedSprites: Sprite[] = [];\r\n\r\n\t\t// display objects later\r\n\t\t// TODO use iterator instead\r\n\r\n\t\t$object.each(registry.invalidLayouts, (key) => {\r\n\t\t\tthis.validateLayouts(key);\r\n\t\t});\r\n\r\n\t\t$object.each(registry.invalidPositions, (key) => {\r\n\t\t\tthis.validatePositions(key);\r\n\t\t});\r\n\r\n\r\n\t\tlet hasSkipped: boolean = false;\r\n\r\n\t\ttime = Date.now();\r\n\r\n\t\t$object.each(registry.invalidSprites, (key, invalidSprites) => {\r\n\t\t\tlet count = 0;\r\n\r\n\t\t\twhile (invalidSprites.length > 0) {\r\n\t\t\t\tthis.validateLayouts(key);\r\n\t\t\t\tthis.validatePositions(key);\r\n\r\n\t\t\t\tcount++;\r\n\r\n\t\t\t\tif (count == 5) {\r\n\t\t\t\t\tif (Date.now() - time > this.updateStepDuration) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcount = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet sprite: Sprite = invalidSprites[invalidSprites.length - 1];\r\n\r\n\t\t\t\t// we need to check this, as validateLayout might validate sprite\r\n\t\t\t\tif (sprite && !sprite.isDisposed()) {\r\n\t\t\t\t\tif (!sprite._systemCheckIfValidate()) {\r\n\t\t\t\t\t\t// void\r\n\t\t\t\t\t\tskippedSprites.push(sprite);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tif (!this.checkIfValidate2(sprite)) {\r\n\t\t\t\t\t\t\t// void\r\n\t\t\t\t\t\t\tskippedSprites.push(sprite);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\tsprite._systemUpdate(skippedSprites);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tcatch (e) {\r\n\t\t\t\t\t\t\t\tsprite.invalid = false;\r\n\t\t\t\t\t\t\t\t$array.remove(invalidSprites, sprite);\r\n\t\t\t\t\t\t\t\tsprite.raiseCriticalError(e);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// this might seem too much, but it's ok\r\n\t\t\t\t\tsprite.invalid = false;\r\n\t\t\t\t}\r\n\t\t\t\t$array.remove(invalidSprites, sprite);\r\n\t\t\t}\r\n\r\n\t\t\tregistry.invalidSprites[key] = registry.invalidSprites[key].concat(skippedSprites);\r\n\t\t});\r\n\r\n\t\t$object.each(registry.invalidSprites, (key, value) => {\r\n\t\t\tif (value.length > 0) {\r\n\t\t\t\thasSkipped = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$object.each(registry.invalidDatas, (key, value) => {\r\n\t\t\tif (value.length > 0) {\r\n\t\t\t\thasSkipped = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// TODO make this more efficient\r\n\t\t// TODO don't copy the array\r\n\t\t$array.each($array.copy(this.animations), (x) => {\r\n\t\t\tx.update();\r\n\t\t});\r\n\r\n\t\t//if(!hasSkipped){\r\n\t\t$object.each(registry.invalidLayouts, (key) => {\r\n\t\t\tthis.validateLayouts(key);\r\n\t\t});\r\n\r\n\t\t$object.each(registry.invalidPositions, (key) => {\r\n\t\t\tthis.validatePositions(key);\r\n\t\t});\r\n\t\t//}\r\n\r\n\t\ttriggerIdle();\r\n\r\n\t\t$object.each(registry.invalidLayouts, (key) => {\r\n\t\t\tthis.validateLayouts(key);\r\n\t\t});\r\n\r\n\t\t$object.each(registry.invalidPositions, (key) => {\r\n\t\t\tthis.validatePositions(key);\r\n\t\t});\r\n\r\n\r\n\t\tregistry.dispatchImmediately(\"exitframe\");\r\n\r\n\t\tif (hasSkipped || this.animations.length > 0 || skippedComponents.length > 0) {\r\n\t\t\tthis.requestFrame();\r\n\t\t}\r\n\r\n\t\tif (this.updateStepDuration < 200) {\r\n\t\t\tlet all0 = true;\r\n\r\n\t\t\t$object.each(registry.invalidDatas, (key, value) => {\r\n\t\t\t\tif (value.length > 0) {\r\n\t\t\t\t\tall0 = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$object.each(registry.invalidSprites, (key, value) => {\r\n\t\t\t\tif (value.length > 0) {\r\n\t\t\t\t\tall0 = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (all0) {\r\n\t\t\t\tthis.updateStepDuration = 200;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic checkIfValidate2(sprite: Sprite): boolean {\r\n\t\tif (sprite.dataItem && sprite.dataItem.component && sprite.dataItem.component.dataInvalid && !sprite.dataItem.component.isTemplate) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Requests new animation frame\r\n\t */\r\n\tpublic requestFrame() {\r\n\t\tif (!this._frameRequested) {\r\n\r\n\t\t\traf(() => {\r\n\t\t\t\tthis.update();\r\n\t\t\t});\r\n\t\t\tthis._frameRequested = true;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Call this method if you update data or config of a chart that is in\r\n\t * hidden container, after revealing the container, so that labels and\r\n\t * possibly other elements can correctly arrange themselves.\r\n\t *\r\n\t * @since 4.7.10\r\n\t * @param container Target container\r\n\t */\r\n\tpublic softInvalidate(container: Container) {\r\n\t\tcontainer.children.each((child) => {\r\n\t\t\tif (child instanceof Container) {\r\n\t\t\t\tthis.softInvalidate(child);\r\n\t\t\t}\r\n\t\t\tif (child.measureFailed) {\r\n\t\t\t\tif (is<Label>(child, \"Label\")) {\r\n\t\t\t\t\tchild.hardInvalidate();\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tchild.invalidate();\r\n\t\t\t\t}\r\n\t\t\t\tchild.measureFailed = false;\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers position re-validation on all [[Sprite]] elements that have\r\n\t * invalid(ated) positions.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Maybe should be private?\r\n\t */\r\n\tpublic validatePositions(id: string): void {\r\n\t\t// invalid positions\r\n\t\t// TODO use iterator instead\r\n\t\tlet invalidPositions = registry.invalidPositions[id];\r\n\r\n\t\twhile (invalidPositions.length > 0) {\r\n\t\t\tlet sprite: Sprite = invalidPositions[invalidPositions.length - 1];\r\n\t\t\tif (!sprite.isDisposed()) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tsprite._systemValidatePositions();\r\n\t\t\t\t}\r\n\t\t\t\tcatch (e) {\r\n\t\t\t\t\tsprite.positionInvalid = false;\r\n\t\t\t\t\t$array.remove(invalidPositions, sprite);\r\n\t\t\t\t\tsprite.raiseCriticalError(e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t$array.remove(invalidPositions, sprite);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers position re-validation on all [[Container]] elements that have\r\n\t * invalid(ated) layouts.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Maybe should be private?\r\n\t */\r\n\tpublic validateLayouts(id: string): void {\r\n\t\t// invalid positions\r\n\t\t// TODO use iterator instead\r\n\t\tlet invalidLayouts = registry.invalidLayouts[id];\r\n\t\twhile (invalidLayouts.length > 0) {\r\n\t\t\tlet container: Container = invalidLayouts[invalidLayouts.length - 1];\r\n\t\t\tif (!container.isDisposed()) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tcontainer.children.each((sprite) => {\r\n\t\t\t\t\t\tsprite._systemValidateLayouts();\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\tcontainer.validateLayout();\r\n\t\t\t\t}\r\n\t\t\t\tcatch (e) {\r\n\t\t\t\t\tcontainer.layoutInvalid = false;\r\n\t\t\t\t\t$array.remove(invalidLayouts, container);\r\n\t\t\t\t\tcontainer.raiseCriticalError(e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t$array.remove(invalidLayouts, container);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Outputs string to console if `verbose` is `true`.\r\n\t *\r\n\t * @param value Message to output to console\r\n\t */\r\n\tpublic log(value: any): void {\r\n\t\t$log.log(value);\r\n\t}\r\n\r\n\t/**\r\n\t * Pauses all the processes of all the amCharts objects on the page\r\n\t *\r\n\t * @return is paused?\r\n\t */\r\n\tpublic set isPaused(value: boolean) {\r\n\t\tthis._isPaused = value;\r\n\t\tif (!value) {\r\n\t\t\tthis._frameRequested = false;\r\n\t\t\tthis.requestFrame();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Is system on pause?\r\n\t */\r\n\tpublic get isPaused(): boolean {\r\n\t\treturn this._isPaused;\r\n\t}\r\n\r\n}\r\n\r\n\r\n/**\r\n * A singleton global instance of [[System]].\r\n *\r\n * All code should use this, rather than instantiating their\r\n * own System objects.\r\n */\r\nexport const system: System = new System();\r\n","/**\r\n * CSV parser.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { DataParser, IDataParserOptions } from \"./DataParser\";\r\nimport { DateFormatter } from \"../formatters/DateFormatter\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $array from \"../utils/Array\";\r\n\r\n/**\r\n * Defines options for CSV format parser\r\n */\r\nexport interface ICSVOptions extends IDataParserOptions {\r\n\r\n\t/**\r\n\t * A delimiter character for columns.\r\n\t *\r\n\t * @default ','\r\n\t */\r\n\tdelimiter?: string;\r\n\r\n\t/**\r\n\t * The data is in reverse order.\r\n\t *\r\n\t * If iset to `true`, parser will invert the order of the data items before\r\n\t * passing back the data.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\treverse?: boolean;\r\n\r\n\t/**\r\n\t * Skip a number of rows from the beginning of the data.\r\n\t *\r\n\t * Useful if your data contains non-data headers, such as column names or\r\n\t * empty rows.\r\n\t *\r\n\t * @default 0\r\n\t */\r\n\tskipRows?: number;\r\n\r\n\t/**\r\n\t * Skip empty rows.\r\n\t *\r\n\t * If set to `false`, parser will generate empty data points for empty rows\r\n\t * in data.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tskipEmpty?: boolean;\r\n\r\n\t/**\r\n\t * Use the first row in data to generte column names.\r\n\t *\r\n\t * Normally, parser will name each column `col0`, `col1`, etc.\r\n\t *\r\n\t * Setting this to `true` will make the parser look at the first row, for\r\n\t * actual column names.\r\n\t *\r\n\t * Please note that if you use it with `skipRows`, the specified number of\r\n\t * rows will be removed, then the parser will look for column names in the\r\n\t * first row of what's left.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tuseColumnNames?: boolean;\r\n\r\n\t/**\r\n\t * A list of fields that should be treaded as numeric.\r\n\t *\r\n\t * Any information container in such fields will be converted to `number`.\r\n\t */\r\n\tnumberFields?: string[];\r\n\r\n\t/**\r\n\t * A list of fields that hold date/time infromation.\r\n\t *\r\n\t * Parser will try to convert such fields into `Date` objects.\r\n\t */\r\n\tdateFields?: string[];\r\n\r\n\t/**\r\n\t * A date formatted to be used when parsing dates.\r\n\t */\r\n\tdateFormatter?: DateFormatter;\r\n}\r\n\r\n/**\r\n * Define possible separators.\r\n */\r\nlet separators = [\",\", \";\", \"\\t\"];\r\n\r\n/**\r\n * A parser for CSV format.\r\n *\r\n * @important\r\n */\r\nexport class CSVParser extends DataParser {\r\n\r\n\t/**\r\n\t * Tests if the format is CSV.\r\n\t *\r\n\t * @param data Source data\r\n\t * @return Is it CSV?\r\n\t */\r\n\tstatic isCSV(data: string): boolean {\r\n\t\treturn CSVParser.getDelimiterFromData(data) ? true : false;\r\n\t}\r\n\r\n\t/**\r\n\t * Tries to determine a column separator.\r\n\t *\r\n\t * @param data Source data\r\n\t * @return Separator\r\n\t */\r\n\tstatic getDelimiterFromData(data: string): string {\r\n\r\n\t\t// We're going to take first few lines of the CSV with different\r\n\t\t// possible separators and check if it results in same number of columns.\r\n\t\t// If it does, we're going to assume it's a CSV\r\n\t\tlet lines = data.split(\"\\n\");\r\n\t\tlet len = lines.length;\r\n\t\tlet separator: string;\r\n\r\n\t\t$array.each(separators, (sep) => {\r\n\t\t\tlet columns = 0,\r\n\t\t\t\tlineColums = 0;\r\n\r\n\t\t\t// TODO replace with iterators\r\n\t\t\tfor (let i = 0; i < len; ++i) {\r\n\r\n\t\t\t\t// Get number of columns in a line\r\n\t\t\t\tcolumns = lines[i].split(sep).length;\r\n\r\n\t\t\t\tif (columns > 1) {\r\n\r\n\t\t\t\t\t// More than one column - possible candidate\r\n\t\t\t\t\tif (lineColums === 0) {\r\n\t\t\t\t\t\t// First line\r\n\t\t\t\t\t\tlineColums = columns;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (columns != lineColums) {\r\n\t\t\t\t\t\t// Incorrect number of columns, give up on this separator\r\n\t\t\t\t\t\tlineColums = 0;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\r\n\t\t\t\t\t// Not this separator\r\n\t\t\t\t\t// Not point in continuing\r\n\t\t\t\t\tlineColums = 0;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Check if we have a winner\r\n\t\t\tif (lineColums) {\r\n\t\t\t\tseparator = sep;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn separator;\r\n\t}\r\n\r\n\t/**\r\n\t * Content-type suitable for CSV format.\r\n\t */\r\n\tpublic contentType: string = \"text/csv\";\r\n\r\n\t/**\r\n\t * Parser options.\r\n\t *\r\n\t * @see {@link ICSVOptions} for description of each option\r\n\t */\r\n\tpublic options: ICSVOptions = {\r\n\t\tdelimiter: \"\",\r\n\t\treverse: false,\r\n\t\tskipRows: 0,\r\n\t\tskipEmpty: true,\r\n\t\tuseColumnNames: false\r\n\t};\r\n\r\n\t/**\r\n\t * Parses and returns data.\r\n\t *\r\n\t * @param data Unparsed data\r\n\t * @return Parsed data\r\n\t */\r\n\tpublic parse(csv: string): any[] {\r\n\r\n\t\t// Check if we have delimiter set\r\n\t\tif (!this.options.delimiter) {\r\n\t\t\tthis.options.delimiter = CSVParser.getDelimiterFromData(csv);\r\n\t\t}\r\n\r\n\t\t// Get CSV data as array\r\n\t\tlet data = this.CSVToArray(csv, this.options.delimiter);\r\n\r\n\t\t// Do we need to cast some fields to numbers?\r\n\t\tlet empty = $type.hasValue(this.options.emptyAs);\r\n\t\tlet numbers = this.parsableNumbers;\r\n\t\tlet dates = this.parsableDates;\r\n\r\n\t\t// Init resuling array\r\n\t\tlet res: any[] = [],\r\n\t\t\tcols: string[] = [],\r\n\t\t\tcol: string,\r\n\t\t\ti: number;\r\n\r\n\t\t// Skip rows\r\n\t\tfor (i = 0; i < this.options.skipRows; i++) {\r\n\t\t\tdata.shift();\r\n\t\t}\r\n\r\n\t\t// First row holds column names?\r\n\t\tif (this.options.useColumnNames) {\r\n\t\t\tcols = data.shift();\r\n\r\n\t\t\t// Normalize column names\r\n\t\t\tfor (let x = 0; x < cols.length; x++) {\r\n\t\t\t\t// trim\r\n\t\t\t\tcol = $type.hasValue(cols[x]) ? cols[x].replace(/^\\s+|\\s+$/gm, \"\") : \"\";\r\n\r\n\t\t\t\t// Check for empty\r\n\t\t\t\tif (\"\" === col) {\r\n\t\t\t\t\tcol = \"col\" + x;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcols[x] = col;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Iterate through the result set\r\n\t\tlet row;\r\n\t\twhile (true) {\r\n\t\t\trow = this.options.reverse ? data.pop() : data.shift();\r\n\r\n\t\t\tif (!row) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.skipEmpty && row.length === 1 && row[0] === \"\") {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet dataPoint: any = {};\r\n\t\t\tfor (i = 0; i < row.length; i++) {\r\n\t\t\t\tcol = undefined === cols[i] ? \"col\" + i : cols[i];\r\n\t\t\t\tdataPoint[col] = row[i] === \"\" ? this.options.emptyAs : row[i];\r\n\r\n\t\t\t\t// Convert\r\n\t\t\t\tif (empty) {\r\n\t\t\t\t\tdataPoint[col] = this.maybeToEmpty(dataPoint[col]);\r\n\t\t\t\t}\r\n\t\t\t\tif (numbers) {\r\n\t\t\t\t\tdataPoint[col] = this.maybeToNumber(col, dataPoint[col]);\r\n\t\t\t\t}\r\n\t\t\t\tif (dates) {\r\n\t\t\t\t\tdataPoint[col] = this.maybeToDate(col, dataPoint[col]);\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\tres.push(dataPoint);\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n \t * Converts CSV into array.\r\n \t *\r\n \t * The functionality of this function is taken from here:\r\n \t * http://www.bennadel.com/blog/1504-ask-ben-parsing-csv-strings-with-javascript-exec-regular-expression-command.htm\r\n \t *\r\n \t * @param data Source data\r\n \t * @param delimiter Column delimiter\r\n \t * @return Parsed array\r\n \t */\r\n\tpublic CSVToArray(data: string, delimiter: string): any[] {\r\n\r\n\t\t// Check to see if the delimiter is defined. If not,\r\n\t\t// then default to comma.\r\n\t\tdelimiter = (delimiter || ',');\r\n\r\n\t\t// Create a regular expression to parse the CSV values.\r\n\t\tlet objPattern = new RegExp(\r\n\t\t\t(\r\n\t\t\t\t// Delimiters.\r\n\t\t\t\t\"(\\\\\" + delimiter + \"|\\\\r?\\\\n|\\\\r|^)\" +\r\n\r\n\t\t\t\t// Quoted fields.\r\n\t\t\t\t\"(?:\\\"([^\\\"]*(?:\\\"\\\"[^\\\"]*)*)\\\"|\" +\r\n\r\n\t\t\t\t// Standard fields.\r\n\t\t\t\t\"([^\\\"\\\\\" + delimiter + \"\\\\r\\\\n]*))\"\r\n\t\t\t),\r\n\t\t\t\"gi\"\r\n\t\t);\r\n\r\n\r\n\t\t// Create an array to hold our data. Give the array\r\n\t\t// a default empty first row.\r\n\t\tlet arrData: any[] = [\r\n\t\t\t[]\r\n\t\t];\r\n\r\n\t\t// Create an array to hold our individual pattern\r\n\t\t// matching groups.\r\n\t\tlet arrMatches = null;\r\n\r\n\t\t// Keep looping over the regular expression matches\r\n\t\t// until we can no longer find a match.\r\n\t\twhile (true) {\r\n\t\t\tarrMatches = objPattern.exec(data);\r\n\r\n\t\t\tif (!arrMatches) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t// Get the delimiter that was found.\r\n\t\t\tlet strMatchedDelimiter = arrMatches[1];\r\n\r\n\t\t\t// Check to see if the given delimiter has a length\r\n\t\t\t// (is not the start of string) and if it matches\r\n\t\t\t// field delimiter. If id does not, then we know\r\n\t\t\t// that this delimiter is a row delimiter.\r\n\t\t\tif (\r\n\t\t\t\tstrMatchedDelimiter.length &&\r\n\t\t\t\t(strMatchedDelimiter !== delimiter)\r\n\t\t\t) {\r\n\r\n\t\t\t\t// Since we have reached a new row of data,\r\n\t\t\t\t// add an empty row to our data array.\r\n\t\t\t\tarrData.push([]);\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Now that we have our delimiter out of the way,\r\n\t\t\t// let's check to see which kind of value we\r\n\t\t\t// captured (quoted or unquoted).\r\n\t\t\tlet strMatchedValue;\r\n\t\t\tif (arrMatches[2]) {\r\n\r\n\t\t\t\t// We found a quoted value. When we capture\r\n\t\t\t\t// this value, unescape any double quotes.\r\n\t\t\t\tstrMatchedValue = arrMatches[2].replace(\r\n\t\t\t\t\tnew RegExp(\"\\\"\\\"\", \"g\"),\r\n\t\t\t\t\t\"\\\"\"\r\n\t\t\t\t);\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// We found a non-quoted value.\r\n\t\t\t\tstrMatchedValue = arrMatches[3];\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Now that we have our value string, let's add\r\n\t\t\t// it to the data array.\r\n\t\t\tarrData[arrData.length - 1].push(strMatchedValue);\r\n\t\t}\r\n\r\n\t\t// Return the parsed data.\r\n\t\treturn (arrData);\r\n\t}\r\n\r\n}\r\n","/**\r\n * Data Loader is responsible for loading and parsing external data\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { DataSource } from \"./DataSource\";\r\nimport { DataParser } from \"./DataParser\";\r\nimport { CSVParser } from \"./CSVParser\";\r\nimport { JSONParser } from \"./JSONParser\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport * as $net from \"../utils/Net\";\r\nimport * as $array from \"../utils/Array\";\r\n\r\n/**\r\n * Represents a list of available adapters for Sprite\r\n */\r\nexport interface IDataLoaderAdapters {\r\n\r\n\t/**\r\n\t * Applied after the Data Loader determines suitable parser type by data\r\n\t * source's URL extension.\r\n\t */\r\n\tgetParserByType: {\r\n\t\tparser: DataParser,\r\n\t\ttype?: string\r\n\t},\r\n\r\n\t/**\r\n\t * Applied after the Data Loader determines suitable parser type based on\r\n\t * its data examination.\r\n\t */\r\n\tgetParserByData: {\r\n\t\tparser: DataParser,\r\n\t\tdata?: string,\r\n\t\ttype?: string\r\n\t}\r\n\r\n};\r\n\r\n/**\r\n * Data Loader is responsible for loading and parsing external data.\r\n *\r\n * There is just one instance of DataLoader per system. Unless you have a\r\n * speicific reason, do not instantiate additional instances.\r\n *\r\n * The global instance of Data Loader is accessible via:\r\n *\r\n * ```TypeScript\r\n * am4core.dataLoader;\r\n * ```\r\n * ```JavaScript\r\n * am4core.dataLoader;\r\n * ```\r\n *\r\n * A loading of specific data source is done via [[DataSource]].\r\n *\r\n \t Please refer to [[DataSource]] for information how to use it.\r\n *\r\n * @see {@link IDataLoaderAdapters} for a list of available Adapters\r\n */\r\nexport class DataLoader {\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IDataLoaderAdapters;\r\n\r\n\t/**\r\n\t * Adapter.\r\n\t */\r\n\tpublic adapter: Adapter<DataLoader, IDataLoaderAdapters> = new Adapter<DataLoader, IDataLoaderAdapters>(this);\r\n\r\n\t/**\r\n\t * Loads a supplied [[DataSource]] or an array of data sources, then calls\r\n\t * their respective `parse` methods.\r\n\t *\r\n\t * @param source A single data source or an array of multiple of data sources\r\n\t */\r\n\tpublic load(source: DataSource | DataSource[]): void {\r\n\t\tlet sources = Array.isArray(source) ? source : [source];\r\n\r\n\t\t// Add each Source to the list to be loaded simultaneously\r\n\t\tlet promises = $array.map(sources, (x) => {\r\n\t\t\t// Dispatch events\r\n\t\t\tx.dispatchImmediately(\"started\");\r\n\t\t\tx.dispatchImmediately(\"loadstarted\");\r\n\r\n\t\t\treturn $net.load(x.url, x, x.requestOptions);\r\n\t\t});\r\n\r\n\t\t// Run all promises in parallel\r\n\t\tPromise.all(promises).then((res) => {\r\n\t\t\t// Process each loaded source\r\n\t\t\t$array.each(res, (result) => {\r\n\t\t\t\t// Get Source\r\n\t\t\t\tlet source = result.target;\r\n\r\n\t\t\t\t// Dispatch events\r\n\t\t\t\tsource.dispatchImmediately(\"loadended\");\r\n\r\n\t\t\t\tif (result.error) {\r\n\t\t\t\t\tif (source.events.isEnabled(\"error\")) {\r\n\t\t\t\t\t\tsource.events.dispatchImmediately(\"error\", {\r\n\t\t\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\t\t\tcode: result.xhr.status,\r\n\t\t\t\t\t\t\tmessage: source.language.translate(\"Unable to load file: %1\", null, source.url),\r\n\t\t\t\t\t\t\ttarget: source\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\r\n\t\t\t\t\t// Initiate parsing of the loaded data\r\n\t\t\t\t\tsource.processData(result.response, result.type);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsource.dispatchImmediately(\"ended\");\r\n\t\t\t});\r\n\t\t}).catch((res) => {\r\n\r\n\t\t\tif (res.target) {\r\n\r\n\t\t\t\tres.target.dispatchImmediately(\"loadended\");\r\n\r\n\t\t\t\tif (res.target.events.isEnabled(\"error\")) {\r\n\t\t\t\t\tres.target.events.dispatchImmediately(\"error\", {\r\n\t\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\t\tcode: res.xhr.status,\r\n\t\t\t\t\t\tmessage: res.target.language.translate(\"Unable to load file: %1\", null, res.target.url),\r\n\t\t\t\t\t\ttarget: res.target\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tres.target.dispatchImmediately(\"ended\");\r\n\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Instantiates a [[DataParser]] object based on the data type.\r\n\t * Built-in parser types are as follows:\r\n\t *\r\n\t * * \"csv\" or \"text/csv\"\r\n\t * * \"json\" or \"application/json\"\r\n\t *\r\n\t * @param contentType A format type\r\n\t * @return A parser object\r\n\t */\r\n\tpublic getParserByType(contentType: string): DataParser {\r\n\r\n\t\t// Let some plugin decide\r\n\t\tlet parser = this.adapter.apply(\"getParserByType\", {\r\n\t\t\tparser: null,\r\n\t\t\ttype: contentType\r\n\t\t}).parser;\r\n\r\n\t\tif (parser) {\r\n\t\t\treturn parser;\r\n\t\t}\r\n\r\n\t\tif (contentType == \"csv\" || contentType == \"text/csv\" || contentType == \"application/vnd.ms-excel\") {\r\n\t\t\treturn new CSVParser();\r\n\t\t}\r\n\t\tif (contentType == \"json\" || contentType == \"application/json\") {\r\n\t\t\treturn new JSONParser();\r\n\t\t}\r\n\t\treturn;\r\n\t}\r\n\r\n\t/**\r\n\t * Tries to determine a parser out of content type and/or actual data.\r\n\t *\r\n\t * @param data Data\r\n\t * @param contentType Content-type\r\n\t * @return Parser instance\r\n\t */\r\n\tpublic getParserByData(data: string, contentType?: string): DataParser {\r\n\r\n\t\t// Let some plugin decide\r\n\t\tlet parser = this.adapter.apply(\"getParserByData\", {\r\n\t\t\tparser: null,\r\n\t\t\tdata: data,\r\n\t\t\ttype: contentType\r\n\t\t}).parser;\r\n\r\n\t\t// Check if we have parser from outside code\r\n\t\tif (!parser) {\r\n\t\t\t// No, let's try to figure it out\r\n\t\t\tparser = this.getParserByType(contentType)\r\n\r\n\t\t\tif (parser) {\r\n\t\t\t\t// We're able to figure out parser by content-type\r\n\t\t\t\treturn parser;\r\n\t\t\t}\r\n\t\t\telse if (JSONParser.isJSON(data)) {\r\n\t\t\t\treturn this.getParserByType(\"json\");\r\n\t\t\t}\r\n\t\t\telse if (CSVParser.isCSV(data)) {\r\n\t\t\t\treturn this.getParserByType(\"csv\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn parser;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Create instance of Data Loader\r\n */\r\nexport let dataLoader: DataLoader = new DataLoader();\r\n","/**\r\n * Data parser module.\r\n */\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { DateFormatter } from \"../formatters/DateFormatter\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines common options for all data parsers.\r\n */\r\nexport interface IDataParserOptions {\r\n\r\n\t/**\r\n\t * Empty values (e.g. empty strings, `null`, etc.) will be replaced with\r\n\t * this.\r\n\t */\r\n\temptyAs?: any;\r\n\r\n\t/**\r\n\t * List of fields in data that hold numeric values. Parser will try to\r\n\t * convert the value in those fields to a `number`.\r\n\t */\r\n\tnumberFields?: string[];\r\n\r\n\t/**\r\n\t * List of fields in data that need to be treated as Dates, i.e. converted\r\n\t * to `Date` objects from whatever source format they are currently in.\r\n\t */\r\n\tdateFields?: string[];\r\n\r\n\t/**\r\n\t * An instance of [[DateFormatter]] to use when parsing string-based dates.\r\n\t * If it's not set, the parser will create it's own instance of\r\n\t * [[DateFormatter]], should any date parsing required. (`dateFields` is set)\r\n\t *\r\n\t * Unless `dateFormat` is set in parser options, the parser will try to look\r\n\t * for `dateFormat` in `dateFormatter`.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/#Parsing_Dates} Tutorial on date parsing\r\n\t */\r\n\tdateFormatter?: DateFormatter;\r\n\r\n\t/**\r\n\t * Override date format set in `dateFormatter`.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/#Parsing_Dates} Tutorial on date parsing\r\n\t */\r\n\tdateFormat?: string;\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Base class for the data parsers.\r\n */\r\nexport class DataParser {\r\n\r\n\t/**\r\n\t * Content type, relevant to the specific format.\r\n\t */\r\n\tpublic contentType: string;\r\n\r\n\t/**\r\n\t * Parser options.\r\n\t *\r\n\t * @see {@link IDataParserOptions} for description of each option\r\n\t */\r\n\tpublic options: IDataParserOptions;\r\n\r\n\t/**\r\n\t * A \"placeholder\" function for real parsers to override.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param data Source data\r\n\t * @return Parsed data (empty)\r\n\t */\r\n\tpublic parse(data: string): any {\r\n\t\treturn [];\r\n\t};\r\n\r\n\t/**\r\n\t * Checks if there are any numeric fields that need to be converted to\r\n\t * numbers.\r\n\t *\r\n\t * @return Numeric fields?\r\n\t */\r\n\tprotected get parsableNumbers(): boolean {\r\n\t\treturn this.options.numberFields && (this.options.numberFields.length > 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a value to 'number' if it is in `numberFields`.\r\n\t *\r\n\t * @param field Field name\r\n\t * @param value Value\r\n\t * @return Parsed or original value\r\n\t */\r\n\tprotected maybeToNumber(field: string, value: any): any {\r\n\t\tif (this.options.numberFields.indexOf(field) !== -1) {\r\n\t\t\treturn $utils.anyToNumber(value);\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if there are any date fields that need to be converted to `Date`\r\n\t * objects.\r\n\t *\r\n\t * @return Date fields?\r\n\t */\r\n\tprotected get parsableDates(): boolean {\r\n\t\treturn this.options.dateFields && (this.options.dateFields.length > 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a value to `Date` if it is in `dateFields`.\r\n\t *\r\n\t * @param field Field name\r\n\t * @param value Value\r\n\t * @return Parsed or original value\r\n\t */\r\n\tprotected maybeToDate(field: string, value: any): any {\r\n\t\tif (this.options.dateFields.indexOf(field) !== -1) {\r\n\t\t\treturn this.options.dateFormatter.parse(value, this.dateFormat);\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Replaces empty value with something else.\r\n\t *\r\n\t * @param value Source value\r\n\t * @return Source value or replacement\r\n\t */\r\n\tprotected maybeToEmpty(value: any): any {\r\n\t\tif ((!$type.hasValue(value) || value == \"\") && $type.hasValue(this.options.emptyAs)) {\r\n\t\t\treturn this.options.emptyAs;\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * [[DateFormatter]] object for date parsing.\r\n\t *\r\n\t * If there was not [[DateFormatter]] supplied in parser options, a new one\r\n\t * is created.\r\n\t *\r\n\t * @return Date formatter\r\n\t * @see {@link DateFormatter}\r\n\t */\r\n\tprotected get dateFormatter(): DateFormatter {\r\n\t\tif (!this.options.dateFormatter) {\r\n\t\t\tthis.options.dateFormatter = new DateFormatter;\r\n\t\t\tif (this.options.dateFormat) {\r\n\t\t\t\tthis.options.dateFormat = this.options.dateFormat;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.options.dateFormatter;\r\n\t}\r\n\r\n\t/**\r\n\t * A date format to use when parsing dates.\r\n\t *\r\n\t * @return Date format\r\n\t * @see {@link DateFormatter}\r\n\t */\r\n\tprotected get dateFormat(): string {\r\n\t\treturn this.options.dateFormat || this.dateFormatter.inputDateFormat;\r\n\t}\r\n\r\n}\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { dataLoader } from \"./DataLoader\";\r\nimport { DataParser } from \"./DataParser\";\r\nimport { JSONParser } from \"./JSONParser\";\r\nimport { CSVParser } from \"./CSVParser\";\r\nimport { BaseObjectEvents, IBaseObjectEvents } from \"../Base\";\r\nimport { Component } from \"../Component\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { AMEvent } from \"../utils/EventDispatcher\";\r\nimport { Language } from \"../utils/Language\";\r\nimport { DateFormatter } from \"../formatters/DateFormatter\";\r\nimport { INetRequestOptions } from \"../utils/Net\";\r\nimport { IDisposer } from \"../utils/Disposer\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $object from \"../utils/Object\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines events for [[DataSource]].\r\n */\r\nexport interface IDataSourceEvents extends IBaseObjectEvents {\r\n\r\n\t/**\r\n\t * Invoked when loading of the data starts.\r\n\t */\r\n\tstarted: {};\r\n\r\n\t/**\r\n\t * Invoked when loading of the data starts.\r\n\t */\r\n\tloadstarted: {};\r\n\r\n\t/**\r\n\t * Invoked when the loading of the data finishes.\r\n\t */\r\n\tloadended: {};\r\n\r\n\t/**\r\n\t * Invoked when parsing of the loaded data starts.\r\n\t */\r\n\tparsestarted: {};\r\n\r\n\t/**\r\n\t * Invoked when parsing of the loaded data finishes.\r\n\t */\r\n\tparseended: {};\r\n\r\n\t/**\r\n\t * Invoked when loading and parsing finishes.\r\n\t */\r\n\tended: {};\r\n\r\n\t/**\r\n\t * Invoked when data source was successfully loaded and parsed.\r\n\t */\r\n\tdone: {\r\n\t\tdata: any\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when data source encounters a loading error.\r\n\t */\r\n\terror: {\r\n\t\tcode: number,\r\n\t\tmessage: string\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when data source encounters a parsing error.\r\n\t */\r\n\tparseerror: {\r\n\t\tmessage: string\r\n\t};\r\n\r\n};\r\n\r\n/**\r\n * Defines adapters for [[DataSource]].\r\n */\r\nexport interface IDataSourceAdapters {\r\n\r\n\t/**\r\n\t * Applied to a data source URL before it is loaded.\r\n\t */\r\n\turl: string;\r\n\r\n\t/**\r\n\t * Applied to a parser type, before parsing starts.\r\n\t *\r\n\t * Can be used to supply different parser than the one set/determined by\r\n\t * Data Loader.\r\n\t */\r\n\tparser: DataParser;\r\n\r\n\t/**\r\n\t * Applied to the timeout setting.\r\n\t */\r\n\treloadTimeout: number;\r\n\r\n\t/**\r\n\t * Applied to the loaded data **before** it is passed to parser.\r\n\t */\r\n\tunparsedData: string;\r\n\r\n\t/**\r\n\t * Applied to the loaded data **after** it was parsed by a parser.\r\n\t */\r\n\tparsedData: any;\r\n\r\n\t/**\r\n\t * Applied to `incremental` setting.\r\n\t */\r\n\tincremental: boolean;\r\n\r\n\t/**\r\n\t * Applied to `incrementalParams` setting.\r\n\t */\r\n\tincrementalParams: { [index: string]: string };\r\n\r\n\t/**\r\n\t * Applied to `updateCurrentData` setting.\r\n\t */\r\n\tupdateCurrentData: boolean;\r\n\r\n\t/**\r\n\t * Applied to `keepCount` setting.\r\n\t */\r\n\tkeepCount: boolean;\r\n\r\n\t/**\r\n\t * Applied to parser options.\r\n\t */\r\n\tparserOptions: any;\r\n\r\n\t/**\r\n\t * Applied to the array that lists fields in data that hold date-based values.\r\n\t */\r\n\tdateFields: string[];\r\n\r\n\t/**\r\n\t * Applied to the array that lists fields in data that hold numeric values.\r\n\t */\r\n\tnumberFields: string[];\r\n\r\n\t/**\r\n\t * Applied to the custom request options object.\r\n\t */\r\n\trequestOptions: INetRequestOptions;\r\n\r\n};\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Represents a single data source - external file with all of its settings,\r\n * such as format, data parsing, etc.\r\n *\r\n * ```TypeScript\r\n * chart.dataSource.url = \"http://www.myweb.com/data.json\";\r\n * chart.dataSource.parser = am4core.JSONParser;\r\n * ```\r\n * ```JavaScript\r\n * chart.dataSource.url = \"http://www.myweb.com/data.json\";\r\n * chart.dataSource.parser = am4core.JSONParser;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"dataSource\": {\r\n * \"url\": \"http://www.myweb.com/data.json\",\r\n * \"parser\": \"JSONParser\"\r\n * },\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @see {@link IDataSourceEvents} for a list of available events\r\n * @see {@link IDataSourceAdapters} for a list of available Adapters\r\n */\r\nexport class DataSource extends BaseObjectEvents {\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IDataSourceEvents;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IDataSourceAdapters;\r\n\r\n\t/**\r\n\t * Adapter.\r\n\t */\r\n\tpublic adapter: Adapter<DataSource, IDataSourceAdapters> = new Adapter<DataSource, IDataSourceAdapters>(this);\r\n\r\n\t/**\r\n\t * A [[Component]] recipient of the data.\r\n\t */\r\n\tpublic component: Component;\r\n\r\n\t/**\r\n\t * An instance of [[Language]].\r\n\t */\r\n\tprotected _language: Language;\r\n\r\n\t/**\r\n\t * An instance of [[DateFormatter]].\r\n\t */\r\n\tprotected _dateFormatter: DateFormatter;\r\n\r\n\t/**\r\n\t * An instance of parser class that can understand and parse data from the\r\n\t * source URL.\r\n\t */\r\n\tprotected _parser: DataParser;\r\n\r\n\t/**\r\n\t * An URL of the data source.\r\n\t */\r\n\tprotected _url: string;\r\n\r\n\t/**\r\n\t * Custom options for HTTP(S) request.\r\n\t */\r\n\tprotected _requestOptions: INetRequestOptions = {};\r\n\r\n\t/**\r\n\t * Reload full data source every X ms.\r\n\t */\r\n\tprotected _reloadFrequency: number;\r\n\r\n\t/**\r\n\t * Holds timeout reference for next reload.\r\n\t */\r\n\tprotected _reloadTimeout: any;\r\n\r\n\t/**\r\n\t * Holds disposer for the reload event handler.\r\n\t */\r\n\tprivate _reloadDisposer: IDisposer;\r\n\r\n\t/**\r\n\t * If set to `true`, any subsequent data loads will be considered incremental\r\n\t * (containing only new data points that are supposed to be added to existing\r\n\t * data).\r\n\t *\r\n\t * NOTE: this setting works only with element's `data` property. It won't\r\n\t * work with any other externally-loadable data property.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tprotected _incremental: boolean = false;\r\n\r\n\t/**\r\n\t * A collection of key/value pairs to attach to a data source URL when making\r\n\t * an incremental request.\r\n\t */\r\n\tprotected _incrementalParams: { [index: string]: string } = {};\r\n\r\n\t/**\r\n\t * This setting is used only when `incremental = true`. If set to `true`,\r\n\t * it will try to retain the same number of data items across each load.\r\n\t *\r\n\t * E.g. if incremental load yeilded 5 new records, then 5 items from the\r\n\t * beginning of data will be removed so that we end up with the same number\r\n\t * of data items.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tprotected _keepCount: boolean = false;\r\n\r\n\t/**\r\n\t * If set to `true`, each subsequent load will be treated as an update to\r\n\t * currently loaded data, meaning that it will try to update values on\r\n\t * existing data items, not overwrite the whole data.\r\n\t *\r\n\t * This will work faster than complete update, and also will animate the\r\n\t * values to their new positions.\r\n\t *\r\n\t * Data sources across loads must contain the same number of data items.\r\n\t *\r\n\t * Loader will not truncate the data set if loaded data has fewer data items,\r\n\t * and if it is longer, the excess data items will be ignored.\r\n\t *\r\n\t * @default false\r\n\t * @since 4.5.5\r\n\t */\r\n\tprotected _updateCurrentData: boolean = false;\r\n\r\n\t/**\r\n\t * Holds the date of the last load.\r\n\t */\r\n\tpublic lastLoad: Date;\r\n\r\n\t/**\r\n\t * If set to `true` it will timestamp all requested URLs to work around\r\n\t * browser cache.\r\n\t */\r\n\tpublic disableCache: boolean;\r\n\r\n\t/**\r\n\t * Will show loading indicator when loading files.\r\n\t */\r\n\tpublic showPreloader: boolean = true;\r\n\r\n\t/**\r\n\t * Loaded and parsed data.\r\n\t */\r\n\tpublic data: any;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor(url?: string, parser?: string | DataParser) {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"DataSource\";\r\n\r\n\t\t// Set defaults\r\n\t\tif (url) {\r\n\t\t\tthis.url = url;\r\n\t\t}\r\n\r\n\t\t// Set parser\r\n\t\tif (parser) {\r\n\t\t\tif (typeof parser == \"string\") {\r\n\t\t\t\tthis.parser = dataLoader.getParserByType(parser);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.parser = parser;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Processes the loaded data.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param data Raw (unparsed) data\r\n\t * @param contentType Content type of the loaded data (optional)\r\n\t */\r\n\tpublic processData(data: string, contentType?: string): void {\r\n\t\t// Parsing started\r\n\t\tthis.dispatchImmediately(\"parsestarted\");\r\n\r\n\t\t// Check if parser is set\r\n\t\tif (!this.parser) {\r\n\r\n\t\t\t// Try to resolve from data\r\n\t\t\tthis.parser = dataLoader.getParserByData(data, contentType);\r\n\r\n\t\t\tif (!this.parser) {\r\n\t\t\t\t// We have a problem - nobody knows what to do with the data\r\n\t\t\t\t// Raise error\r\n\t\t\t\tif (this.events.isEnabled(\"parseerror\")) {\r\n\t\t\t\t\tconst event: AMEvent<this, IDataSourceEvents>[\"parseerror\"] = {\r\n\t\t\t\t\t\ttype: \"parseerror\",\r\n\t\t\t\t\t\tmessage: this.language.translate(\"No parser available for file: %1\", null, this.url),\r\n\t\t\t\t\t\ttarget: this\r\n\t\t\t\t\t};\r\n\t\t\t\t\tthis.events.dispatchImmediately(\"parseerror\", event);\r\n\t\t\t\t}\r\n\t\t\t\tthis.dispatchImmediately(\"parseended\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// Apply options adapters\r\n\t\tthis.parser.options = this.adapter.apply(\"parserOptions\", this.parser.options);\r\n\t\tthis.parser.options.dateFields = this.adapter.apply(\"dateFields\", this.parser.options.dateFields || []);\r\n\t\tthis.parser.options.numberFields = this.adapter.apply(\"numberFields\", this.parser.options.numberFields || []);\r\n\r\n\t\t// Check if we need to pass in date formatter\r\n\t\tif (this.parser.options.dateFields && !this.parser.options.dateFormatter) {\r\n\t\t\tthis.parser.options.dateFormatter = this.dateFormatter;\r\n\t\t}\r\n\r\n\t\t// Parse\r\n\t\tthis.data = this.adapter.apply(\r\n\t\t\t\"parsedData\",\r\n\t\t\tthis.parser.parse(\r\n\t\t\t\tthis.adapter.apply(\"unparsedData\", data)\r\n\t\t\t)\r\n\t\t);\r\n\r\n\t\t// Check for parsing errors\r\n\t\tif (!$type.hasValue(this.data) && this.events.isEnabled(\"parseerror\")) {\r\n\t\t\tconst event: AMEvent<this, IDataSourceEvents>[\"parseerror\"] = {\r\n\t\t\t\ttype: \"parseerror\",\r\n\t\t\t\tmessage: this.language.translate(\"Error parsing file: %1\", null, this.url),\r\n\t\t\t\ttarget: this\r\n\t\t\t};\r\n\t\t\tthis.events.dispatchImmediately(\"parseerror\", event);\r\n\t\t}\r\n\r\n\t\t// Wrap up\r\n\t\tthis.dispatchImmediately(\"parseended\");\r\n\r\n\t\tif ($type.hasValue(this.data)) {\r\n\t\t\tthis.dispatchImmediately(\"done\", {\r\n\t\t\t\t\"data\": this.data\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// The component is responsible for updating its own data vtriggered via\r\n\t\t// events.\r\n\r\n\t\t// Update last data load\r\n\t\tthis.lastLoad = new Date();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * URL of the data source.\r\n\t *\r\n\t * @param value URL\r\n\t */\r\n\tpublic set url(value: string) {\r\n\t\tthis._url = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return URL\r\n\t */\r\n\tpublic get url(): string {\r\n\r\n\t\t// Get URL\r\n\t\tlet url = this.disableCache\r\n\t\t\t? this.timestampUrl(this._url)\r\n\t\t\t: this._url;\r\n\r\n\t\t// Add incremental params\r\n\t\tif (this.incremental && this.component.data.length) {\r\n\t\t\turl = this.addUrlParams(url, this.incrementalParams);\r\n\t\t}\r\n\r\n\t\treturn this.adapter.apply(\"url\", url);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Custom options for HTTP(S) request.\r\n\t *\r\n\t * At this moment the only option supported is: `requestHeaders`, which holds\r\n\t * an array of objects for custom request headers, e.g.:\r\n\t *\r\n\t * ```TypeScript\r\n\t * chart.dataSource.requestOptions.requestHeaders = [{\r\n\t * \"key\": \"x-access-token\",\r\n\t * \"value\": \"123456789\"\r\n\t * }];\r\n\t * ``````JavaScript\r\n\t * chart.dataSource.requestOptions.requestHeaders = [{\r\n\t * \"key\": \"x-access-token\",\r\n\t * \"value\": \"123456789\"\r\n\t * }];\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"dataSource\": {\r\n\t * // ...\r\n\t * \"requestOptions\": {\r\n\t * \"requestHeaders\": [{\r\n\t * \"key\": \"x-access-token\",\r\n\t * \"value\": \"123456789\"\r\n\t * }]\r\n\t * }\r\n\t * }\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * NOTE: setting this options on an-already loaded DataSource will not\r\n\t * trigger a reload.\r\n\t *\r\n\t * @param value Options\r\n\t */\r\n\tpublic set requestOptions(value: INetRequestOptions) {\r\n\t\tthis._requestOptions = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Options\r\n\t */\r\n\tpublic get requestOptions(): INetRequestOptions {\r\n\t\treturn this.adapter.apply(\"requestOptions\", this._requestOptions);\r\n\t}\r\n\r\n\t/**\r\n\t * A parser to be used to parse data.\r\n\t *\r\n\t * ```TypeScript\r\n\t * chart.dataSource.url = \"http://www.myweb.com/data.json\";\r\n\t * chart.dataSource.parser = am4core.JSONParser;\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * chart.dataSource.url = \"http://www.myweb.com/data.json\";\r\n\t * chart.dataSource.parser = am4core.JSONParser;\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"dataSource\": {\r\n\t * \"url\": \"http://www.myweb.com/data.json\",\r\n\t * \"parser\": \"JSONParser\"\r\n\t * },\r\n\t * // ...\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @default JSONParser\r\n\t * @param value Data parser\r\n\t */\r\n\tpublic set parser(value: DataParser) {\r\n\t\tthis._parser = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Data parser\r\n\t */\r\n\tpublic get parser(): DataParser {\r\n\t\tif (!this._parser) {\r\n\t\t\tthis._parser = new JSONParser();\r\n\t\t}\r\n\t\treturn this.adapter.apply(\"parser\", this._parser);\r\n\t}\r\n\r\n\t/**\r\n\t * Data source reload frequency.\r\n\t *\r\n\t * If set, it will reload the same URL every X milliseconds.\r\n\t *\r\n\t * @param value Reload frequency (ms)\r\n\t */\r\n\tpublic set reloadFrequency(value: number) {\r\n\t\tif (this._reloadFrequency != value) {\r\n\t\t\tthis._reloadFrequency = value;\r\n\r\n\t\t\t// Should we schedule a reload?\r\n\t\t\tif (value) {\r\n\t\t\t\tif (!$type.hasValue(this._reloadDisposer)) {\r\n\t\t\t\t\tthis._reloadDisposer = this.events.on(\"ended\", (ev) => {\r\n\t\t\t\t\t\tthis._reloadTimeout = setTimeout(() => {\r\n\t\t\t\t\t\t\tthis.load();\r\n\t\t\t\t\t\t}, this.reloadFrequency);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if ($type.hasValue(this._reloadDisposer)) {\r\n\t\t\t\tthis._reloadDisposer.dispose();\r\n\t\t\t\tthis._reloadDisposer = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Reload frequency (ms)\r\n\t */\r\n\tpublic get reloadFrequency(): number {\r\n\t\treturn this.adapter.apply(\"reloadTimeout\", this._reloadFrequency);\r\n\t}\r\n\r\n\t/**\r\n\t * Should subsequent reloads be treated as incremental?\r\n\t *\r\n\t * Incremental loads will assume that they contain only new data items\r\n\t * since the last load.\r\n\t *\r\n\t * If `incremental = false` the loader will replace all of the target's\r\n\t * data with each load.\r\n\t *\r\n\t * This setting does not have any effect trhe first time data is loaded.\r\n\t *\r\n\t * NOTE: this setting works only with element's `data` property. It won't\r\n\t * work with any other externally-loadable data property.\r\n\t *\r\n\t * @default false\r\n\t * @param Incremental load?\r\n\t */\r\n\tpublic set incremental(value: boolean) {\r\n\t\tthis._incremental = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Incremental load?\r\n\t */\r\n\tpublic get incremental(): boolean {\r\n\t\treturn this.adapter.apply(\"incremental\", this._incremental);\r\n\t}\r\n\r\n\t/**\r\n\t * An object consisting of key/value pairs to apply to an URL when data\r\n\t * source is making an incremental request.\r\n\t *\r\n\t * @param value Incremental request parameters\r\n\t */\r\n\tpublic set incrementalParams(value: { [index: string]: string }) {\r\n\t\tthis._incrementalParams = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Incremental request parameters\r\n\t */\r\n\tpublic get incrementalParams(): { [index: string]: string } {\r\n\t\treturn this.adapter.apply(\"incrementalParams\", this._incrementalParams);\r\n\t}\r\n\r\n\t/**\r\n\t * This setting is used only when `incremental = true`. If set to `true`,\r\n\t * it will try to retain the same number of data items across each load.\r\n\t *\r\n\t * E.g. if incremental load yeilded 5 new records, then 5 items from the\r\n\t * beginning of data will be removed so that we end up with the same number\r\n\t * of data items.\r\n\t *\r\n\t * @default false\r\n\t * @param Keep record count?\r\n\t */\r\n\tpublic set keepCount(value: boolean) {\r\n\t\tthis._keepCount = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return keepCount load?\r\n\t */\r\n\tpublic get keepCount(): boolean {\r\n\t\treturn this.adapter.apply(\"keepCount\", this._keepCount);\r\n\t}\r\n\r\n\t/**\r\n\t * If set to `true`, each subsequent load will be treated as an update to\r\n\t * currently loaded data, meaning that it will try to update values on\r\n\t * existing data items, not overwrite the whole data.\r\n\t *\r\n\t * This will work faster than complete update, and also will animate the\r\n\t * values to their new positions.\r\n\t *\r\n\t * Data sources across loads must contain the same number of data items.\r\n\t *\r\n\t * Loader will not truncate the data set if loaded data has fewer data items,\r\n\t * and if it is longer, the excess data items will be ignored.\r\n\t *\r\n\t * NOTE: this setting is ignored if `incremental = true`.\r\n\t *\r\n\t * @default false\r\n\t * @since 2.5.5\r\n\t * @param Update current data?\r\n\t */\r\n\tpublic set updateCurrentData(value: boolean) {\r\n\t\tthis._updateCurrentData = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Update current data?\r\n\t */\r\n\tpublic get updateCurrentData(): boolean {\r\n\t\treturn this.adapter.apply(\"updateCurrentData\", this._updateCurrentData);\r\n\t}\r\n\r\n\t/**\r\n\t * Language instance to use.\r\n\t *\r\n\t * Will inherit and use chart's language, if not set.\r\n\t *\r\n\t * @param value An instance of Language\r\n\t */\r\n\tpublic set language(value: Language) {\r\n\t\tthis._language = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return A [[Language]] instance to be used\r\n\t */\r\n\tpublic get language(): Language {\r\n\t\tif (this._language) {\r\n\t\t\treturn this._language;\r\n\t\t}\r\n\t\telse if (this.component) {\r\n\t\t\tthis._language = this.component.language;\r\n\t\t\treturn this._language;\r\n\t\t}\r\n\t\tthis.language = new Language();\r\n\t\treturn this.language;\r\n\t}\r\n\r\n\t/**\r\n\t * A [[DateFormatter]] to use when parsing dates from string formats.\r\n\t *\r\n\t * Will inherit and use chart's DateFormatter if not ser.\r\n\t *\r\n\t * @param value An instance of [[DateFormatter]]\r\n\t */\r\n\tpublic set dateFormatter(value: DateFormatter) {\r\n\t\tthis._dateFormatter = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return A [[DateFormatter]] instance to be used\r\n\t */\r\n\tpublic get dateFormatter(): DateFormatter {\r\n\t\tif (this._dateFormatter) {\r\n\t\t\treturn this._dateFormatter;\r\n\t\t}\r\n\t\telse if (this.component) {\r\n\t\t\tthis._dateFormatter = this.component.dateFormatter;\r\n\t\t\treturn this._dateFormatter;\r\n\t\t}\r\n\t\tthis.dateFormatter = new DateFormatter();\r\n\t\treturn this.dateFormatter;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds current timestamp to the URL.\r\n\t *\r\n\t * @param url Source URL\r\n\t * @return Timestamped URL\r\n\t */\r\n\tpublic timestampUrl(url: string): string {\r\n\t\tlet tstamp = new Date().getTime().toString();\r\n\t\tlet params: { [index: string]: string } = {};\r\n\t\tparams[tstamp] = \"\";\r\n\t\treturn this.addUrlParams(url, params);\r\n\t}\r\n\r\n\t/**\r\n\t * Disposes of this object.\r\n\t */\r\n\tpublic dispose(): void {\r\n\t\tsuper.dispose();\r\n\t\tif (this._reloadTimeout) {\r\n\t\t\tclearTimeout(this._reloadTimeout);\r\n\t\t}\r\n\t\tif ($type.hasValue(this._reloadDisposer)) {\r\n\t\t\tthis._reloadDisposer.dispose();\r\n\t\t\tthis._reloadDisposer = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Initiate the load.\r\n\t *\r\n\t * All loading in JavaScript is asynchronous. This function will trigger the\r\n\t * load and will exit immediately.\r\n\t *\r\n\t * Use DataSource's events to watch for loaded data and errors.\r\n\t */\r\n\tpublic load(): void {\r\n\t\tif (this.url) {\r\n\t\t\tif (this._reloadTimeout) {\r\n\t\t\t\tclearTimeout(this._reloadTimeout);\r\n\t\t\t}\r\n\t\t\tdataLoader.load(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Adds parameters to `url` as query strings. Will take care of proper\r\n\t * separators.\r\n\t *\r\n\t * @param url Source URL\r\n\t * @param params Parameters\r\n\t * @return New URL\r\n\t */\r\n\tpublic addUrlParams(url: string, params: { [index: string]: string }): string {\r\n\t\tlet join = url.match(/\\?/) ? \"&\" : \"?\";\r\n\t\tlet add: string[] = [];\r\n\t\t$object.each(params, (key, value) => {\r\n\t\t\tif (value != \"\") {\r\n\t\t\t\tadd.push(key + \"=\" + encodeURIComponent(value));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tadd.push(key);\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (add.length) {\r\n\t\t\treturn url + join + add.join(\"&\");\r\n\t\t}\r\n\t\treturn url;\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tregistry.registeredClasses[\"json\"] = JSONParser;\r\n\t\tregistry.registeredClasses[\"JSONParser\"] = JSONParser;\r\n\t\tregistry.registeredClasses[\"csv\"] = CSVParser;\r\n\t\tregistry.registeredClasses[\"CSVParser\"] = CSVParser;\r\n\r\n\t\tsuper.processConfig(config);\r\n\r\n\t}\r\n\r\n}\r\n","/**\r\n * JSON parser.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { DataParser, IDataParserOptions } from \"./DataParser\";\r\nimport { DateFormatter } from \"../formatters/DateFormatter\";\r\nimport * as $object from \"../utils/Object\";\r\nimport * as $type from \"../utils/Type\";\r\n\r\n\r\n/**\r\n * Defines options for JSON format parser\r\n */\r\nexport interface IJSONOptions extends IDataParserOptions {\r\n\r\n\t/**\r\n\t * A list of fields that should be treaded as numeric.\r\n\t *\r\n\t * Any information container in such fields will be converted to `number`.\r\n\t */\r\n\tnumberFields?: string[];\r\n\r\n\t/**\r\n\t * A list of fields that hold date/time infromation.\r\n\t *\r\n\t * Parser will try to convert such fields into `Date` objects.\r\n\t */\r\n\tdateFields?: string[];\r\n\r\n\t/**\r\n\t * A date formatted to be used when parsing dates.\r\n\t */\r\n\tdateFormatter?: DateFormatter;\r\n\r\n}\r\n\r\n/**\r\n * A parser for JSON.\r\n *\r\n * @important\r\n */\r\nexport class JSONParser extends DataParser {\r\n\r\n\t/**\r\n\t * Tests if the data is valid JSON.\r\n\t *\r\n\t * @param data Source data\r\n\t * @return Is it JSON?\r\n\t */\r\n\tstatic isJSON(data: string): boolean {\r\n\t\ttry {\r\n\r\n\t\t\t// Try parsing JSON\r\n\t\t\tJSON.parse(data);\r\n\r\n\t\t\t// If we got to this point it means it's a valid JSON\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Content-type suitable for JSON format.\r\n\t */\r\n\tpublic contentType: string = \"application/json\";\r\n\r\n\t/**\r\n\t * Parser options.\r\n\t *\r\n\t * @see {@link IJSONOptions} for description of each option\r\n\t */\r\n\tpublic options: IJSONOptions = {};\r\n\r\n\t/**\r\n\t * Parses and returns data.\r\n\t *\r\n\t * @param data Unparsed data\r\n\t * @return Parsed data\r\n\t */\r\n\tpublic parse(data: string): any {\r\n\r\n\t\t// Init return\r\n\t\tlet res: any;\r\n\r\n\t\t// Try parsing\r\n\t\ttry {\r\n\t\t\tif ($type.hasValue(JSON)) {\r\n\t\t\t\tres = JSON.parse(data);\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\t// Do we need to cast some fields to numbers or dates?\r\n\t\tlet empty = $type.hasValue(this.options.emptyAs);\r\n\t\tlet numbers = this.parsableNumbers;\r\n\t\tlet dates = this.parsableDates;\r\n\t\tif (Array.isArray(res) && (numbers || dates || empty)) {\r\n\r\n\t\t\t// Iterate through the data and check if it needs to be converted\r\n\t\t\tfor (let i = 0, len = res.length; i < len; i++) {\r\n\t\t\t\tlet row = res[i];\r\n\t\t\t\t$object.each(row, (key, value) => {\r\n\t\t\t\t\tif (empty) {\r\n\t\t\t\t\t\trow[key] = this.maybeToEmpty(row[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (numbers) {\r\n\t\t\t\t\t\trow[key] = this.maybeToNumber(key, row[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (dates) {\r\n\t\t\t\t\t\trow[key] = this.maybeToDate(key, row[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// Convert to array\r\n\t\t//return Array.isArray(res) ? res : [res];\r\n\t\treturn res;\r\n\r\n\t}\r\n\r\n}\r\n","/**\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Color, color } from \"../utils/Color\"\r\n\r\n/**\r\n * Defines a class that holds default properties for new SVG elements\r\n */\r\nexport class SVGDefaults {\r\n\tstatic opacity: number = 1;\r\n\tstatic strokeOpacity: number = 1;\r\n\tstatic strokeWidth: number = 1;\r\n\tstatic fillOpacity: number = 1;\r\n\tstatic fill: Color = color(\"#000000\");\r\n\tstatic stroke: Color = color(\"#000000\");\r\n\tstatic focusable: boolean = undefined;\r\n\tstatic tabindex: number = 0;\r\n}\r\n","/**\r\n * Cone module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container, IContainerProperties, IContainerAdapters, IContainerEvents } from \"../../Container\";\r\nimport { Sprite, visualProperties } from \"../../Sprite\";\r\nimport { Ellipse } from \"../../elements/Ellipse\";\r\nimport { LinearGradientModifier } from \"../../rendering/fills/LinearGradientModifier\";\r\nimport { percent, Percent } from \"../../utils/Percent\";\r\nimport * as $object from \"../../utils/Object\";\r\nimport * as $path from \"../../rendering/Path\";\r\nimport { Orientation } from \"../../defs/Orientation\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Cone]].\r\n */\r\nexport interface IConeProperties extends IContainerProperties {\r\n\r\n\t/**\r\n\t * Angle of the point of view to the 3D element. (0-360)\r\n\t *\r\n\t * @default 30\r\n\t */\r\n\tangle?: number;\r\n\r\n\t/**\r\n\t * A relative radius of the cone's bottom (base).\r\n\t *\r\n\t * It is relevant to the inner width or height of the element.\r\n\t *\r\n\t * @default Percent(100)\r\n\t */\r\n\tradius?: Percent;\r\n\r\n\t/**\r\n\t * A relative radius of the cone's top (tip).\r\n\t *\r\n\t * It is relevant to the inner width or height of the element.\r\n\t *\r\n\t * @default Percent(0)\r\n\t */\r\n\ttopRadius?: Percent;\r\n\r\n\t/**\r\n\t * Orientation of the cone\r\n\t *\r\n\t * @default \"vertical\"\r\n\t */\r\n\torientation?: Orientation;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[Cone]].\r\n */\r\nexport interface IConeEvents extends IContainerEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Cone]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IConeAdapters extends IContainerAdapters, IConeProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Builds a round cone/cylinder.\r\n *\r\n * @see {@link IConeEvents} for a list of available events\r\n * @see {@link IConeAdapters} for a list of available Adapters\r\n */\r\nexport class Cone extends Container {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IConeProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IConeAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IConeEvents;\r\n\r\n\t/**\r\n\t * Bottom ellement.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic bottom: Ellipse;\r\n\r\n\t/**\r\n\t * Top element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic top: Ellipse;\r\n\r\n\t/**\r\n\t * Body element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic body: Sprite;\r\n\r\n\t/**\r\n\t * Gradient for the fill of the body.\r\n\t */\r\n\tpublic bodyFillModifier: LinearGradientModifier;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"Cone\";\r\n\r\n\t\tthis.angle = 30;\r\n\t\tthis.radius = percent(100);\r\n\t\tthis.topRadius = percent(100);\r\n\r\n\t\tthis.top = this.createChild(Ellipse);\r\n\t\tthis.top.shouldClone = false;\r\n\r\n\t\tthis.bottom = this.createChild(Ellipse);\r\n\t\tthis.bottom.shouldClone = false;\r\n\r\n\t\tthis.body = this.createChild(Sprite);\r\n\t\tthis.body.shouldClone = false;\r\n\r\n\t\tthis.body.setElement(this.paper.add(\"path\"));\r\n\t\tthis.layout = \"none\";\r\n\r\n\t\tthis.bodyFillModifier = new LinearGradientModifier();\r\n\t\tthis.bodyFillModifier.lightnesses = [0, -0.25, 0];\r\n\t\tthis.body.fillModifier = this.bodyFillModifier;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tsuper.draw();\r\n\r\n\t\t$object.copyProperties(this, this.top, visualProperties);\r\n\t\t$object.copyProperties(this, this.bottom, visualProperties);\r\n\t\t$object.copyProperties(this, this.body, visualProperties);\r\n\r\n\t\tlet w: number = this.innerWidth;\r\n\t\tlet h: number = this.innerHeight;\r\n\r\n\t\tlet bottom: Ellipse = this.bottom;\r\n\t\tlet top: Ellipse = this.top;\r\n\r\n\t\tlet angle: number = this.angle;\r\n\t\tlet radiusBase: number;\r\n\t\tlet dx: number;\r\n\t\tlet dy: number;\r\n\r\n\t\tif (this.orientation == \"horizontal\") {\r\n\t\t\tradiusBase = h / 2;\r\n\t\t\tbottom.y = h / 2;\r\n\t\t\ttop.y = h / 2;\r\n\t\t\ttop.x = w;\r\n\t\t\tdx = (90 - angle) / 90;\r\n\t\t\tdy = 0;\r\n\t\t\tthis.bodyFillModifier.gradient.rotation = 90;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdx = 0;\r\n\t\t\tdy = (90 - angle) / 90;\r\n\r\n\t\t\tradiusBase = w / 2;\r\n\t\t\tbottom.y = h;\r\n\t\t\tbottom.x = w / 2;\r\n\t\t\ttop.x = w / 2;\r\n\t\t\tthis.bodyFillModifier.gradient.rotation = 0;\r\n\t\t}\r\n\r\n\t\tlet radius: number = this.radius.value * radiusBase;\r\n\t\tlet topRadius: number = this.topRadius.value * radiusBase;\r\n\r\n\t\tbottom.radius = radius - radius * dx;\r\n\t\tbottom.radiusY = radius - radius * dy;\r\n\r\n\t\ttop.radius = topRadius - topRadius * dx;\r\n\t\ttop.radiusY = topRadius - topRadius * dy;\r\n\r\n\t\tlet path: string;\r\n\t\tif (this.orientation == \"horizontal\") {\r\n\t\t\tpath = $path.moveTo({ x: 0, y: h / 2 - bottom.radiusY }) + $path.arcTo(-90, -180, bottom.radius, bottom.radiusY) + $path.lineTo({ x: w, y: h / 2 + top.radiusY }) + $path.arcTo(90, 180, top.radius, top.radiusY) + $path.closePath();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tpath = $path.moveTo({ x: w / 2 - top.radius, y: 0 }) + $path.arcTo(180, -180, top.radius, top.radiusY) + $path.lineTo({ x: w / 2 + bottom.radius, y: h }) + $path.arcTo(0, 180, bottom.radius, bottom.radiusY) + $path.closePath();\r\n\t\t}\r\n\r\n\t\tthis.body.path = path;\r\n\t}\r\n\r\n\t/**\r\n\t * Angle of the point of view to the 3D element. (0-360)\r\n\t *\r\n\t * @default 30\r\n\t * @param value Angle\r\n\t */\r\n\tpublic set angle(value: number) {\r\n\t\tthis.setPropertyValue(\"angle\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Angle\r\n\t */\r\n\tpublic get angle(): number {\r\n\t\treturn this.getPropertyValue(\"angle\");\r\n\t}\r\n\r\n\t/**\r\n\t * A relative radius of the cone's bottom (base).\r\n\t *\r\n\t * It is relevant to the inner width or height of the element.\r\n\t *\r\n\t * @default Percent(100)\r\n\t * @param value Bottom radius\r\n\t */\r\n\tpublic set radius(value: Percent) {\r\n\t\tthis.setPropertyValue(\"radius\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Bottom radius\r\n\t */\r\n\tpublic get radius(): Percent {\r\n\t\treturn this.getPropertyValue(\"radius\");\r\n\t}\r\n\r\n\t/**\r\n\t * A relative radius of the cone's top (tip).\r\n\t *\r\n\t * It is relevant to the inner width or height of the element.\r\n\t *\r\n\t * @default Percent(0)\r\n\t * @param value Top radius\r\n\t */\r\n\tpublic set topRadius(value: Percent) {\r\n\t\tthis.setPropertyValue(\"topRadius\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Top radius\r\n\t */\r\n\tpublic get topRadius(): Percent {\r\n\t\treturn this.getPropertyValue(\"topRadius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Orientation of the cone\r\n\t *\r\n\t * @default \"vertical\"\r\n\t * @param value Orientation\r\n\t */\r\n\tpublic set orientation(value: Orientation) {\r\n\t\tthis.setPropertyValue(\"orientation\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * Orientation\r\n\t */\r\n\tpublic get orientation(): Orientation {\r\n\t\treturn this.getPropertyValue(\"orientation\");\r\n\t}\r\n\r\n}\r\n","/**\r\n * Creates a 3D rectangle.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container, IContainerProperties, IContainerAdapters, IContainerEvents } from \"../../Container\";\r\nimport { Sprite } from \"../../Sprite\";\r\nimport { IPoint } from \"../../defs/IPoint\";\r\nimport * as $math from \"../../utils/Math\";\r\nimport * as $path from \"../../rendering/Path\";\r\nimport { Color, color, toColor } from \"../../utils/Color\";\r\nimport { RadialGradient } from \"../../rendering/fills/RadialGradient\";\r\nimport { LinearGradient } from \"../../rendering/fills/LinearGradient\";\r\nimport { Pattern } from \"../../rendering/fills/Pattern\";\r\nimport { LightenFilter } from \"../../rendering/filters/LightenFilter\";\r\nimport * as $type from \"../../utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Rectangle3D]].\r\n */\r\nexport interface Rectangle3DProperties extends IContainerProperties {\r\n\r\n\t/**\r\n\t * Depth (Z dimension) of the 3D rectangle in pixels.\r\n\t *\r\n\t * @default 30\r\n\t */\r\n\tdepth?: number;\r\n\r\n\t/**\r\n\t * Angle of the point of view to the 3D element. (0-360)\r\n\t *\r\n\t * @default 30\r\n\t */\r\n\tangle?: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[Rectangle3D]]\r\n */\r\nexport interface Rectangle3DEvents extends IContainerEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Rectangle3D]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface Rectangle3DAdapters extends IContainerAdapters, Rectangle3DProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Builds a 3D rectangle\r\n * @see {@link IRectangle3DEvents} for a list of available events\r\n * @see {@link IRectangle3DAdapters} for a list of available Adapters\r\n */\r\nexport class Rectangle3D extends Container {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: Rectangle3DProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: Rectangle3DAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: Rectangle3DEvents;\r\n\r\n\t/**\r\n\t * Left side element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic sideLeft: Sprite;\r\n\r\n\t/**\r\n\t * Right side element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic sideRight: Sprite;\r\n\r\n\t/**\r\n\t * Top element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic sideTop: Sprite;\r\n\r\n\t/**\r\n\t * Bottom element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic sideBottom: Sprite;\r\n\r\n\t/**\r\n\t * Back element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic sideBack: Sprite;\r\n\r\n\t/**\r\n\t * Front element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic sideFront: Sprite;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.angle = 30;\r\n\t\tthis.depth = 30;\r\n\t\tthis.className = \"Rectangle3D\";\r\n\t\tthis.layout = \"none\";\r\n\r\n\t\tlet sideBack: Sprite = this.createChild(Sprite);\r\n\t\tsideBack.shouldClone = false;\r\n\t\tsideBack.setElement(this.paper.add(\"path\"));\r\n\t\tsideBack.isMeasured = false;\r\n\r\n\t\tthis.sideBack = sideBack;\r\n\t\tthis._disposers.push(this.sideBack);\r\n\r\n\t\tlet sideBottom: Sprite = this.createChild(Sprite);\r\n\t\tsideBottom.shouldClone = false;\r\n\t\tsideBottom.setElement(this.paper.add(\"path\"));\r\n\t\tsideBottom.isMeasured = false;\r\n\t\tthis.sideBottom = sideBottom;\r\n\t\tthis._disposers.push(this.sideBottom);\r\n\r\n\t\tlet sideLeft: Sprite = this.createChild(Sprite);\r\n\t\tsideLeft.shouldClone = false;\r\n\t\tsideLeft.setElement(this.paper.add(\"path\"));\r\n\t\tsideLeft.isMeasured = false;\r\n\t\tthis.sideLeft = sideLeft;\r\n\t\tthis._disposers.push(this.sideLeft);\r\n\r\n\t\tlet sideRight: Sprite = this.createChild(Sprite);\r\n\t\tsideRight.shouldClone = false;\r\n\t\tsideRight.setElement(this.paper.add(\"path\"));\r\n\t\tsideRight.isMeasured = false;\r\n\t\tthis.sideRight = sideRight;\r\n\t\tthis._disposers.push(this.sideRight);\r\n\r\n\t\tlet sideTop: Sprite = this.createChild(Sprite);\r\n\t\tsideTop.shouldClone = false;\r\n\t\tsideTop.setElement(this.paper.add(\"path\"));\r\n\t\tsideTop.isMeasured = false;\r\n\t\tthis.sideTop = sideTop;\r\n\t\tthis._disposers.push(this.sideTop);\r\n\r\n\t\tlet sideFront: Sprite = this.createChild(Sprite);\r\n\t\tsideFront.shouldClone = false;\r\n\t\tsideFront.setElement(this.paper.add(\"path\"));\r\n\t\tsideFront.isMeasured = false;\r\n\t\tthis.sideFront = sideFront;\r\n\t\tthis._disposers.push(this.sideFront);\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tsuper.draw();\r\n\r\n\t\tlet w: number = this.innerWidth;\r\n\t\tlet h: number = this.innerHeight;\r\n\r\n\t\tlet depth: number = this.depth;\r\n\t\tlet angle: number = this.angle;\r\n\t\tlet sin: number = $math.sin(angle);\r\n\t\tlet cos: number = $math.cos(angle);\r\n\r\n\t\tlet a: IPoint = { x: 0, y: 0 };\r\n\t\tlet b: IPoint = { x: w, y: 0 };\r\n\t\tlet c: IPoint = { x: w, y: h };\r\n\t\tlet d: IPoint = { x: 0, y: h };\r\n\r\n\t\tlet ah: IPoint = { x: depth * cos, y: -depth * sin };\r\n\t\tlet bh: IPoint = { x: depth * cos + w, y: -depth * sin };\r\n\t\tlet ch: IPoint = { x: depth * cos + w, y: -depth * sin + h };\r\n\t\tlet dh: IPoint = { x: depth * cos, y: -depth * sin + h };\r\n\r\n\t\tthis.sideFront.path = $path.moveTo(a) + $path.lineTo(b) + $path.lineTo(c) + $path.lineTo(d) + $path.closePath();\r\n\t\tthis.sideBack.path = $path.moveTo(ah) + $path.lineTo(bh) + $path.lineTo(ch) + $path.lineTo(dh) + $path.closePath();\r\n\t\tthis.sideLeft.path = $path.moveTo(a) + $path.lineTo(ah) + $path.lineTo(dh) + $path.lineTo(d) + $path.closePath();\r\n\t\tthis.sideRight.path = $path.moveTo(b) + $path.lineTo(bh) + $path.lineTo(ch) + $path.lineTo(c) + $path.closePath();\r\n\t\tthis.sideBottom.path = $path.moveTo(d) + $path.lineTo(dh) + $path.lineTo(ch) + $path.lineTo(c) + $path.closePath();\r\n\t\tthis.sideTop.path = $path.moveTo(a) + $path.lineTo(ah) + $path.lineTo(bh) + $path.lineTo(b) + $path.closePath();\r\n\t}\r\n\r\n\t/**\r\n\t * Depth (Z dimension) of the 3D rectangle in pixels.\r\n\t *\r\n\t * @default 30\r\n\t * @param value Depth (px)\r\n\t */\r\n\tpublic set depth(value: number) {\r\n\t\tthis.setPropertyValue(\"depth\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Depth (px)\r\n\t */\r\n\tpublic get depth(): number {\r\n\t\treturn this.getPropertyValue(\"depth\");\r\n\t}\r\n\r\n\t/**\r\n\t * Angle of the point of view to the 3D element. (0-360)\r\n\t *\r\n\t * @default 30\r\n\t * @param value Angle\r\n\t */\r\n\tpublic set angle(value: number) {\r\n\t\tthis.setPropertyValue(\"angle\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Angle\r\n\t */\r\n\tpublic get angle(): number {\r\n\t\treturn this.getPropertyValue(\"angle\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Sets actual `fill` property on the SVG element, including applicable color\r\n\t * modifiers.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Fill\r\n\t */\r\n\tprotected setFill(value: $type.Optional<Color | Pattern | LinearGradient | RadialGradient>): void {\r\n\t\tsuper.setFill(value);\r\n\r\n\t\tif ($type.isString(value)) {\r\n\t\t\tvalue = toColor(value);\r\n\t\t}\r\n\r\n\t\tlet colorStr: string;\r\n\t\tif (value instanceof Color) {\r\n\t\t\tcolorStr = value.hex;\r\n\t\t}\r\n\t\telse if (value instanceof LinearGradient || value instanceof RadialGradient) {\r\n\t\t\tcolorStr = value.stops.getIndex(0).color.hex;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet filter = new LightenFilter();\r\n\t\t\tfilter.lightness = -0.2;\r\n\t\t\tthis.sideBack.filters.push(filter);\r\n\r\n\t\t\tlet filter2 = filter.clone()\r\n\t\t\tfilter2.lightness = -0.4;\r\n\t\t\tthis.sideLeft.filters.push(filter2);\r\n\r\n\t\t\tlet filter3 = filter.clone()\r\n\t\t\tfilter3.lightness = -0.2;\r\n\t\t\tthis.sideRight.filters.push(filter3);\r\n\r\n\t\t\tlet filter4 = filter.clone()\r\n\t\t\tfilter4.lightness = -0.1;\r\n\t\t\tthis.sideTop.filters.push(filter4);\r\n\r\n\t\t\tlet filter5 = filter.clone()\r\n\t\t\tfilter5.lightness = -0.5;\r\n\t\t\tthis.sideBottom.filters.push(filter5);\r\n\t\t}\r\n\r\n\t\tif (colorStr) {\r\n\t\t\tthis.sideBack.fill = color(colorStr).lighten(-0.2);\r\n\t\t\tthis.sideLeft.fill = color(colorStr).lighten(-0.4);\r\n\t\t\tthis.sideRight.fill = color(colorStr).lighten(-0.2);\r\n\t\t\tthis.sideTop.fill = color(colorStr).lighten(-0.1);\r\n\t\t\tthis.sideBottom.fill = color(colorStr).lighten(-0.5);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all properties and related data from a different instance of Rectangle3D.\r\n\t *\r\n\t * @param source Source Rectangle3D\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\tsuper.copyFrom(source);\r\n\t\tthis.sideBack.copyFrom(source.sideBack);\r\n\t\tthis.sideLeft.copyFrom(source.sideLeft);\r\n\t\tthis.sideRight.copyFrom(source.sideRight);\r\n\t\tthis.sideTop.copyFrom(source.sideTop);\r\n\t\tthis.sideBottom.copyFrom(source.sideBottom);\r\n\t}\r\n\r\n}\r\n","/**\r\n * 3D slice module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Slice, ISliceProperties, ISliceAdapters, ISliceEvents } from \"../Slice\";\r\nimport { Sprite } from \"../../Sprite\";\r\nimport { IPoint } from \"../../defs/IPoint\";\r\nimport * as $math from \"../../utils/Math\";\r\nimport * as $path from \"../../rendering/Path\";\r\nimport * as $type from \"../../utils/Type\";\r\nimport { Color, color } from \"../../utils/Color\";\r\nimport { RadialGradient } from \"../../rendering/fills/RadialGradient\";\r\nimport { LinearGradient } from \"../../rendering/fills/LinearGradient\";\r\nimport { Pattern } from \"../../rendering/fills/Pattern\";\r\nimport { LightenFilter } from \"../../rendering/filters/LightenFilter\";\r\n\r\n/**\r\n * Defines properties for [[Slice3D]].\r\n */\r\nexport interface ISlice3DProperties extends ISliceProperties {\r\n\r\n\t/**\r\n\t * Depth (height) of the 3D slice in pixels.\r\n\t *\r\n\t * @default 20\r\n\t */\r\n\tdepth?: number;\r\n\r\n\t/**\r\n\t * Angle of the point of view to the 3D element. (0-360)\r\n\t *\r\n\t * @default 30\r\n\t */\r\n\tangle?: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[Slice3D]].\r\n */\r\nexport interface ISlice3DEvents extends ISliceEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Slice3D]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ISlice3DAdapters extends ISliceAdapters, ISlice3DProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Used to draw a 3D slice of a Pie chart.\r\n *\r\n * @see {@link ISlice3DEvents} for a list of available events\r\n * @see {@link ISlice3DAdapters} for a list of available Adapters\r\n */\r\nexport class Slice3D extends Slice {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ISlice3DProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ISlice3DAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ISlice3DEvents;\r\n\r\n\t/**\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic edge: Sprite;\r\n\r\n\t/**\r\n\t * Side element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic sideA: Sprite;\r\n\r\n\t/**\r\n\t * Side element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic sideB: Sprite;\r\n\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"Slice3D\";\r\n\t\tthis.layout = \"none\";\r\n\r\n\t\t// Create edge container\r\n\t\tlet edge = this.createChild(Sprite);\r\n\t\tthis.edge = edge;\r\n\t\tedge.shouldClone = false;\r\n\t\tedge.isMeasured = false;\r\n\t\tedge.toBack();\r\n\r\n\t\t// Set defaults\r\n\t\tthis.angle = 30;\r\n\t\tthis.depth = 20;\r\n\r\n\t\t// Create side A element\r\n\t\tlet sideA = this.createChild(Sprite);\r\n\t\tthis.sideA = sideA;\r\n\t\tsideA.shouldClone = false;\r\n\t\tsideA.isMeasured = false;\r\n\t\t//sideA.setElement(this.paper.add(\"path\"));\r\n\t\t//sideA.strokeOpacity = 0;\r\n\r\n\t\t// Crate side B element\r\n\t\tlet sideB = this.createChild(Sprite);\r\n\t\tthis.sideB = sideB;\r\n\t\tsideB.shouldClone = false;\r\n\t\tsideB.isMeasured = false;\r\n\t\t//sideB.setElement(this.paper.add(\"path\"));\r\n\t\t//sideB.strokeOpacity = 0;\r\n\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets actual `fill` property on the SVG element, including applicable color\r\n\t * modifiers.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Fill\r\n\t */\r\n\tprotected setFill(value: $type.Optional<Color | Pattern | LinearGradient | RadialGradient>): void {\r\n\t\tsuper.setFill(value);\r\n\r\n\t\tlet colorStr: string;\r\n\t\tif (value instanceof Color) {\r\n\t\t\tcolorStr = value.hex;\r\n\t\t}\r\n\t\telse if (value instanceof LinearGradient || value instanceof RadialGradient) {\r\n\t\t\tcolorStr = value.stops.getIndex(0).color.hex;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet filter = new LightenFilter();\r\n\t\t\tfilter.lightness = -0.25;\r\n\t\t\tthis.edge.filters.push(filter);\r\n\t\t\tthis.sideA.filters.push(filter.clone());\r\n\t\t\tthis.sideB.filters.push(filter.clone());\r\n\t\t}\r\n\r\n\t\tif (colorStr) {\r\n\t\t\tlet edgeFill = color(colorStr).lighten(-0.25);\r\n\r\n\t\t\tthis.edge.fill = edgeFill;\r\n\t\t\tthis.sideA.fill = edgeFill;\r\n\t\t\tthis.sideB.fill = edgeFill;\r\n\r\n\t\t\tthis.edge.stroke = edgeFill;\r\n\t\t\tthis.sideA.stroke = edgeFill;\r\n\t\t\tthis.sideB.stroke = edgeFill;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tthis.cornerRadius = 0;\r\n\t\tthis.innerCornerRadius = 0;\r\n\r\n\t\tsuper.draw();\r\n\r\n\t\tif (this.arc !== 0 && this.radius > 0 && this.depth > 0) {\r\n\t\t\tthis.sideB.show(0);\r\n\t\t\tthis.sideA.show(0);\r\n\t\t\tthis.edge.show(0);\r\n\r\n\t\t\tlet startAngle = this.startAngle;\r\n\t\t\tlet arc = this.arc;\r\n\t\t\tlet innerRadius = this.pixelInnerRadius || 0;\r\n\t\t\tlet radiusY = this.radiusY || 0;\r\n\r\n\t\t\t//let cornerRadius = this.cornerRadius || 0;\r\n\t\t\t//let innerCornerRadius = this.innerCornerRadius;\r\n\t\t\tlet radius = this.radius;\r\n\r\n\t\t\t// this is code duplicate with $path.arc. @todo to think how to avoid it\r\n\r\n\t\t\tlet endAngle = startAngle + arc;\r\n\t\t\t//let crSin = $math.sin($math.min(arc, 45) / 2);\r\n\r\n\t\t\t//innerCornerRadius = innerCornerRadius || cornerRadius;\r\n\r\n\t\t\tlet innerRadiusY = (radiusY / radius) * innerRadius;\r\n\t\t\t//let cornerRadiusY = (radiusY / radius) * cornerRadius;\r\n\t\t\t//let innerCornerRadiusY = (radiusY / radius) * innerCornerRadius;\r\n\r\n\t\t\t//cornerRadius = $math.fitToRange(cornerRadius, 0, (radius - innerRadius) / 2);\r\n\t\t\t//cornerRadiusY = $math.fitToRange(cornerRadiusY, 0, (radiusY - innerRadiusY) / 2);\r\n\r\n\t\t\t//innerCornerRadius = $math.fitToRange(innerCornerRadius, 0, (radius - innerRadius) / 2);\r\n\t\t\t//innerCornerRadiusY = $math.fitToRange(innerCornerRadiusY, 0, (radiusY - innerRadiusY) / 2);\r\n\r\n\t\t\t//cornerRadius = $math.fitToRange(cornerRadius, 0, radius * crSin);\r\n\t\t\t//cornerRadiusY = $math.fitToRange(cornerRadiusY, 0, radiusY * crSin);\r\n\r\n\t\t\t//innerCornerRadius = $math.fitToRange(innerCornerRadius, 0, innerRadius * crSin);\r\n\t\t\t//innerCornerRadiusY = $math.fitToRange(innerCornerRadiusY, 0, innerRadiusY * crSin);\r\n\r\n\t\t\t//let crAngle: number = Math.asin(cornerRadius / radius / 2) * $math.DEGREES * 2;\r\n\t\t\t//let crAngleY: number = Math.asin(cornerRadiusY / radiusY / 2) * $math.DEGREES * 2;\r\n\r\n\t\t\t//if (innerRadius < innerCornerRadius) {\r\n\t\t\t//\tinnerRadius = innerCornerRadius;\r\n\t\t\t//}\r\n\r\n\t\t\t//if (innerRadiusY < innerCornerRadiusY) {\r\n\t\t\t//\tinnerRadiusY = innerCornerRadiusY;\r\n\t\t\t//}\r\n\r\n\t\t\t//let crInnerAngle: number = Math.asin(innerCornerRadius / innerRadius / 2) * $math.DEGREES * 2;\r\n\t\t\t//let crInnerAngleY: number = Math.asin(innerCornerRadiusY / innerRadiusY / 2) * $math.DEGREES * 2;\r\n\r\n\t\t\t//if (!$type.isNumber(crInnerAngle)) {\r\n\t\t\t//\tcrInnerAngle = 0;\r\n\t\t\t//}\r\n\t\t\t//if (!$type.isNumber(crInnerAngleY)) {\r\n\t\t\t//\tcrInnerAngleY = 0;\r\n\t\t\t//}\r\n\r\n\t\t\t//let middleAngle = startAngle + arc / 2;\r\n\t\t\t//let mPoint = { x: $math.round($math.cos(middleAngle) * innerRadius, 4), y: $math.round($math.sin(middleAngle) * innerRadiusY, 4) };\r\n\r\n\t\t\tlet a0 = { x: $math.cos(startAngle) * (innerRadius), y: $math.sin(startAngle) * (innerRadiusY) };\r\n\t\t\tlet b0 = { x: $math.cos(startAngle) * (radius), y: $math.sin(startAngle) * (radiusY) };\r\n\t\t\tlet c0 = { x: $math.cos(endAngle) * (radius), y: $math.sin(endAngle) * (radiusY) };\r\n\t\t\tlet d0 = { x: $math.cos(endAngle) * (innerRadius), y: $math.sin(endAngle) * (innerRadiusY) };\r\n\t\t\t// end of duplicate\r\n\r\n\t\t\tlet h: number = this.depth;\r\n\t\t\tlet ah: IPoint = { x: a0.x, y: a0.y - h };\r\n\t\t\tlet bh: IPoint = { x: b0.x, y: b0.y - h };\r\n\t\t\tlet ch: IPoint = { x: c0.x, y: c0.y - h };\r\n\t\t\tlet dh: IPoint = { x: d0.x, y: d0.y - h };\r\n\r\n\t\t\tlet edgePath = \"\";\r\n\t\t\tlet count = Math.ceil(arc / 5);\r\n\t\t\tlet step = arc / count;\r\n\t\t\tlet mangle = startAngle;\r\n\r\n\t\t\tlet prevPoint = bh;\r\n\r\n\r\n\t\t\tfor (let i = 0; i < count; i++) {\r\n\t\t\t\tmangle += step;\r\n\t\t\t\tif (mangle > 0 && mangle < 180) {\r\n\t\t\t\t\tedgePath += $path.moveTo(prevPoint);\r\n\t\t\t\t\tlet pp = { x: $math.cos(mangle) * (radius), y: $math.sin(mangle) * (radiusY) - h };\r\n\t\t\t\t\tedgePath += $path.lineTo({ x: prevPoint.x, y: prevPoint.y + h });\r\n\t\t\t\t\tedgePath += $path.arcToPoint({ x: pp.x, y: pp.y + h }, radius, radiusY, true);\r\n\t\t\t\t\tedgePath += $path.lineTo(pp);\r\n\t\t\t\t\tedgePath += $path.arcToPoint(prevPoint, radius, radiusY);\r\n\t\t\t\t\tedgePath += \"z\";\r\n\t\t\t\t\tprevPoint = pp;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tedgePath += $path.moveTo(prevPoint);\r\n\t\t\t\t\tlet pp = { x: $math.cos(mangle) * (radius), y: $math.sin(mangle) * (radiusY) - h };\r\n\t\t\t\t\tedgePath += $path.arcToPoint(pp, radius, radiusY, true);\r\n\t\t\t\t\tedgePath += $path.lineTo({ x: pp.x, y: pp.y + h });\r\n\t\t\t\t\tedgePath += $path.arcToPoint({ x: prevPoint.x, y: prevPoint.y + h }, radius, radiusY);\r\n\t\t\t\t\tedgePath += $path.lineTo(prevPoint);\r\n\t\t\t\t\tedgePath += \"z\";\r\n\t\t\t\t\tprevPoint = pp;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tprevPoint = ah;\r\n\t\t\tmangle = startAngle;\r\n\r\n\r\n\t\t\tfor (let i = 0; i < count; i++) {\r\n\t\t\t\tmangle += step;\r\n\t\t\t\tif (mangle > 0 && mangle < 180) {\r\n\t\t\t\t\tedgePath += $path.moveTo(prevPoint);\r\n\t\t\t\t\tlet pp = { x: $math.cos(mangle) * (innerRadius), y: $math.sin(mangle) * (innerRadiusY) - h };\r\n\t\t\t\t\tedgePath += $path.lineTo({ x: prevPoint.x, y: prevPoint.y + h });\r\n\t\t\t\t\tedgePath += $path.arcToPoint({ x: pp.x, y: pp.y + h }, innerRadius, innerRadiusY, true);\r\n\t\t\t\t\tedgePath += $path.lineTo(pp);\r\n\t\t\t\t\tedgePath += $path.arcToPoint(prevPoint, innerRadius, innerRadiusY);\r\n\t\t\t\t\tedgePath += \"z\";\r\n\t\t\t\t\tprevPoint = pp;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tedgePath += $path.moveTo(prevPoint);\r\n\t\t\t\t\tlet pp = { x: $math.cos(mangle) * (innerRadius), y: $math.sin(mangle) * (innerRadiusY) - h };\r\n\t\t\t\t\tedgePath += $path.arcToPoint(pp, innerRadius, innerRadiusY, true);\r\n\t\t\t\t\tedgePath += $path.lineTo({ x: pp.x, y: pp.y + h });\r\n\t\t\t\t\tedgePath += $path.arcToPoint({ x: prevPoint.x, y: prevPoint.y + h }, innerRadius, innerRadiusY);\r\n\t\t\t\t\tedgePath += $path.lineTo(prevPoint);\r\n\t\t\t\t\tedgePath += \"z\";\r\n\t\t\t\t\tprevPoint = pp;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.edge.path = edgePath;\r\n/*\r\n\t\t\ta0 = { x: $math.cos(startAngle) * (innerRadius + innerCornerRadius), y: $math.sin(startAngle) * (innerRadiusY + innerCornerRadiusY) };\r\n\t\t\tb0 = { x: $math.cos(startAngle) * (radius - cornerRadius), y: $math.sin(startAngle) * (radiusY - cornerRadiusY) };\r\n\t\t\tc0 = { x: $math.cos(endAngle) * (radius - cornerRadius), y: $math.sin(endAngle) * (radiusY - cornerRadiusY) };\r\n\t\t\td0 = { x: $math.cos(endAngle) * (innerRadius + innerCornerRadius), y: $math.sin(endAngle) * (innerRadiusY + innerCornerRadiusY) };\r\n\t\t\t// end of duplicate\r\n\r\n\t\t\tah = { x: a0.x, y: a0.y - h };\r\n\t\t\tbh = { x: b0.x, y: b0.y - h };\r\n\t\t\tch = { x: c0.x, y: c0.y - h };\r\n\t\t\tdh = { x: d0.x, y: d0.y - h };\r\n*/\r\n\t\t\tthis.sideA.path = $path.moveTo(a0) + $path.lineTo(b0) + $path.lineTo(bh) + $path.lineTo(ah) + $path.closePath();\r\n\t\t\tthis.sideB.path = $path.moveTo(c0) + $path.lineTo(d0) + $path.lineTo(dh) + $path.lineTo(ch) + $path.closePath();\r\n\r\n\t\t\tif (this.startAngle < 90) {\r\n\t\t\t\tthis.sideA.toBack();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.sideA.toFront();\r\n\t\t\t}\r\n\r\n\t\t\tif (this.startAngle + this.arc > 90) {\r\n\t\t\t\tthis.sideB.toBack();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.sideB.toFront();\r\n\t\t\t}\r\n\r\n\t\t\tthis.slice.dy = -h;\t\t\t\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.sideA.hide(0);\r\n\t\t\tthis.sideB.hide(0);\r\n\t\t\tthis.edge.hide(0);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Depth (height) of the 3D slice in pixels.\r\n\t *\r\n\t * @default 20\r\n\t * @param depth Depth (px)\r\n\t */\r\n\tpublic set depth(depth: number) {\r\n\t\tthis.setPropertyValue(\"depth\", depth, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Depth (px)\r\n\t */\r\n\tpublic get depth(): number {\r\n\t\treturn this.getPropertyValue(\"depth\");\r\n\t}\r\n\r\n\t/**\r\n\t * Angle of the point of view to the 3D element. (0-360)\r\n\t *\r\n\t * @default 30\r\n\t * @param value Angle\r\n\t */\r\n\tpublic set angle(value: number) {\r\n\t\tthis.setPropertyValue(\"angle\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Angle\r\n\t */\r\n\tpublic get angle(): number {\r\n\t\tlet angle: number = this.getPropertyValue(\"angle\");\r\n\t\tif (!$type.isNumber(angle)) {\r\n\t\t\tangle = 0;\r\n\t\t}\r\n\t\treturn angle;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Vertical radius (0-1)\r\n\t */\r\n\tpublic get radiusY(): number {\r\n\t\tlet radiusY: number = this.getPropertyValue(\"radiusY\");\r\n\t\tif (!$type.isNumber(radiusY)) {\r\n\t\t\tradiusY = this.radius - this.radius * this.angle / 90;\r\n\t\t}\r\n\t\treturn radiusY;\r\n\t}\r\n\r\n\t/**\r\n\t * Vertical radius for creating skewed slices.\r\n\t *\r\n\t * This is relevant to `radius`, e.g. 0.5 will set vertical radius to half\r\n\t * the `radius`.\r\n\t *\r\n\t * @param value Vertical radius (0-1)\r\n\t */\r\n\tpublic set radiusY(value: number) {\r\n\t\tthis.setPropertyValue(\"radiusY\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all properties and related data from a different instance of Axis.\r\n\t *\r\n\t * @param source Source Axis\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\tsuper.copyFrom(source);\r\n\t\tthis.edge.copyFrom(source.edge);\r\n\t\tthis.sideA.copyFrom(source.sideA);\r\n\t\tthis.sideB.copyFrom(source.sideB);\r\n\t}\r\n\r\n}\r\n","/**\r\n * Functionality for drawing simple buttons.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container, IContainerProperties, IContainerAdapters, IContainerEvents } from \"../Container\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { Label } from \"./Label\";\r\nimport { RoundedRectangle } from \"../elements/RoundedRectangle\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Button]].\r\n */\r\nexport interface IButtonProperties extends IContainerProperties {\r\n\r\n\t/**\r\n\t * Icon (if available) position - left or right.\r\n\t */\r\n\ticonPosition?: \"left\" | \"right\";\r\n\r\n\t/**\r\n\t * Icon sprite\r\n\t */\r\n\ticon?: Sprite;\r\n}\r\n\r\n/**\r\n * Defines events for [[Button]].\r\n */\r\nexport interface IButtonEvents extends IContainerEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Button]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IButtonAdapters extends IContainerAdapters, IButtonProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Button class is capable of drawing a simple rectangular button with\r\n * optionally rounded corners and an icon in it.\r\n *\r\n * @see {@link IButtonEvents} for a list of available events\r\n * @see {@link IButtonAdapters} for a list of available Adapters\r\n */\r\nexport class Button extends Container {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IButtonProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IButtonAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IButtonEvents;\r\n\r\n\t/**\r\n\t * Icon reference.\r\n\t */\r\n\tprotected _icon: Sprite;\r\n\r\n\t/**\r\n\t * [[Label]] element for button content.\r\n\t */\r\n\tprotected _label: $type.Optional<Label>;\r\n\r\n\t/**\r\n\t * A type for background.\r\n\t */\r\n\tpublic _background: RoundedRectangle;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"Button\";\r\n\r\n\t\tthis.tooltipY = 0;\r\n\r\n\t\t// Set defaults\r\n\t\tthis.iconPosition = \"left\";\r\n\t\tthis.layout = \"horizontal\";\r\n\t\tthis.contentAlign = \"center\";\r\n\t\tthis.contentValign = \"middle\";\r\n\t\tthis.padding(8, 16, 8, 16);\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\r\n\t\t// Create background\r\n\t\tlet background = this.background;\r\n\t\tbackground.fill = interfaceColors.getFor(\"secondaryButton\");\r\n\t\tbackground.stroke = interfaceColors.getFor(\"secondaryButtonStroke\");\r\n\t\tbackground.fillOpacity = 1;\r\n\t\tbackground.strokeOpacity = 1;\r\n\t\tbackground.cornerRadius(3, 3, 3, 3);\r\n\r\n\t\t// Create the label element\r\n\t\tthis.label = new Label();\r\n\t\tthis.label.fill = interfaceColors.getFor(\"secondaryButtonText\");;\r\n\r\n\t\t// Create default states\r\n\t\tlet hoverState = background.states.create(\"hover\");\r\n\t\thoverState.properties.fillOpacity = 1;\r\n\t\thoverState.properties.fill = interfaceColors.getFor(\"secondaryButtonHover\");\r\n\r\n\t\tlet downState = background.states.create(\"down\");\r\n\t\tdownState.transitionDuration = 100;\r\n\t\tdownState.properties.fill = interfaceColors.getFor(\"secondaryButtonDown\");\r\n\t\tdownState.properties.fillOpacity = 1;\r\n\t\t// Set up accessibility\r\n\t\t// A button should be always focusable\r\n\t\tthis.role = \"button\";\r\n\t\tthis.focusable = true;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * A [[Sprite]] to be used as an icon on button.\r\n\t *\r\n\t * @param icon Icon Sprite\r\n\t */\r\n\tpublic set icon(icon: Sprite) {\r\n\t\tlet currentIcon = this.getPropertyValue(\"icon\");\r\n\t\tif (currentIcon) {\r\n\t\t\t//this._icon.dispose();\r\n\t\t\t//this.removeDispose(currentIcon);\r\n\t\t\tcurrentIcon.parent = undefined;\r\n\t\t}\r\n\t\tif (icon) {\r\n\t\t\tthis.setPropertyValue(\"icon\", icon);\r\n\t\t\ticon.parent = this;\r\n\t\t\ticon.interactionsEnabled = false;\r\n\t\t\tthis.iconPosition = this.iconPosition;\r\n\t\t\tthis._disposers.push(icon);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Icon Sprite\r\n\t */\r\n\tpublic get icon(): Sprite {\r\n\t\treturn this.getPropertyValue(\"icon\");\r\n\t}\r\n\r\n\t/**\r\n\t * Icon position: \"left\" or \"right\".\r\n\t *\r\n\t * @default \"left\"\r\n\t * @param position Icon position\r\n\t */\r\n\tpublic set iconPosition(position: \"left\" | \"right\") {\r\n\t\tthis.setPropertyValue(\"iconPosition\", position);\r\n\r\n\t\tif (this.icon) {\r\n\t\t\tif (position == \"left\") {\r\n\t\t\t\tthis.icon.toBack();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.icon.toFront();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Icon position\r\n\t */\r\n\tpublic get iconPosition(): \"left\" | \"right\" {\r\n\t\treturn this.getPropertyValue(\"iconPosition\");\r\n\t}\r\n\r\n\t/**\r\n\t * [[Label]] element to be used for text.\r\n\t *\r\n\t * @param label element\r\n\t */\r\n\tpublic set label(label: $type.Optional<Label>) {\r\n\t\tif (this._label) {\r\n\t\t\t//this._label.dispose();\r\n\t\t\tthis.removeDispose(this._label);\r\n\t\t}\r\n\t\tthis._label = label;\r\n\t\tif (label) {\r\n\t\t\tlabel.parent = this;\r\n\t\t\tlabel.interactionsEnabled = false;\r\n\t\t\tthis._disposers.push(this._label);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Label element\r\n\t */\r\n\tpublic get label(): $type.Optional<Label> {\r\n\t\treturn this._label;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a background element for the button.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Background element\r\n\t */\r\n\tpublic createBackground(): this[\"_background\"] {\r\n\t\treturn new RoundedRectangle();\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Button\"] = Button;\r\n","/**\r\n * Functionality for drawing circles.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite, ISpriteProperties, ISpriteAdapters, ISpriteEvents } from \"../Sprite\";\r\nimport { percent, Percent } from \"../utils/Percent\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $math from \"../utils/Math\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Circle]].\r\n */\r\nexport interface ICircleProperties extends ISpriteProperties {\r\n\r\n\t/**\r\n\t * Radius of the circle.\r\n\t *\r\n\t * Can be either absolute (pixels) or relative ([Percent]).\r\n\t */\r\n\tradius?: number | Percent;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[Circle]].\r\n */\r\nexport interface ICircleEvents extends ISpriteEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Circle]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ICircleAdapters extends ISpriteAdapters, ICircleProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Used to create a circle\r\n * @see {@link ICircleEvents} for a list of available events\r\n * @see {@link ICircleAdapters} for a list of available Adapters\r\n */\r\nexport class Circle extends Sprite {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ICircleProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ICircleAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ICircleEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.className = \"Circle\";\r\n\t\tthis.element = this.paper.add(\"circle\");\r\n\r\n\t\tthis.setPercentProperty(\"radius\", percent(100));\r\n\t\tthis.setPropertyValue(\"horizontalCenter\", \"middle\");\r\n\t\tthis.setPropertyValue(\"verticalCenter\", \"middle\");\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the circle.\r\n\t */\r\n\tprotected draw(): void {\r\n\t\tsuper.draw();\r\n\t\tthis.element.attr({ \"r\": this.pixelRadius });\r\n\t}\r\n\r\n\t/**\r\n\t * Radius of the circle.\r\n\t *\r\n\t * Can be either absolute (pixels) or relative ([Percent]).\r\n\t *\r\n\t * @param value Radius\r\n\t */\r\n\tpublic set radius(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Radius\r\n\t */\r\n\tpublic get radius(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"radius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Radius of the circle in pixels.\r\n\t *\r\n\t * This is a read-only property. To set radius in pixels, use `radius`\r\n\t * property.\r\n\t *\r\n\t * @readonly\r\n\t * @return Radius (px)\r\n\t */\r\n\tpublic get pixelRadius(): number {\r\n\t\treturn $utils.relativeToValue(this.radius, $math.min(this.innerWidth / 2, this.innerHeight / 2));\r\n\t}\r\n\r\n\t/**\r\n\t * Updates bounding box.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic measureElement(): void {\r\n\t\tlet pixelRadius = this.pixelRadius;\r\n\t\tthis._bbox = {\r\n\t\t\tx: -pixelRadius,\r\n\t\t\ty: -pixelRadius,\r\n\t\t\twidth: pixelRadius * 2,\r\n\t\t\theight: pixelRadius * 2\r\n\t\t};\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Circle\"] = Circle;\r\n","/**\r\n * Ellipse module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Circle, ICircleProperties, ICircleAdapters, ICircleEvents } from \"./Circle\";\r\nimport { registry } from \"../Registry\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Ellipse]].\r\n */\r\nexport interface IEllipseProperties extends ICircleProperties {\r\n\r\n\t/**\r\n\t * Vertical radius.\r\n\t *\r\n\t * It's a relative size to the `radius`.\r\n\t *\r\n\t * E.g. 0.8 will mean the height of the ellipsis will be 80% of it's\r\n\t * horizontal radius.\r\n\t */\r\n\tradiusY?: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[Ellipse]].\r\n */\r\nexport interface IEllipseEvents extends ICircleEvents { }\r\n\r\n/**\r\n * Defines adapters\r\n * Includes both the [[Adapter]] definitions and properties\r\n * @see {@link Adapter}\r\n */\r\nexport interface IEllipseAdapters extends ICircleAdapters, IEllipseProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Draws an ellipse\r\n * @see {@link IEllipseEvents} for a list of available events\r\n * @see {@link IEllipseAdapters} for a list of available Adapters\r\n */\r\nexport class Ellipse extends Circle {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IEllipseProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IEllipseAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IEllipseEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"Ellipse\";\r\n\r\n\t\tthis.element = this.paper.add(\"ellipse\");\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the ellipsis.\r\n\t */\r\n\tprotected draw() {\r\n\t\tsuper.draw();\r\n\t\tthis.element.attr({ \"rx\": this.radius });\r\n\t\tthis.element.attr({ \"ry\": this.radiusY });\r\n\t}\r\n\r\n\t/**\r\n\t * Vertical radius.\r\n\t *\r\n\t * It's a relative size to the `radius`.\r\n\t *\r\n\t * E.g. 0.8 will mean the height of the ellipsis will be 80% of it's\r\n\t * horizontal radius.\r\n\t *\r\n\t * @param value Vertical radius\r\n\t */\r\n\tpublic set radiusY(value: number) {\r\n\t\tthis.height = value * 2;\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Vertical radius\r\n\t */\r\n\tpublic get radiusY(): number {\r\n\t\treturn this.innerHeight / 2;\r\n\t}\r\n\r\n\t/**\r\n\t * Horizontal radius.\r\n\t *\r\n\t * @param value Horizontal radius\r\n\t */\r\n\tpublic set radius(value: number) {\r\n\t\tthis.width = value * 2;\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Horizontal radius\r\n\t */\r\n\tpublic get radius(): number {\r\n\t\treturn this.innerWidth / 2;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Ellipse\"] = Ellipse;\r\n","/**\r\n * Text class deals with all text placed on chart.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container, IContainerProperties, IContainerAdapters, IContainerEvents } from \"../Container\";\r\nimport { DataItem } from \"../DataItem\";\r\nimport { TextValign } from \"../defs/TextValign\";\r\nimport { TextAlign } from \"../defs/TextAlign\";\r\nimport { IRectangle } from \"../defs/IRectangle\";\r\nimport { AMElement } from \"../rendering/AMElement\";\r\nimport { Group } from \"../rendering/Group\";\r\nimport { registry } from \"../Registry\";\r\nimport { ITextChunk, getTextFormatter } from \"../formatters/TextFormatter\";\r\nimport { MultiDisposer } from \"../utils/Disposer\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\nimport { Paper } from \"../rendering/Paper\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../utils/Responsive\";\r\n\r\n\r\n/**\r\n * Defines properties for [[Text]].\r\n */\r\nexport interface ILabelProperties extends IContainerProperties {\r\n\r\n\t/**\r\n\t * Horizontal align of the text.\r\n\t *\r\n\t * @default \"start\"\r\n\t */\r\n\ttextAlign?: TextAlign;\r\n\r\n\t/**\r\n\t * Vertical align of the text.\r\n\t *\r\n\t * @default \"top\"\r\n\t */\r\n\ttextValign?: TextValign;\r\n\r\n\t/**\r\n\t * A plain text content.\r\n\t */\r\n\ttext?: string;\r\n\r\n\t/**\r\n\t * Should the lines wrap if they do not fit into max width?\r\n\t *\r\n\t * @default false\r\n\t */\r\n\twrap?: boolean;\r\n\r\n\t/**\r\n\t * Should the text be selectable>\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tselectable?: boolean;\r\n\r\n\t/**\r\n\t * HTML content.\r\n\t */\r\n\thtml?: string;\r\n\r\n\t/**\r\n\t * Should the lines be truncated (optionally with ellipsis) if they do not\r\n\t * fit into max width?\r\n\t *\r\n\t * @default false\r\n\t */\r\n\ttruncate?: boolean;\r\n\r\n\t/**\r\n\t * If `truncate` is enabled, should Label try to break only on full words\r\n\t * (`true`), or whenever needed, including middle of the word. (`false`)\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tfullWords?: boolean;\r\n\r\n\t/**\r\n\t * If lines are truncated, this ellipsis will be added at the end.\r\n\t *\r\n\t * @default \"…\"\r\n\t */\r\n\tellipsis?: string;\r\n\r\n\t/**\r\n\t * Hide text of it does not fit into element's dimensions?\r\n\t *\r\n\t * @default false\r\n\t */\r\n\thideOversized?: boolean;\r\n\r\n\t/**\r\n\t * If set to `true` square-bracket formatting blocks will be treated as\r\n\t * regular text.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tignoreFormatting?: boolean;\r\n\r\n\t/**\r\n\t * Path string along which text should be arranged\r\n\t */\r\n\tpath?: string\r\n\r\n\t/**\r\n\t * Relative label location on path.\r\n\t */\r\n\tlocationOnPath?: number;\r\n\r\n\t/**\r\n\t * A ratio to calculate text baseline. Ralative distance from the bottom of\r\n\t * the label.\r\n\t *\r\n\t * @default -0.27\r\n\t */\r\n\tbaseLineRatio?: number;\r\n}\r\n\r\n/**\r\n * Text line information.\r\n *\r\n * Objects used to hold cached information about lines in a Text element.\r\n */\r\nexport interface ITextLineInfo {\r\n\r\n\t/**\r\n\t * Measurements for the bounding box of the line.\r\n\t */\r\n\t\"bbox\"?: IRectangle,\r\n\r\n\t/**\r\n\t * A reference to an SVG `<g>` element that holds line elements.\r\n\t */\r\n\t\"element\"?: Group,\r\n\r\n\t/**\r\n\t * Indicates if line contains more than one element, e.g. has multiple\r\n\t * formatted blocks.\r\n\t */\r\n\t\"complex\"?: boolean,\r\n\r\n\t\"text\"?: string,\r\n\r\n\t\"style\"?: string\r\n};\r\n\r\n/**\r\n * Defines events for [[Text]].\r\n */\r\nexport interface ILabelEvents extends IContainerEvents { }\r\n\r\n/**\r\n * Adapters for [[Text]].\r\n *\r\n * Includes both the [[Adapter]] definitions and properties.\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ILabelAdapters extends IContainerAdapters, ILabelProperties {\r\n\r\n\t/**\r\n\t * Applied to the final formatted label text.\r\n\t */\r\n\ttextOutput: string;\r\n\r\n\t/**\r\n\t * Applied to the final formatted label HTML.\r\n\t */\r\n\thtmlOutput: string;\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Text is used to display highly configurable, data-enabled textual elements.\r\n *\r\n * ## Data Binding\r\n *\r\n * A Text element can dynamically parse and populate its contents with values\r\n * from a [[DataItem]].\r\n *\r\n * To activate such binding, set element's `dataItem` property.\r\n *\r\n * When activated, text contents will be parsed for special tags, e.g.:\r\n *\r\n * ```TypeScript\r\n * label.dataItem = myDataItem;\r\n * label.text = \"The title is: {title}\";\r\n * ```\r\n * ```JavaScript\r\n * label.dataItem = myDataItem;\r\n * label.text = \"The title is: {title}\";\r\n * ```\r\n *\r\n * The above will automatically replace \"{title}\" in the string with the\r\n * actual data value from `myDataItem`.\r\n *\r\n * Note, that most often dataItem is set by the Component.\r\n *\r\n *\r\n * @see {@link ILabelEvents} for a list of available events\r\n * @see {@link ILabelAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-strings/} for info on string formatting and data binding\r\n * @todo Vertical align\r\n * @important\r\n */\r\nexport class Label extends Container {\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ILabelProperties;\r\n\r\n\t/**\r\n\t * Defines Adapter type.\r\n\t */\r\n\tpublic _adapter!: ILabelAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ILabelEvents;\r\n\r\n\t/**\r\n\t * Indicates if the whole text does not fit into max dimenstions set for it.\r\n\t */\r\n\tpublic isOversized: boolean = false;\r\n\r\n\t/**\r\n\t * Currently formatted text, read only.\r\n\t */\r\n\tpublic currentText: string;\r\n\r\n\t/**\r\n\t * Current format to be used for outputing text.\r\n\t */\r\n\tprotected _currentFormat: string;\r\n\r\n\t/**\r\n\t * [_sourceDataItemEvents description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _sourceDataItemEvents: MultiDisposer;\r\n\r\n\r\n\tprotected _prevStatus: string;\r\n\r\n\t/**\r\n\t * SVG path element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic pathElement: $type.Optional<AMElement>;\r\n\r\n\t/**\r\n\t * SVG textpath element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic textPathElement: $type.Optional<Group>;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Execute super's constructor\r\n\t\tsuper();\r\n\r\n\t\t// Set this class name\r\n\t\tthis.className = \"Label\";\r\n\r\n\t\tthis.fill = new InterfaceColorSet().getFor(\"text\");\r\n\r\n\t\t// not good to set this, as then these will appear on each label and values set on container won't be applied.\r\n\t\t//this.textDecoration = \"none\";\r\n\t\t//this.fontWeight = \"normal\";\r\n\r\n\r\n\t\t// Set defaults\r\n\t\tthis.wrap = false;\r\n\t\tthis.truncate = false;\r\n\t\tthis.fullWords = true;\r\n\t\tthis.ellipsis = \"…\";\r\n\t\tthis.textAlign = \"start\";\r\n\t\tthis.textValign = \"top\";\r\n\r\n\t\tthis.layout = \"absolute\";\r\n\t\tthis.baseLineRatio = -0.27;\r\n\t\t//this.pixelPerfect = true;\r\n\t\tthis._positionPrecision = 1;\r\n\r\n\t\t// Add events to watch for maxWidth/maxHeight changes so that we can\r\n\t\t// invalidate this\r\n\t\tthis.events.on(\"maxsizechanged\", () => {\r\n\t\t\tif (this.inited) {\r\n\t\t\t\tthis.handleMaxSize()\r\n\t\t\t}\r\n\t\t}, this, false);\r\n\r\n\t\t// this solves strange bug when text just added to svg is 0x0\r\n\t\tthis.events.once(\"validated\", this.handleValidate, this, false);\r\n\r\n\t\t// Aply theme\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * A placeholder method that is called **after** element finishes drawing\r\n\t * itself.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected afterDraw(): void {\r\n\t\t// since we removed validatePosition from sprite, we still need it here to handle rotated text\r\n\t\tsuper.afterDraw();\r\n\t\tthis.validatePosition();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Sets [[Paper]] instance to use to draw elements.\r\n\t * @ignore\r\n\t * @param paper Paper\r\n\t * @return true if paper was changed, false, if it's the same\r\n\t */\r\n\tpublic setPaper(paper: Paper): boolean {\r\n\r\n\t\tlet changed = super.setPaper(paper);\r\n\r\n\t\tif (changed) {\r\n\t\t\tthis.hardInvalidate();\r\n\t\t}\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected handleValidate() {\r\n\t\tif ((this.currentText || this.text) && (this.bbox.width == 0 || this.bbox.height == 0)) {\r\n\t\t\tregistry.events.once(\"exitframe\", this.hardInvalidate, this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected handleMaxSize() {\r\n\t\tif (\r\n\t\t\t(this.bbox.width > this.availableWidth)\r\n\t\t\t|| ((this.bbox.width < this.availableWidth) && (this.isOversized || this.truncate))\r\n\t\t\t|| (this.bbox.height > this.availableHeight)\r\n\t\t\t|| ((this.bbox.height < this.availableHeight) && this.isOversized)\r\n\t\t) {\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.alignSVGText();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [arrange description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic arrange(): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates current text according to data item and supported features.\r\n\t * Returns `true` if current text has changed.\r\n\t *\r\n\t * @return Text changed?\r\n\t */\r\n\tprotected updateCurrentText(): boolean {\r\n\t\t// Determine output format\r\n\t\tlet output: string, text: string;\r\n\r\n\t\tif ($utils.isNotEmpty(this.html) && this.paper.supportsForeignObject()) {\r\n\r\n\t\t\t// We favor HTML text if it's set and browser supports `foreignObject`\r\n\t\t\toutput = \"html\";\r\n\t\t\ttext = this.html;\r\n\t\t}\r\n\t\telse {\r\n\t\t\toutput = \"svg\";\r\n\t\t\ttext = this.text;\r\n\t\t}\r\n\r\n\t\t// Need to toString source?\r\n\t\tif ($type.isObject(text as any)) {\r\n\t\t\ttext = text.toString();\r\n\t\t}\r\n\r\n\t\t// Need to format text all the time\r\n\t\tif ($type.hasValue(text) && text !== \"\") {\r\n\t\t\ttext = this.populateString(text, this.dataItem);\r\n\t\t}\r\n\r\n\t\tif (output == \"html\") {\r\n\t\t\tif (this._adapterO) {\r\n\t\t\t\ttext = this._adapterO.apply(\"htmlOutput\", text);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this._adapterO) {\r\n\t\t\t\ttext = this._adapterO.apply(\"textOutput\", text);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Update the text\r\n\t\tlet changed = text != this.currentText || output != this._currentFormat;\r\n\t\tthis.currentText = text;\r\n\t\tthis._currentFormat = output;\r\n\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t/**\r\n\t * Hard invalidate means the text will be redrawn even if it hasn't changed.\r\n\t * This is used when we change `fontSize`, `fontFamily`, or for some other\r\n\t * reasons.\r\n\t */\r\n\tpublic hardInvalidate() {\r\n\t\tthis._prevStatus = \"\";\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets line bbox, uses caching to save cpu\r\n\t * @ignore\r\n\t */\r\n\tprotected getLineBBox(lineInfo: ITextLineInfo) {\r\n\t\t//let cacheKey = lineInfo.text + lineInfo.style;\r\n\r\n\t\t//let lineBBox = this.getCache(cacheKey);\r\n\t\t//if (!lineBBox) {\r\n\t\t//lineBBox = lineInfo.element.getBBox();\r\n\t\t//if (lineBBox.width != 0 && lineBBox.height != 0) {\r\n\t\t//\tthis.setCache(cacheKey, lineBBox, 5000);\r\n\t\t//}\r\n\t\t//}\r\n\r\n\t\tlet element = lineInfo && lineInfo.element;\r\n\t\tlet node = element && element.node;\r\n\r\n\t\t// Check for the parent Node to avoid FF from throwing errors\r\n\t\tif (node && node.parentNode) {\r\n\t\t\tlineInfo.bbox = element.getBBox();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the textual label.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\r\n\t\t// Draw super\r\n\t\tsuper.draw();\r\n\r\n\t\tlet oldW = this.bbox.width;\r\n\t\tlet oldH = this.bbox.height;\r\n\r\n\t\tlet topParent = this.topParent;\r\n\t\tif (topParent) {\r\n\t\t\tif (!topParent.maxWidth || !topParent.maxHeight) {\r\n\t\t\t\ttopParent.events.once(\"maxsizechanged\", this.hardInvalidate, this, false);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Calculate max width and height\r\n\t\tlet maxWidth: number = $math.max(this.availableWidth - this.pixelPaddingLeft - this.pixelPaddingRight, 0);\r\n\t\tlet maxHeight: number = $math.max(this.availableHeight - this.pixelPaddingTop - this.pixelPaddingBottom, 0);\r\n\r\n\t\t// save\r\n\t\tlet status = maxHeight + \",\" + maxWidth + this.wrap + this.truncate + this.fullWords + this.rtl + this.ellipsis;\r\n\r\n\t\t// Update text\r\n\t\tif (!this.updateCurrentText() && this.inited && this._prevStatus == status) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._measuredWidth = 0;\r\n\t\tthis._measuredHeight = 0;\r\n\r\n\t\t// Reset\r\n\t\tthis.isOversized = false;\r\n\r\n\t\t// Determine output format\r\n\t\tlet output = this._currentFormat;\r\n\t\tlet text = this.currentText;\r\n\r\n\t\t// Empty string\r\n\t\tif (!$type.hasValue(text) || text == \"\") {\r\n\t\t\tthis.element.attr({ display: \"none\" });\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Chop up text into lines\r\n\t\t// We're still processing SVG and HTML in the same way for now\r\n\t\tlet lines: string[] = text.split(\"\\n\");\r\n\r\n\t\t// Do we need to go through the trouble of measuring lines\r\n\t\t//let measure: boolean = true;// (lines.length > 1) || this.wrap;\r\n\r\n\t\tthis._prevStatus = status;\r\n\r\n\t\tthis.textAlign = this.textAlign;\r\n\r\n\t\t// need this to measure\r\n\t\tlet display = this.group.getAttr(\"display\");\r\n\t\tif (display == \"none\") {\r\n\t\t\tthis.group.removeAttr(\"display\");\r\n\t\t}\r\n\r\n\t\tif (this.textPathElement) {\r\n\t\t\tthis.textPathElement.removeChildren();\r\n\t\t}\r\n\r\n\t\t// SVG or HTML?\r\n\t\tif (output === \"svg\") {\r\n\t\t\t/**\r\n\t\t\t * SVG\r\n\t\t\t */\r\n\r\n\t\t\tthis.element.removeAttr(\"display\");\r\n\r\n\t\t\t// Clear the element\r\n\t\t\tlet group: Group = <Group>this.element;\r\n\r\n\t\t\tthis.resetBBox();\r\n\r\n\t\t\t// Init state variables\r\n\t\t\tlet currentHeight: number = 0;\r\n\t\t\tlet currentFormat: string = \"\";\r\n\r\n\t\t\t// Process each line\r\n\t\t\tfor (let i = 0; i < lines.length; i++) {\r\n\r\n\t\t\t\t// Get line\r\n\t\t\t\tlet line: string = lines[i];\r\n\r\n\t\t\t\t// Check if line is empty\r\n\t\t\t\tif (line == \"\") {\r\n\t\t\t\t\t// It is, let's just update currentHeight and go to the next one\r\n\t\t\t\t\t// If it's the first line, we'll have to use arbirary line height,\r\n\t\t\t\t\t// since there's nothing to measure. For subsequent lines we can take\r\n\t\t\t\t\t// previous line's height\r\n\t\t\t\t\tlet tempElement = this.getSVGLineElement(\"\", 0);\r\n\t\t\t\t\ttempElement.add(\r\n\t\t\t\t\t\tthis.getSvgElement(\r\n\t\t\t\t\t\t\t\".\",\r\n\t\t\t\t\t\t\tgetTextFormatter().translateStyleShortcuts(currentFormat)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tgroup.add(tempElement);\r\n\t\t\t\t\tlet offset = Math.ceil(tempElement.getBBox().height);\r\n\t\t\t\t\tif (offset > 0) {\r\n\t\t\t\t\t\tcurrentHeight += offset;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgroup.removeElement(tempElement);\r\n\r\n\t\t\t\t\t// Clear cache if necessary\r\n\t\t\t\t\tlet lineInfo = this.getLineInfo(i);\r\n\t\t\t\t\tif (lineInfo) {\r\n\t\t\t\t\t\tlineInfo.text = \"\";\r\n\t\t\t\t\t\tlineInfo.element.textContent = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Chunk up the line and process each chunk\r\n\t\t\t\tlet chunks: ITextChunk[] = getTextFormatter().chunk(line, null, this.ignoreFormatting);\r\n\t\t\t\tlet currentLineHeight: number = 0;\r\n\t\t\t\tlet firstChunk: boolean = true;\r\n\t\t\t\tlet skipTextChunks: boolean = false;\r\n\r\n\t\t\t\t// Create line element or grab it from cache\r\n\t\t\t\tlet lineInfo = this.getLineInfo(i);\r\n\r\n\t\t\t\tif (lineInfo) {\r\n\t\t\t\t\t// Empty line\r\n\t\t\t\t\tlineInfo.text = \"\";\r\n\t\t\t\t\tlineInfo.element.textContent = \"\";\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// Init new line info\r\n\t\t\t\t\tlineInfo = {\r\n\t\t\t\t\t\t\"text\": \"\",\r\n\t\t\t\t\t\t\"element\": this.getSVGLineElement(\"\", 0),\r\n\t\t\t\t\t\t\"complex\": false\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// Create the line element\r\n\t\t\t\t\t//lineInfo.element = this.getSVGLineElement(\"\", 0);\r\n\t\t\t\t\t//lineElement = this.getSVGLineElement(\"\", 0);\r\n\t\t\t\t\tgroup.add(lineInfo.element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlineInfo.element.removeAttr(\"display\");\r\n\t\t\t\tlineInfo.element.removeChildren(); // memory leak without this\r\n\r\n\t\t\t\tif (this.textPathElement) {\r\n\t\t\t\t\tlineInfo.element.add(this.textPathElement);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*// @todo not needed anymore\r\n\t\t\t\tif (this.rtl) {\r\n\t\t\t\t\tchunks.reverse();\r\n\t\t\t\t}*/\r\n\r\n\t\t\t\t// Process each chunk\r\n\t\t\t\tfor (let x: number = 0; x < chunks.length; x++) {\r\n\r\n\t\t\t\t\t// If there's more than one chunk, means the line is \"complex\"\r\n\t\t\t\t\tif (x) {\r\n\t\t\t\t\t\tlineInfo.complex = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Get chunk\r\n\t\t\t\t\tlet chunk = chunks[x];\r\n\r\n\t\t\t\t\t// Is this chunk format or text?\r\n\t\t\t\t\tif (chunk.type === \"format\") {\r\n\r\n\t\t\t\t\t\t// Log current format, so that we can apply it to multiple lines if\r\n\t\t\t\t\t\t// necessary\r\n\t\t\t\t\t\tcurrentFormat = chunk.text;\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\r\n\t\t\t\t\t\t// It's text block\r\n\r\n\t\t\t\t\t\t// Need to skip?\r\n\t\t\t\t\t\t// We do this when truncating. We can't just simply go ahead and\r\n\t\t\t\t\t\t// abandon chunk processing as they might have formatting\r\n\t\t\t\t\t\t// instructions in them that are relevant for subsequent lines\r\n\t\t\t\t\t\tif (skipTextChunks) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Add chunk to the current element\r\n\t\t\t\t\t\t//lineInfo.element.content += $utils.trim(getTextFormatter().format(currentFormat + chunk.text, output));\r\n\r\n\t\t\t\t\t\tlineInfo.text = chunk.text;\r\n\t\t\t\t\t\tlineInfo.style = getTextFormatter().translateStyleShortcuts(currentFormat);\r\n\r\n\t\t\t\t\t\tlet tspan = this.getSvgElement(lineInfo.text, lineInfo.style);\r\n\r\n\t\t\t\t\t\tif (this.textPathElement) {\r\n\t\t\t\t\t\t\tthis.textPathElement.add(tspan);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tlineInfo.element.add(tspan);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.getLineBBox(lineInfo);\r\n\t\t\t\t\t\tlineInfo.bbox.width = Math.ceil(lineInfo.bbox.width);\r\n\r\n\t\t\t\t\t\t// Updated current line height\r\n\t\t\t\t\t\tif (currentLineHeight < lineInfo.bbox.height) {\r\n\t\t\t\t\t\t\tcurrentLineHeight = lineInfo.bbox.height;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Wrapping?\r\n\t\t\t\t\t\tif ((this.wrap || this.truncate) && (lineInfo.bbox.width > maxWidth)) {\r\n\r\n\t\t\t\t\t\t\t// Set oversized\r\n\t\t\t\t\t\t\tthis.isOversized = true;\r\n\r\n\t\t\t\t\t\t\t// Take temporary measurements\r\n\t\t\t\t\t\t\tlet lineText: string = lineInfo.element.textContent;\r\n\t\t\t\t\t\t\tlet avgCharWidth: number = (lineInfo.bbox.width / lineText.length); // * .9;\r\n\r\n\t\t\t\t\t\t\t// Calculate average number of symbols / width\r\n\t\t\t\t\t\t\tlet excessChars: number = $math.min(Math.ceil((lineInfo.bbox.width - maxWidth) / avgCharWidth), lineText.length);\r\n\r\n\t\t\t\t\t\t\t// Are we truncating or auto-wrapping text?\r\n\t\t\t\t\t\t\tif (this.truncate) {\r\n\r\n\t\t\t\t\t\t\t\t/**\r\n\t\t\t\t\t\t\t\t * Processing line truncation\r\n\t\t\t\t\t\t\t\t * With the addition of each text chunk we measure if current\r\n\t\t\t\t\t\t\t\t * line does not exceed maxWidth. If it does, we will stop\r\n\t\t\t\t\t\t\t\t * addition of further chunks as well as try to truncate\r\n\t\t\t\t\t\t\t\t * current or any number of previous chunks with an added\r\n\t\t\t\t\t\t\t\t * ellipsis\r\n\t\t\t\t\t\t\t\t */\r\n\r\n\t\t\t\t\t\t\t\t// Indicator whether we need to add ellipsis to the current\r\n\t\t\t\t\t\t\t\t// element, even if it fits. This is needed to indicate\r\n\t\t\t\t\t\t\t\t// whether we have already removed some subsequent chunks in\r\n\t\t\t\t\t\t\t\t// which case we need to add ellipsis.\r\n\t\t\t\t\t\t\t\tlet addEllipsis: boolean = false;\r\n\r\n\t\t\t\t\t\t\t\t// Process each child in the temporary line, until the whole\r\n\t\t\t\t\t\t\t\t// line fits, preferably with an ellipsis\r\n\t\t\t\t\t\t\t\t// TODO use iterator instead\r\n\t\t\t\t\t\t\t\tlet node = lineInfo.element.node;\r\n\t\t\t\t\t\t\t\tif (node && node.childNodes) {\r\n\t\t\t\t\t\t\t\t\tfor (let e = lineInfo.element.node.childNodes.length - 1; e >= 0; e--) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Get current element\r\n\t\t\t\t\t\t\t\t\t\tlet node = lineInfo.element.node.childNodes[e];\r\n\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Add ellipsis only if previous chunk was removed in full\r\n\t\t\t\t\t\t\t\t\t\t// and this chunk already fits\r\n\t\t\t\t\t\t\t\t\t\t//if (addEllipsis && (bbox.width <= maxWidth)) {\r\n\t\t\t\t\t\t\t\t\t\tif (addEllipsis && (lineInfo.bbox.width <= maxWidth)) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Add ellipsis\r\n\t\t\t\t\t\t\t\t\t\t\tnode.textContent += \" \" + this.ellipsis;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Measure again (we need to make sure ellipsis fits)\r\n\t\t\t\t\t\t\t\t\t\t\tlineInfo.bbox = lineInfo.element.getBBox();\r\n\t\t\t\t\t\t\t\t\t\t\tlineInfo.bbox.width = Math.floor(lineInfo.bbox.width);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// If it fits, we're done here\r\n\t\t\t\t\t\t\t\t\t\t\t// If it doesn't we continue rolling\r\n\t\t\t\t\t\t\t\t\t\t\tif (lineInfo.bbox.width <= maxWidth) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\taddEllipsis = false;\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Get element text\r\n\t\t\t\t\t\t\t\t\t\tlet elementText = node.textContent;\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Calculate average number of symbols / width\r\n\t\t\t\t\t\t\t\t\t\tlineText = lineInfo.element.textContent;\r\n\t\t\t\t\t\t\t\t\t\texcessChars = $math.min(Math.ceil((lineInfo.bbox.width - maxWidth) / avgCharWidth), lineText.length);\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Do this until we fit\r\n\t\t\t\t\t\t\t\t\t\twhile ((lineInfo.bbox.width > maxWidth) && (excessChars <= lineText.length) && (excessChars > 0)) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Calculate max available chars\r\n\t\t\t\t\t\t\t\t\t\t\tlet maxChars: number = $math.max(lineText.length - excessChars - this.ellipsis.length, 1);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Is there anything left?\r\n\t\t\t\t\t\t\t\t\t\t\tif (maxChars <= 1) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Nope, let's jump to the previous item\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Set excess characters to zero so that this loop does\r\n\t\t\t\t\t\t\t\t\t\t\t\t// not repeat when it over\r\n\t\t\t\t\t\t\t\t\t\t\t\texcessChars = 0;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Add ellipsis to previous item\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Subsequent iterations will check if the ellipsis fits\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (e > 0) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Indicating to add ellipsis to previous item\r\n\t\t\t\t\t\t\t\t\t\t\t\t\taddEllipsis = true;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Removing this node\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tlineInfo.element.node.removeChild(node);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Truncate the text\r\n\t\t\t\t\t\t\t\t\t\t\telementText = $utils.truncateWithEllipsis(elementText, maxChars, this.ellipsis, this.fullWords, this.rtl);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tif ((elementText.length > maxChars) && this.fullWords) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Still too long?\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Let's try truncating breaking words anyway\r\n\t\t\t\t\t\t\t\t\t\t\t\telementText = $utils.truncateWithEllipsis(elementText, maxChars, this.ellipsis, false, this.rtl);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Set truncated text\r\n\t\t\t\t\t\t\t\t\t\t\tnode.textContent = elementText;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Measure again\r\n\t\t\t\t\t\t\t\t\t\t\tlineInfo.bbox = lineInfo.element.getBBox();\r\n\t\t\t\t\t\t\t\t\t\t\tlineInfo.bbox.width = Math.floor(lineInfo.bbox.width);\r\n\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Increase excess characters count, just in case it still\r\n\t\t\t\t\t\t\t\t\t\t\t// doesn't fit and we have to go at it again\r\n\t\t\t\t\t\t\t\t\t\t\texcessChars = Math.ceil(excessChars * 1.1);\r\n\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Do not process further chunks\r\n\t\t\t\t\t\t\t\t\t\tskipTextChunks = true;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\r\n\t\t\t\t\t\t\t\t/**\r\n\t\t\t\t\t\t\t\t * Processign auto-wrap\r\n\t\t\t\t\t\t\t\t * In this case we're going to be adding text chunks until\r\n\t\t\t\t\t\t\t\t * they don't fit into current line. Once that happens we will\r\n\t\t\t\t\t\t\t\t * inject the rest of the chunks to the next line\r\n\t\t\t\t\t\t\t\t */\r\n\t\t\t\t\t\t\t\t// Get last node added and measure it\r\n\t\t\t\t\t\t\t\tlet node = lineInfo.element.node;\r\n\t\t\t\t\t\t\t\tif (node) {\r\n\t\t\t\t\t\t\t\t\tlet lastNode = lineInfo.element.node.lastChild;\r\n\r\n\t\t\t\t\t\t\t\t\t// Init split lines\r\n\t\t\t\t\t\t\t\t\tlet splitLines: string[];\r\n\t\t\t\t\t\t\t\t\twhile ((lineInfo.bbox.width > maxWidth) && (excessChars <= lineText.length) && (excessChars > 0)) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Calculate max available chars\r\n\t\t\t\t\t\t\t\t\t\tlet maxChars: number = $math.max(chunk.text.length - excessChars, 1);\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Don't split the words mid-word if it's not the first chunk\r\n\t\t\t\t\t\t\t\t\t\t// in the line\r\n\t\t\t\t\t\t\t\t\t\tif (firstChunk) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Split mid-word if necessary\r\n\t\t\t\t\t\t\t\t\t\t\tsplitLines = $utils.splitTextByCharCount(chunk.text, maxChars, true, this.rtl);\r\n\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\telse {\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Don't split mid-word\r\n\t\t\t\t\t\t\t\t\t\t\tsplitLines = $utils.splitTextByCharCount(chunk.text, maxChars, true, this.rtl);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Check if the first word is too long\r\n\t\t\t\t\t\t\t\t\t\t\tif ((splitLines[0].length > maxChars) || maxChars === 1) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Yes - move the whole chunk to the next line\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Remove the element we just added\r\n\t\t\t\t\t\t\t\t\t\t\t\tlineInfo.element.node.removeChild(lastNode)\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Break out of the while on next cycle\r\n\t\t\t\t\t\t\t\t\t\t\t\texcessChars = 0;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Use the first line to update last item\r\n\t\t\t\t\t\t\t\t\t\tif (excessChars > 0) {\r\n\t\t\t\t\t\t\t\t\t\t\tlastNode.textContent = getTextFormatter().cleanUp($utils.trim(splitLines.shift()));\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Measure again, just in case\r\n\t\t\t\t\t\t\t\t\t\tlineInfo.bbox = lineInfo.element.getBBox();\r\n\t\t\t\t\t\t\t\t\t\tlineInfo.bbox.width = Math.floor(lineInfo.bbox.width);\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Increase excess characters count, just in case it still\r\n\t\t\t\t\t\t\t\t\t\t// doesn't fit and we have to go at it again\r\n\t\t\t\t\t\t\t\t\t\texcessChars = Math.ceil(excessChars * 1.1);\r\n\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\t\t\t\t\t// Construct the rest of the line\r\n\t\t\t\t\t\t\t\t\tif (splitLines.length > 0) {\r\n\r\n\t\t\t\t\t\t\t\t\t\tlet restOfLine: string = \"\";\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Add leftovers from splitting the current chunk\r\n\t\t\t\t\t\t\t\t\t\tif ($type.hasValue(splitLines)) {\r\n\t\t\t\t\t\t\t\t\t\t\tif (this.rtl) {\r\n\t\t\t\t\t\t\t\t\t\t\t\trestOfLine += splitLines.join(\"\") + currentFormat;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t\t\t\trestOfLine += currentFormat + splitLines.join(\"\").replace(/([\\[\\]]{1})/g, \"$1$1\");\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Add the rest of the chunks\r\n\t\t\t\t\t\t\t\t\t\tfor (let c: number = x + 1; c < chunks.length; c++) {\r\n\t\t\t\t\t\t\t\t\t\t\tif (chunks[c].type == \"value\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\t// We're escaping single square brackets that were\r\n\t\t\t\t\t\t\t\t\t\t\t\t// cleaned up by chunk() back to double square brackets\r\n\t\t\t\t\t\t\t\t\t\t\t\t// so that they are not being treated as format on\r\n\t\t\t\t\t\t\t\t\t\t\t\t// next pass.\r\n\t\t\t\t\t\t\t\t\t\t\t\trestOfLine += chunks[c].text.replace(/([\\[\\]]{1})/g, \"$1$1\");\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t\t\t\trestOfLine += chunks[c].text;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Inject the rest of the lines as chunks for subsequent\r\n\r\n\t\t\t\t\t\t\t\t\t\tlines.splice(i + 1, 0, restOfLine);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t// Skip processing the rest of the chunks\r\n\t\t\t\t\t\t\t\t\tskipTextChunks = true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// Let's update the text's bbox with the line's one\r\n\t\t\t\t\t\tif (this.bbox.width < lineInfo.bbox.width) {\r\n\t\t\t\t\t\t\tthis.bbox.width = lineInfo.bbox.width;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// commented to avoid bug (seen on sankey link) where text is incorrectly aligned\r\n\t\t\t\t\t\t//if (this.bbox.x > lineInfo.bbox.x) {\r\n\t\t\t\t\t\t//this.bbox.x = lineInfo.bbox.x;\r\n\t\t\t\t\t\t//}\r\n\r\n\t\t\t\t\t\tthis.bbox.height = currentHeight + currentLineHeight;\r\n\r\n\t\t\t\t\t\t// Position current line\r\n\t\t\t\t\t\tif (!this.textPathElement) {\r\n\t\t\t\t\t\t\tlineInfo.element.attr({\r\n\t\t\t\t\t\t\t\t\"x\": \"0\",\r\n\t\t\t\t\t\t\t\t\"y\": currentHeight + currentLineHeight,\r\n\t\t\t\t\t\t\t\t\"dy\": $math.round((this.baseLineRatio * currentLineHeight), 3).toString()\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tlineInfo.element.attr({\r\n\t\t\t\t\t\t\t\t\"dy\": -this.paddingBottom.toString()\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfirstChunk = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Trim the last item\r\n\t\t\t\tlet node = lineInfo.element.node;\r\n\t\t\t\tif (node) {\r\n\t\t\t\t\tlet lastNode = node.lastChild;\r\n\t\t\t\t\tif (lastNode) {\r\n\t\t\t\t\t\tlastNode.textContent = this.rtl ?\r\n\t\t\t\t\t\t\t$utils.ltrim(lastNode.textContent) :\r\n\t\t\t\t\t\t\t$utils.rtrim(lastNode.textContent);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Increment collective height\r\n\t\t\t\tcurrentHeight += currentLineHeight;\r\n\r\n\t\t\t\t// Save line cache\r\n\t\t\t\tthis.addLineInfo(lineInfo, i);\r\n\t\t\t}\r\n\r\n\t\t\t// Check if maybe we need to hide the whole label if it doesn't fit\r\n\t\t\tthis.maybeHideOversized();\r\n\r\n\t\t\tthis.measureFailed = false;\r\n\t\t\tif (this.bbox.width == 0 || this.bbox.height == 0) {\r\n\t\t\t\tthis.measureFailed = true;\r\n\t\t\t}\r\n\r\n\t\t\t// Updated measured dims\r\n\t\t\tthis._measuredWidth = $math.round($math.max(this.bbox.width, this.pixelWidth - this.pixelPaddingLeft - this.pixelPaddingRight));\r\n\t\t\tthis._measuredHeight = $math.round($math.max(this.bbox.height, this.pixelHeight - this.pixelPaddingTop - this.pixelPaddingBottom));\r\n\r\n\t\t\t// Align the lines\r\n\t\t\tthis.alignSVGText();\r\n\r\n\t\t\tthis.bbox.width = this._measuredWidth;\r\n\t\t\tthis.bbox.height = this._measuredHeight;\r\n\r\n\t\t\tif (oldH != this._measuredHeight || oldW != this._measuredWidth) {\r\n\t\t\t\tthis.dispatch(\"transformed\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.hideUnused(lines.length);\r\n\t\t}\r\n\t\telse {\r\n\r\n\t\t\t/**\r\n\t\t\t * HTML\r\n\t\t\t */\r\n\r\n\t\t\tthis.element.removeAttr(\"display\");\r\n\t\t\tthis.resetBBox();\r\n\r\n\t\t\t// Clear the element\r\n\t\t\tlet group: Group = <Group>this.element;\r\n\t\t\tgroup.removeChildren();\r\n\r\n\t\t\t// Create a ForeignObject to use as HTML container\r\n\t\t\tlet fo = this.paper.foreignObject();\r\n\t\t\tgroup.add(fo);\r\n\r\n\t\t\t// Set widths on foreignObject so that autosizing measurements work\r\n\t\t\t// This will bet reset to actual content width/height\r\n\t\t\tif (this.maxWidth) {\r\n\t\t\t\tfo.attr({\r\n\t\t\t\t\twidth: this.maxWidth\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (this.maxHeight) {\r\n\t\t\t\tfo.attr({\r\n\t\t\t\t\theight: this.maxHeight\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Create line element\r\n\t\t\t//let lineElement: HTMLElement = this.getHTMLLineElement(getTextFormatter().format(this.html, output));\r\n\t\t\tlet lineElement: HTMLElement = this.getHTMLLineElement(text);\r\n\t\t\tfo.node.appendChild(lineElement);\r\n\r\n\t\t\t// Temporarily set to inline-block so we can measure real width and height\r\n\t\t\tlineElement.style.display = \"inline-block\";\r\n\t\t\tconst clientWidth = lineElement.clientWidth;\r\n\t\t\tconst clientHeight = lineElement.clientHeight;\r\n\r\n\t\t\tlineElement.style.display = \"block\";\r\n\t\t\tthis._bbox = {\r\n\t\t\t\tx: 0,\r\n\t\t\t\ty: 0,\r\n\t\t\t\twidth: clientWidth,\r\n\t\t\t\theight: clientHeight\r\n\t\t\t};\r\n\r\n\t\t\t// Set exact dimensions of foreignObject so it is sized exactly as\r\n\t\t\t// the content within\r\n\t\t\tfo.attr({\r\n\t\t\t\twidth: clientWidth,\r\n\t\t\t\theight: clientHeight\r\n\t\t\t});\r\n\r\n\t\t\t// Check if maybe we need to hide the whole label if it doesn't fit\r\n\t\t\tthis.maybeHideOversized();\r\n\r\n\t\t\t// Set measurements and update bbox\r\n\t\t\tthis._measuredWidth = $math.max(this.bbox.width, this.pixelWidth - this.pixelPaddingLeft - this.pixelPaddingRight);\r\n\t\t\tthis._measuredHeight = $math.max(this.bbox.height, this.pixelHeight - this.pixelPaddingTop - this.pixelPaddingBottom);\r\n\r\n\t\t\tthis.bbox.width = this._measuredWidth;\r\n\t\t\tthis.bbox.height = this._measuredHeight;\r\n\r\n\t\t\t// Don't let labels bleed out of the alotted area\r\n\t\t\tif (this.truncate) {\r\n\t\t\t\tlineElement.style.overflow = \"hidden\";\r\n\t\t\t}\r\n\r\n\t\t\tif ((clientWidth > maxWidth) || (clientHeight > maxHeight)) {\r\n\t\t\t\tthis.isOversized = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t// Set applicable styles\r\n\t\tthis.setStyles();\r\n\t\tthis.updateCenter();\r\n\t\tthis.updateBackground();\r\n\r\n\t\tif (display == \"none\") {\r\n\t\t\tthis.group.attr({ display: \"none\" });\r\n\t\t}\r\n\r\n\t\tif (this.pathElement) {\r\n\t\t\tthis.paper.appendDef(this.pathElement);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Hides element if it does not fit into available space\r\n\t */\r\n\tprivate maybeHideOversized(): void {\r\n\t\tif (this.hideOversized) {\r\n\t\t\tif ((this.availableWidth < this.bbox.width) || (this.availableHeight < this.bbox.height)) {\r\n\t\t\t\tthis.element.attr({ display: \"none\" });\r\n\t\t\t\tthis.isOversized = true;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.element.removeAttr(\"display\");\r\n\t\t\t\tthis.isOversized = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Aligns the lines horizontally ant vertically, based on properties.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic alignSVGText(): void {\r\n\t\t// Get Group\r\n\t\tlet group: Group = <Group>this.element;\r\n\t\tlet children = group.node.children || group.node.childNodes;\r\n\r\n\t\t// Is there anything to align?\r\n\t\tif (!children || (children && children.length == 0)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet width = this._measuredWidth;\r\n\t\tlet height = this._measuredHeight;\r\n\r\n\t\t// TODO maybe these aren't needed ?\r\n\t\t$utils.used(this.pixelPaddingLeft);\r\n\t\t$utils.used(this.pixelPaddingRight);\r\n\t\t$utils.used(this.pixelPaddingTop);\r\n\t\t$utils.used(this.pixelPaddingBottom);\r\n\r\n\t\t// Process each line\r\n\t\t//$iter.each(group.children.backwards().iterator(), (element) => {\r\n\t\tfor (let i = children.length - 1; i >= 0; i--) {\r\n\t\t\t// Align horizontally\r\n\t\t\t// Since we are using `text-anchor` for horizontal alignment, all we need\r\n\t\t\t// to do here is move the `x` position\r\n\t\t\tlet node = <SVGElement>children[i];\r\n\r\n\t\t\tnode.setAttribute(\"text-anchor\", this.textAlign);\r\n\r\n\t\t\tif (this.textPathElement) {\r\n\t\t\t\tnode.removeAttribute(\"x\");\r\n\t\t\t\tnode.removeAttribute(\"y\");\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tswitch (this.textAlign) {\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\t\tnode.setAttribute(\"x\", (width / 2).toString() + \"px\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"end\":\r\n\t\t\t\t\t\tif (this.rtl) {\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tnode.setAttribute(\"x\", width.toString());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tif (this.rtl) {\r\n\t\t\t\t\t\t\tnode.setAttribute(\"x\", width.toString());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tnode.removeAttribute(\"text-anchor\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet y = $type.toNumber(node.getAttribute(\"y\"));\r\n\r\n\t\t\t\tswitch (this.textValign) {\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\t\tnode.setAttribute(\"y\", (y + (height - this.bbox.height) / 2).toString());\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"bottom\":\r\n\t\t\t\t\t\tnode.setAttribute(\"y\", (y + height - this.bbox.height).toString());\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tnode.setAttribute(\"y\", y.toString());\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Produces an SVG line element with formatted text.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param text Text to wrap into line\r\n\t * @param y Current line vertical position\r\n\t * @return A DOM element\r\n\t * @todo Implement HTML support\r\n\t */\r\n\tpublic getSVGLineElement(text: string, y?: number): Group {\r\n\r\n\t\t// Create a <text> node and set text\r\n\t\tlet element: Group = this.paper.addGroup(\"text\");\r\n\t\telement.textContent = text;\r\n\r\n\t\t// Set parameters\r\n\t\telement.attr({\r\n\t\t\t\"x\": \"0\"\r\n\t\t\t//\"alignment-baseline\": \"hanging\",\r\n\t\t\t//\"baseline-shift\": \"-20%\",\r\n\t\t\t//\"text-anchor\": \"center\"\r\n\t\t});\r\n\r\n\t\t// Set `y` position\r\n\t\tif ($type.hasValue(y)) {\r\n\t\t\telement.attr({\r\n\t\t\t\t\"y\": y.toString()\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Don't let labels blled out of the alotted area\r\n\t\tif (this.truncate || this.wrap) {\r\n\t\t\telement.attr({ \"overflow\": \"hidden\" });\r\n\t\t}\r\n\r\n\t\t// Add RTL?\r\n\t\tif (this.rtl) {\r\n\t\t\telement.attr({\r\n\t\t\t\t\"direction\": \"rtl\",\r\n\t\t\t\t//\"unicode-bidi\": \"bidi-override\"\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn element;\r\n\t}\r\n\r\n\t/**\r\n\t * Resets cached BBox.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic resetBBox(): void {\r\n\t\tthis._bbox = { x: 0, y: 0, width: 0, height: 0 };\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Creates and returns an HTML line element (`<div>`).\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param text Text to add\r\n\t * @return `<div>` element reference\r\n\t */\r\n\tpublic getHTMLLineElement(text: string): HTMLElement {\r\n\r\n\t\t// Create the <div> element\r\n\t\tlet div: HTMLElement = document.createElement(\"div\");\r\n\t\tdiv.innerHTML = text;\r\n\r\n\t\t// Set text alignment\r\n\t\tswitch (this.textAlign) {\r\n\t\t\tcase \"middle\":\r\n\t\t\t\tdiv.style.textAlign = \"center\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"end\":\r\n\t\t\t\tdiv.style.textAlign = \"right\";\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\t// Disable or enable wrapping\r\n\t\tif (this.wrap) {\r\n\t\t\tdiv.style.wordWrap = \"break-word\";\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdiv.style.whiteSpace = \"nowrap\";\r\n\t\t}\r\n\r\n\t\t// Don't let labels bleed out of the alotted area\r\n\t\t// Moved to `draw()` because setting \"hidden\" kills all measuring\r\n\t\t/*if (this.truncate) {\r\n\t\t\tdiv.style.overflow = \"hidden\";\r\n\t\t}*/\r\n\r\n\t\t// Set RTL-related styles\r\n\t\tif (this.rtl) {\r\n\t\t\tdiv.style.direction = \"rtl\";\r\n\t\t\t//div.style.unicodeBidi = \"bidi-override\";\r\n\t\t}\r\n\r\n\t\t// Translate some of the SVG styles into CSS\r\n\t\tif ($type.hasValue(this.fill)) {\r\n\t\t\tdiv.style.color = this.fill.toString();\r\n\t\t}\r\n\r\n\t\treturn div;\r\n\t}\r\n\r\n\t/**\r\n\t * Applies specific styles to text to make it not selectable, unless it is\r\n\t * explicitly set as `selectable`.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Set styles via AMElement\r\n\t */\r\n\tpublic setStyles(): void {\r\n\t\tlet group: Group = <Group>this.element;\r\n\t\tif (!this.selectable || this.draggable || this.resizable || this.swipeable) {\r\n\t\t\tgroup.addStyle({\r\n\t\t\t\t\"webkitUserSelect\": \"none\",\r\n\t\t\t\t\"msUserSelect\": \"none\"\r\n\t\t\t});\r\n\t\t}\r\n\t\telse if (this.selectable) {\r\n\t\t\tgroup.removeStyle(\"webkitUserSelect\");\r\n\t\t\tgroup.removeStyle(\"msUserSelect\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Hides unused lines\r\n\t */\r\n\tprotected hideUnused(index: number) {\r\n\t\tthis.initLineCache();\r\n\t\tlet lines: ITextLineInfo[] = this.getCache(\"lineInfo\");\r\n\t\tif (lines.length >= index) {\r\n\t\t\tfor (let i = index; i < lines.length; i++) {\r\n\t\t\t\tlet line = lines[i];\r\n\t\t\t\tif (line && line.element) {\r\n\t\t\t\t\tline.element.attr({ \"display\": \"none\" });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * An SVG text.\r\n\t *\r\n\t * Please note that setting `html` will override this setting if browser\r\n\t * supports `foreignObject` in SGV, such as most modern browsers excluding\r\n\t * IEs.\r\n\t *\r\n\t * @param value SVG Text\r\n\t */\r\n\tpublic set text(value: string) {\r\n\t\t//this.setPropertyValue(\"html\", undefined);\r\n\t\tthis.setPropertyValue(\"text\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return SVG text\r\n\t */\r\n\tpublic get text(): string {\r\n\t\treturn this.getPropertyValue(\"text\");\r\n\t}\r\n\r\n\t/**\r\n\t * An SVG path string to position text along. If set, the text will follow\r\n\t * the curvature of the path.\r\n\t *\r\n\t * Location along the path can be set using `locationOnPath`.\r\n\t *\r\n\t * IMPORTANT: Only SVG text can be put on path. If you are using HTML text\r\n\t * this setting will be ignored.\r\n\t *\r\n\t * @since 4.1.2\r\n\t * @param value Path\r\n\t */\r\n\tpublic set path(value: string) {\r\n\t\tif (this.setPropertyValue(\"path\", value, true)) {\r\n\t\t\tif (this.pathElement) {\r\n\t\t\t\tthis.pathElement.dispose();\r\n\t\t\t}\r\n\r\n\t\t\tif (this.textPathElement) {\r\n\t\t\t\tthis.textPathElement.dispose();\r\n\t\t\t}\r\n\r\n\t\t\tthis.pathElement = this.paper.add(\"path\");\r\n\t\t\tthis.pathElement.attr({ \"d\": value });\r\n\t\t\tthis.pathElement.attr({ \"id\": \"text-path-\" + this.uid });\r\n\t\t\tthis._disposers.push(this.pathElement);\r\n\r\n\t\t\tthis.textPathElement = this.paper.addGroup(\"textPath\");\r\n\t\t\tthis.textPathElement.attrNS($dom.XLINK, \"xlink:href\", \"#text-path-\" + this.uid);\r\n\t\t\t// TODO remove after https://bugzilla.mozilla.org/show_bug.cgi?id=455986 is fixed\r\n\t\t\tthis.textPathElement.attr({ \"path\": value });\r\n\t\t\tthis._disposers.push(this.textPathElement);\r\n\t\t\tthis.hardInvalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Path\r\n\t */\r\n\tpublic get path(): string {\r\n\t\treturn this.getPropertyValue(\"path\");\r\n\t}\r\n\r\n\t/**\r\n\t * Relative label location on `path`. Value range is from 0 (beginning)\r\n\t * to 1 (end).\r\n\t *\r\n\t * Works only if you set `path` setting to an SVG path.\r\n\t *\r\n\t * @since 4.1.2\r\n\t * @default 0\r\n\t * @param value Relatvie location on path\r\n\t */\r\n\tpublic set locationOnPath(value: number) {\r\n\t\tthis.setPropertyValue(\"locationOnPath\", value);\r\n\t\tif (this.textPathElement) {\r\n\t\t\tthis.textPathElement.attr({ \"startOffset\": (value * 100) + \"%\" })\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Relatvie location on path\r\n\t */\r\n\tpublic get locationOnPath(): number {\r\n\t\treturn this.getPropertyValue(\"locationOnPath\");\r\n\t}\r\n\r\n\t/**\r\n\t * A ratio to calculate text baseline. Ralative distance from the bottom of\r\n\t * the label.\r\n\t *\r\n\t * @since 4.4.2\r\n\t * @default -0.27\r\n\t * @param value Base line ratio\r\n\t */\r\n\tpublic set baseLineRatio(value: number) {\r\n\t\tthis.setPropertyValue(\"baseLineRatio\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Base line ratio\r\n\t */\r\n\tpublic get baseLineRatio(): number {\r\n\t\treturn this.getPropertyValue(\"baseLineRatio\");\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables autowrapping of text.\r\n\t *\r\n\t * @param value Auto-wrapping enabled\r\n\t */\r\n\tpublic set wrap(value: boolean) {\r\n\t\tthis.resetBBox();\r\n\t\tthis.setPropertyValue(\"wrap\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Auto-wrap enabled or not\r\n\t */\r\n\tpublic get wrap(): boolean {\r\n\t\treturn this.getPropertyValue(\"wrap\");\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if text lines need to be truncated if they do not fit, using\r\n\t * configurable `ellipsis` string.\r\n\t *\r\n\t * `truncate` overrides `wrap` if both are set to `true`.\r\n\t *\r\n\t * NOTE: For HTML text, this setting **won't** trigger a parser and actual\r\n\t * line truncation with ellipsis. It will just hide everything that goes\r\n\t * outside the label.\r\n\t *\r\n\t * @param value trincate text?\r\n\t */\r\n\tpublic set truncate(value: boolean) {\r\n\t\tthis.resetBBox();\r\n\t\tthis.setPropertyValue(\"truncate\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Truncate text?\r\n\t */\r\n\tpublic get truncate(): boolean {\r\n\t\treturn this.getPropertyValue(\"truncate\");\r\n\t}\r\n\r\n\t/**\r\n\t * If `truncate` is enabled, should Label try to break only on full words\r\n\t * (`true`), or whenever needed, including middle of the word. (`false`)\r\n\t *\r\n\t * @default true\r\n\t * @param value Truncate on full words?\r\n\t */\r\n\tpublic set fullWords(value: boolean) {\r\n\t\tthis.setPropertyValue(\"fullWords\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Truncate on full words?\r\n\t */\r\n\tpublic get fullWords(): boolean {\r\n\t\treturn this.getPropertyValue(\"fullWords\");\r\n\t}\r\n\r\n\t/**\r\n\t * Ellipsis character to use if `truncate` is enabled.\r\n\t *\r\n\t * @param value Ellipsis string\r\n\t * @default \"...\"\r\n\t */\r\n\tpublic set ellipsis(value: string) {\r\n\t\tthis.setPropertyValue(\"ellipsis\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Ellipsis string\r\n\t */\r\n\tpublic get ellipsis(): string {\r\n\t\treturn this.getPropertyValue(\"ellipsis\");\r\n\t}\r\n\r\n\t/**\r\n\t * Forces the text to be selectable. This setting will be ignored if the\r\n\t * object has some kind of interaction attached to it, such as it is\r\n\t * `draggable`, `swipeable`, `resizable`.\r\n\t *\r\n\t * @param value Text selectable?\r\n\t * @default false\r\n\t */\r\n\tpublic set selectable(value: boolean) {\r\n\t\tthis.setPropertyValue(\"selectable\", value, true);\r\n\t\tthis.setStyles();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Text selectable?\r\n\t */\r\n\tpublic get selectable(): boolean {\r\n\t\treturn this.getPropertyValue(\"selectable\");\r\n\t}\r\n\r\n\t/**\r\n\t * Horizontal text alignment.\r\n\t *\r\n\t * Available choices:\r\n\t * * \"start\"\r\n\t * * \"middle\"\r\n\t * * \"end\"\r\n\t *\r\n\t * @param value Alignment\r\n\t */\r\n\tpublic set textAlign(value: TextAlign) {\r\n\t\tthis.setPropertyValue(\"textAlign\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Alignment\r\n\t */\r\n\tpublic get textAlign(): TextAlign {\r\n\t\treturn this.getPropertyValue(\"textAlign\");\r\n\t}\r\n\r\n\t/**\r\n\t * Vertical text alignment.\r\n\t *\r\n\t * @ignore Exclude from docs (not used)\r\n\t * @param value Alignment\r\n\t * @deprecated\r\n\t */\r\n\tpublic set textValign(value: TextValign) {\r\n\t\tthis.setPropertyValue(\"textValign\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs (not used)\r\n\t * @return Alignment\r\n\t * @deprecated\r\n\t */\r\n\tpublic get textValign(): TextValign {\r\n\t\treturn this.getPropertyValue(\"textValign\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Raw HTML to be used as text.\r\n\t *\r\n\t * NOTE: HTML text is subject to browser support. It relies on browsers\r\n\t * supporting SVG `foreignObject` nodes. Some browsers (read IEs) do not\r\n\t * support it. On those browsers, the text will fall back to basic SVG text,\r\n\t * striping out all HTML markup and styling that goes with it.\r\n\t *\r\n\t * For more information about `foreignObject` and its browser compatibility\r\n\t * refer to [this page](https://developer.mozilla.org/en/docs/Web/SVG/Element/foreignObject#Browser_compatibility).\r\n\t *\r\n\t * @param value HTML text\r\n\t */\r\n\tpublic set html(value: string) {\r\n\t\tthis.setPropertyValue(\"html\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return HTML content\r\n\t */\r\n\tpublic get html(): string {\r\n\t\treturn this.getPropertyValue(\"html\");\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether the whole text should be hidden if it does not fit into\r\n\t * its allotted space.\r\n\t *\r\n\t * @param value Hide if text does not fit?\r\n\t */\r\n\tpublic set hideOversized(value: boolean) {\r\n\t\tthis.setPropertyValue(\"hideOversized\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Hide if text does not fit?\r\n\t */\r\n\tpublic get hideOversized(): boolean {\r\n\t\treturn this.getPropertyValue(\"hideOversized\");\r\n\t}\r\n\r\n\t/**\r\n\t * If set to `true` square-bracket formatting blocks will be treated as\r\n\t * regular text.\r\n\t *\r\n\t * @default false\r\n\t * @param value Ignore formatting?\r\n\t */\r\n\tpublic set ignoreFormatting(value: boolean) {\r\n\t\tthis.setPropertyValue(\"ignoreFormatting\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Ignore formatting?\r\n\t */\r\n\tpublic get ignoreFormatting(): boolean {\r\n\t\treturn this.getPropertyValue(\"ignoreFormatting\");\r\n\t}\r\n\r\n\t/**\r\n\t * Override `mesaureElement` so it does not get measure again, because\r\n\t * internal `_bbox` is being updated by measuring routines in Text itself.\r\n\t */\r\n\tpublic measureElement(): void { }\r\n\r\n\t/**\r\n\t * Returns information about a line element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param index Line index\r\n\t * @return Line info object\r\n\t */\r\n\tpublic getLineInfo(index: number): ITextLineInfo {\r\n\t\tthis.initLineCache();\r\n\t\tlet lines = this.getCache(\"lineInfo\");\r\n\t\treturn lines.length > index ? lines[index] : undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a line to line info cache.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param line Line info object\r\n\t * @param index Insert at specified index\r\n\t */\r\n\tpublic addLineInfo(line: ITextLineInfo, index: number): void {\r\n\t\tthis.initLineCache();\r\n\t\tthis.getCache(\"lineInfo\")[index] = line;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if line cache is initialized and initializes it.\r\n\t */\r\n\tprivate initLineCache(): void {\r\n\t\tif (!$type.hasValue(this.getCache(\"lineInfo\"))) {\r\n\t\t\tthis.setCache(\"lineInfo\", [], 0);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a [[DataItem]] to use for populating dynamic sections of the text.\r\n\t *\r\n\t * Check the description for [[Text]] class, for data binding.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic setDataItem(dataItem: DataItem): void {\r\n\t\tif (this._sourceDataItemEvents) {\r\n\t\t\tthis._sourceDataItemEvents.dispose();\r\n\t\t}\r\n\t\tif (dataItem) {\r\n\t\t\tthis._sourceDataItemEvents = new MultiDisposer([\r\n\t\t\t\tdataItem.events.on(\"valuechanged\", this.invalidate, this, false),\r\n\t\t\t\tdataItem.events.on(\"workingvaluechanged\", this.invalidate, this, false),\r\n\t\t\t\tdataItem.events.on(\"calculatedvaluechanged\", this.invalidate, this, false),\r\n\t\t\t\tdataItem.events.on(\"propertychanged\", this.invalidate, this, false)\r\n\t\t\t]);\r\n\t\t}\r\n\t\tsuper.setDataItem(dataItem);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns available horizontal space.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Available width (px)\r\n\t */\r\n\tpublic get availableWidth(): number {\r\n\t\treturn $type.hasValue(this.maxWidth) ? this.maxWidth : this.pixelWidth;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns available vertical space.\r\n\t *\r\n\t * @return Available height (px)\r\n\t */\r\n\tpublic get availableHeight(): number {\r\n\t\treturn $type.hasValue(this.maxHeight) ? this.maxHeight : this.pixelHeight;\r\n\t}\r\n\r\n\t// temp, replacing textFormatter method\r\n\tpublic getSvgElement(text: string, style?: string): AMElement {\r\n\t\tlet element = this.paper.add(\"tspan\");\r\n\t\telement.textContent = text;\r\n\t\tif (style) {\r\n\t\t\telement.node.setAttribute(\"style\", style);\r\n\t\t}\r\n\t\treturn element;\r\n\t}\r\n\r\n\t/**\r\n\t * Invalidates the whole element, including layout AND all its child\r\n\t * elements.\r\n\t */\r\n\tpublic deepInvalidate() {\r\n\t\tsuper.deepInvalidate();\r\n\t\tthis.hardInvalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * Screen reader title of the element.\r\n\t *\r\n\t * @param value Title\r\n\t */\r\n\tpublic set readerTitle(value: string) {\r\n\t\tvalue = $type.toText(value);\r\n\t\tif (this.setPropertyValue(\"readerTitle\", value)) {\r\n\t\t\tthis.applyAccessibility();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Title\r\n\t */\r\n\tpublic get readerTitle(): string {\r\n\t\tlet title = this.getPropertyValue(\"readerTitle\");\r\n\t\tif (!title) {\r\n\t\t\ttitle = this.populateString(\r\n\t\t\t\t$utils.plainText(\r\n\t\t\t\t\t$utils.isNotEmpty(this.html)\r\n\t\t\t\t\t\t? this.html\r\n\t\t\t\t\t\t: this.text\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn title;\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Label\"] = Label;\r\n\r\n/**\r\n * Add default responsive rules\r\n */\r\n\r\n/**\r\n * Hide labels added directly to chart, like titles if chart is short.\r\n */\r\ndefaultRules.push({\r\n\trelevant: ResponsiveBreakpoints.heightXS,\r\n\tstate: function(target, stateId) {\r\n\t\tif (target instanceof Label && target.parent && target.parent.isBaseSprite) {\r\n\t\t\tlet state = target.states.create(stateId);\r\n\t\t\tstate.properties.disabled = true;\r\n\t\t\treturn state;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n});\r\n","/**\r\n * Line drawing functionality.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite, ISpriteProperties, ISpriteAdapters, ISpriteEvents } from \"../Sprite\";\r\nimport { color } from \"../utils/Color\";\r\nimport { LinearGradient } from \"../rendering/fills/LinearGradient\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $math from \"../utils/Math\";\r\nimport { IOrientationPoint } from \"../defs/IPoint\";\r\n\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Line]].\r\n */\r\nexport interface ILineProperties extends ISpriteProperties {\r\n\r\n\t/**\r\n\t * X coordinate of first end.\r\n\t */\r\n\tx1?: number;\r\n\r\n\t/**\r\n\t * Y coordinate of first end.\r\n\t */\r\n\ty1?: number;\r\n\r\n\t/**\r\n\t * X coordinate of second end.\r\n\t */\r\n\tx2?: number;\r\n\r\n\t/**\r\n\t * Y coordinate of second end.\r\n\t */\r\n\ty2?: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[Line]].\r\n */\r\nexport interface ILineEvents extends ISpriteEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Line]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ILineAdapters extends ISpriteAdapters, ILineProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Draws a line.\r\n *\r\n * @see {@link ILineEvents} for a list of available events\r\n * @see {@link ILineAdapters} for a list of available Adapters\r\n */\r\nexport class Line extends Sprite {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ILineProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ILineAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ILineEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"Line\";\r\n\t\tthis.element = this.paper.add(\"line\");\r\n\t\tthis.fill = color(); //\"none\";\r\n\r\n\t\tthis.x1 = 0;\r\n\t\tthis.y1 = 0;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the line.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tsuper.draw();\r\n\t\tif (this.x1 == this.x2 || this.y1 == this.y2) {\r\n\t\t\tthis.pixelPerfect = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.pixelPerfect = false;\r\n\t\t}\r\n\r\n\t\tthis.x1 = this.x1;\r\n\t\tthis.x2 = this.x2;\r\n\r\n\t\tthis.y1 = this.y1;\r\n\t\tthis.y2 = this.y2;\r\n\t}\r\n\r\n\t/**\r\n\t * X coordinate of first end.\r\n\t *\r\n\t * @param value X\r\n\t */\r\n\tpublic set x1(value: number) {\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = 0;\r\n\t\t}\r\n\t\tlet delta = 0;\r\n\t\tif (this.pixelPerfect && this.stroke instanceof LinearGradient) {\r\n\t\t\tdelta = 0.00001;\r\n\t\t}\r\n\r\n\t\tthis.setPropertyValue(\"x1\", value, true);\r\n\t\tthis.element.attr({ \"x1\": value + delta });\r\n\t}\r\n\r\n\t/**\r\n\t * @return X\r\n\t */\r\n\tpublic get x1(): number {\r\n\t\treturn this.getPropertyValue(\"x1\");\r\n\t}\r\n\r\n\t/**\r\n\t * X coordinate of second end.\r\n\t *\r\n\t * @param value X\r\n\t */\r\n\tpublic set x2(value: number) {\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = 0;\r\n\t\t}\r\n\t\tthis.setPropertyValue(\"x2\", value, true);\r\n\t\tthis.element.attr({ \"x2\": value });\r\n\t}\r\n\r\n\t/**\r\n\t * @return X\r\n\t */\r\n\tpublic get x2(): number {\r\n\t\tlet value = this.getPropertyValue(\"x2\");\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = this.pixelWidth;\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Y coordinate of first end.\r\n\t *\r\n\t * @param value Y\r\n\t */\r\n\tpublic set y1(value: number) {\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = 0;\r\n\t\t}\r\n\r\n\t\tlet delta = 0;\r\n\t\tif (this.pixelPerfect && this.stroke instanceof LinearGradient) {\r\n\t\t\tdelta = 0.00001;\r\n\t\t}\r\n\r\n\t\tthis.setPropertyValue(\"y1\", value, true);\r\n\t\tthis.element.attr({ \"y1\": value + delta });\r\n\t}\r\n\r\n\t/**\r\n\t * @return Y\r\n\t */\r\n\tpublic get y1(): number {\r\n\t\treturn this.getPropertyValue(\"y1\");\r\n\t}\r\n\r\n\t/**\r\n\t * Y coordinate of second end.\r\n\t *\r\n\t * @param value Y\r\n\t */\r\n\tpublic set y2(value: number) {\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = 0;\r\n\t\t}\r\n\t\tthis.setPropertyValue(\"y2\", value, true);\r\n\t\tthis.element.attr({ \"y2\": value });\r\n\t}\r\n\r\n\t/**\r\n\t * @return Y\r\n\t */\r\n\tpublic get y2(): number {\r\n\t\tlet value = this.getPropertyValue(\"y2\");\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = this.pixelHeight;\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts relative position along the line (0-1) into pixel coordinates.\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t * @return Coordinates\r\n\t */\r\n\tpublic positionToPoint(position: number): IOrientationPoint {\r\n\t\tlet point1 = { x: this.x1, y: this.y1 };\r\n\t\tlet point2 = { x: this.x2, y: this.y2 };\r\n\t\tlet point = $math.getMidPoint(point1, point2, position);\r\n\t\tlet angle = $math.getAngle(point1, point2);\r\n\r\n\t\treturn {x:point.x, y:point.y, angle:angle};\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Line\"] = Line;\r\n","/**\r\n * Modal class is used to display information over chart area.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Popup, IPopupAdapters } from \"./Popup\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\n\r\n/**\r\n * Represents a list of available adapters for Export.\r\n */\r\nexport interface IModalAdapters extends IPopupAdapters {}\r\n\r\n/**\r\n * Shows an HTML modal which covers window or a chart area.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/popups-and-modals/} For examples and docs on Popups and Modals.\r\n */\r\nexport class Modal extends Popup {\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IModalAdapters;\r\n\r\n\t/**\r\n\t * Adapter.\r\n\t */\r\n\tpublic adapter: Adapter<Modal, IModalAdapters> = new Adapter<Modal, IModalAdapters>(this);\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"Modal\";\r\n\t\tthis.showCurtain = true;\r\n\t\tthis.draggable = false;\r\n\t}\r\n\r\n}\r\n","/**\r\n * Pointed rectangle module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PointedShape, IPointedShapeProperties, IPointedShapeAdapters, IPointedShapeEvents } from \"./PointedShape\";\r\nimport * as $math from \"../utils/Math\";\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[PointedRectangle]].\r\n */\r\nexport interface IPointedRectangleProperties extends IPointedShapeProperties {\r\n\r\n\t/**\r\n\t * Radius of rectangle's border in pixels.\r\n\t *\r\n\t * @default 0\r\n\t */\r\n\tcornerRadius?: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[PointedRectangle]].\r\n */\r\nexport interface IPointedRectangleEvents extends IPointedShapeEvents { }\r\n\r\n/**\r\n * Defines adapters for [[PointedRectangle]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IPointedRectangleAdapters extends IPointedShapeAdapters, IPointedRectangleProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Draws a rectangle with a pointer.\r\n *\r\n * @see {@link IPointedRectangleEvents} for a list of available events\r\n * @see {@link IPointedRectangleAdapters} for a list of available Adapters\r\n */\r\nexport class PointedRectangle extends PointedShape {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IPointedRectangleProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IPointedRectangleAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IPointedRectangleEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"PointedRectangle\";\r\n\t\tthis.element = this.paper.add(\"path\");\r\n\t\tthis.cornerRadius = 6;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tsuper.draw();\r\n\t\tlet cr = this.cornerRadius;\r\n\t\tlet w = this.innerWidth;\r\n\t\tlet h = this.innerHeight;\r\n\t\tif (w > 0 && h > 0) {\r\n\t\t\tlet x = this.pointerX;\r\n\t\t\tlet y = this.pointerY;\r\n\t\t\tlet bwh = this.pointerBaseWidth / 2;\r\n\r\n\t\t\tlet maxcr: number = $math.min(w / 2, h / 2);\r\n\t\t\tlet crtl: number = $math.fitToRange(cr, 0, maxcr);\r\n\t\t\tlet crtr: number = $math.fitToRange(cr, 0, maxcr);\r\n\t\t\tlet crbr: number = $math.fitToRange(cr, 0, maxcr);\r\n\t\t\tlet crbl: number = $math.fitToRange(cr, 0, maxcr);\r\n\r\n\t\t\t// corner coordinates\r\n\t\t\t// top left\r\n\t\t\tlet xtl = 0;\r\n\t\t\tlet ytl = 0;\r\n\t\t\t// top right\r\n\t\t\tlet xtr = w;\r\n\t\t\tlet ytr = 0;\r\n\t\t\t// bottom right\r\n\t\t\tlet xbr = w;\r\n\t\t\tlet ybr = h;\r\n\t\t\t// bottom left\r\n\t\t\tlet xbl = 0;\r\n\t\t\tlet ybl = h;\r\n\r\n\t\t\tlet lineT;\r\n\t\t\tlet lineR;\r\n\t\t\tlet lineB;\r\n\t\t\tlet lineL;\r\n\r\n\t\t\t// find stem base side: http://$math.stackexchange.com/questions/274712/calculate-on-which-side-of-straign-line-is-dot-located\r\n\t\t\t// d=(x−x1)(y2−y1)−(y−y1)(x2−x1)\r\n\t\t\tlet d1 = (x - xtl) * (ybr - ytl) - (y - ytl) * (xbr - xtl);\r\n\t\t\tlet d2 = (x - xbl) * (ytr - ybl) - (y - ybl) * (xtr - xbl);\r\n\r\n\t\t\t// top\r\n\t\t\tif (d1 > 0 && d2 > 0) {\r\n\t\t\t\tlet stemX = $math.fitToRange(x, crtl + bwh, w - bwh - crtr);\r\n\t\t\t\ty = $math.fitToRange(y, -Infinity, 0);\r\n\t\t\t\tlineT = \"M\" + crtl + \",0 L\" + (stemX - bwh) + \",0 L\" + x + \",\" + y + \" L\" + (stemX + bwh) + \",0 L\" + (w - crtr) + \",0\";\r\n\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlineT = \"M\" + crtl + \",0 L\" + (w - crtr) + \",0\";\r\n\t\t\t}\r\n\t\t\t// bottom\r\n\t\t\tif (d1 < 0 && d2 < 0) {\r\n\t\t\t\tlet stemX = $math.fitToRange(x, crbl + bwh, w - bwh - crbr);\r\n\t\t\t\ty = $math.fitToRange(y, h, Infinity);\r\n\t\t\t\tlineB = \" L\" + (w - crbr) + \",\" + h + \" L\" + (stemX + bwh) + \",\" + h + \" L\" + x + \",\" + y + \" L\" + (stemX - bwh) + \",\" + h + \" L\" + crbl + \",\" + h;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlineB = \" L\" + crbl + \",\" + h;\r\n\t\t\t}\r\n\t\t\t// left\r\n\t\t\tif (d1 < 0 && d2 > 0) {\r\n\t\t\t\tlet stemY = $math.fitToRange(y, crtl + bwh, h - crbl - bwh);\r\n\t\t\t\tx = $math.fitToRange(x, -Infinity, 0);\r\n\t\t\t\tlineL = \" L0,\" + (h - crbl) + \" L0,\" + (stemY + bwh) + \" L\" + x + \",\" + y + \" L0,\" + (stemY - bwh) + \" L0,\" + crtl;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlineL = \" L0,\" + crtl;\r\n\t\t\t}\r\n\t\t\t// right\r\n\t\t\tif (d1 > 0 && d2 < 0) {\r\n\t\t\t\tlet stemY = $math.fitToRange(y, crtr + bwh, h - bwh - crbr);\r\n\t\t\t\tx = $math.fitToRange(x, w, Infinity);\r\n\t\t\t\tlineR = \" L\" + w + \",\" + crtr + \" L\" + w + \",\" + (stemY - bwh) + \" L\" + x + \",\" + y + \" L\" + w + \",\" + (stemY + bwh) + \" L\" + w + \",\" + (h - crbr);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlineR = \" L\" + w + \",\" + (h - crbr);\r\n\t\t\t}\r\n\r\n\t\t\tlet arcTR = \" a\" + crtr + \",\" + crtr + \" 0 0 1 \" + crtr + \",\" + crtr;\r\n\t\t\tlet arcBR = \" a\" + crbr + \",\" + crbr + \" 0 0 1 -\" + crbr + \",\" + crbr;\r\n\t\t\tlet arcBL = \" a\" + crbl + \",\" + crbl + \" 0 0 1 -\" + crbl + \",-\" + crbl;\r\n\t\t\tlet arcTL = \" a\" + crtl + \",\" + crtl + \" 0 0 1 \" + crtl + \",-\" + crtl;\r\n\r\n\t\t\tthis.path = lineT + arcTR + lineR + arcBR + lineB + arcBL + lineL + arcTL;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Radius of rectangle's border in pixels.\r\n\t *\r\n\t * @default 0\r\n\t * @param value Corner radius (px)\r\n\t */\r\n\tpublic set cornerRadius(value: number) {\r\n\t\tthis.setPropertyValue(\"cornerRadius\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Corner radius (px)\r\n\t */\r\n\tpublic get cornerRadius(): number {\r\n\t\treturn this.getPropertyValue(\"cornerRadius\");\r\n\t}\r\n\r\n}\r\n","/**\r\n * Pointed shape module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite, ISpriteProperties, ISpriteAdapters, ISpriteEvents } from \"../Sprite\";\r\nimport * as $type from \"../utils/Type\";\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[PointedShape]].\r\n */\r\nexport interface IPointedShapeProperties extends ISpriteProperties {\r\n\r\n\t/**\r\n\t * A width of the pinter's (stem's) thick end (base) in pixels.\r\n\t *\r\n\t * @default 15\r\n\t */\r\n\tpointerBaseWidth?: number;\r\n\r\n\t/**\r\n\t * A length of the pinter (stem) in pixels.\r\n\t *\r\n\t * @default 10\r\n\t */\r\n\tpointerLength?: number;\r\n\r\n\t/**\r\n\t * X coordinate the shape is pointing to.\r\n\t */\r\n\tpointerX?: number;\r\n\r\n\t/**\r\n\t * Y coordinate the shape is pointing to.\r\n\t */\r\n\tpointerY?: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[PointedShape]].\r\n */\r\nexport interface IPointedShapeEvents extends ISpriteEvents { }\r\n\r\n/**\r\n * Defines adapters for [[PointedShape]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IPointedShapeAdapters extends ISpriteAdapters, IPointedShapeProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Draws a shape with a pointer.\r\n *\r\n * @see {@link IPointedShapeEvents} for a list of available events\r\n * @see {@link IPointedShapeAdapters} for a list of available Adapters\r\n */\r\nexport class PointedShape extends Sprite {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IPointedShapeProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IPointedShapeAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IPointedShapeEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"PointedShape\";\r\n\t\tthis.pointerBaseWidth = 15;\r\n\t\tthis.pointerLength = 10;\r\n\t\tthis.pointerY = 0;\r\n\t\tthis.pointerX = 0;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tsuper.draw();\r\n\t\tif (!$type.isNumber(this.pointerX)) {\r\n\t\t\tthis.pointerX = this.pixelWidth / 2;\r\n\t\t}\r\n\t\tif (!$type.isNumber(this.pointerY)) {\r\n\t\t\tthis.pointerY = this.pixelHeight + 10;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A width of the pinter's (stem's) thick end (base) in pixels.\r\n\t *\r\n\t * @default 15\r\n\t * @param value Width (px)\r\n\t */\r\n\tpublic set pointerBaseWidth(value: number) {\r\n\t\tthis.setPropertyValue(\"pointerBaseWidth\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * A length of the pinter (stem) in pixels.\r\n\t *\r\n\t * @default 10\r\n\t * @param value Length (px)\r\n\t */\r\n\tpublic set pointerLength(value: number) {\r\n\t\tthis.setPropertyValue(\"pointerLength\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Length (px)\r\n\t */\r\n\tpublic get pointerLength(): number {\r\n\t\treturn this.getPropertyValue(\"pointerLength\");\r\n\t}\r\n\r\n\t/**\r\n\t * @return Width (px)\r\n\t */\r\n\tpublic get pointerBaseWidth(): number {\r\n\t\treturn this.getPropertyValue(\"pointerBaseWidth\");\r\n\t}\r\n\r\n\t/**\r\n\t * X coordinate the shape is pointing to.\r\n\t *\r\n\t * @param value X\r\n\t */\r\n\tpublic set pointerX(value: number) {\r\n\t\tthis.setPropertyValue(\"pointerX\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return X\r\n\t */\r\n\tpublic get pointerX(): number {\r\n\t\treturn this.getPropertyValue(\"pointerX\");\r\n\t}\r\n\r\n\t/**\r\n\t * Y coordinate the shape is pointing to.\r\n\t *\r\n\t * @param value Y\r\n\t */\r\n\tpublic set pointerY(value: number) {\r\n\t\tthis.setPropertyValue(\"pointerY\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Y\r\n\t */\r\n\tpublic get pointerY(): number {\r\n\t\treturn this.getPropertyValue(\"pointerY\");\r\n\t}\r\n\r\n}\r\n","/**\r\n * Polyline module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite, ISpriteProperties, ISpriteAdapters, ISpriteEvents } from \"../Sprite\";\r\nimport { IPoint, IOrientationPoint } from \"../defs/IPoint\";\r\nimport { color } from \"../utils/Color\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $type from \"../utils/Type\";\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Polyline]].\r\n */\r\nexport interface IPolylineProperties extends ISpriteProperties {\r\n\r\n\t/**\r\n\t * A list of segment coordinates for the multi-part line.\r\n\t */\r\n\tsegments?: Array<Array<IPoint>>;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[Polyline]].\r\n */\r\nexport interface IPolylineEvents extends ISpriteEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Polyline]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IPolylineAdapters extends ISpriteAdapters, IPolylineProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Draws a polyline.\r\n *\r\n * @see {@link IPolylineEvents} for a list of available events\r\n * @see {@link IPolylineAdapters} for a list of available Adapters\r\n */\r\nexport class Polyline extends Sprite {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IPolylineProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IPolylineAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IPolylineEvents;\r\n\r\n\t/**\r\n\t * [_distance description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _distance: number = 0;\r\n\r\n\t/**\r\n\t * [_realSegments]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _realSegments: $type.Optional<Array<Array<IPoint>>>;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"Polyline\";\r\n\t\tthis.element = this.paper.add(\"path\");\r\n\t\tthis.shapeRendering = \"auto\";\r\n\t\tthis.fill = color();\r\n\t\tthis.strokeOpacity = 1;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Creats and adds an SVG path for the arc.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic makePath(): void {\r\n\t\tthis._distance = 0;\r\n\t\tlet segments = this.segments;\r\n\r\n\t\tif (segments && segments.length > 0) {\r\n\t\t\tlet path: string = \"\";\r\n\r\n\t\t\tfor (let i = 0, len = segments.length; i < len; i++) {\r\n\t\t\t\tlet points: IPoint[] = segments[i];\r\n\t\t\t\tif (points.length > 0) {\r\n\t\t\t\t\tpath += $path.moveTo(points[0]);\r\n\r\n\t\t\t\t\tfor (let p = 1; p < points.length; p++) {\r\n\t\t\t\t\t\tlet point: IPoint = points[p];\r\n\t\t\t\t\t\tpath += $path.lineTo(point);\r\n\t\t\t\t\t\tthis._distance += $math.getDistance(points[p - 1], point);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.path = path;\r\n\t\t}\r\n\r\n\t\tthis._realSegments = segments;\r\n\t}\r\n\r\n\t/**\r\n\t * A list of segment coordinates for the multi-part line.\r\n\t *\r\n\t * @todo Example\r\n\t * @param segments Segments\r\n\t */\r\n\tpublic set segments(segments: $type.Optional<Array<Array<IPoint>>>) {\r\n\t\tthis.setPropertyValue(\"segments\", segments);\r\n\t\tthis.makePath();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Segments\r\n\t */\r\n\tpublic get segments(): $type.Optional<Array<Array<IPoint>>> {\r\n\t\treturn this.getPropertyValue(\"segments\");\r\n\t}\r\n\r\n\t/**\r\n\t * [distance description]\r\n\t *\r\n\t * @todo Description\r\n\t * @return [description]\r\n\t */\r\n\tpublic get distance(): number {\r\n\t\treturn this._distance;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts relative position along the line (0-1) into pixel coordinates.\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t * @return Coordinates\r\n\t */\r\n\tpublic positionToPoint(position: number): IOrientationPoint {\r\n\r\n\t\tlet deltaAngle: number = 0;\r\n\r\n\t\tif (position < 0) {\r\n\t\t\tposition = Math.abs(position);\r\n\t\t\tdeltaAngle = 180;\r\n\t\t}\r\n\r\n\t\tlet segments: $type.Optional<Array<Array<IPoint>>> = this._realSegments;\r\n\t\tif (segments) {\r\n\t\t\tlet totalDistance: number = this.distance;\r\n\t\t\tlet currentDistance: number = 0;\r\n\r\n\t\t\tlet distanceAB: number;\r\n\t\t\tlet positionA: number = 0;\r\n\t\t\tlet positionB: number = 0;\r\n\t\t\tlet pointA: IPoint;\r\n\t\t\tlet pointB: IPoint;\r\n\r\n\t\t\tfor (let s = 0; s < segments.length; s++) {\r\n\t\t\t\tlet points: IPoint[] = segments[s];\r\n\t\t\t\tif (points.length > 1) {\r\n\t\t\t\t\tfor (let p = 1; p < points.length; p++) {\r\n\t\t\t\t\t\tpointA = points[p - 1];\r\n\t\t\t\t\t\tpointB = points[p];\r\n\r\n\t\t\t\t\t\tpositionA = currentDistance / totalDistance;\r\n\t\t\t\t\t\tdistanceAB = $math.getDistance(pointA, pointB);\r\n\t\t\t\t\t\tcurrentDistance += distanceAB;\r\n\t\t\t\t\t\tpositionB = currentDistance / totalDistance;\r\n\r\n\t\t\t\t\t\tif (positionA <= position && positionB > position) {\r\n\t\t\t\t\t\t\ts = segments.length;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse if (points.length == 1) {\r\n\t\t\t\t\tpointA = points[0];\r\n\t\t\t\t\tpointB = points[0];\r\n\t\t\t\t\tpositionA = 0;\r\n\t\t\t\t\tpositionB = 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (pointA && pointB) {\r\n\t\t\t\tlet positionAB: number = (position - positionA) / (positionB - positionA);\r\n\t\t\t\tlet midPoint: IPoint = $math.getMidPoint(pointA, pointB, positionAB);\r\n\t\t\t\treturn { x: midPoint.x, y: midPoint.y, angle: deltaAngle + $math.getAngle(pointA, pointB) };\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn { x: 0, y: 0, angle: 0 };\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic get realSegments():IPoint[][]{\r\n\t\treturn this._realSegments;\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Polyline\"] = Polyline;\r\n","/**\r\n * Polyspline (smoothed line) module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Polyline, IPolylineProperties, IPolylineAdapters, IPolylineEvents } from \"./Polyline\";\r\nimport { IPoint, IOrientationPoint } from \"../../core/defs/IPoint\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Polyspline]].\r\n */\r\nexport interface IPolysplineProperties extends IPolylineProperties {\r\n\r\n\t/**\r\n\t * Horizontal tension for the spline.\r\n\t *\r\n\t * Used by the line smoothing algorithm.\r\n\t *\r\n\t * @default 0.5\r\n\t */\r\n\ttensionX: number;\r\n\r\n\t/**\r\n\t * Vertical tension for the spline.\r\n\t *\r\n\t * Used by the line smoothing algorithm.\r\n\t *\r\n\t * @default 0.5\r\n\t */\r\n\ttensionY: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[Polyspline]].\r\n */\r\nexport interface IPolysplineEvents extends IPolylineEvents { }\r\n\r\n/**\r\n * Defines adapters\r\n * Includes both the [[Adapter]] definitions and properties\r\n * @see {@link Adapter}\r\n */\r\nexport interface IPolysplineAdapters extends IPolylineAdapters, IPolysplineProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Draws a polysline. (smoothed multi-sigment line)\r\n *\r\n * @see {@link IPolysplineEvents} for a list of available events\r\n * @see {@link IPolysplineAdapters} for a list of available Adapters\r\n */\r\nexport class Polyspline extends Polyline {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tpublic _properties!: IPolysplineProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tpublic _adapter!: IPolysplineAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IPolysplineEvents;\r\n\r\n\t/**\r\n\t * Array of points of a spline with 1 px increment. used to get point by position\r\n\t */\r\n\tpublic allPoints: IOrientationPoint[];\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"Polyspline\";\r\n\r\n\t\tthis.tensionX = 0.5;\r\n\t\tthis.tensionY = 0.5;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Creats and adds an SVG path for the arc.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic makePath(): void {\r\n\t\tthis._distance = 0;\r\n\t\tlet segments = this.segments;\r\n\r\n\t\tlet tensionX: number = this.tensionX;\r\n\t\tlet tensionY: number = this.tensionY;\r\n\r\n\t\tthis.allPoints = [];\r\n\r\n\t\tif (segments && segments.length > 0) {\r\n\t\t\tlet path: string = \"\";\r\n\t\t\tthis._realSegments = [];\r\n\r\n\t\t\tfor (let i = 0, len = segments.length; i < len; i++) {\r\n\t\t\t\tlet points: IPoint[] = segments[i];\r\n\t\t\t\tlet realPoints: IPoint[] = [];\r\n\t\t\t\tthis._realSegments.push(realPoints);\r\n\r\n\t\t\t\tif (points.length > 0) {\r\n\r\n\t\t\t\t\tlet first: IPoint = points[0];\r\n\t\t\t\t\tlet last: IPoint = points[points.length - 1];\r\n\r\n\t\t\t\t\tlet closed: boolean = false;\r\n\r\n\t\t\t\t\tif ($math.round(first.x, 3) == $math.round(last.x) && $math.round(first.y) == $math.round(last.y)) {\r\n\t\t\t\t\t\tclosed = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tpath += $path.moveTo(points[0]);\r\n\r\n\t\t\t\t\tfor (let p = 0; p < points.length - 1; p++) {\r\n\r\n\t\t\t\t\t\tlet p0: IPoint = points[p - 1];\r\n\r\n\t\t\t\t\t\tlet p1: IPoint = points[p];\r\n\r\n\t\t\t\t\t\tlet p2: IPoint = points[p + 1];\r\n\r\n\t\t\t\t\t\tlet p3: IPoint = points[p + 2];\r\n\r\n\t\t\t\t\t\tif (p === 0) {\r\n\t\t\t\t\t\t\tp0 = points[p];\r\n\t\t\t\t\t\t} else if (p == points.length - 2) {\r\n\t\t\t\t\t\t\tp3 = points[p + 1];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!p3) {\r\n\t\t\t\t\t\t\tp3 = p2;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (p === 0) {\r\n\t\t\t\t\t\t\tif (closed) {\r\n\t\t\t\t\t\t\t\tp0 = points[points.length - 2];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tp0 = points[i];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else if (p == points.length - 2) {\r\n\t\t\t\t\t\t\tif (closed) {\r\n\t\t\t\t\t\t\t\tp3 = points[1];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tp3 = points[p + 1];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlet controlPointA: IPoint = $math.getCubicControlPointA(p0, p1, p2, p3, tensionX, tensionY);\r\n\t\t\t\t\t\tlet controlPointB: IPoint = $math.getCubicControlPointB(p0, p1, p2, p3, tensionX, tensionY);\r\n\r\n\t\t\t\t\t\tpath += $path.cubicCurveTo(p2, controlPointA, controlPointB);\r\n\r\n\t\t\t\t\t\t// now split to small segments so that we could have positionToPoint later\r\n\t\t\t\t\t\tlet stepCount: number = Math.ceil($math.getCubicCurveDistance(p1, p2, controlPointA, controlPointB, 20)) * 1.2;\r\n\t\t\t\t\t\tlet prevPoint: IPoint = p1;\r\n\r\n\r\n\t\t\t\t\t\tif (stepCount > 0) {\r\n\r\n\t\t\t\t\t\t\t// not good for curved charts\r\n\t\t\t\t\t\t\t//this.allPoints[0] = { x: points[0].x, y: points[0].y, angle: $math.getAngle(points[0], points[1]) };\r\n\t\t\t\t\t\t\t//realPoints.push(this.allPoints[0]);\r\n\r\n\r\n\t\t\t\t\t\t\tfor (let s = 0; s <= stepCount; s++) {\r\n\r\n\t\t\t\t\t\t\t\tlet point = $math.getPointOnCubicCurve(p1, p2, controlPointA, controlPointB, s / stepCount);\r\n\r\n\t\t\t\t\t\t\t\tif (point.x == prevPoint.x && point.y == prevPoint.y) {\r\n\t\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\trealPoints.push(point);\r\n\r\n\t\t\t\t\t\t\t\tlet angle = $math.round($math.getAngle(prevPoint, point), 5);\r\n\r\n\t\t\t\t\t\t\t\t//this.allPoints.push({ x: point.x, y: point.y, angle: angle });\r\n\t\t\t\t\t\t\t\tthis._distance += $math.getDistance(prevPoint, point);\r\n\r\n\t\t\t\t\t\t\t\tthis.allPoints[Math.floor(this._distance)] = { x: point.x, y: point.y, angle: angle };\r\n\t\t\t\t\t\t\t\tprevPoint = point;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\trealPoints.push(p0);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet allPoints = this.allPoints;\r\n\t\t\t\tif (allPoints.length > 1) {\r\n\t\t\t\t\tfor (let i = 0; i < allPoints.length; i++) {\r\n\t\t\t\t\t\tif (!allPoints[i]) {\r\n\t\t\t\t\t\t\tif (i > 1) {\r\n\t\t\t\t\t\t\t\tallPoints[i] = allPoints[i - 1];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tfor (let k = 1; k < allPoints.length; k++) {\r\n\t\t\t\t\t\t\t\t\tif (allPoints[k]) {\r\n\t\t\t\t\t\t\t\t\t\tallPoints[i] = allPoints[k];\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.path = path;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an index of the point that is closest to specified coordinates.\r\n\t * \r\n\t * @param point Reference point\r\n\t * @return Index\r\n\t */\r\n\tpublic getClosestPointIndex(point: IPoint): number {\r\n\t\tlet points = this.allPoints;\r\n\r\n\t\tlet index: number;\r\n\r\n\t\tlet closest: number = Infinity;\r\n\t\tif (points.length > 1) {\r\n\t\t\tfor (let p = 1; p < points.length; p++) {\r\n\t\t\t\tlet distance = $math.getDistance(point, points[p]);\r\n\t\t\t\tif (distance < closest) {\r\n\t\t\t\t\tindex = p;\r\n\t\t\t\t\tclosest = distance;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\t/**\r\n\t * Horizontal tension for the spline.\r\n\t *\r\n\t * Used by the line smoothing algorithm.\r\n\t *\r\n\t * @default 0.5\r\n\t * @param value Tension\r\n\t */\r\n\tpublic set tensionX(value: number) {\r\n\t\tthis.setPropertyValue(\"tensionX\", value);\r\n\t\tthis.makePath();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Tension\r\n\t */\r\n\tpublic get tensionX(): number {\r\n\t\treturn this.getPropertyValue(\"tensionX\");\r\n\t}\r\n\r\n\t/**\r\n\t * Vertical tension for the spline.\r\n\t *\r\n\t * Used by the line smoothing algorithm.\r\n\t *\r\n\t * @default 0.5\r\n\t * @param value Tensions\r\n\t */\r\n\tpublic set tensionY(value: number) {\r\n\t\tthis.setPropertyValue(\"tensionY\", value, true);\r\n\t\tthis.makePath();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Tension\r\n\t */\r\n\tpublic get tensionY(): number {\r\n\t\treturn this.getPropertyValue(\"tensionY\");\r\n\t}\r\n\r\n\t/**\r\n\t * Converts relative position along the line (0-1) into pixel coordinates.\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t * @return Coordinates\r\n\t */\r\n\r\n\tpublic positionToPoint(position: number, extend?: boolean): IOrientationPoint {\r\n\r\n\t\tlet deltaAngle: number = 0;\r\n\r\n\t\tlet allPoints = this.allPoints;\r\n\t\tlet len = allPoints.length;\r\n\r\n\t\tif (!$type.isNumber(position)) {\r\n\t\t\tposition = 0;\r\n\t\t}\r\n\r\n\t\tif (len > 1) {\r\n\r\n\t\t\tif (extend && len > 3) {\r\n\t\t\t\tif (position < 0) {\r\n\r\n\t\t\t\t\tif (position < -0.01) {\r\n\t\t\t\t\t\tposition = -0.01;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet f0 = allPoints[0];\r\n\t\t\t\t\tlet f1 = allPoints[1];\r\n\r\n\t\t\t\t\tlet x = f0.x - (f0.x - f1.x) * len * position;\r\n\t\t\t\t\tlet y = f0.y - (f0.y - f1.y) * len * position;\r\n\r\n\t\t\t\t\treturn { x: x, y: y, angle: $math.getAngle(f0, f1) };\r\n\t\t\t\t}\r\n\t\t\t\telse if (position > 1) {\r\n\r\n\t\t\t\t\tif (position > 1.01) {\r\n\t\t\t\t\t\tposition = 1.01;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet f0 = allPoints[allPoints.length - 2];\r\n\t\t\t\t\tlet f1 = allPoints[allPoints.length - 3];\r\n\r\n\t\t\t\t\tlet x = f0.x + (f0.x - f1.x) * len * (position - 1);\r\n\t\t\t\t\tlet y = f0.y + (f0.y - f1.y) * len * (position - 1);\r\n\r\n\t\t\t\t\treturn { x: x, y: y, angle: $math.getAngle(f0, { x: x, y: y }) };\r\n\t\t\t\t}\r\n\t\t\t\telse if (position == 1) {\r\n\t\t\t\t\tlet point = allPoints[allPoints.length - 1]\r\n\t\t\t\t\treturn { x: point.x, y: point.y, angle: point.angle };\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (position < 0) {\r\n\t\t\t\t\tposition = Math.abs(position);\r\n\t\t\t\t\tdeltaAngle = 180;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (position >= 1) {\r\n\t\t\t\t\tposition = 0.9999999999999;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\tlet point = allPoints[Math.floor(position * len)];\r\n\t\t\treturn { x: point.x, y: point.y, angle: point.angle + deltaAngle };\r\n\t\t}\r\n\t\telse if (len == 1) {\r\n\t\t\tlet point = allPoints[0];\r\n\t\t\treturn { x: point.x, y: point.y, angle: point.angle };\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn { x: 0, y: 0, angle: 0 };\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Polyspline\"] = Polyspline;\r\n","import { StyleRule } from \"../utils/DOM\";\r\nimport { Dictionary } from \"../utils/Dictionary\";\r\nimport { MultiDisposer, IDisposer, CounterDisposer } from \"../utils/Disposer\";\r\nimport { InterfaceColorSet } from \"../utils/InterfaceColorSet\";\r\n\r\n\r\nconst rules = new Dictionary<string, CounterDisposer>();\r\n\r\n/**\r\n * Default CSS for Popup.\r\n *\r\n * @ignore Exclude from docs\r\n * @param prefix Prefix for CSS classes\r\n * @return Disposer for the CSS definition\r\n */\r\nexport default function(prefix?: string): IDisposer {\r\n\tif (!prefix) {\r\n\t\tprefix = \"ampopup\";\r\n\t}\r\n\r\n\tconst cs = new InterfaceColorSet();\r\n\tconst fg = cs.getFor(\"text\");\r\n\tconst bg = cs.getFor(\"background\");\r\n\tbg.alpha = 0.8;\r\n\tconst abg = cs.getFor(\"alternativeBackground\");\r\n\tabg.alpha = 0.05;\r\n\r\n\tconst counter = rules.insertKeyIfEmpty(prefix, () => {\r\n\t\tconst disposer = new MultiDisposer([\r\n\t\t\tnew StyleRule(`.${prefix}`, {\r\n\t\t\t\t//\"width\": \"100%\",\r\n\t\t\t\t//\"height\": \"100%\",\r\n\t\t\t\t\"overflow\": \"visible\",\r\n\t\t\t\t\"position\": \"absolute\",\r\n\t\t\t\t\"top\": \"0\",\r\n\t\t\t\t\"left\": \"0\",\r\n\t\t\t\t\"z-index\": \"2000\"\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${prefix}-curtain`, {\r\n\t\t\t\t\"width\": \"100%\",\r\n\t\t\t\t\"height\": \"100%\",\r\n\t\t\t\t\"position\": \"absolute\",\r\n\t\t\t\t\"top\": \"0\",\r\n\t\t\t\t\"left\": \"0\",\r\n\t\t\t\t\"z-index\": \"2001\",\r\n\t\t\t\t\"background-color\": bg.hex,\r\n\t\t\t\t\"opacity\": \"0.5\"\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${prefix}-header`, {\r\n\t\t\t\t\"display\": \"block\",\r\n\t\t\t\t\"width\": \"100%\",\r\n\t\t\t\t\"min-height\": \"1.8em\",\r\n\t\t\t\t\"background\": abg.rgba\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${prefix}-title`, {\r\n\t\t\t\t\"font-weight\": \"bold\",\r\n\t\t\t\t\"font-size\": \"110%\",\r\n\t\t\t\t\"padding\": \"0.5em 1.2em 0.5em 1em\"\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${prefix}-content`, {\r\n\t\t\t\t/*\"width\": \"100%\",\r\n\t\t\t\t\"height\": \"100%\",*/\r\n\t\t\t\t// \"padding\": \"2em 1em 1em 1em\",\r\n\t\t\t\t\"background\": bg.hex,\r\n\t\t\t\t\"background-color\": bg.rgba,\r\n\t\t\t\t\"color\": fg.hex,\r\n\t\t\t\t\"display\": \"inline-block\",\r\n\t\t\t\t\"position\": \"absolute\",\r\n\t\t\t\t\"top\": \"0\",\r\n\t\t\t\t\"left\": \"0\",\r\n\t\t\t\t\"max-width\": \"90%\",\r\n\t\t\t\t\"max-height\": \"90%\",\r\n\t\t\t\t\"overflow\": \"auto\",\r\n\t\t\t\t\"z-index\": \"2002\"\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${prefix}-inside`, {\r\n\t\t\t\t\"padding\": \"1em\"\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${prefix}-close`, {\r\n\t\t\t\t\"display\": \"block\",\r\n\t\t\t\t\"position\": \"absolute\",\r\n\t\t\t\t\"top\": \"0.3em\",\r\n\t\t\t\t\"right\": \"0.3em\",\r\n\t\t\t\t\"background-color\": \"rgb(100, 100, 100)\",\r\n\t\t\t\t\"background\": \"rgba(100, 100, 100, 0.1) url(data:image/svg+xml;charset=utf-8;base64,PHN2ZyBoZWlnaHQ9IjUxMiIgdmVyc2lvbj0iMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQ0NS4yIDEwOS4ybC00Mi40LTQyLjRMMjU2IDIxMy42IDEwOS4yIDY2LjhsLTQyLjQgNDIuNEwyMTMuNiAyNTYgNjYuOCA0MDIuOGw0Mi40IDQyLjRMMjU2IDI5OC40bDE0Ni44IDE0Ni44IDQyLjQtNDIuNEwyOTguNCAyNTYiLz48L3N2Zz4=) no-repeat center\",\r\n\t\t\t\t\"background-size\": \"80%\",\r\n\t\t\t\t\"width\": \"1.2em\",\r\n\t\t\t\t\"height\": \"1.2em\",\r\n\t\t\t\t\"cursor\": \"pointer\"\r\n\t\t\t}),\r\n\r\n\t\t]);\r\n\r\n\t\treturn new CounterDisposer(() => {\r\n\t\t\trules.removeKey(prefix);\r\n\t\t\tdisposer.dispose();\r\n\t\t});\r\n\t});\r\n\r\n\treturn counter.increment();\r\n}\r\n","/**\r\n * Popup class is used to display information over chart area.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport popupCSS from \"./PopupCSS\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { getInteraction } from \"../interaction/Interaction\";\r\nimport { InteractionObject } from \"../interaction/InteractionObject\";\r\nimport { keyboard } from \"../utils/Keyboard\";\r\nimport { Percent } from \"../utils/Percent\";\r\nimport { MultiDisposer } from \"../utils/Disposer\";\r\nimport { Align } from \"../defs/Align\";\r\nimport { VerticalAlign } from \"../defs/VerticalAlign\";\r\nimport { IPoint } from \"../defs/IPoint\";\r\nimport { Optional } from \"../utils/Type\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $object from \"../utils/Object\";\r\n\r\n/**\r\n * Represents a list of available adapters for Export.\r\n */\r\nexport interface IPopupAdapters {\r\n\r\n\t/**\r\n\t * Applied to the class prefixes.\r\n\t */\r\n\tclassPrefix: string,\r\n\r\n\t/**\r\n\t * Applied to popup content before it is shown.\r\n\t */\r\n\tcontent: string,\r\n\r\n\t/**\r\n\t * Applied to popup title before it is shown.\r\n\t */\r\n\ttitle: string,\r\n\r\n\t/**\r\n\t * Applied to the screen reader title.\r\n\t */\r\n\treaderTitle: string,\r\n\r\n\t/**\r\n\t * Applied to default `defaultStyles` property before it is retrieved.\r\n\t */\r\n\tdefaultStyles: boolean,\r\n\r\n\t/**\r\n\t * Applied to default `showCurtain` property before it is retrieved.\r\n\t */\r\n\tshowCurtain: boolean,\r\n\r\n\t/**\r\n\t * Applied to default `draggable` property before it is retrieved.\r\n\t */\r\n\tdraggable: boolean,\r\n\r\n\t/**\r\n\t * Applied to `closable` property before it is retrieved.\r\n\t */\r\n\tclosable: boolean,\r\n\r\n\t/**\r\n\t * Applied to `fitTo` property before it's retrieved.\r\n\t *\r\n\t * @ignore Feature not yet implemented\r\n\t */\r\n\tfitTo: \"none\" | \"container\" | \"window\",\r\n\r\n\t/**\r\n\t * Applied to horizontal alignment of the popup.\r\n\t */\r\n\talign: Optional<Align>;\r\n\r\n\t/**\r\n\t * Applied to vertical alignment of the popup.\r\n\t */\r\n\tverticalAlign: Optional<VerticalAlign>;\r\n\r\n\t/**\r\n\t * Applied to `left` position value.\r\n\t */\r\n\tleft: number | Percent;\r\n\r\n\t/**\r\n\t * Applied to `right` position value.\r\n\t */\r\n\tright: number | Percent;\r\n\r\n\t/**\r\n\t * Applied to `top` position value.\r\n\t */\r\n\ttop: number | Percent;\r\n\r\n\t/**\r\n\t * Applied to `bottom` position value.\r\n\t */\r\n\tbottom: number | Percent;\r\n\r\n\t/**\r\n\t * Applied to class names list that are added as class for various popup\r\n\t * elements.\r\n\t */\r\n\tclassNames: {\r\n\t\twrapperClass: string,\r\n\t\ttitleClass: string,\r\n\t\theaderClass: string,\r\n\t\tcontentClass: string,\r\n\t\tinsideClass: string,\r\n\t\tcurtainClass: string,\r\n\t\tcloseClass: string\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Defines events for Popup.\r\n */\r\nexport interface IPopupEvents {\r\n\r\n\t/**\r\n\t * Invoked when Popup is opened.\r\n\t */\r\n\topened: {};\r\n\r\n\t/**\r\n\t * Invoked when Popup is closed.\r\n\t */\r\n\tclosed: {};\r\n\r\n}\r\n\r\n/**\r\n * Shows an HTML popup which covers window or a chart area.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/popups-and-modals/} For examples and docs on Popups and Modals.\r\n * @todo Positioning over whole window\r\n */\r\nexport class Popup extends BaseObjectEvents {\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IPopupEvents;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IPopupAdapters;\r\n\r\n\t/**\r\n\t * Adapter.\r\n\t */\r\n\tpublic adapter: Adapter<Popup, IPopupAdapters> = new Adapter<Popup, IPopupAdapters>(this);\r\n\r\n\t/**\r\n\t * A reference to an HTML element to be used for container. If not set, popup\r\n\t * will cover the whole window.\r\n\t */\r\n\tpublic container: $type.Optional<HTMLElement | Document>;\r\n\r\n\t/**\r\n\t * A parent element this Popup belongs to.\r\n\t */\r\n\tpublic sprite: $type.Optional<Sprite>;\r\n\r\n\t/**\r\n\t * Holds references to various HTML elements, Popup consists of.\r\n\t */\r\n\tprotected _elements: {\r\n\t\twrapper?: HTMLElement;\r\n\t\ttitle?: HTMLElement;\r\n\t\theader?: HTMLElement;\r\n\t\tcontent?: HTMLElement;\r\n\t\tclose?: HTMLElement;\r\n\t\tcurtain?: HTMLElement;\r\n\t} = {};\r\n\r\n\t/**\r\n\t * Holdes Interaction objects for various Popup's elements.\r\n\t */\r\n\tprotected _IOs: {\r\n\t\twrapper?: InteractionObject;\r\n\t\tcontent?: InteractionObject;\r\n\t\theader?: InteractionObject;\r\n\t\tclose?: InteractionObject;\r\n\t\tcurtain?: InteractionObject;\r\n\t} = {};\r\n\r\n\t/**\r\n\t * Contents of popup window.\r\n\t */\r\n\tprotected _content: string = \"\";\r\n\r\n\t/**\r\n\t * Title of the popup window.\r\n\t */\r\n\tprotected _title: string = \"\";\r\n\r\n\t/**\r\n\t * Prefix to apply to class names for popup elements.\r\n\t */\r\n\tprotected _classPrefix: string = \"ampopup\"\r\n\r\n\t/**\r\n\t * If set to `true` [[Popup]] will use default styles.\r\n\t */\r\n\tprotected _defaultStyles: boolean = true;\r\n\r\n\t/**\r\n\t * If set to `true` [[Popup]] will dim out all chart content behind it by\r\n\t * showing a semi-transparent fill. (curtain)\r\n\t */\r\n\tprotected _showCurtain: boolean = false;\r\n\r\n\t/**\r\n\t * Indicates whether popup can be dragged.\r\n\t */\r\n\tprotected _draggable: boolean = true;\r\n\r\n\t/**\r\n\t * Horizontal position of the content window.\r\n\t */\r\n\tprotected _align: Optional<Align> = \"center\";\r\n\r\n\t/**\r\n\t * Vertical position of the content window.\r\n\t */\r\n\tprotected _verticalAlign: Optional<VerticalAlign> = \"middle\";\r\n\r\n\t/**\r\n\t * Shift in position of the element. (used for dragging)\r\n\t */\r\n\tprotected _shift: IPoint = {\r\n\t\tx: 0,\r\n\t\ty: 0\r\n\t};\r\n\r\n\t/**\r\n\t * Temporary shift in position of the element. (used for dragging)\r\n\t */\r\n\tprotected _tempShift: IPoint = {\r\n\t\tx: 0,\r\n\t\ty: 0\r\n\t};\r\n\r\n\t/**\r\n\t * \"left\" position of the popup content.\r\n\t */\r\n\tprotected _left: number | Percent;\r\n\r\n\t/**\r\n\t * \"right\" position of the popup content.\r\n\t */\r\n\tprotected _right: number | Percent;\r\n\r\n\t/**\r\n\t * \"top\" position of the popup content.\r\n\t */\r\n\tprotected _top: number | Percent;\r\n\r\n\t/**\r\n\t * \"bottom\" position of the popup content.\r\n\t */\r\n\tprotected _bottom: number | Percent;\r\n\r\n\t/**\r\n\t * A title for screen readers. It is very highly recommended to set that title\r\n\t * so that people using screen reader tools can get an immediate summary of\r\n\t * the information in the popup.\r\n\t */\r\n\tpublic _readerTitle: string = \"\";\r\n\r\n\t/**\r\n\t * Is popup closable?\r\n\t */\r\n\tprivate _closable: boolean = true;\r\n\r\n\t/**\r\n\t * Was CSS already loaded?\r\n\t */\r\n\tprivate _cssLoaded: boolean = false;\r\n\r\n\t/**\r\n\t * If set to other than \"none\" will try to re-adjust the position of the\r\n\t * popop to fit within chart container or browser window.\r\n\t *\r\n\t * @ignore Feature not yet implemented\r\n\t * @todo Implement\r\n\t */\r\n\tprivate _fitTo: \"none\" | \"container\" | \"window\" = \"window\";\r\n\r\n\t/**\r\n\t * Used to log original value of `interactionsEnabled` so that it can be restored\r\n\t * after temporarily disabling it.\r\n\t */\r\n\tprivate _spriteInteractionsEnabled: $type.Optional<boolean>;\r\n\r\n\t/**\r\n\t * Identifies if this object is a \"template\" and should not be treated as\r\n\t * real object that is drawn or actually used in the chart.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic isTemplate: boolean = false;\r\n\r\n\t/**\r\n\t * Indicates if the element was already sized and should not be measured for\r\n\t * sized again, saving some precious resources.\r\n\t */\r\n\tprivate _sized: boolean = false;\r\n\r\n\t/**\r\n\t * Cached bounding rectangle info.\r\n\t */\r\n\tprivate _bbox: $type.Optional<DOMRect | ClientRect>;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"Popup\";\r\n\t}\r\n\r\n\t/**\r\n\t * Shows popup window.\r\n\t */\r\n\tpublic open(): void {\r\n\t\tif (this.container) {\r\n\t\t\tif (this._elements.wrapper) {\r\n\t\t\t\tthis.container.appendChild(this._elements.wrapper);\r\n\t\t\t}\r\n\t\t\tif (this._elements.curtain) {\r\n\t\t\t\tthis.container.appendChild(this._elements.curtain);\r\n\t\t\t\tthis.showCurtain = this.showCurtain;\r\n\t\t\t}\r\n\t\t\tthis.positionElement();\r\n\t\t\tthis.dispatchImmediately(\"opened\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Hides popup window.\r\n\t */\r\n\tpublic close(): void {\r\n\t\tif (this._elements.wrapper) {\r\n\t\t\tif (this._elements.wrapper.parentElement) {\r\n\t\t\t\tthis._elements.wrapper.parentElement.removeChild(this._elements.wrapper);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this._elements.curtain) {\r\n\t\t\tif (this._elements.curtain.parentElement) {\r\n\t\t\t\tthis._elements.curtain.parentElement.removeChild(this._elements.curtain);\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.dispatchImmediately(\"closed\");\r\n\t\tthis.releasePointers();\r\n\t}\r\n\r\n\t/**\r\n\t * Destroy (dispose) popup.\r\n\t */\r\n\tpublic dispose(): void {\r\n\t\tthis.close();\r\n\t\tsuper.dispose();\r\n\t}\r\n\r\n\t/**\r\n\t * Positions content element in the center of popup based on its actual size.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic positionElement(forceResize: boolean = true): void {\r\n\r\n\t\tif (!this._elements.wrapper) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tif (!this._elements.wrapper) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (forceResize || !this._sized) {\r\n\t\t\t\tthis._elements.wrapper.style.opacity = \"0.01\";\r\n\t\t\t\tthis._elements.wrapper.style.left = \"0\";\r\n\t\t\t\tthis._elements.wrapper.style.top = \"0\";\r\n\t\t\t\tthis._elements.wrapper.style.margin = \"0 0 0 0\";\r\n\r\n\t\t\t\t// Size the element, but only for the first time\r\n\t\t\t\tif (!this._elements.wrapper.style.width) {\r\n\t\t\t\t\tlet bbox = this._elements.wrapper.getBoundingClientRect();\r\n\t\t\t\t\tthis._elements.wrapper.style.width = bbox.width + \"px\";\r\n\t\t\t\t\tthis._elements.wrapper.style.height = bbox.height + \"px\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._sized = true;\r\n\t\t\t}\r\n\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tif (!this._elements.wrapper) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet bbox: DOMRect | ClientRect;\r\n\t\t\t\tif ((forceResize || !this._sized) && this._bbox) {\r\n\t\t\t\t\tbbox = this._bbox;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tbbox = this._elements.wrapper.getBoundingClientRect();\r\n\t\t\t\t\tthis._elements.wrapper.style.opacity = \"\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Set horizontal positioning\r\n\t\t\t\tswitch (this.align) {\r\n\t\t\t\t\tcase \"left\":\r\n\t\t\t\t\t\tthis._elements.wrapper.style.left = \"0\";\r\n\t\t\t\t\t\tthis._elements.wrapper.style.right = \"auto\";\r\n\t\t\t\t\t\tthis._elements.wrapper.style.marginLeft = this.toStyle(this._shift.x + this._tempShift.x);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"center\":\r\n\t\t\t\t\t\tthis._elements.wrapper.style.left = \"50%\";\r\n\t\t\t\t\t\tthis._elements.wrapper.style.right = \"auto\";\r\n\t\t\t\t\t\tthis._elements.wrapper.style.marginLeft = this.toStyle(Math.round(-bbox.width / 2) + (this._shift.x + this._tempShift.x));\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\t\tthis._elements.wrapper.style.left = \"auto\";\r\n\t\t\t\t\t\tthis._elements.wrapper.style.right = \"0\";\r\n\t\t\t\t\t\tthis._elements.wrapper.style.marginLeft = this.toStyle(this._shift.x + this._tempShift.x);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tthis._elements.wrapper.style.left = this.toStyle(this.left) || \"auto\";\r\n\t\t\t\t\t\tthis._elements.wrapper.style.right = this.toStyle(this.right) || \"auto\";\r\n\t\t\t\t\t\tthis._elements.wrapper.style.marginLeft = this.toStyle(this._shift.x + this._tempShift.x);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Set vertical positioning\r\n\t\t\t\tswitch (this.verticalAlign) {\r\n\t\t\t\t\tcase \"top\":\r\n\t\t\t\t\t\tthis._elements.wrapper.style.top = \"0\";\r\n\t\t\t\t\t\tthis._elements.wrapper.style.bottom = \"auto\";\r\n\t\t\t\t\t\tthis._elements.wrapper.style.marginTop = this.toStyle(this._shift.y + this._tempShift.y);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"middle\":\r\n\t\t\t\t\t\tthis._elements.wrapper.style.top = \"50%\";\r\n\t\t\t\t\t\tthis._elements.wrapper.style.bottom = \"auto\";\r\n\t\t\t\t\t\tthis._elements.wrapper.style.marginTop = this.toStyle(Math.round(-bbox.height / 2) + (this._shift.y + this._tempShift.y));\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"bottom\":\r\n\t\t\t\t\t\tthis._elements.wrapper.style.top = \"auto\";\r\n\t\t\t\t\t\tthis._elements.wrapper.style.bottom = \"0\";\r\n\t\t\t\t\t\tthis._elements.wrapper.style.marginTop = this.toStyle(this._shift.y + this._tempShift.y);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tthis._elements.wrapper.style.top = this.toStyle(this.top) || \"auto\";\r\n\t\t\t\t\t\tthis._elements.wrapper.style.bottom = this.toStyle(this.bottom) || \"auto\";\r\n\t\t\t\t\t\tthis._elements.wrapper.style.marginTop = this.toStyle(this._shift.y + this._tempShift.y);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t}, 1);\r\n\t\t}, 1);\r\n\r\n\t}\r\n\r\n\tprotected setupDragging(): void {\r\n\t\tif (this.draggable) {\r\n\t\t\tif (!this._IOs.header.events.has(\"drag\")) {\r\n\t\t\t\tthis._IOs.header.events.on(\"drag\", (ev) => {\r\n\t\t\t\t\tthis._tempShift.x = ev.shift.x;\r\n\t\t\t\t\tthis._tempShift.y = ev.shift.y;\r\n\t\t\t\t\tthis.positionElement(false);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (!this._IOs.header.events.has(\"dragstop\")) {\r\n\t\t\t\tthis._IOs.header.events.on(\"dragstop\", (ev) => {\r\n\t\t\t\t\tthis._shift.x += this._tempShift.x;\r\n\t\t\t\t\tthis._shift.y += this._tempShift.y;\r\n\t\t\t\t\tthis._tempShift.x = 0;\r\n\t\t\t\t\tthis._tempShift.y = 0;\r\n\t\t\t\t\tthis.positionElement(false);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this._IOs.header) {\r\n\t\t\t\tgetInteraction().unprepElement(this._IOs.header);\r\n\t\t\t\tif (this._IOs.header.events.has(\"drag\")) {\r\n\t\t\t\t\tthis._IOs.header.events.off(\"drag\");\r\n\t\t\t\t}\r\n\t\t\t\tif (this._IOs.header.events.has(\"dragstop\")) {\r\n\t\t\t\t\tthis._IOs.header.events.off(\"dragstop\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected toStyle(value: number | Percent): string | null {\r\n\t\tif (!$type.hasValue(value)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\telse if ($type.isNumber(value)) {\r\n\t\t\treturn \"\" + value + \"px\";\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn value.toString();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A prefix that is applied to class names of various popup elements.\r\n\t *\r\n\t * @return Class name prefix\r\n\t */\r\n\tpublic get classPrefix(): string {\r\n\t\treturn this.adapter.apply(\"classPrefix\", this._classPrefix);\r\n\t}\r\n\r\n\t/**\r\n\t * @param value Class name prefix\r\n\t */\r\n\tpublic set classPrefix(value: string) {\r\n\t\tthis._classPrefix = value;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns raw prefix (without adapters applied).\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Class name prefix\r\n\t */\r\n\tpublic get classPrefixRaw(): string {\r\n\t\treturn this._classPrefix;\r\n\t}\r\n\r\n\t/**\r\n\t * Popup content.\r\n\t *\r\n\t * Popup content can be any valid HTML, including CSS.\r\n\t *\r\n\t * @param value Popup content\r\n\t */\r\n\tpublic set content(value: string) {\r\n\t\tif (this._content != value) {\r\n\t\t\tthis._content = value;\r\n\t\t\tif (!this._elements.content) {\r\n\t\t\t\tthis.createContentElement();\r\n\t\t\t}\r\n\t\t\tthis._elements.content.innerHTML = value;\r\n\t\t\tthis.positionElement();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Popup content\r\n\t */\r\n\tpublic get content(): string {\r\n\t\treturn this.adapter.apply(\"content\", this._content);\r\n\t}\r\n\r\n\tprotected getClassNames() {\r\n\t\treturn this.adapter.apply(\"classNames\", {\r\n\t\t\twrapperClass: this.classPrefix + \"\",\r\n\t\t\theaderClass: this.classPrefix + \"-header\",\r\n\t\t\ttitleClass: this.classPrefix + \"-title\",\r\n\t\t\tcontentClass: this.classPrefix + \"-content\",\r\n\t\t\tinsideClass: this.classPrefix + \"-inside\",\r\n\t\t\tcurtainClass: this.classPrefix + \"-curtain\",\r\n\t\t\tcloseClass: this.classPrefix + \"-close\"\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Creates content element.\r\n\t */\r\n\tprotected createContentElement(): void {\r\n\r\n\t\t// Check if it's created already\r\n\t\tif (this._elements.wrapper) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Get class names for popup elements\r\n\t\tlet classNames = this.getClassNames();\r\n\r\n\t\t// Create content element\r\n\t\tlet wrapper = document.createElement(\"div\");\r\n\t\twrapper.className = classNames.contentClass;\r\n\t\twrapper.style.opacity = \"0.01\";\r\n\r\n\t\t// Create close button\r\n\t\tlet close = document.createElement(\"a\");\r\n\t\tclose.className = classNames.closeClass;\r\n\r\n\t\t// header title\r\n\t\tconst header = document.createElement(\"div\");\r\n\t\theader.className = classNames.headerClass;\r\n\r\n\t\t// Content title\r\n\t\tlet title = document.createElement(\"div\");\r\n\t\ttitle.innerHTML = this.title;\r\n\t\ttitle.className = classNames.titleClass;\r\n\t\tif (!this.title) {\r\n\t\t\ttitle.style.display = \"none\";\r\n\t\t}\r\n\r\n\t\t// Content div\r\n\t\tlet content = document.createElement(\"div\");\r\n\t\tcontent.className = classNames.insideClass;\r\n\t\tcontent.innerHTML = this.content;\r\n\r\n\t\t// Set up events for content\r\n\t\tthis._IOs.wrapper = getInteraction().getInteraction(wrapper);\r\n\t\tthis._IOs.header = getInteraction().getInteraction(header);\r\n\t\tthis._disposers.push(this._IOs.wrapper);\r\n\r\n\t\t// Set hover/out events\r\n\t\tthis._IOs.wrapper.events.on(\"over\", this.disablePointers, this);\r\n\t\tthis._IOs.wrapper.events.on(\"out\", this.releasePointers, this);\r\n\r\n\t\t// Create an InteractionObject for close\r\n\t\tthis._IOs.close = getInteraction().getInteraction(close);\r\n\t\tthis._disposers.push(this._IOs.close);\r\n\r\n\t\t// Hide close for now\r\n\t\tclose.style.visibility = \"hidden\";\r\n\r\n\t\t// Add accessible stuff\r\n\t\twrapper.setAttribute(\"role\", \"dialog\");\r\n\r\n\t\t// Add to wrapper\r\n\t\theader.appendChild(close);\r\n\t\theader.appendChild(title);\r\n\t\twrapper.appendChild(header);\r\n\t\twrapper.appendChild(content);\r\n\t\tthis.container.appendChild(wrapper);\r\n\r\n\t\t// Save for later access\r\n\t\tthis._elements.wrapper = wrapper;\r\n\t\tthis._elements.header = header;\r\n\t\tthis._elements.content = content;\r\n\t\tthis._elements.title = title;\r\n\t\tthis._elements.close = close;\r\n\r\n\t\t// Load CSS\r\n\t\tif (this.defaultStyles) {\r\n\t\t\tthis.loadDefaultCSS();\r\n\t\t}\r\n\r\n\t\t// Create curtain as well\r\n\t\tthis.createCurtainElement();\r\n\r\n\t\t// Apply events\r\n\t\tthis.applyEvents();\r\n\r\n\t\tthis.applyReaderSettings();\r\n\r\n\t\t// Draggable?\r\n\t\tthis.setupDragging();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Popup title.\r\n\t *\r\n\t * Popup title can be any valid HTML, including CSS.\r\n\t *\r\n\t * @param value Popup title\r\n\t */\r\n\tpublic set title(value: string) {\r\n\t\tif (this._title != value) {\r\n\t\t\tthis._title = value;\r\n\t\t\tif (!this._elements.content) {\r\n\t\t\t\tthis.createContentElement();\r\n\t\t\t}\r\n\t\t\tthis._elements.title.innerHTML = value;\r\n\t\t\tthis.positionElement();\r\n\t\t\tthis.applyReaderSettings();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Popup title\r\n\t */\r\n\tpublic get title(): string {\r\n\t\treturn this.adapter.apply(\"title\", this._title);\r\n\t}\r\n\r\n\t/**\r\n\t * A title for screen readers. It is very highly recommended to set that title\r\n\t * so that people using screen reader tools can get an immediate summary of\r\n\t * the information in the popup.\r\n\t *\r\n\t * @param value Reader title\r\n\t */\r\n\tpublic set readerTitle(value: string) {\r\n\t\tif (this._readerTitle != value) {\r\n\t\t\tthis._readerTitle = value;\r\n\t\t\tthis.applyReaderSettings();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Popup content\r\n\t */\r\n\tpublic get readerTitle(): string {\r\n\t\treturn this.adapter.apply(\r\n\t\t\t\"readerTitle\",\r\n\t\t\tthis._readerTitle != \"\" ? this._readerTitle : this.title\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Is popup closable?\r\n\t *\r\n\t * If it is, it can be closed in a number of ways, e.g. by hitting ESC key,\r\n\t * clicking curtain, or clicking the close button.\r\n\t *\r\n\t * If it is not closable, the only way to close it is via `close()` call.\r\n\t *\r\n\t * @param value Closable?\r\n\t */\r\n\tpublic set closable(value: boolean) {\r\n\t\tif (value !== this._closable) {\r\n\t\t\tthis._closable = value;\r\n\t\t\tthis.applyEvents();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Closable?\r\n\t */\r\n\tpublic get closable(): boolean {\r\n\t\treturn this.adapter.apply(\"closable\", this._closable);\r\n\t}\r\n\r\n\t/**\r\n\t * If set to other than \"none\" will try to re-adjust the position of the\r\n\t * popop to fit within chart container or browser window.\r\n\t *\r\n\t * @ignore\r\n\t * @todo Implement\r\n\t * @default \"window\"\r\n\t * @param value Fit option\r\n\t */\r\n\tpublic set fitTo(value: \"none\" | \"container\" | \"window\") {\r\n\t\tif (value != this._fitTo) {\r\n\t\t\tthis._fitTo = value;\r\n\t\t\tthis.positionElement();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t * @todo Implement\r\n\t * @return Fit option\r\n\t */\r\n\tpublic get fitTo(): \"none\" | \"container\" | \"window\" {\r\n\t\treturn this.adapter.apply(\"fitTo\", this._fitTo);\r\n\t}\r\n\r\n\t/**\r\n\t * Should popup use default CSS?\r\n\t *\r\n\t * If default CSS is disabled, an external CSS should handle the look of the\r\n\t * popup, since it will look quite out of place otherwise.\r\n\t *\r\n\t * @default true\r\n\t * @param Use default CSS?\r\n\t */\r\n\tpublic set defaultStyles(value: boolean) {\r\n\t\tif (this._defaultStyles != value) {\r\n\t\t\tthis._defaultStyles = value;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Use default CSS?\r\n\t */\r\n\tpublic get defaultStyles(): boolean {\r\n\t\treturn this.adapter.apply(\"defaultStyles\", this._defaultStyles);\r\n\t}\r\n\r\n\t/**\r\n\t * Should popup use dim out all content behind it?\r\n\t *\r\n\t * @default false\r\n\t * @param Show curtain?\r\n\t */\r\n\tpublic set showCurtain(value: boolean) {\r\n\t\tif (this._showCurtain != value) {\r\n\t\t\tthis._showCurtain = value;\r\n\t\t\tif (this._elements.curtain) {\r\n\t\t\t\tthis._elements.curtain.style.display = value ? \"block\" : \"none\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Show curtain?\r\n\t */\r\n\tpublic get showCurtain(): boolean {\r\n\t\treturn this.adapter.apply(\"showCurtain\", this._showCurtain);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates curtain element.\r\n\t */\r\n\tprotected createCurtainElement(): void {\r\n\r\n\t\t// Get class names for popup elements\r\n\t\tlet classNames = this.getClassNames();\r\n\r\n\t\t// Create the curtain\r\n\t\tlet curtain = document.createElement(\"div\");\r\n\t\tcurtain.className = classNames.curtainClass;\r\n\r\n\t\t// Append curtain to wrapper\r\n\t\tthis.container.appendChild(curtain);\r\n\r\n\t\t// Create an InteractionObject for curtain because we might need to\r\n\t\t// set interactions on it\r\n\t\tthis._IOs.curtain = getInteraction().getInteraction(curtain);\r\n\r\n\t\t// Add Curtain IO to disposers\r\n\t\tthis._disposers.push(this._IOs.curtain);\r\n\r\n\t\t// Set events to disable underlying interactivity\r\n\t\tthis._IOs.curtain.events.on(\"over\", this.disablePointers, this);\r\n\t\tthis._IOs.curtain.events.on(\"out\", this.releasePointers, this);\r\n\r\n\t\t// Hide it?\r\n\t\tcurtain.style.display = this.showCurtain ? \"block\" : \"none\";\r\n\r\n\t\t// Save for later\r\n\t\tthis._elements.curtain = curtain;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Can the popup be dragged with a pointer?\r\n\t *\r\n\t * @default false\r\n\t * @param Show curtain?\r\n\t */\r\n\tpublic set draggable(value: boolean) {\r\n\t\tif (this._draggable != value) {\r\n\t\t\tthis._draggable = value;\r\n\t\t\tthis.setupDragging();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Show curtain?\r\n\t */\r\n\tpublic get draggable(): boolean {\r\n\t\treturn this.adapter.apply(\"draggable\", this._draggable);\r\n\t}\r\n\r\n\t/**\r\n\t * Horizontal positioning of the content window.\r\n\t *\r\n\t * Available options: \"left\", \"center\" (default), \"right\", and \"none\".\r\n\t *\r\n\t * @default \"center\"\r\n\t * @param Horizontal position\r\n\t */\r\n\tpublic set align(value: Align) {\r\n\t\tif (this._align != value) {\r\n\t\t\tthis._align = value;\r\n\t\t\tthis.positionElement();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Horizontal position\r\n\t */\r\n\tpublic get align(): Align {\r\n\t\treturn this.adapter.apply(\"align\", this._align);\r\n\t}\r\n\r\n\t/**\r\n\t * Vertical positioning of the content window.\r\n\t *\r\n\t * Available options: \"top\", \"middle\" (default), \"bottom\", and \"none\".\r\n\t *\r\n\t * @default \"middle\"\r\n\t * @param Vertical position\r\n\t */\r\n\tpublic set verticalAlign(value: VerticalAlign) {\r\n\t\tif (this._verticalAlign != value) {\r\n\t\t\tthis._verticalAlign = value;\r\n\t\t\tthis.positionElement();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Vertical position\r\n\t */\r\n\tpublic get verticalAlign(): VerticalAlign {\r\n\t\treturn this.adapter.apply(\"verticalAlign\", this._verticalAlign);\r\n\t}\r\n\r\n\t/**\r\n\t * \"left\" coordinate of a non-aligned (`align = \"none\"`) popup.\r\n\t *\r\n\t * Can be either absolute pixel value, or relative (`Percent`).\r\n\t *\r\n\t * Setting this property will automatically set `align` to \"none\".\r\n\t *\r\n\t * NOTE: The position is relative to the chart container.\r\n\t *\r\n\t * @param Left\r\n\t */\r\n\tpublic set left(value: number | Percent) {\r\n\t\tif (this.left != value) {\r\n\t\t\tthis._left = value;\r\n\t\t\tthis._align = \"none\";\r\n\t\t\tthis.positionElement();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Left\r\n\t */\r\n\tpublic get left(): number | Percent {\r\n\t\treturn this.adapter.apply(\"left\", this._left);\r\n\t}\r\n\r\n\t/**\r\n\t * \"right\" coordinate of a non-aligned (`align = \"none\"`) popup.\r\n\t *\r\n\t * Can be either absolute pixel value, or relative (`Percent`).\r\n\t *\r\n\t * Setting this property will automatically set `align` to \"none\".\r\n\t *\r\n\t * NOTE: The position is relative to the chart container.\r\n\t *\r\n\t * @param Right\r\n\t */\r\n\tpublic set right(value: number | Percent) {\r\n\t\tif (this.right != value) {\r\n\t\t\tthis._right = value;\r\n\t\t\tthis._align = \"none\";\r\n\t\t\tthis.positionElement();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Right\r\n\t */\r\n\tpublic get right(): number | Percent {\r\n\t\treturn this.adapter.apply(\"right\", this._right);\r\n\t}\r\n\r\n\t/**\r\n\t * \"top\" coordinate of a non-aligned (`verticalAlign = \"none\"`) popup.\r\n\t *\r\n\t * Can be either absolute pixel value, or relative (`Percent`).\r\n\t *\r\n\t * Setting this property will automatically set `verticalAlign` to \"none\".\r\n\t *\r\n\t * NOTE: The position is relative to the chart container.\r\n\t *\r\n\t * @param Top\r\n\t */\r\n\tpublic set top(value: number | Percent) {\r\n\t\tif (this.top != value) {\r\n\t\t\tthis._top = value;\r\n\t\t\tthis._verticalAlign = \"none\";\r\n\t\t\tthis.positionElement();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Top\r\n\t */\r\n\tpublic get top(): number | Percent {\r\n\t\treturn this.adapter.apply(\"top\", this._top);\r\n\t}\r\n\r\n\t/**\r\n\t * \"bottom\" coordinate of a non-aligned (`verticalAlign = \"none\"`) popup.\r\n\t *\r\n\t * Can be either absolute pixel value, or relative (`Percent`).\r\n\t *\r\n\t * Setting this property will automatically set `verticalAlign` to \"none\".\r\n\t *\r\n\t * NOTE: The position is relative to the chart container.\r\n\t *\r\n\t * @param Bottom\r\n\t */\r\n\tpublic set bottom(value: number | Percent) {\r\n\t\tif (this.bottom != value) {\r\n\t\t\tthis._bottom = value;\r\n\t\t\tthis._verticalAlign = \"none\";\r\n\t\t\tthis.positionElement();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Bottom\r\n\t */\r\n\tpublic get bottom(): number | Percent {\r\n\t\treturn this.adapter.apply(\"bottom\", this._bottom);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an object with references to various elements of the Popup.\r\n\t *\r\n\t * * `wrapper`\r\n\t * * `title`\r\n\t * * `content`\r\n\t * * `close`\r\n\t * * `curtain`\r\n\t */\r\n\tpublic get elements(): {\r\n\t\twrapper?: HTMLElement;\r\n\t\ttitle?: HTMLElement;\r\n\t\tcontent?: HTMLElement;\r\n\t\tclose?: HTMLElement;\r\n\t\tcurtain?: HTMLElement;\r\n\t} {\r\n\t\treturn this._elements;\r\n\t}\r\n\r\n\t/**\r\n\t * Loads popup CSS.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic loadDefaultCSS(): void {\r\n\t\tif (!this._cssLoaded) {\r\n\t\t\tthis._disposers.push(popupCSS(this.classPrefix));\r\n\t\t\t$object.each(this._elements, (key, el) => {\r\n\t\t\t\tel.style.display = \"\";\r\n\t\t\t});\r\n\t\t\tthis._cssLoaded = true;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * If popup is closable, this method adds various events to popup elements.\r\n\t */\r\n\tprotected applyEvents(): void {\r\n\t\tif (this._IOs.close) {\r\n\t\t\tif (this.closable) {\r\n\t\t\t\tthis._IOs.close.element.style.visibility = \"visible\";\r\n\r\n\t\t\t\tlet disposers = [\r\n\t\t\t\t\tgetInteraction().body.events.on(\"keyup\", (ev) => {\r\n\t\t\t\t\t\tif (keyboard.isKey(ev.event, \"esc\") && this.closable) {\r\n\t\t\t\t\t\t\tthis.close()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tthis._IOs.close.events.on(\"hit\", (ev) => {\r\n\t\t\t\t\t\tthis.close();\r\n\t\t\t\t\t})\r\n\t\t\t\t];\r\n\t\t\t\tdisposers.push(this._IOs.curtain.events.on(\"hit\", (ev) => {\r\n\t\t\t\t\tif (this.showCurtain) {\r\n\t\t\t\t\t\tthis.close();\r\n\t\t\t\t\t}\r\n\t\t\t\t}));\r\n\t\t\t\tthis._disposers.push(new MultiDisposer(disposers));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis._IOs.close.element.style.visibility = \"hidden\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Disables interactivity on parent chart.\r\n\t */\r\n\tprotected disablePointers(): void {\r\n\t\tif (this.sprite) {\r\n\t\t\tthis._spriteInteractionsEnabled = this.sprite.interactionsEnabled;\r\n\t\t\tthis.sprite.interactionsEnabled = false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Releases temporarily disabled pointers on parent chart.\r\n\t */\r\n\tprotected releasePointers(): void {\r\n\t\tif ($type.hasValue(this._spriteInteractionsEnabled)) {\r\n\t\t\tthis.sprite.interactionsEnabled = this._spriteInteractionsEnabled;\r\n\t\t\tthis._spriteInteractionsEnabled = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets screen reader related settings.\r\n\t */\r\n\tprotected applyReaderSettings(): void {\r\n\t\tthis.elements.wrapper.setAttribute(\"aria-label\", this.readerTitle);\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all properties and related data from different element.\r\n\t *\r\n\t * @param object Source element\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\tsuper.copyFrom(source);\r\n\t\tthis.container = source.container;\r\n\t\tthis.sprite = source.sprite;\r\n\t\tthis.classPrefix = source.classPrefixRaw;\r\n\t\tthis.content = source.content;\r\n\t\tthis.title = source.title;\r\n\t\tthis.readerTitle = source.readerTitle;\r\n\t\tthis.defaultStyles = source.defaultStyles;\r\n\t\tthis.showCurtain = source.showCurtain;\r\n\t\tthis.align = source.align;\r\n\t\tthis.verticalAlign = source.verticalAlign;\r\n\t\tthis.left = source.left;\r\n\t\tthis.right = source.right;\r\n\t\tthis.top = source.top;\r\n\t\tthis.bottom = source.bottom;\r\n\t\tthis.adapter.copyFrom(source.adapter);\r\n\t}\r\n\r\n}\r\n","/**\r\n * Functionality for drawing rectangles.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite, ISpriteProperties, ISpriteAdapters, ISpriteEvents } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $math from \"../utils/Math\";\r\nimport { IRectangle } from \"../defs/IRectangle\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Rectangle]].\r\n */\r\nexport interface IRectangleProperties extends ISpriteProperties { }\r\n\r\n/**\r\n * Defines events for [[Rectangle]].\r\n */\r\nexport interface IRectangleEvents extends ISpriteEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Rectangle]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IRectangleAdapters extends ISpriteAdapters, IRectangleProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Used to draw a rectangle.\r\n *\r\n * @see {@link IRectangleEvents} for a list of available events\r\n * @see {@link IRectangleAdapters} for a list of available Adapters\r\n */\r\nexport class Rectangle extends Sprite {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IRectangleProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IRectangleAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IRectangleEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * * Creates a `<rect>` element\r\n\t * * Creates default state\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"Rectangle\";\r\n\t\tthis.element = this.paper.add(\"rect\");\r\n\t\t//this.pixelPerfect = false;\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tsuper.draw();\r\n\r\n\t\tlet precision: number = this._positionPrecision;\r\n\t\tif (this.pixelPerfect) {\r\n\t\t\tprecision = 0;\r\n\t\t}\r\n\r\n\t\tlet w: number = $math.round(this.innerWidth, precision);\r\n\t\tlet h: number = $math.round(this.innerHeight, precision);\r\n\r\n\t\tthis.element.attr({\r\n\t\t\t\"width\": w,\r\n\t\t\t\"height\": h\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Measures the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic measureElement(): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns bounding box (square) for this element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic get bbox(): IRectangle {\r\n\t\tif (this.definedBBox) {\r\n\t\t\treturn this.definedBBox;\r\n\t\t}\r\n\r\n\t\tif (this.isMeasured) {\r\n\t\t\treturn {\r\n\t\t\t\tx: 0,\r\n\t\t\t\ty: 0,\r\n\t\t\t\twidth: this.innerWidth,\r\n\t\t\t\theight: this.innerHeight\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn { x: 0, y: 0, width: 0, height: 0 };\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Rectangle\"] = Rectangle;\r\n","/**\r\n * Resize button module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Button, IButtonProperties, IButtonAdapters, IButtonEvents } from \"./Button\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { Orientation } from \"../defs/Orientation\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $path from \"../rendering/Path\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[ResizeButton]].\r\n */\r\nexport interface IResizeButtonProperties extends IButtonProperties { }\r\n\r\n/**\r\n * Defines events for [[ResizeButton]] for [[ResizeButton]].\r\n */\r\nexport interface IResizeButtonEvents extends IButtonEvents { }\r\n\r\n/**\r\n * Defines adapters for [[ResizeButton]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IResizeButtonAdapters extends IButtonAdapters, IResizeButtonProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates a draggable resize/grip button.\r\n *\r\n * @see {@link IResizeButtonEvents} for a list of available events\r\n * @see {@link IResizeButtonAdapters} for a list of available Adapters\r\n */\r\nexport class ResizeButton extends Button {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IResizeButtonProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IResizeButtonAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IResizeButtonEvents;\r\n\r\n\t/**\r\n\t * Orientation of the resize direction.\r\n\t *\r\n\t * @deprecated Not used\r\n\t */\r\n\tprotected _orientation: Orientation;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"ResizeButton\";\r\n\r\n\t\t// Set defaults\r\n\t\tthis.orientation = \"horizontal\";\r\n\t\tthis.layout = \"absolute\";\r\n\t\tthis.horizontalCenter = \"middle\";\r\n\t\tthis.verticalCenter = \"middle\";\r\n\r\n\t\tthis.draggable = true;\r\n\t\tthis.padding(8, 8, 8, 8);\r\n\r\n\t\tthis.background.cornerRadius(20, 20, 20, 20);\r\n\r\n\t\t// Create an icon\r\n\t\tlet icon: Sprite = new Sprite();\r\n\t\ticon.element = this.paper.add(\"path\");\r\n\r\n\t\tlet path = $path.moveTo({ x: -2, y: -6 });\r\n\t\tpath += $path.lineTo({ x: -2, y: 6 });\r\n\t\tpath += $path.moveTo({ x: 2, y: -6 });\r\n\t\tpath += $path.lineTo({ x: 2, y: 6 });\r\n\t\ticon.path = path;\r\n\r\n\t\ticon.pixelPerfect = true;\r\n\t\ticon.padding(0, 4, 0, 4);\r\n\t\ticon.stroke = new InterfaceColorSet().getFor(\"alternativeText\");\r\n\t\ticon.strokeOpacity = 0.7;\r\n\t\t//icon.align = \"center\";\r\n\t\t//icon.valign = \"middle\";\r\n\t\tthis.icon = icon;\r\n\r\n\t\tthis.label.dispose();\r\n\t\tthis.label = undefined;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Use for setting of direction (orientation) of the resize button.\r\n\t *\r\n\t * Available options: \"horizontal\", \"vertical\".\r\n\t *\r\n\t * @param value Orientation\r\n\t */\r\n\tpublic set orientation(value: Orientation) {\r\n\t\tlet icon = this.icon;\r\n\t\tif (icon) {\r\n\t\t\tif (value == \"horizontal\") {\r\n\t\t\t\ticon.rotation = 0;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\ticon.rotation = -90;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ResizeButton\"] = ResizeButton;\r\n","/**\r\n * Rounded rectangle module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite, ISpriteProperties, ISpriteAdapters, ISpriteEvents } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport { Percent } from \"../utils/Percent\";\r\nimport { IRectangle } from \"../defs/IRectangle\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[RoundedRectangle]].\r\n */\r\nexport interface IRoundedRectangleProperties extends ISpriteProperties {\r\n\r\n\t/**\r\n\t * Radius of the top-left corner in pixels.\r\n\t *\r\n\t * @default 3\r\n\t */\r\n\tcornerRadiusTopLeft?: number;\r\n\r\n\t/**\r\n\t * Radius of the top-right corner in pixels.\r\n\t *\r\n\t * @default 3\r\n\t */\r\n\tcornerRadiusTopRight?: number;\r\n\r\n\t/**\r\n\t * Radius of the bottom-right corner in pixels.\r\n\t *\r\n\t * @default 3\r\n\t */\r\n\tcornerRadiusBottomRight?: number;\r\n\r\n\t/**\r\n\t * Radius of the bottom-left corner in pixels.\r\n\t *\r\n\t * @default 3\r\n\t */\r\n\tcornerRadiusBottomLeft?: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[RoundedRectangle]].\r\n */\r\nexport interface IRoundedRectangleEvents extends ISpriteEvents { }\r\n\r\n/**\r\n * Defines adapters for [[RoundedRectangle]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IRoundedRectangleAdapters extends ISpriteAdapters, IRoundedRectangleProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Draws a rectangle with rounded corners.\r\n *\r\n * @see {@link IRoundedRectangleEvents} for a list of available events\r\n * @see {@link IRoundedRectangleAdapters} for a list of available Adapters\r\n */\r\nexport class RoundedRectangle extends Sprite {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IRoundedRectangleProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IRoundedRectangleAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IRoundedRectangleEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"RoundedRectangle\";\r\n\r\n\t\tthis.element = this.paper.add(\"path\");\r\n\r\n\t\tthis.cornerRadius(3, 3, 3, 3);\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tsuper.draw();\r\n\r\n\t\tlet w: number = this.innerWidth;\r\n\t\tlet h: number = this.innerHeight;\r\n\r\n\t\tif ($type.isNumber(w) && $type.isNumber(h)) {\r\n\r\n\t\t\tlet minSide = $math.min(w, h) / 2;\r\n\r\n\t\t\tlet cornerRadiusTopLeft = $utils.relativeToValue(this.cornerRadiusTopLeft, minSide);\r\n\t\t\tlet cornerRadiusTopRight = $utils.relativeToValue(this.cornerRadiusTopRight, minSide);\r\n\t\t\tlet cornerRadiusBottomRight = $utils.relativeToValue(this.cornerRadiusBottomRight, minSide);\r\n\t\t\tlet cornerRadiusBottomLeft = $utils.relativeToValue(this.cornerRadiusBottomLeft, minSide);\r\n\r\n\t\t\tlet maxcr: number = $math.min(Math.abs(w / 2), Math.abs(h / 2));\r\n\t\t\tlet crtl: number = $math.fitToRange(cornerRadiusTopLeft, 0, maxcr);\r\n\t\t\tlet crtr: number = $math.fitToRange(cornerRadiusTopRight, 0, maxcr);\r\n\t\t\tlet crbr: number = $math.fitToRange(cornerRadiusBottomRight, 0, maxcr);\r\n\t\t\tlet crbl: number = $math.fitToRange(cornerRadiusBottomLeft, 0, maxcr);\r\n\r\n\t\t\tlet lineT: string = \"M\" + crtl + \",0 L\" + (w - crtr) + \",0\";\r\n\t\t\tlet lineB: string = \" L\" + crbl + \",\" + h;\r\n\t\t\tlet lineL: string = \" L0,\" + crtl;\r\n\t\t\tlet lineR: string = \" L\" + w + \",\" + (h - crbr);\r\n\r\n\t\t\tlet arcTR: string = \" a\" + crtr + \",\" + crtr + \" 0 0 1 \" + crtr + \",\" + crtr;\r\n\t\t\tlet arcBR: string = \" a\" + crbr + \",\" + crbr + \" 0 0 1 -\" + crbr + \",\" + crbr;\r\n\t\t\tlet arcBL: string = \" a\" + crbl + \",\" + crbl + \" 0 0 1 -\" + crbl + \",-\" + crbl;\r\n\t\t\tlet arcTL: string = \" a\" + crtl + \",\" + crtl + \" 0 0 1 \" + crtl + \",-\" + crtl;\r\n\r\n\r\n\t\t\tlet path: string = lineT + arcTR + lineR + arcBR + lineB + arcBL + lineL + arcTL + \" Z\";\r\n\r\n\t\t\tthis.path = path;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets radius for all four corners at ones.\r\n\t *\r\n\t * All numbers are in pixels.\r\n\t *\r\n\t * @param tl Top-left corner\r\n\t * @param tr Top-right corner\r\n\t * @param bl Bottom-left corner\r\n\t * @param br Bottom-right corner\r\n\t */\r\n\tpublic cornerRadius(tl: number | Percent, tr: number | Percent, bl: number | Percent, br: number | Percent) {\r\n\t\tthis.cornerRadiusTopLeft = tl;\r\n\t\tthis.cornerRadiusTopRight = tr;\r\n\t\tthis.cornerRadiusBottomLeft = bl;\r\n\t\tthis.cornerRadiusBottomRight = br;\r\n\t}\r\n\r\n\t/**\r\n\t * Radius of the top-left corner in pixels.\r\n\t *\r\n\t * @default 3\r\n\t * @param value Radius (px or Percent)\r\n\t */\r\n\tpublic set cornerRadiusTopLeft(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"cornerRadiusTopLeft\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Radius (px or Percent)\r\n\t */\r\n\tpublic get cornerRadiusTopLeft(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"cornerRadiusTopLeft\");\r\n\t}\r\n\r\n\t/**\r\n\t * Radius of the top-right corner in pixels.\r\n\t *\r\n\t * @default 3\r\n\t * @param value Radius (px or Percent)\r\n\t */\r\n\tpublic set cornerRadiusTopRight(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"cornerRadiusTopRight\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Radius (px or Percent)\r\n\t */\r\n\tpublic get cornerRadiusTopRight(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"cornerRadiusTopRight\");\r\n\t}\r\n\r\n\t/**\r\n\t * Radius of the bottom-right corner in pixels.\r\n\t *\r\n\t * @default 3\r\n\t * @param value Radius (px or Percent)\r\n\t */\r\n\tpublic set cornerRadiusBottomRight(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"cornerRadiusBottomRight\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Radius (px or Percent)\r\n\t */\r\n\tpublic get cornerRadiusBottomRight(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"cornerRadiusBottomRight\");\r\n\t}\r\n\r\n\t/**\r\n\t * Radius of the bottom-left corner in pixels.\r\n\t *\r\n\t * @default 3\r\n\t * @param value Radius (px or Percent)\r\n\t */\r\n\tpublic set cornerRadiusBottomLeft(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"cornerRadiusBottomLeft\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Radius (px or Percent)\r\n\t */\r\n\tpublic get cornerRadiusBottomLeft(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"cornerRadiusBottomLeft\");\r\n\t}\r\n\r\n\t/**\r\n\t * Measures the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic measureElement(): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns bounding box (square) for this element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic get bbox(): IRectangle {\r\n\t\tif (this.definedBBox) {\r\n\t\t\treturn this.definedBBox;\r\n\t\t}\r\n\r\n\t\tif (this.isMeasured) {\r\n\t\t\treturn {\r\n\t\t\t\tx: 0,\r\n\t\t\t\ty: 0,\r\n\t\t\t\twidth: this.innerWidth,\r\n\t\t\t\theight: this.innerHeight\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn { x: 0, y: 0, width: 0, height: 0 };\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RoundedRectangle\"] = RoundedRectangle;\r\n","/**\r\n * Provides functionality used to build scrollbars.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\nimport { Container, IContainerProperties, IContainerAdapters, IContainerEvents } from \"../Container\";\r\nimport { IRange } from \"../defs/IRange\";\r\nimport { Sprite, ISpriteEvents, AMEvent } from \"../Sprite\";\r\nimport { Orientation } from \"../defs/Orientation\";\r\nimport { ResizeButton } from \"../elements/ResizeButton\";\r\nimport { Button } from \"../elements/Button\";\r\nimport { getInteraction } from \"../interaction/Interaction\";\r\nimport { MouseCursorStyle } from \"../interaction/Mouse\";\r\nimport { RoundedRectangle } from \"../elements/RoundedRectangle\";\r\nimport { IPoint } from \"../defs/IPoint\";\r\nimport { Animation } from \"../utils/Animation\";\r\nimport { IDisposer } from \"../utils/Disposer\";\r\nimport { registry } from \"../Registry\";\r\nimport { keyboard } from \"../utils/Keyboard\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { percent, Percent } from \"../utils/Percent\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $ease from \"../utils/Ease\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $utils from \"../utils/Utils\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Scrollbar]].\r\n */\r\nexport interface IScrollbarProperties extends IContainerProperties {\r\n\r\n\t/**\r\n\t * Duration in milliseconds of Scrollbar animation.\r\n\t *\r\n\t * This affects how fast Scrollbar elements move/resize. For example when\r\n\t * chart zooms or pans, Scrollbar elements' positions need to be adjusted\r\n\t * as well. This setting will affect whether they will be relocated\r\n\t * instantenously (0), or will animte gradually.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n\t */\r\n\tanimationDuration?: number;\r\n\r\n\t/**\r\n\t * An easing function to use when animating (moving/sizing) Scrollbar\r\n\t * elements.\r\n\t */\r\n\tanimationEasing?: (value: number) => number;\r\n\r\n\t/**\r\n\t * Orientation of a scrollbar\r\n\t */\r\n\torientation?: Orientation;\r\n}\r\n\r\n/**\r\n * Defines events for [[Scrollbar]].\r\n */\r\nexport interface IScrollbarEvents extends IContainerEvents {\r\n\r\n\t/**\r\n\t * Invoked when range of scrollbar selection changes.\r\n\t */\r\n\trangechanged: {};\r\n\r\n}\r\n\r\n/**\r\n * Defines adapters for [[Scrollbar]].\r\n */\r\nexport interface IScrollbarAdapters extends IContainerAdapters, IScrollbarProperties {\r\n\r\n\t/**\r\n\t * Applied to a position value when it is retrieved.\r\n\t */\r\n\tpositionValue: {\r\n\t\tvalue: any,\r\n\t\tposition: number\r\n\t}\r\n\r\n};\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Scrollbar is a generic control allowing to select a range of values or pan\r\n * the selection.\r\n *\r\n * @see {@link IScrollbarEvents} for a list of available events\r\n * @see {@link IScrollbarAdapters} for a list of available Adapters\r\n */\r\nexport class Scrollbar extends Container {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IScrollbarProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IScrollbarAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IScrollbarEvents;\r\n\r\n\t/**\r\n\t * Holds a reference to a draggable rectangle that fills the space between\r\n\t * two selection grips. It can be used to pan the selection maintaining the\r\n\t * distance between start and end grips.\r\n\t */\r\n\tprotected _thumb: $type.Optional<Button>;\r\n\r\n\t/**\r\n\t * Orientation of the scrollbar.\r\n\t */\r\n\tprotected _orientation: Orientation;\r\n\r\n\t/**\r\n\t * A button (grip) instance to be used to select lower range value.\r\n\t */\r\n\tprotected _startGrip!: ResizeButton;\r\n\r\n\t/**\r\n\t * A button (grip) instance to be used to select upper range value.\r\n\t */\r\n\tprotected _endGrip!: ResizeButton;\r\n\r\n\t/**\r\n\t * Currently selected lower (start) value.\r\n\t */\r\n\tprotected _start!: number;\r\n\r\n\t/**\r\n\t * Currently selected upper (end) value.\r\n\t */\r\n\tprotected _end!: number;\r\n\r\n\t/**\r\n\t * Previously selected lower (start) value.\r\n\t */\r\n\tprotected _previousStart: $type.Optional<number> = 0;\r\n\r\n\t/**\r\n\t * Previously selected upper (end) value.\r\n\t */\r\n\tprotected _previousEnd: $type.Optional<number> = 1;\r\n\r\n\t/**\r\n\t * An [[Animation]] instance that moves \"thumb\".\r\n\t */\r\n\tprotected _thumbAnimation: $type.Optional<Animation>;\r\n\r\n\t/**\r\n\t * An [[Animation]] instance that moves zoom grip buttons.\r\n\t */\r\n\tprotected _zoomAnimation: $type.Optional<Animation>;\r\n\r\n\t/**\r\n\t * A value of previously selected lower value, used for doubleclick function.\r\n\t */\r\n\tprotected _prevStart: number = 0;\r\n\r\n\t/**\r\n\t * A value of previously selected upper value, used for doubleclick function.\r\n\t */\r\n\tprotected _prevEnd: number = 1;\r\n\r\n\t/**\r\n\t * Indicates if the Scrollbar is currently \"busy\" (animating and or\r\n\t * performing zoom by user interaction).\r\n\t */\r\n\tprotected _isBusy: boolean = false;\r\n\r\n\t/**\r\n\t * [_skipRangeEvents description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _skipRangeEvents: boolean = false;\r\n\r\n\t/**\r\n\t * Holds timeout reference that resets \"busy\" status.\r\n\t */\r\n\tprotected _unbusyTimeout: $type.Optional<IDisposer>;\r\n\r\n\t/**\r\n\t * [undefined description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _usingGrip: \"start\" | \"end\" | undefined;\r\n\r\n\t/**\r\n\t * Sets the type of the element to use as background.\r\n\t */\r\n\tpublic _background: RoundedRectangle;\r\n\r\n\t/**\r\n\t * Hide grips when not hovered over scrollbar?\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tprotected _hideGrips!: boolean;\r\n\r\n\t/**\r\n\t * A disposer for the hover event.\r\n\t */\r\n\tprotected _overDisposer: $type.Optional<IDisposer>;\r\n\r\n\t/**\r\n\t * A disposer for the out event.\r\n\t */\r\n\tprotected _outDisposer: $type.Optional<IDisposer>;\r\n\r\n\t/**\r\n\t * Update the selection when dragging the grips.\r\n\t *\r\n\t * If set to `false` selection will be updated only when the grip is\r\n\t * released.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tpublic updateWhileMoving: boolean = true;\r\n\r\n\t/**\r\n\t * Construtor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.className = \"Scrollbar\";\r\n\r\n\t\tthis.minHeight = 12;\r\n\t\tthis.minWidth = 12;\r\n\r\n\t\tthis.animationDuration = 0;\r\n\t\tthis.animationEasing = $ease.cubicOut;\r\n\r\n\t\tthis.margin(10, 10, 10, 10);\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\r\n\t\t// background is also container as it might contain graphs, grid, etc\r\n\t\tlet background: RoundedRectangle = this.background;\r\n\t\tbackground.cornerRadius(10, 10, 10, 10);\r\n\t\tbackground.fill = interfaceColors.getFor(\"fill\");\r\n\t\tbackground.fillOpacity = 0.5;\r\n\r\n\t\t// Make system tooltips appear by default\r\n\t\tthis.showSystemTooltip = true;\r\n\r\n\t\tthis.startGrip = new ResizeButton();\r\n\t\tthis.endGrip = new ResizeButton();\r\n\r\n\t\t// Default orientation...\r\n\t\t// ... is set in `applyInternalDefaults()` because it accesses `language`\r\n\t\t// and should only be started to access when parent is set\r\n\r\n\t\t// Set events\r\n\t\tthis.events.on(\"transformed\", this.updateThumb, this, false);\r\n\r\n\t\t// Initial positions\r\n\t\tthis.start = 0;\r\n\t\tthis.end = 1;\r\n\r\n\t\t// Set roles\r\n\t\tthis.role = \"scrollbar\";\r\n\t\tthis.thumb.role = \"slider\";\r\n\t\tthis.thumb.readerLive = \"polite\";\r\n\t\tthis.startGrip.role = \"slider\";\r\n\t\tthis.endGrip.role = \"slider\";\r\n\r\n\t\t// otherwise range changed wont' be registered\r\n\t\tthis.events.once(\"inited\", () => {\r\n\t\t\tthis._previousStart = undefined;\r\n\t\t\tthis.dispatchRangeChange();\r\n\t\t}, undefined, false)\r\n\r\n\r\n\t\tthis.hideGrips = false;\r\n\r\n\t\tthis.orientation = \"horizontal\";\r\n\r\n\t\t// Min/max values for accessibility\r\n\t\tthis.setSVGAttribute({ \"aria-valuemin\": \"0\" });\r\n\t\tthis.setSVGAttribute({ \"aria-valuemax\": \"100\" });\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets defaults that instantiate some objects that rely on parent, so they\r\n\t * cannot be set in constructor.\r\n\t */\r\n\tprotected applyInternalDefaults(): void {\r\n\t\tsuper.applyInternalDefaults();\r\n\r\n\t\t// Set screen reader tetxt accordingly\r\n\t\tif (this.orientation === \"horizontal\") {\r\n\t\t\tif (!$type.hasValue(this.readerTitle)) {\r\n\t\t\t\tthis.readerTitle = this.language.translate(\"Use TAB to select grip buttons or left and right arrows to change selection\");\r\n\t\t\t}\r\n\t\t\tif (!$type.hasValue(this.thumb.readerDescription)) {\r\n\t\t\t\tthis.thumb.readerDescription = this.language.translate(\"Use left and right arrows to move selection\");\r\n\t\t\t}\r\n\t\t\tif (!$type.hasValue(this.startGrip.readerDescription)) {\r\n\t\t\t\tthis.startGrip.readerDescription = this.language.translate(\"Use left and right arrows to move left selection\");\r\n\t\t\t}\r\n\t\t\tif (!$type.hasValue(this.endGrip.readerDescription)) {\r\n\t\t\t\tthis.endGrip.readerDescription = this.language.translate(\"Use left and right arrows to move right selection\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.readerOrientation = \"horizontal\";\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (!$type.hasValue(this.readerTitle)) {\r\n\t\t\t\tthis.readerTitle = this.language.translate(\"Use TAB select grip buttons or up and down arrows to change selection\");\r\n\t\t\t}\r\n\t\t\tif (!$type.hasValue(this.thumb.readerDescription)) {\r\n\t\t\t\tthis.thumb.readerDescription = this.language.translate(\"Use up and down arrows to move selection\");\r\n\t\t\t}\r\n\t\t\tif (!$type.hasValue(this.startGrip.readerDescription)) {\r\n\t\t\t\tthis.startGrip.readerDescription = this.language.translate(\"Use up and down arrows to move upper selection\");\r\n\t\t\t}\r\n\t\t\tif (!$type.hasValue(this.endGrip.readerDescription)) {\r\n\t\t\t\tthis.endGrip.readerDescription = this.language.translate(\"Use up and down arrows to move lower selection\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.readerOrientation = \"vertical\";\r\n\t\t}\r\n\r\n\t\tthis.readerControls = this.baseSprite.uidAttr();\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the layout of the scrollbar's elements.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateLayout(): void {\r\n\t\tthis.updateSize();\r\n\t\tsuper.validateLayout();\r\n\r\n\t\t// when size changes, need to update extremes\r\n\t\tthis.updateExtremes();\r\n\t}\r\n\r\n\t/**\r\n\t * Update background for the scrollbar.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic processBackground(): void {\r\n\t\tsuper.processBackground();\r\n\t\tlet background = this.background;\r\n\r\n\t\tbackground.clickable = true;\r\n\t\tbackground.events.on(\"hit\", this.handleBgHit, this, undefined);\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms to the particular place when clicked/tapped on the scrollbar\r\n\t * background.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Event\r\n\t */\r\n\tpublic handleBgHit(event: ISpriteEvents[\"hit\"]): void {\r\n\t\tthis.makeBusy();\r\n\t\tlet point: IPoint = event.spritePoint;\r\n\t\tpoint = $utils.spritePointToSprite(point, this.background, this);\r\n\t\tlet thumb: Sprite = this.thumb;\r\n\t\tif (this.orientation == \"horizontal\") {\r\n\t\t\tlet thumbX: number = point.x - thumb.pixelWidth / 2;\r\n\t\t\tthumbX = $math.fitToRange(thumbX, 0, this.innerWidth - thumb.pixelWidth);\r\n\t\t\tthis._thumbAnimation = thumb.animate({ property: \"x\", to: thumbX }, this.animationDuration, this.animationEasing);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet thumbY: number = point.y - thumb.pixelHeight / 2;\r\n\t\t\tthumbY = $math.fitToRange(thumbY, 0, this.innerHeight - thumb.pixelHeight);\r\n\t\t\tthis._thumbAnimation = thumb.animate({ property: \"y\", to: thumbY }, this.animationDuration, this.animationEasing);\r\n\t\t}\r\n\t\tif (this.animationDuration > 0) {\r\n\t\t\tthis._thumbAnimation.events.on(\"animationended\", this.makeUnbusy, this, false);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._thumb.validate();\r\n\t\t\tthis.makeUnbusy();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set scrollbar as busy. (currently zooming)\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic makeBusy(): void {\r\n\t\tthis._isBusy = true;\r\n\t\tthis._skipRangeEvents = false;\r\n\t\tif (this._unbusyTimeout) {\r\n\t\t\tthis.removeDispose(this._unbusyTimeout);\r\n\t\t}\r\n\t\tthis._unbusyTimeout = undefined;\r\n\t\tthis.stopAnimations();\r\n\t}\r\n\r\n\t/**\r\n\t * Stops all animations, currently playing for the scrollbar.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic stopAnimations(): void {\r\n\t\tif (this._thumbAnimation) {\r\n\t\t\tthis._thumbAnimation.stop(true);\r\n\t\t}\r\n\t\tif (this._zoomAnimation) {\r\n\t\t\tthis._zoomAnimation.stop(true);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Cancels \"busy\" status of the Scrollbar.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic makeUnbusy(): void {\r\n\t\t/**\r\n\t\t * We cannot make Scrollbar not busy right after release, because then axes\r\n\t\t * will take over controll and Scrollbar will start to animate.\r\n\t\t * Theorethically, it's not right to set timeout by `animationDuration`,\r\n\t\t * however we can not know all the durations of elements we scroll, so we\r\n\t\t * assume that animation duration will be the same as\r\n\t\t * `interpolationDuration` or `rangeChange` duration.\r\n\t\t */\r\n\t\tthis._unbusyTimeout = this.setTimeout(this.makeUnbusyReal.bind(this), this.animationDuration * 1.1);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * [makeUnbusyReal description]\r\n\t *\r\n\t * @todo Description\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic makeUnbusyReal(): void {\r\n\t\tthis._usingGrip = undefined;\r\n\t\tthis._isBusy = false;\r\n\t\tif (!this.updateWhileMoving) {\r\n\t\t\tthis.dispatchRangeChange();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Disptatches rangechanged event if it really changed\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected dispatchRangeChange() {\r\n\t\tif (this._previousEnd != this.end || this._previousStart != this.start) {\r\n\t\t\tthis._previousStart = this.start;\r\n\t\t\tthis._previousEnd = this.end;\r\n\t\t\tthis.dispatch(\"rangechanged\");\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Updates the \"thumb\" element. A draggable element between the grips.\r\n\t */\r\n\tprotected updateThumb(): void {\r\n\r\n\t\tif (!this.parent) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet thumb: Sprite = this.thumb;\r\n\r\n\t\tlet start: number = this.start;\r\n\t\tlet end: number = this.end;\r\n\r\n\t\tlet startGrip: ResizeButton = this.startGrip;\r\n\t\tlet endGrip: ResizeButton = this.endGrip;\r\n\r\n\t\tif (this.orientation == \"horizontal\") {\r\n\r\n\t\t\tlet innerWidth: number = this.innerWidth;\r\n\r\n\t\t\tthumb.width = innerWidth * (end - start);\r\n\t\t\tthumb.maxX = innerWidth - thumb.pixelWidth;\r\n\t\t\tthumb.x = start * innerWidth;\r\n\r\n\t\t\tstartGrip.moveTo({ x: thumb.pixelX, y: 0 }, undefined, undefined, true); // overrides dragging\r\n\t\t\tendGrip.moveTo({ x: thumb.pixelX + thumb.pixelWidth, y: 0 }, undefined, undefined, true);\r\n\r\n\t\t\tstartGrip.readerTitle = this.language.translate(\r\n\t\t\t\t\"From %1\",\r\n\t\t\t\tundefined,\r\n\t\t\t\tthis.adapter.apply(\"positionValue\", {\r\n\t\t\t\t\tvalue: Math.round(start * 100) + \"%\",\r\n\t\t\t\t\tposition: start\r\n\t\t\t\t}).value\r\n\t\t\t);\r\n\t\t\tstartGrip.readerValueNow = \"\" + Math.round(start * 100);\r\n\t\t\tstartGrip.readerValueText = startGrip.readerTitle;\r\n\r\n\t\t\tendGrip.readerTitle = this.language.translate(\r\n\t\t\t\t\"To %1\",\r\n\t\t\t\tundefined,\r\n\t\t\t\tthis.adapter.apply(\"positionValue\", {\r\n\t\t\t\t\tvalue: Math.round(end * 100) + \"%\",\r\n\t\t\t\t\tposition: end\r\n\t\t\t\t}).value\r\n\t\t\t);\r\n\t\t\tendGrip.readerValueNow = \"\" + Math.round(end * 100);\r\n\t\t\tendGrip.readerValueText = endGrip.readerTitle;\r\n\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet innerHeight: number = this.innerHeight;\r\n\r\n\t\t\tthumb.height = innerHeight * (end - start);\r\n\t\t\tthumb.maxY = innerHeight - thumb.pixelHeight;\r\n\t\t\tthumb.y = (1 - end) * innerHeight;\r\n\r\n\t\t\tstartGrip.moveTo({ x: 0, y: thumb.pixelY + thumb.pixelHeight }, undefined, undefined, true);\r\n\t\t\tendGrip.moveTo({ x: 0, y: thumb.pixelY }, undefined, undefined, true);\r\n\r\n\t\t\tstartGrip.readerTitle = this.language.translate(\r\n\t\t\t\t\"To %1\",\r\n\t\t\t\tundefined,\r\n\t\t\t\tthis.adapter.apply(\"positionValue\", {\r\n\t\t\t\t\tvalue: Math.round((1 - start) * 100) + \"%\",\r\n\t\t\t\t\tposition: (1 - start)\r\n\t\t\t\t}).value\r\n\t\t\t);\r\n\t\t\tstartGrip.readerValueNow = \"\" + Math.round(start * 100);\r\n\t\t\tstartGrip.readerValueText = startGrip.readerTitle;\r\n\r\n\t\t\tendGrip.readerTitle = this.language.translate(\r\n\t\t\t\t\"From %1\",\r\n\t\t\t\tundefined,\r\n\t\t\t\tthis.adapter.apply(\"positionValue\", {\r\n\t\t\t\t\tvalue: Math.round((1 - end) * 100) + \"%\",\r\n\t\t\t\t\tposition: (1 - end)\r\n\t\t\t\t}).value\r\n\t\t\t);\r\n\t\t\tendGrip.readerValueNow = \"\" + Math.round(end * 100);\r\n\t\t\tendGrip.readerValueText = endGrip.readerTitle;\r\n\t\t}\r\n\r\n\t\t// Add accessibility\r\n\t\tthumb.readerTitle = this.language.translate(\r\n\t\t\t\"From %1 to %2\",\r\n\t\t\tundefined,\r\n\t\t\tthis.adapter.apply(\"positionValue\", {\r\n\t\t\t\tvalue: Math.round(start * 100) + \"%\",\r\n\t\t\t\tposition: start\r\n\t\t\t}).value,\r\n\t\t\tthis.adapter.apply(\"positionValue\", {\r\n\t\t\t\tvalue: Math.round(end * 100) + \"%\",\r\n\t\t\t\tposition: end\r\n\t\t\t}).value\r\n\t\t);\r\n\r\n\t\tthumb.readerValueNow = \"\" + Math.round(start * 100);\r\n\t\tthumb.readerValueText = thumb.readerTitle;\r\n\r\n\t\tthis.readerValueNow = \"\" + Math.round(start * 100);\r\n\t\tthis.readerValueText = thumb.readerTitle;\r\n\r\n\t\tif (!this._skipRangeEvents && this.updateWhileMoving) {\r\n\t\t\tthis.dispatchRangeChange();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates extremes of the scrollbar.\r\n\t */\r\n\tprotected updateExtremes(): void {\r\n\t\tlet orientation = this.orientation;\r\n\t\tlet minX: number = 0;\r\n\t\tlet minY: number = 0;\r\n\t\tlet maxX: number = 0;\r\n\t\tlet maxY: number = 0;\r\n\r\n\t\tif (orientation == \"horizontal\") {\r\n\t\t\tmaxX = this.innerWidth;\r\n\t\t\tminY = maxY = this.innerHeight / 2;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tmaxY = this.innerHeight;\r\n\t\t\tminX = maxX = this.innerWidth / 2;\r\n\t\t}\r\n\r\n\t\tlet startGrip: ResizeButton = this.startGrip;\r\n\t\tstartGrip.minX = minX;\r\n\t\tstartGrip.maxX = maxX;\r\n\t\tstartGrip.minY = minY;\r\n\t\tstartGrip.maxY = maxY;\r\n\r\n\t\tlet endGrip: ResizeButton = this.endGrip;\r\n\t\tendGrip.minX = minX;\r\n\t\tendGrip.maxX = maxX;\r\n\t\tendGrip.minY = minY;\r\n\t\tendGrip.maxY = maxY;\r\n\r\n\t\tlet thumb = this.thumb;\r\n\t\tthumb.minX = minX;\r\n\t\tthumb.maxX = maxX;\r\n\t\tthumb.minY = minY;\r\n\t\tthumb.maxY = maxY;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates size of the scrollbar.\r\n\t */\r\n\tprotected updateSize(): void {\r\n\t\tlet orientation = this.orientation;\r\n\r\n\t\tlet startGrip = this.startGrip;\r\n\t\tif (startGrip) {\r\n\t\t\tstartGrip.orientation = orientation;\r\n\t\t}\r\n\t\tif (this.endGrip) {\r\n\t\t\tthis.endGrip.orientation = orientation;\r\n\t\t}\r\n\r\n\t\tlet thumb: Sprite = this.thumb;\r\n\t\tif (thumb) {\r\n\t\t\tif (orientation == \"horizontal\") {\r\n\t\t\t\tif (!$type.isNumber(this._pixelWidth)) {\r\n\t\t\t\t\tif (!(this.width instanceof Percent)) {\r\n\t\t\t\t\t\tthis.width = percent(100);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// this teorethically might be wrong, if user indeed sets height of a horizontal scrollbar in percent\r\n\t\t\t\t// however without this height might be equal to 100% if previous orientation was set to horizontal\r\n\t\t\t\t// so this is ok solution, in case user really wants to have scrollbar height set in percent,\r\n\t\t\t\t// he should do this after orientation.\r\n\t\t\t\tif ($type.hasValue(this.percentHeight)) {\r\n\t\t\t\t\tthis.height = this.minHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthumb.height = this.innerHeight;\r\n\r\n\t\t\t\tthumb.verticalCenter = \"middle\";\r\n\t\t\t\tthumb.horizontalCenter = \"left\";\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (!$type.isNumber(this._pixelHeight)) {\r\n\t\t\t\t\tif (!(this.height instanceof Percent)) {\r\n\t\t\t\t\t\tthis.height = percent(100);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// same as above with percentHeight\r\n\t\t\t\tif ($type.hasValue(this.percentWidth)) {\r\n\t\t\t\t\tthis.width = this.minWidth;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthumb.width = this.innerWidth;\r\n\t\t\t\tthumb.verticalCenter = \"top\";\r\n\t\t\t\tthumb.horizontalCenter = \"middle\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if the Scrollbar is currently \"busy\" (animating and or\r\n\t * performing zoom by user interaction).\r\n\t * @return boolean\r\n\t */\r\n\tpublic get isBusy():boolean{\r\n\t\treturn this._isBusy;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * POSITIONS\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Relative position (0-1) of the start grip.\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t */\r\n\tpublic set start(position: number) {\r\n\t\tif (!this._isBusy) {\r\n\t\t\tthis.__start = position;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Position (0-1)\r\n\t */\r\n\tpublic get start(): number {\r\n\t\treturn Math.min(this.getPosition(this._start), this.getPosition(this._end));\r\n\t}\r\n\r\n\t/**\r\n\t * [__start description]\r\n\t *\r\n\t * @todo Description\r\n\t * @param position [description]\r\n\t */\r\n\tprotected set __start(position: number) {\r\n\t\tthis._start = this.getPosition(position);\r\n\t\tthis.updateThumb();\r\n\t}\r\n\r\n\t/**\r\n\t * @return [description]\r\n\t */\r\n\tprotected get __start(): number {\r\n\t\treturn this._start;\r\n\t}\r\n\r\n\t/**\r\n\t * Relative position (0-1) of the end grip.\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t */\r\n\tpublic set end(position: number) {\r\n\t\tif (!this._isBusy) {\r\n\t\t\tthis.__end = position;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Position (0-1)\r\n\t */\r\n\tpublic get end(): number {\r\n\t\treturn Math.max(this.getPosition(this._start), this.getPosition(this._end));\r\n\t}\r\n\r\n\t/**\r\n\t * [__end description]\r\n\t *\r\n\t * @todo Description\r\n\t * @param position [description]\r\n\t */\r\n\tprotected set __end(position: number) {\r\n\t\tthis._end = this.getPosition(position);\r\n\t\tthis.updateThumb();\r\n\t}\r\n\r\n\t/**\r\n\t * @return [description]\r\n\t */\r\n\tprotected get __end(): number {\r\n\t\treturn this._end;\r\n\t}\r\n\r\n\t/**\r\n\t * Current selection range.\r\n\t *\r\n\t * @readonly\r\n\t * @return Range\r\n\t */\r\n\tpublic get range(): IRange {\r\n\t\treturn { start: this.start, end: this.end, priority: this._usingGrip };\r\n\t}\r\n\r\n\t/**\r\n\t * Disables range change events.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic skipRangeEvents(): void {\r\n\t\tif (!this._isBusy) {\r\n\t\t\tthis._skipRangeEvents = true;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [fixRange description]\r\n\t *\r\n\t * @todo Description\r\n\t * @ignore Exclude from docs\r\n\t * @param range Range\r\n\t */\r\n\tpublic fixRange(range: IRange): void {\r\n\t\tif (range.start != $math.round(this._start, 2) || range.end != $math.round(this._end, 2)) {\r\n\t\t\tthis._start = range.start;\r\n\t\t\tthis._end = range.end;\r\n\r\n\t\t\tthis._skipRangeEvents = true;\r\n\t\t\tthis.updateThumb();\r\n\t\t\tthis._skipRangeEvents = false;\r\n\t\t\tthis.thumb.validate();\r\n\t\t\tthis.thumb.background.validate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [getPosition description]\r\n\t *\r\n\t * @todo Description\r\n\t * @param position [description]\r\n\t * @return [description]\r\n\t */\r\n\tprotected getPosition(position: number): number {\r\n\t\treturn $math.fitToRange($math.round(position, 4), 0, 1);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * MISC\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Orientation of the scrollbar.\r\n\t *\r\n\t * Available options: \"horizontal\" (default) and \"vertical\".\r\n\t *\r\n\t * @default \"horizontal\"\r\n\t * @param value Orientation\r\n\t */\r\n\tpublic set orientation(value: Orientation) {\r\n\r\n\t\tif (this.setPropertyValue(\"orientation\", value)) {\r\n\r\n\t\t\t// Set mouse cursors and screen reader tetxt accordingly\r\n\t\t\tif (value === \"horizontal\") {\r\n\r\n\t\t\t\t// Mouse styles\r\n\t\t\t\tthis.startGrip.cursorOverStyle = MouseCursorStyle.horizontalResize;\r\n\t\t\t\tthis.endGrip.cursorOverStyle = MouseCursorStyle.horizontalResize;\r\n\r\n\t\t\t\t// Reader text\r\n\t\t\t\t/*this.readerTitle = this.language.translate(\"Use TAB to select grip buttons or left and right arrows to change selection\");\r\n\t\t\t\tthis.thumb.readerDescription = this.language.translate(\"Use left and right arrows to move selection\");\r\n\t\t\t\tthis.startGrip.readerDescription = this.language.translate(\"Use left and right arrows to move left selection\");\r\n\t\t\t\tthis.endGrip.readerDescription = this.language.translate(\"Use left and right arrows to move right selection\");*/\r\n\r\n\t\t\t}\r\n\t\t\telse {\r\n\r\n\t\t\t\t// Mouse styles\r\n\t\t\t\tthis.startGrip.cursorOverStyle = MouseCursorStyle.verticalResize;\r\n\t\t\t\tthis.endGrip.cursorOverStyle = MouseCursorStyle.verticalResize;\r\n\r\n\t\t\t\t// Reader text\r\n\t\t\t\t/*this.readerTitle = this.language.translate(\"Use TAB select grip buttons or up and down arrows to change selection\");\r\n\t\t\t\tthis.thumb.readerDescription = this.language.translate(\"Use up and down arrows to move selection\");\r\n\t\t\t\tthis.startGrip.readerDescription = this.language.translate(\"Use up and down arrows to move upper selection\");\r\n\t\t\t\tthis.endGrip.readerDescription = this.language.translate(\"Use up and down arrows to move lower selection\");*/\r\n\r\n\t\t\t}\r\n\t\t\tthis.updateByOrientation();\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected updateByOrientation() {\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @return Orientation\r\n\t */\r\n\tpublic get orientation(): Orientation {\r\n\t\treturn this.getPropertyValue(\"orientation\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * GRIPS\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Start grip element. (button)\r\n\t *\r\n\t * @param button Grip element\r\n\t */\r\n\tpublic set startGrip(button: ResizeButton) {\r\n\t\tif (this._startGrip) {\r\n\t\t\tthis.removeDispose(this._startGrip);\r\n\t\t}\r\n\t\tthis._startGrip = button;\r\n\t\tthis.processGrip(button);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Grip element\r\n\t */\r\n\tpublic get startGrip(): ResizeButton {\r\n\t\treturn this._startGrip;\r\n\t}\r\n\r\n\t/**\r\n\t * End grip element. (button)\r\n\t *\r\n\t * @param button Grip element\r\n\t */\r\n\tpublic set endGrip(button: ResizeButton) {\r\n\t\tif (this._endGrip) {\r\n\t\t\tthis.removeDispose(this._endGrip);\r\n\t\t}\r\n\t\tthis._endGrip = button;\r\n\t\tthis.processGrip(button);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Grip element\r\n\t */\r\n\tpublic get endGrip(): ResizeButton {\r\n\t\treturn this._endGrip;\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates the grip button with properties and events.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param button Grip button\r\n\t */\r\n\tpublic processGrip(button: ResizeButton) {\r\n\t\tbutton.parent = this;\r\n\t\tbutton.isMeasured = false;\r\n\t\tbutton.focusable = true;\r\n\t\tbutton.shouldClone = false;\r\n\r\n\t\t// Set button defaults\r\n\t\t//button.showSystemTooltip = true; // setting this here is not right because we break inheritance\r\n\t\tbutton.zIndex = 100;\r\n\r\n\t\tbutton.events.on(\"drag\", this.handleGripDrag, this, false);\r\n\t\tbutton.events.on(\"dragstop\", this.makeUnbusy, this, false);\r\n\t\tbutton.events.on(\"down\", this.makeBusy, this, false);\r\n\r\n\t\tthis._disposers.push(button);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates positions of related elements after grip element is dragged.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Event\r\n\t */\r\n\tpublic handleGripDrag(event: AMEvent<ResizeButton, ISpriteEvents>[\"drag\"]): void {\r\n\t\tthis.makeBusy();\r\n\r\n\t\tif (event.target === this._startGrip) {\r\n\t\t\tthis._usingGrip = \"start\";\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._usingGrip = \"end\";\r\n\t\t}\r\n\r\n\t\tif (this.orientation == \"horizontal\") {\r\n\t\t\tthis._start = this.startGrip.pixelX / this.innerWidth;\r\n\t\t\tthis._end = this.endGrip.pixelX / this.innerWidth;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._start = 1 - this.startGrip.pixelY / this.innerHeight;\r\n\t\t\tthis._end = 1 - this.endGrip.pixelY / this.innerHeight;\r\n\t\t}\r\n\r\n\t\tthis.updateThumb();\r\n\t}\r\n\r\n\t/**\r\n\t * A \"thumb\" element.\r\n\t *\r\n\t * It's a draggable square space between the grips, that can be used to\r\n\t * pan the selection.\r\n\t *\r\n\t * @param thumb Thumb element\r\n\t */\r\n\tpublic set thumb(thumb: Button) {\r\n\t\tif (thumb) {\r\n\r\n\t\t\tif (this._thumb) {\r\n\t\t\t\tthis.removeDispose(this._thumb);\r\n\t\t\t}\r\n\r\n\t\t\tthis._thumb = thumb;\r\n\t\t\tthumb.parent = this;\r\n\t\t\tthumb.isMeasured = false;\r\n\t\t\tthumb.inert = true;\r\n\t\t\tthumb.draggable = true;\r\n\t\t\tthumb.clickable = true;\r\n\t\t\tthumb.hoverable = true;\r\n\t\t\tthumb.focusable = true;\r\n\t\t\tthumb.shouldClone = false;\r\n\t\t\tthumb.zIndex = 0;\r\n\r\n\t\t\t// TODO remove closures ?\r\n\t\t\t// Add events\r\n\r\n\t\t\t// Add cursor styles to thumb\r\n\t\t\tthumb.cursorOverStyle = MouseCursorStyle.grab;\r\n\t\t\tthumb.cursorDownStyle = MouseCursorStyle.grabbing;\r\n\r\n\t\t\tthumb.events.on(\"dragstart\", this.makeBusy, this, false);\r\n\t\t\tthumb.events.on(\"dragstop\", this.makeUnbusy, this, false);\r\n\t\t\tthumb.events.on(\"positionchanged\", this.handleThumbPosition, this, false);\r\n\t\t\tthumb.events.on(\"sizechanged\", this.handleThumbPosition, this, false);\r\n\t\t\tthumb.events.on(\"doublehit\", this.handleDoubleClick, this, false);\r\n\r\n\t\t\t// Add event for space and ENTER to toggle full zoom out and back\r\n\t\t\t// (same as doubleclick)\r\n\t\t\tthis._disposers.push(getInteraction().body.events.on(\"keyup\", (ev) => {\r\n\t\t\t\tif (keyboard.isKey(ev.event, [\"space\", \"enter\"]) && this.thumb.isFocused) {\r\n\t\t\t\t\tev.event.preventDefault();\r\n\t\t\t\t\tthis.handleDoubleClick();\r\n\t\t\t\t}\r\n\t\t\t}));\r\n\r\n\t\t\tthis._disposers.push(this._thumb);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Thumb element\r\n\t */\r\n\tpublic get thumb(): Button {\r\n\t\tif (!this._thumb) {\r\n\t\t\t// Create scrollbar controls (setters will handle adding disposers)\r\n\t\t\tlet thumb = new Button();\r\n\t\t\tthumb.background.cornerRadius(10, 10, 10, 10);\r\n\t\t\tthumb.padding(0, 0, 0, 0);\r\n\t\t\tthis.thumb = thumb;\r\n\t\t}\r\n\t\treturn this._thumb;\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms-in and out the selection on double-click of the thumb.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic handleDoubleClick(): void {\r\n\r\n\t\tthis.makeBusy();\r\n\r\n\t\tlet newStart: number = 0;\r\n\t\tlet newEnd: number = 1;\r\n\r\n\t\tif (this.start != 0 || this.end != 1) {\r\n\t\t\tthis._prevStart = this.start;\r\n\t\t\tthis._prevEnd = this.end;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tnewStart = this._prevStart;\r\n\t\t\tnewEnd = this._prevEnd;\r\n\t\t}\r\n\r\n\t\tlet zoomAnimation = this.animate([{ property: \"__start\", to: newStart }, { property: \"__end\", to: newEnd }], this.animationDuration, this.animationEasing);\r\n\r\n\t\tif (zoomAnimation && !zoomAnimation.isFinished()) {\r\n\t\t\tzoomAnimation.events.on(\"animationended\", this.makeUnbusy, this, false);\r\n\t\t\tthis._zoomAnimation = zoomAnimation;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.makeUnbusy();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates positions of other elements when thumb is moved.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic handleThumbPosition(): void {\r\n\t\tlet thumb = this.thumb;\r\n\t\tif (this.orientation == \"horizontal\") {\r\n\t\t\tlet innerWidth = this.innerWidth;\r\n\t\t\tlet w = thumb.innerWidth;\r\n\t\t\tlet x = thumb.pixelX;\r\n\r\n\t\t\tthis._start = x / innerWidth;\r\n\t\t\tthis._end = (x + w) / innerWidth;\r\n\t\t\tthis.updateThumb();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet innerHeight = this.innerHeight;\r\n\t\t\tlet h = thumb.innerHeight;\r\n\t\t\tlet y = thumb.pixelY;\r\n\r\n\t\t\tthis._start = 1 - (y + h) / innerHeight;\r\n\t\t\tthis._end = 1 - y / innerHeight;\r\n\t\t\tthis.updateThumb();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a background element for the scrollbar.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Background\r\n\t */\r\n\tpublic createBackground(): this[\"_background\"] {\r\n\t\treturn new RoundedRectangle();\r\n\t}\r\n\r\n\t/**\r\n\t * Use this property to set whether grips should be always visible (`false`),\r\n\t * or they should just appear on scrollbar hover (`true`).\r\n\t *\r\n\t * @param value Show only on hover?\r\n\t */\r\n\tpublic set hideGrips(value: boolean) {\r\n\r\n\t\tthis._hideGrips = value;\r\n\r\n\t\tif (this._overDisposer) {\r\n\t\t\tthis.removeDispose(this._overDisposer);\r\n\t\t}\r\n\t\tif (this._outDisposer) {\r\n\t\t\tthis.removeDispose(this._outDisposer);\r\n\t\t}\r\n\r\n\t\tif (value) {\r\n\t\t\tthis._overDisposer = this.events.on(\"over\", () => {\r\n\t\t\t\tthis.startGrip.show();\r\n\t\t\t\tthis.endGrip.show();\r\n\t\t\t}, undefined, false)\r\n\t\t\tthis._outDisposer = this.events.on(\"out\", () => {\r\n\t\t\t\tthis.startGrip.hide();\r\n\t\t\t\tthis.endGrip.hide();\r\n\t\t\t}, undefined, false)\r\n\t\t\tthis.startGrip.hide();\r\n\t\t\tthis.endGrip.hide();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.startGrip.show();\r\n\t\t\tthis.endGrip.show();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Show only on hover?\r\n\t */\r\n\tpublic get hideGrips(): boolean {\r\n\t\treturn this._hideGrips;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Duration in milliseconds of scrollbar animation (happens when user clicks on a background of a scrollbar)\r\n\t * @default 0\r\n\t * @param value number\r\n\t */\r\n\tpublic set animationDuration(value: number) {\r\n\t\tthis.setPropertyValue(\"animationDuration\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Orientation\r\n\t */\r\n\tpublic get animationDuration(): number {\r\n\t\treturn this.getPropertyValue(\"animationDuration\");\r\n\t}\r\n\r\n\t/**\r\n\t * Animation easing function.\r\n\t * @todo: review description and default\r\n\t * @default $ease.cubicOut\r\n\t * @param value (value: number) => number\r\n\t */\r\n\tpublic set animationEasing(value: (value: number) => number) {\r\n\t\tthis.setPropertyValue(\"animationEasing\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return {Function}\r\n\t */\r\n\tpublic get animationEasing(): (value: number) => number {\r\n\t\treturn this.getPropertyValue(\"animationEasing\");\r\n\t}\r\n\r\n\t/**\r\n\t * Adds easing functions to \"function\" fields.\r\n\t *\r\n\t * @param field Field name\r\n\t * @return Assign as function?\r\n\t */\r\n\tprotected asFunction(field: string): boolean {\r\n\t\treturn field == \"animationEasing\" || super.asIs(field);\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Scrollbar\"] = Scrollbar;\r\n","/**\r\n * Slice module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container, IContainerProperties, IContainerAdapters, IContainerEvents } from \"../Container\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport { Percent } from \"../utils/Percent\";\r\nimport { IRectangle } from \"../defs/IRectangle\";\r\nimport { RadialGradient } from \"../rendering/fills/RadialGradient\";\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Slice]].\r\n */\r\nexport interface ISliceProperties extends IContainerProperties {\r\n\r\n\t/**\r\n\t * Radius of the slice in pixels.\r\n\t */\r\n\tradius?: number;\r\n\r\n\t/**\r\n\t * Vertical radius for creating skewed slices.\r\n\t *\r\n\t * This is relevant to `radius`, e.g. 0.5 will set vertical radius to half\r\n\t * the `radius`.\r\n\t */\r\n\tradiusY?: number;\r\n\r\n\t/**\r\n\t * Inner radius of the slice for creating cut out (donut) slices, in px or %\r\n\t */\r\n\tinnerRadius?: number | Percent;\r\n\r\n\t/**\r\n\t * The angle at which left edge of the slice is drawn. (0-360)\r\n\t *\r\n\t * 0 is to the right of the center.\r\n\t */\r\n\tstartAngle?: number;\r\n\r\n\t/**\r\n\t * [arc description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tarc?: number;\r\n\r\n\t/**\r\n\t * [shiftRadius description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tshiftRadius?: number;\r\n\r\n\t/**\r\n\t * Radius of slice's outer corners in pixels.\r\n\t *\r\n\t * @default 0\r\n\t */\r\n\tcornerRadius?: number;\r\n\r\n\t/**\r\n\t * Radius of slice's inner corners in pixels.\r\n\t *\r\n\t * @default 0\r\n\t */\r\n\tinnerCornerRadius?: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[Slice]].\r\n */\r\nexport interface ISliceEvents extends IContainerEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Slice]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ISliceAdapters extends IContainerAdapters, ISliceProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Draws a wedged semi-circle - slice. Usually used for Pie/Donut charts.\r\n *\r\n * @see {@link ISliceEvents} for a list of available events\r\n * @see {@link ISliceAdapters} for a list of available Adapters\r\n */\r\nexport class Slice extends Container {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ISliceProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ISliceAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ISliceEvents;\r\n\r\n\t/**\r\n\t * Main slice element.\r\n\t *\r\n\t * Slice itself is a [[Container]] so that [[Slice3D]] could extend it and\r\n\t * add 3D elements to it.\r\n\t */\r\n\tpublic slice: Sprite;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"Slice\";\r\n\r\n\t\t// Set defaults\r\n\t\tthis.setPropertyValue(\"cornerRadius\", 0);\r\n\t\tthis.setPropertyValue(\"startAngle\", 0);\r\n\t\tthis.setPercentProperty(\"innerRadius\", 0);\r\n\t\tthis.setPercentProperty(\"radius\", 0);\r\n\t\tthis.setPropertyValue(\"arc\", 0);\r\n\t\tthis.setPropertyValue(\"shiftRadius\", 0);\r\n\t\tthis.strokeOpacity = 1;\r\n\t\tthis.setPropertyValue(\"layout\", \"none\");\r\n\r\n\t\t// Create a slice wedge element\r\n\t\tthis.slice = this.createChild(Sprite);\r\n\t\tthis.slice.isMeasured = false;\r\n\r\n\t\tthis._disposers.push(this.slice);\r\n\r\n\t\t//this.element.attr({ \"stroke-linejoin\": \"round\" });\r\n\t\t//this.element.attr({ \"stroke-linecap\": \"round\" });\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tsuper.draw();\r\n\t\tlet radiusY = this.radiusY;\r\n\t\tif(this.radius > 0 && radiusY == 0){\r\n\t\t\tradiusY = 0.01;\r\n\t\t}\r\n\t\tthis.slice.path = $path.arc(this.startAngle, this.arc, this.radius, this.pixelInnerRadius, radiusY, this.cornerRadius, this.innerCornerRadius);\r\n\t\tthis.slice.invalidate();\r\n\t\tthis.shiftRadius = this.shiftRadius;\r\n\r\n\t\tif (this.realFill instanceof RadialGradient) {\r\n\t\t\tthis.updateGradient(this.realFill);\r\n\t\t}\r\n\t\tif (this.realStroke instanceof RadialGradient) {\r\n\t\t\tthis.updateGradient(this.realStroke);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected updateGradient(gradient: RadialGradient) {\r\n\t\tgradient.element.attr({ \"gradientUnits\": \"userSpaceOnUse\" });\r\n\t\tgradient.element.attr({ \"r\": this.radius });\r\n\t\tgradient.cx = 0;\r\n\t\tgradient.cy = 0;\r\n\t\tgradient.element.attr({ radius: this.radius });\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t * Returns bounding box (square) for this element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic get bbox(): IRectangle {\r\n\t\tif (this.definedBBox) {\r\n\t\t\treturn this.definedBBox;\r\n\t\t}\r\n\r\n\t\tif (this.isMeasured) {\r\n\t\t\tlet innerRect = $math.getArcRect(this.startAngle, this.startAngle + this.arc, this.pixelInnerRadius);\r\n\t\t\tlet outerRect = $math.getArcRect(this.startAngle, this.startAngle + this.arc, this.radius);\r\n\t\t\treturn $math.getCommonRectangle([innerRect, outerRect]);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn { x: 0, y: 0, width: 0, height: 0 };\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * The angle at which left edge of the slice is drawn. (0-360)\r\n\t *\r\n\t * 0 is to the right of the center.\r\n\t *\r\n\t * @param value Angle (0-360)\r\n\t */\r\n\tpublic set startAngle(value: number) {\r\n\t\tthis.setPropertyValue(\"startAngle\", $math.normalizeAngle(value), true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Angle (0-360)\r\n\t */\r\n\tpublic get startAngle(): number {\r\n\t\treturn this.getPropertyValue(\"startAngle\");\r\n\t}\r\n\r\n\t/**\r\n\t * [arc description]\r\n\t *\r\n\t * @todo Description\r\n\t * @param value [description]\r\n\t */\r\n\tpublic set arc(value: number) {\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = 0;\r\n\t\t}\r\n\t\tthis.setPropertyValue(\"arc\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return [description]\r\n\t */\r\n\tpublic get arc(): number {\r\n\t\treturn this.getPropertyValue(\"arc\");\r\n\t}\r\n\r\n\t/**\r\n\t * Radius of the slice in pixels.\r\n\t *\r\n\t * @param value Radius (px)\r\n\t */\r\n\tpublic set radius(value: number) {\r\n\t\tthis.setPropertyValue(\"radius\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Radius (px)\r\n\t */\r\n\tpublic get radius(): number {\r\n\t\tlet radius: number = this.getPropertyValue(\"radius\");\r\n\t\tif (!$type.isNumber(radius)) {\r\n\t\t\tradius = 0;\r\n\t\t}\r\n\t\treturn radius;\r\n\t}\r\n\r\n\t/**\r\n\t * Vertical radius for creating skewed slices.\r\n\t *\r\n\t * This is relevant to `radius`, e.g. 0.5 will set vertical radius to half\r\n\t * the `radius`.\r\n\t *\r\n\t * @param value Vertical radius (0-1)\r\n\t */\r\n\tpublic set radiusY(value: number) {\r\n\t\tthis.setPropertyValue(\"radiusY\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Vertical radius (0-1)\r\n\t */\r\n\tpublic get radiusY(): number {\r\n\t\tlet value: number = this.getPropertyValue(\"radiusY\");\r\n\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = this.radius;\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Inner radius of the slice for creating cut out (donut) slices.\r\n\t *\r\n\t * @default 0\r\n\t * @param value Radius (px or %)\r\n\t */\r\n\tpublic set innerRadius(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Radius (px or %)\r\n\t */\r\n\tpublic get innerRadius(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"innerRadius\");\r\n\t}\r\n\r\n\t/**\r\n\t * @return Radius px\r\n\t */\r\n\tpublic get pixelInnerRadius(): number {\r\n\t\treturn $utils.relativeToValue(this.innerRadius, this.radius);\r\n\t}\r\n\r\n\t/**\r\n\t * Radius of slice's outer corners in pixels.\r\n\t *\r\n\t * @default 0\r\n\t * @param value Radius (px)\r\n\t */\r\n\tpublic set cornerRadius(value: number) {\r\n\t\tthis.setPropertyValue(\"cornerRadius\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Radius (px)\r\n\t */\r\n\tpublic get cornerRadius(): number {\r\n\t\treturn this.getPropertyValue(\"cornerRadius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Radius of slice's inner corners in pixels.\r\n\t *\r\n\t * @default 0\r\n\t * @param value Radius (px)\r\n\t */\r\n\tpublic set innerCornerRadius(value: number) {\r\n\t\tthis.setPropertyValue(\"innerCornerRadius\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Radius (px)\r\n\t */\r\n\tpublic get innerCornerRadius(): number {\r\n\t\treturn this.getPropertyValue(\"innerCornerRadius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates how far (relatively to center) a slice should be moved.\r\n\t *\r\n\t * The value is relative to the radius of the slice. Meaning 0 no shift,\r\n\t * 1 - slice shifted outside by whole of its radius.\r\n\t *\r\n\t * @param value Radius shift\r\n\t */\r\n\tpublic set shiftRadius(value: number) {\r\n\t\tthis.setPropertyValue(\"shiftRadius\", value);\r\n\t\tthis.dx = value * this.radius * this.ix;\r\n\t\tthis.dy = value * this.radiusY * this.iy;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Radius shift\r\n\t */\r\n\tpublic get shiftRadius(): number {\r\n\t\treturn this.getPropertyValue(\"shiftRadius\");\r\n\t}\r\n\r\n\t/**\r\n\t * [ix description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @return [description]\r\n\t */\r\n\tpublic get ix(): number {\r\n\t\treturn $math.cos(this.middleAngle);\r\n\t}\r\n\r\n\t/**\r\n\t * [iy description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @return [description]\r\n\t */\r\n\tpublic get iy(): number {\r\n\t\tif (this.radius > 0) {\r\n\t\t\treturn $math.sin(this.middleAngle);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn $math.sin(this.middleAngle);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * An angle of the slice's middle.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Angle\r\n\t */\r\n\tpublic get middleAngle(): number {\r\n\t\treturn this.startAngle + this.arc / 2;\r\n\t}\r\n\r\n\t/**\r\n\t * X coordinate for the slice tooltip.\r\n\t *\r\n\t * @return X\r\n\t */\r\n\tpublic getTooltipX(): number {\r\n\t\tlet value = this.getPropertyValue(\"tooltipX\");\r\n\r\n\t\tif($type.isNumber(value)){\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\tlet p = 0.5;\r\n\t\tif(value instanceof Percent){\r\n\t\t\tp = value.value;\r\n\t\t}\r\n\t\tlet innerRadius = $utils.relativeToValue(this.innerRadius, this.radius);\r\n\t\treturn this.ix * (innerRadius + (this.radius - innerRadius) * p);\r\n\t}\r\n\r\n\t/**\r\n\t * Y coordinate for the slice tooltip.\r\n\t *\r\n\t * @return Y\r\n\t */\r\n\tpublic getTooltipY(): number {\r\n\t\tlet value = this.getPropertyValue(\"tooltipY\");\r\n\r\n\t\tif($type.isNumber(value)){\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\tlet p = 0.5;\r\n\t\tif(value instanceof Percent){\r\n\t\t\tp = value.value;\r\n\t\t}\r\n\t\tlet innerRadius = $utils.relativeToValue(this.innerRadius, this.radius);\r\n\t\treturn this.iy * (innerRadius + (this.radius - innerRadius) * p) + this.slice.dy;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Slice\"] = Slice;\r\n","/**\r\n * A module that defines Text element used to indicate links.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Label, ILabelProperties, ILabelAdapters, ILabelEvents } from \"../../core/elements/Label\";\r\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { registry } from \"../Registry\";\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[TextLink]].\r\n */\r\nexport interface ITextLinkProperties extends ILabelProperties { }\r\n\r\n/**\r\n * Defines events for [[TextLink]].\r\n */\r\nexport interface ITextLinkEvents extends ILabelEvents { }\r\n\r\n/**\r\n * Defines adapters for [[TextLink]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ITextLinkAdapters extends ILabelAdapters, ITextLinkProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates a text element with a link.\r\n *\r\n * @see {@link ITextLinkEvents} for a list of available events\r\n * @see {@link ITextLinkAdapters} for a list of available Adapters\r\n */\r\nexport class TextLink extends Label {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ITextLinkProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ITextLinkAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ITextLinkEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.className = \"TextLink\";\r\n\t\tthis.selectable = true;\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\r\n\t\tthis.fill = interfaceColors.getFor(\"primaryButton\").brighten(0.3);\r\n\r\n\t\tlet hoverState = this.states.create(\"hover\");\r\n\t\thoverState.properties.fill = interfaceColors.getFor(\"primaryButtonHover\").brighten(0.3);\r\n\r\n\t\tlet downState = this.states.create(\"down\");\r\n\t\tdownState.properties.fill = interfaceColors.getFor(\"primaryButtonDown\").brighten(0.3);\r\n\r\n\t\tthis.cursorOverStyle = MouseCursorStyle.pointer;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"TextLink\"] = TextLink;\r\n","/**\r\n * Provides functionality used to creating and showing tooltips (balloons).\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container, IContainerProperties, IContainerAdapters, IContainerEvents } from \"../Container\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { PointedRectangle } from \"./PointedRectangle\";\r\nimport { IPoint } from \"../defs/IPoint\";\r\nimport { Label } from \"../elements/Label\";\r\nimport { Animation } from \"../utils/Animation\";\r\nimport { color } from \"../utils/Color\";\r\nimport { DropShadowFilter } from \"../rendering/filters/DropShadowFilter\";\r\nimport { IRectangle } from \"../defs/IRectangle\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $ease from \"../utils/Ease\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Represents options for tooltip pointer (arrow) orientation.\r\n */\r\nexport type PointerOrientation = \"horizontal\" | \"vertical\" | \"left\" | \"right\" | \"up\" | \"down\";\r\n\r\n/**\r\n * Defines properties for [[Tooltip]].\r\n */\r\nexport interface ITooltipProperties extends IContainerProperties {\r\n\r\n\t/**\r\n\t * Pointer orientation: \"horizontal\", \"vertical\", \"left\", \"right\", \"up\", \"down\".\r\n\t *\r\n\t * @default \"vertical\"\r\n\t */\r\n\tpointerOrientation?: PointerOrientation;\r\n\r\n\t/**\r\n\t * Duration (ms) that takes for a Tooltip to move from one place to another.\r\n\t *\r\n\t * If set to a zero value, the Tooltop will jump to a new location\r\n\t * instantenously.\r\n\t *\r\n\t * If set to a non-zero value, the Tooltip will \"glide\" to a new location at\r\n\t * a speed determined by this setting.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n\t */\r\n\tanimationDuration?: number;\r\n\r\n\t/**\r\n\t * An easing function to use when animating Tooltip position.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n\t */\r\n\tanimationEasing?: (value: number) => number;\r\n\r\n\t/**\r\n\t * Specifies if tooltip background should get stroke color from the sprite\r\n\t * it is pointing to.\r\n\t */\r\n\tgetStrokeFromObject?: boolean;\r\n\r\n\t/**\r\n\t * Specifies if tooltip background should get fill color from the sprite it\r\n\t * is pointing to.\r\n\t */\r\n\tgetFillFromObject?: boolean;\r\n\r\n\t/**\r\n\t * Specifies if text color should be chosen automatically for a better\r\n\t * readability.\r\n\t */\r\n\tautoTextColor?: boolean;\r\n\r\n\t/**\r\n\t * If this tooltip is displayed on hover on some other object, keep that\r\n\t * element hovered if hovering on the tooltip.\r\n\t *\r\n\t * @since 4.1.13\r\n\t */\r\n\tkeepTargetHover?: boolean;\r\n\r\n\t/**\r\n\t * Normally, a tooltip will hide itself if it is pointing to a coordinate\r\n\t * that is outside viewport.\r\n\t *\r\n\t * Setting this setting to `true` will override that and make tooltip\r\n\t * appear next to the viewport edge closest to the target point.\r\n\t *\r\n\t * @since 4.5.7\r\n\t */\r\n\tshowInViewport?: boolean\r\n}\r\n\r\n/**\r\n * Defines events for [[Tooltip]].\r\n */\r\nexport interface ITooltipEvents extends IContainerEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Tooltip]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ITooltipAdapters extends IContainerAdapters, ITooltipProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Tooltip displays text and/or multimedia information in a balloon over chart\r\n * area.\r\n * @see {@link ITooltipEvents} for a list of available events\r\n * @see {@link ITooltipAdapters} for a list of available Adapters\r\n */\r\nexport class Tooltip extends Container {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ITooltipProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ITooltipAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ITooltipEvents;\r\n\r\n\t/**\r\n\t * A type for the background element.\r\n\t */\r\n\tpublic _background: PointedRectangle;\r\n\r\n\t/**\r\n\t * Text element that represents tooltip contents.\r\n\t */\r\n\tpublic label: Label;\r\n\r\n\t/**\r\n\t * A container that should be considered a \"boundary\" for the tooltip. A\r\n\t * bounding container is used to calculate numeric boundaries\r\n\t * (`boundingRect`). It is used to constrain the Tooltip to specific area on\r\n\t * the chart, like for example cursor tooltip in plot area.\r\n\t */\r\n\tprotected _boundingContainer: Container;\r\n\r\n\t/**\r\n\t * Holds numeric boundary values. Calculated from the `boundingContainer`.\r\n\t * @ignore\r\n\t */\r\n\tpublic _boundingRect: IRectangle = { x: -40000, y: -40000, width: 80000, height: 80000 };\r\n\r\n\t/**\r\n\t * Coordinates tooltip's pointer (stem) should point to.\r\n\t */\r\n\tprotected _pointTo: IPoint = { x: 0, y: 0 };\r\n\r\n\t/**\r\n\t * If set to `true` the pointer/stem of the Tooltip will not go outside\r\n\t * Tooltip's width or height depending on pointer's orientation.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tpublic fitPointerToBounds: boolean = false;\r\n\r\n\t/**\r\n\t * If `tooltipOrientation` is vertical, it can be drawn below or above point\r\n\t * We need to know this when solving overlapping.\r\n\t */\r\n\tprotected _verticalOrientation: \"up\" | \"down\" = \"up\";\r\n\r\n\t/**\r\n\t * Position animation of a tooltip\r\n\t */\r\n\tprotected _animation: $type.Optional<Animation>;\r\n\r\n\t/**\r\n\t * A [[Sprite]] element this tooltip is displayed for, if any.\r\n\t *\r\n\t * @since 4.1.13\r\n\t */\r\n\tpublic targetSprite: $type.Optional<Sprite>;\r\n\r\n\t/**\r\n\t * reference to a sprite which now shows this tooltip instance.\r\n\t */\r\n\tpublic currentSprite:Sprite;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"Tooltip\";\r\n\t\tthis.isMeasured = false;\r\n\r\n\t\tthis.getFillFromObject = true;\r\n\t\tthis.margin(5, 5, 5, 5);\r\n\r\n\t\tthis.defaultState.transitionDuration = 1;\r\n\t\tthis.hiddenState.transitionDuration = 1;\r\n\r\n\t\t// Create chrome/background\r\n\t\tlet background = this.background;\r\n\t\tbackground.interactionsEnabled = false;\r\n\t\tbackground.fillOpacity = 0.9;\r\n\t\tbackground.strokeWidth = 1;\r\n\t\tbackground.strokeOpacity = 1;\r\n\t\tbackground.stroke = color(\"#ffffff\");\r\n\t\tbackground.cornerRadius = 3;\r\n\t\tbackground.pointerLength = 6;\r\n\t\tbackground.pointerBaseWidth = 10;\r\n\r\n\t\tlet dropShadow = new DropShadowFilter();\r\n\t\tdropShadow.dy = 1;\r\n\t\tdropShadow.dx = 1;\r\n\t\tdropShadow.opacity = 0.5;\r\n\t\tbackground.filters.push(dropShadow);\r\n\r\n\t\tthis.autoTextColor = true;\r\n\r\n\t\t// Create text element\r\n\t\tlet label = this.createChild(Label);\r\n\t\tlabel.shouldClone = false;\r\n\t\tthis.label = label;\r\n\t\tlabel.padding(7, 12, 4, 12);\r\n\t\tlabel.interactionsEnabled = false;\r\n\t\tlabel.horizontalCenter = \"middle\";\r\n\t\tlabel.fill = color(\"#ffffff\");\r\n\t\tthis._disposers.push(label);\r\n\r\n\t\tthis.label.events.on(\"sizechanged\", this.drawBackground, this);\r\n\r\n\t\tthis.label.zIndex = 1; // @todo remove this line when bg sorting is solved\r\n\r\n\t\t// Set defaults\r\n\t\tthis.pointerOrientation = \"vertical\";\r\n\r\n\t\tthis.animationDuration = 0;\r\n\t\tthis.animationEasing = $ease.cubicOut;\r\n\r\n\t\tthis.setPropertyValue(\"showInViewport\", false);\r\n\r\n\t\t// Set accessibility options\r\n\t\tthis.role = \"tooltip\";\r\n\r\n\t\tthis.visible = false;\r\n\t\tthis.opacity = 0;\r\n\r\n\t\tthis.x = 0;\r\n\t\tthis.y = 0;\r\n\r\n\t\tthis.events.on(\"visibilitychanged\", this.handleVisibility, this);\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\tprotected handleVisibility() {\r\n\t\tif (this.visible) {\r\n\t\t\tthis.label.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Specifies if tooltip background should get stroke color from the sprite it is pointing to.\r\n\t *\r\n\t * @return {boolean}\r\n\t * @default false\r\n\t */\r\n\tpublic get getStrokeFromObject(): boolean {\r\n\t\treturn this.getPropertyValue(\"getStrokeFromObject\");\r\n\t}\r\n\r\n\t/**\r\n\t * Specifies if tooltip background should get stroke color from the sprite it is pointing to.\r\n\t *\r\n\t * @param value boolean\r\n\t */\r\n\tpublic set getStrokeFromObject(value: boolean) {\r\n\t\tthis.setPropertyValue(\"getStrokeFromObject\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * Specifies if text color should be chosen automatically for a better\r\n\t * readability.\r\n\t *\r\n\t * IMPORTANT: this feature is generally ignored, if `getFillFromObject = false`.\r\n\t *\r\n\t * If inheriting of `fill` color from object tooltip is displayed for is\r\n\t * disabled, this feature will not work. If you are explicitly setting a\r\n\t * color for tooltip background, you may set a color for its label as well\r\n\t * using `tooltip.label.fill` property.\r\n\t *\r\n\t *\r\n\t * @param value boolean\r\n\t */\r\n\tpublic set autoTextColor(value: boolean) {\r\n\t\tthis.setPropertyValue(\"autoTextColor\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return {boolean}\r\n\t */\r\n\tpublic get autoTextColor(): boolean {\r\n\t\treturn this.getPropertyValue(\"autoTextColor\");\r\n\t}\r\n\r\n\t/**\r\n\t * If this tooltip is displayed on hover on some other object, keep that\r\n\t * element hovered if hovering on the tooltip.\r\n\t *\r\n\t * @default false\r\n\t * @since 4.1.13\r\n\t * @param value Keep target hovered?\r\n\t */\r\n\tpublic set keepTargetHover(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"keepTargetHover\", value, true)) {\r\n\t\t\tif (value) {\r\n\t\t\t\tthis.hoverable = true;\r\n\t\t\t\tthis.background.interactionsEnabled = true;\r\n\t\t\t\tthis._disposers.push(this.events.on(\"over\", (ev) => {\r\n\t\t\t\t\tif (this.targetSprite && this.targetSprite.hoverable) {\r\n\t\t\t\t\t\tthis.targetSprite.isHover = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}));\r\n\r\n\t\t\t\tthis._disposers.push(this.events.on(\"out\", (ev) => {\r\n\t\t\t\t\tif (this.targetSprite && this.targetSprite.hoverable) {\r\n\t\t\t\t\t\t//this.hideTooltip();\r\n\t\t\t\t\t\t//this.targetSprite.handleOut();\r\n\t\t\t\t\t\tthis.targetSprite.isHover = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Normally, a tooltip will hide itself if it is pointing to a coordinate\r\n\t * that is outside viewport.\r\n\t *\r\n\t * Setting this setting to `true` will override that and make tooltip\r\n\t * appear next to the viewport edge closest to the target point.\r\n\t *\r\n\t * @default false\r\n\t * @since 4.5.7\r\n\t * @param value Force showing tooltip?\r\n\t */\r\n\tpublic set showInViewport(value: boolean) {\r\n\t\tthis.setPropertyValue(\"showInViewport\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Force showing tooltip?\r\n\t */\r\n\tpublic get showInViewport(): boolean {\r\n\t\treturn this.getPropertyValue(\"showInViewport\");\r\n\t}\r\n\r\n\t/**\r\n\t * @return Keep target hovered?\r\n\t */\r\n\tpublic get keepTargetHover(): boolean {\r\n\t\treturn this.getPropertyValue(\"keepTargetHover\");\r\n\t}\r\n\r\n\t/**\r\n\t * Specifies if tooltip background should get fill color from the sprite it is pointing to.\r\n\t *\r\n\t * @return {boolean}\r\n\t * @default true\r\n\t */\r\n\tpublic get getFillFromObject(): boolean {\r\n\t\treturn this.getPropertyValue(\"getFillFromObject\");\r\n\t}\r\n\r\n\t/**\r\n\t * @param value boolean\r\n\t */\r\n\tpublic set getFillFromObject(value: boolean) {\r\n\t\tthis.setPropertyValue(\"getFillFromObject\", value, true);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Creates and returns a background element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Background\r\n\t */\r\n\tpublic createBackground(): this[\"_background\"] {\r\n\t\treturn new PointedRectangle();\r\n\t}\r\n\r\n\t/**\r\n\t * Pointer orientation: `\"horizontal\"`, `\"vertical\"`, `\"up\"`, `\"down\"`,\r\n\t * `\"right\"`, or `\"left\"`.\r\n\t *\r\n\t * Options`\"horizontal\"` or `\"vertical\"` are location-aware, meaning they\r\n\t * will change position of the Tooltip based on the target point's position\r\n\t * in relation to chart center.\r\n\t *\r\n\t * Options `\"up\"`, `\"down\"`, `\"right\"`, `\"left\"` are static and will point\r\n\t * in the specified direction regardless of the position, even if that means\r\n\t * going out of chart/screen bounds.\r\n\t *\r\n\t * IMPORTANT: in some situations, like having multiple tooltips stacked for\r\n\t * multiple series, the `\"up\"` and `\"down\"` values might be ignored in order\r\n\t * to make tooltip overlap algorithm work.\r\n\t *\r\n\t * @default \"vertical\"\r\n\t * @param value Orientation\r\n\t */\r\n\tpublic set pointerOrientation(value: PointerOrientation) {\r\n\t\tthis.setPropertyValue(\"pointerOrientation\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Orientation\r\n\t */\r\n\tpublic get pointerOrientation(): PointerOrientation {\r\n\t\treturn this.getPropertyValue(\"pointerOrientation\");\r\n\t}\r\n\r\n\t/**\r\n\t * Duration in milliseconds for the animation to take place when the tooltip\r\n\t * is moving from one place to another.\r\n\t *\r\n\t * @default 0\r\n\t * @param value number\r\n\t */\r\n\tpublic set animationDuration(value: number) {\r\n\t\tthis.setPropertyValue(\"animationDuration\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Orientation\r\n\t */\r\n\tpublic get animationDuration(): number {\r\n\t\treturn this.getPropertyValue(\"animationDuration\");\r\n\t}\r\n\r\n\t/**\r\n\t * Tooltip animation (moving from one place to another) easing function.\r\n\t *\r\n\t * @default $ease.cubicOut\r\n\t * @param value (value: number) => number\r\n\t */\r\n\tpublic set animationEasing(value: (value: number) => number) {\r\n\t\tthis.setPropertyValue(\"animationEasing\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return {Function}\r\n\t */\r\n\tpublic get animationEasing(): (value: number) => number {\r\n\t\treturn this.getPropertyValue(\"animationEasing\");\r\n\t}\r\n\r\n\t/**\r\n\t * HTML content for the Tooltip.\r\n\t *\r\n\t * Provided value will be used as is, without applying any further\r\n\t * formatting to it.\r\n\t *\r\n\t * @param value HTML content\r\n\t */\r\n\tpublic set html(value: string) {\r\n\t\tif (this.label.html != value) {\r\n\t\t\tthis.label.html = value;\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return HTML content\r\n\t */\r\n\tpublic get html(): string {\r\n\t\treturn this.label.html;\r\n\t}\r\n\r\n\t/**\r\n\t * SVG text content for the Tooltip.\r\n\t *\r\n\t * Text can have a number of formatting options supported by\r\n\t * [[TextFormatter]].\r\n\t *\r\n\t * @param value SVG text\r\n\t */\r\n\tpublic set text(value: string) {\r\n\t\tif (this.label.text != value) {\r\n\t\t\tthis.label.text = value;\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return SVG text\r\n\t */\r\n\tpublic get text(): string {\r\n\t\treturn this.label.text;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates the Tooltip.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tsuper.draw();\r\n\r\n\t\tlet label = this.label;\r\n\r\n\t\tif (label.invalid) {\r\n\t\t\tlabel.validate();\r\n\t\t}\r\n\r\n\t\tlet x: number = this._pointTo.x;\r\n\t\tlet y: number = this._pointTo.y;\r\n\r\n\t\tlet boundingRect: IRectangle = this._boundingRect;\r\n\r\n\t\tlet textW: number = label.measuredWidth;\r\n\t\tlet textH: number = label.measuredHeight;\r\n\r\n\t\tlet pointerLength = this.background.pointerLength;\r\n\r\n\t\tlet textX: number;\r\n\t\tlet textY: number;\r\n\r\n\t\t// try to handle if text is wider than br\r\n\t\tif (textW > boundingRect.width) {\r\n\t\t\t// TODO maybe this isn't needed ?\r\n\t\t\t$utils.spritePointToDocument({ x: boundingRect.x, y: boundingRect.y }, this.parent);\r\n\t\t\tlet p1 = $utils.spritePointToDocument({ x: boundingRect.x + boundingRect.width, y: boundingRect.y + boundingRect.height }, this.parent);\r\n\r\n\t\t\tlet documentWidth = document.body.offsetWidth;\r\n\t\t\t// TODO maybe this isn't needed ?\r\n\t\t\t$utils.used(document.body.offsetHeight);\r\n\r\n\t\t\tif (p1.x > documentWidth / 2) {\r\n\t\t\t\tboundingRect.x = boundingRect.width - textW;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tboundingRect.width = boundingRect.x + textW;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet pointerOrientation = this.pointerOrientation;\r\n\r\n\t\t// horizontal\r\n\t\tif (pointerOrientation == \"horizontal\" || pointerOrientation == \"left\" || pointerOrientation == \"right\") {\r\n\t\t\ttextY = - textH / 2;\r\n\t\t\tif (pointerOrientation == \"horizontal\") {\r\n\t\t\t\tif (x > boundingRect.x + boundingRect.width / 2) {\r\n\t\t\t\t\ttextX = - textW / 2 - pointerLength;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\ttextX = textW / 2 + pointerLength;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (pointerOrientation == \"left\") {\r\n\t\t\t\ttextX = textW / 2 + pointerLength;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\ttextX = -textW / 2 - pointerLength;\r\n\t\t\t}\r\n\t\t}\r\n\t\t// vertical pointer\r\n\t\telse {\r\n\t\t\ttextX = $math.fitToRange(0, boundingRect.x - x + textW / 2, boundingRect.x - x + boundingRect.width - textW / 2);\r\n\r\n\t\t\tif (pointerOrientation == \"vertical\") {\r\n\t\t\t\tif (y > boundingRect.y + textH + pointerLength) {\r\n\t\t\t\t\ttextY = - textH - pointerLength;\r\n\t\t\t\t\tthis._verticalOrientation = \"up\";\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\ttextY = pointerLength;\r\n\t\t\t\t\tthis._verticalOrientation = \"down\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (pointerOrientation == \"down\") {\r\n\t\t\t\ttextY = - textH - pointerLength;\r\n\t\t\t\tthis._verticalOrientation = \"up\";\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\ttextY = pointerLength;\r\n\t\t\t\tthis._verticalOrientation = \"down\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttextY = $math.fitToRange(textY, boundingRect.y - y, boundingRect.y + boundingRect.height - textH - y);\r\n\r\n\t\tlabel.x = textX;\r\n\t\tlabel.y = textY;\r\n\r\n\t\tthis.drawBackground();\r\n\t}\r\n\r\n\t/**\r\n\t * Overrides functionality from the superclass.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateBackground(): void {\r\n\t\tthis.group.addToBack(this.background.group);\r\n\t}\r\n\r\n\t/**\r\n\t * Draws Tooltip background (chrome, background and pointer/stem).\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic drawBackground(): void {\r\n\t\tlet label = this.label;\r\n\t\tlet background: PointedRectangle = this.background;\r\n\r\n\t\tlet textWidth: number = label.measuredWidth;\r\n\t\tlet textHeight: number = label.measuredHeight;\r\n\r\n\t\tlet boundingRect: IRectangle = this._boundingRect;\r\n\r\n\t\tlet bgWidth: number = textWidth;\r\n\t\tlet bgX: number = label.pixelX - textWidth / 2;\r\n\r\n\t\tlet bgHeight: number = textHeight;\r\n\t\tlet bgY: number = label.pixelY;\r\n\r\n\t\tlet x: number = this._pointTo.x;\r\n\t\tlet y: number = this._pointTo.y;\r\n\r\n\t\tlet boundX1: number = boundingRect.x - x;\r\n\t\tlet boundX2: number = boundX1 + boundingRect.width;\r\n\t\tlet boundY1: number = boundingRect.y - y;\r\n\t\tlet boundY2: number = boundY1 + boundingRect.height;\r\n\r\n\t\tbackground.x = bgX;\r\n\t\tbackground.y = bgY;\r\n\r\n\t\tbackground.width = bgWidth;\r\n\t\tbackground.height = bgHeight;\r\n\r\n\t\tif (this.fitPointerToBounds) {\r\n\t\t\tbackground.pointerX = $math.fitToRange(- background.x, boundX1 - background.x, boundX2 - background.x);\r\n\t\t\tbackground.pointerY = $math.fitToRange(- background.y, boundY1 - background.y, boundY2 - background.y);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tbackground.pointerX = - background.x;\r\n\t\t\tbackground.pointerY = - background.y;\r\n\t\t}\r\n\r\n\t\tbackground.validate();\r\n\t}\r\n\r\n\t/**\r\n\t * Set nes tooltip's anchor point and moves whole tooltip.\r\n\t *\r\n\t * @param x X coordinate\r\n\t * @param y Y coordinate\r\n\t */\r\n\tpublic pointTo(point: IPoint, instantly?: boolean): void {\r\n\t\tif (this._pointTo.x != point.x || this._pointTo.y != point.y) {\r\n\t\t\tthis._pointTo = point;\r\n\t\t\tthis.invalidate();\r\n\r\n\t\t\t// this helps to avoid strange animation from nowhere on initial show or when balloon was hidden already\r\n\t\t\tif (!this.visible || instantly) {\r\n\t\t\t\tthis.moveTo(this._pointTo);\r\n\t\t\t\tif (this._animation) {\r\n\t\t\t\t\tthis._animation.kill();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// helps to avoid flicker on top/left corner\r\n\t\t\t\tif (this.pixelX == 0 && this.pixelY == 0) {\r\n\t\t\t\t\tthis.moveTo(this._pointTo);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (this._animation) {\r\n\t\t\t\t\t\tthis._animation.kill();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._animation = new Animation(this, [{ property: \"x\", to: point.x, from: this.pixelX }, { property: \"y\", to: point.y, from: this.pixelY }], this.animationDuration, this.animationEasing).start();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets numeric boundaries Tooltip needs to obey (so it does not go outside\r\n\t * specific area).\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param rectangle Boundary rectangle\r\n\t */\r\n\tpublic setBounds(rectangle: IRectangle): void {\r\n\t\tlet oldRect = this._boundingRect;\r\n\t\tif (oldRect.x != rectangle.x || oldRect.y != rectangle.y || oldRect.width != rectangle.width || oldRect.height != rectangle.height) {\r\n\t\t\tthis._boundingRect = rectangle;\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a [[Container]] instance to be used when calculating numeric\r\n\t * boundaries for the Tooltip.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param container Boundary container\r\n\t */\r\n\tpublic set boundingContainer(container: Container) {\r\n\t\tthis._boundingContainer = container;\r\n\t\t// TODO remove closures ?\r\n\t\tcontainer.events.on(\"sizechanged\", this.updateBounds, this);\r\n\t\tcontainer.events.on(\"positionchanged\", this.updateBounds, this);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates numeric boundaries for the Tooltip, based on the\r\n\t * `boundingCountrainer`.\r\n\t */\r\n\tprotected updateBounds(): void {\r\n\t\tlet boundingContainer: Container = this._boundingContainer;\r\n\t\t// to global\r\n\t\tlet rect: IRectangle = $utils.spriteRectToSvg({\r\n\t\t\tx: boundingContainer.pixelX,\r\n\t\t\ty: boundingContainer.pixelY,\r\n\t\t\twidth: boundingContainer.maxWidth,\r\n\t\t\theight: boundingContainer.maxHeight\r\n\t\t}, boundingContainer);\r\n\t\tthis.setBounds(rect);\r\n\t}\r\n\r\n\t/**\r\n\t * If tooltipOrientation is vertical, it can be drawn below or above point.\r\n\t * We need to know this when solving overlapping.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return \"up\" | \"down\"\r\n\t */\r\n\tpublic get verticalOrientation(): \"up\" | \"down\" {\r\n\t\treturn this._verticalOrientation;\r\n\t}\r\n\r\n\t/**\r\n\t * To avoid stackoverflow\r\n\t * @ignore\r\n\t */\r\n\tpublic get tooltip(): Tooltip {\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * Copies properties and other attributes.\r\n\t *\r\n\t * @param source Source\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\tsuper.copyFrom(source);\r\n\t\tthis.label.copyFrom(source.label);\r\n\r\n\t\tif (source._boundingRect) {\r\n\t\t\tthis._boundingRect = source._boundingRect;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Adds easing functions to \"function\" fields.\r\n\t *\r\n\t * @param field Field name\r\n\t * @return Assign as function?\r\n\t */\r\n\tprotected asFunction(field: string): boolean {\r\n\t\treturn field == \"animationEasing\" || super.asIs(field);\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Tooltip\"] = Tooltip;\r\n","/**\r\n * Functionality for drawing a trapezoid.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite, ISpriteProperties, ISpriteAdapters, ISpriteEvents } from \"../Sprite\";\r\nimport { Percent, percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $path from \"../rendering/Path\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Trapezoid]].\r\n */\r\nexport interface ITrapezoidProperties extends ISpriteProperties {\r\n\r\n\t/**\r\n\t * Wdith of the top side. Absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @default Percent(100)\r\n\t */\r\n\ttopSide?: number | Percent;\r\n\r\n\t/**\r\n\t * Wdith of the bottom side. Absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @default Percent(100)\r\n\t */\r\n\tbottomSide?: number | Percent;\r\n\r\n\t/**\r\n\t * Height of the left side. Absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @default Percent(100)\r\n\t */\r\n\tleftSide?: number | Percent;\r\n\r\n\t/**\r\n\t * Height of the right side. Absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @default Percent(100)\r\n\t */\r\n\trightSide?: number | Percent;\r\n\r\n\t/**\r\n\t * A relative vertical position of the \"neck\". If the top and bottom sides\r\n\t * are of different width, and `horizontalNeck` is set, a choke point\r\n\t * will be created at that position, creating a funnel shape.\r\n\t */\r\n\thorizontalNeck?: Percent;\r\n\r\n\t/**\r\n\t * A relative horizontal position of the \"neck\". If the left and right sides\r\n\t * are of different height, and `verticalNeck` is set, a choke point\r\n\t * will be created at that position, creating a funnel shape.\r\n\t */\r\n\tverticalNeck?: Percent;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[Trapezoid]].\r\n */\r\nexport interface ITrapezoidEvents extends ISpriteEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Trapezoid]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ITrapezoidAdapters extends ISpriteAdapters, ITrapezoidProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Used to draw a Trapezoid.\r\n *\r\n * @see {@link ITrapezoidEvents} for a list of available events\r\n * @see {@link ITrapezoidAdapters} for a list of available Adapters\r\n */\r\nexport class Trapezoid extends Sprite {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ITrapezoidProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ITrapezoidAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ITrapezoidEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"Trapezoid\";\r\n\t\tthis.element = this.paper.add(\"path\");\r\n\r\n\t\tthis.topSide = percent(100);\r\n\t\tthis.bottomSide = percent(100);\r\n\t\tthis.leftSide = percent(100);\r\n\t\tthis.rightSide = percent(100);\r\n\r\n\t\tthis.isMeasured = false; // todo: add measureElement\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tsuper.draw();\r\n\t\tlet w: number = this.pixelWidth;\r\n\t\tlet h: number = this.pixelHeight;\r\n\r\n\t\tlet ts: number = $utils.relativeToValue(this.topSide, w);\r\n\t\tlet bs: number = $utils.relativeToValue(this.bottomSide, w);\r\n\t\tlet ls: number = $utils.relativeToValue(this.leftSide, h);\r\n\t\tlet rs: number = $utils.relativeToValue(this.rightSide, h);\r\n\r\n\t\t// 1----2\r\n\t\t// | |\r\n\t\t// 4----3\r\n\r\n\t\tlet x0: number = (w - ts) / 2;\r\n\t\tlet y0: number = (h - ls) / 2;\r\n\r\n\t\tlet x1: number = w - (w - ts) / 2;\r\n\t\tlet y1: number = (h - rs) / 2;\r\n\r\n\t\tlet x2: number = w - (w - bs) / 2;\r\n\t\tlet y2: number = h - (h - rs) / 2;\r\n\r\n\t\tlet x3: number = (w - bs) / 2;\r\n\t\tlet y3: number = h - (h - ls) / 2;\r\n\r\n\t\tlet mt: string = \"\";\r\n\t\tlet mr: string = \"\";\r\n\t\tlet mb: string = \"\";\r\n\t\tlet ml: string = \"\";\r\n\r\n\t\tif ($type.hasValue(this.horizontalNeck)) {\r\n\t\t\tlet hn: number = this.horizontalNeck.value;\r\n\t\t\tmt = $path.lineTo({ x: w * hn, y: Math.max(y0, y1) });\r\n\t\t\tmb = $path.lineTo({ x: w * hn, y: Math.min(y2, y3) });\r\n\t\t}\r\n\r\n\t\tif ($type.hasValue(this.verticalNeck)) {\r\n\t\t\tlet vn: number = this.verticalNeck.value;\r\n\t\t\tmr = $path.lineTo({ x: Math.min(x1, x2), y: h * vn });\r\n\t\t\tml = $path.lineTo({ x: Math.max(x0, x3), y: h * vn });\r\n\t\t}\r\n\r\n\r\n\t\tlet path: string = $path.moveTo({ x: x0, y: y0 })\r\n\t\t\t+ mt\r\n\t\t\t+ $path.lineTo({ x: x1, y: y1 })\r\n\t\t\t+ mr\r\n\t\t\t+ $path.lineTo({ x: x2, y: y2 })\r\n\t\t\t+ mb\r\n\t\t\t+ $path.lineTo({ x: x3, y: y3 })\r\n\t\t\t+ ml\r\n\t\tthis.path = path;\r\n\t}\r\n\r\n\t/**\r\n\t * Wdith of the top side. Absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @default Percent(100)\r\n\t * @param value Width\r\n\t */\r\n\tpublic set topSide(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"topSide\", value, true, false, 10, false);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Width\r\n\t */\r\n\tpublic get topSide(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"topSide\");\r\n\t}\r\n\r\n\t/**\r\n\t * Wdith of the bottom side. Absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @default Percent(100)\r\n\t * @param value Width\r\n\t */\r\n\tpublic set bottomSide(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"bottomSide\", value, true, false, 10, false);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Width\r\n\t */\r\n\tpublic get bottomSide(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"bottomSide\");\r\n\t}\r\n\r\n\t/**\r\n\t * Height of the left side. Absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @default Percent(100)\r\n\t * @param value Height\r\n\t */\r\n\tpublic set leftSide(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"leftSide\", value, true, false, 10, false);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Height\r\n\t */\r\n\tpublic get leftSide(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"leftSide\");\r\n\t}\r\n\r\n\t/**\r\n\t * Height of the right side. Absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @default Percent(100)\r\n\t * @param value Height\r\n\t */\r\n\tpublic set rightSide(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"rightSide\", value, true, false, 10, false);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Height\r\n\t */\r\n\tpublic get rightSide(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"rightSide\");\r\n\t}\r\n\r\n\t/**\r\n\t * A relative vertical position of the \"neck\". If the top and bottom sides\r\n\t * are of different width, and `horizontalNeck` is set, a choke point\r\n\t * will be created at that position, creating a funnel shape.\r\n\t *\r\n\t * @param value Horizontal neck position\r\n\t */\r\n\tpublic set horizontalNeck(value: Percent) {\r\n\t\tthis.setPropertyValue(\"horizontalNeck\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Horizontal neck position\r\n\t */\r\n\tpublic get horizontalNeck(): Percent {\r\n\t\treturn this.getPropertyValue(\"horizontalNeck\");\r\n\t}\r\n\r\n\t/**\r\n\t * A relative horizontal position of the \"neck\". If the left and right sides\r\n\t * are of different height, and `verticalNeck` is set, a choke point\r\n\t * will be created at that position, creating a funnel shape.\r\n\t *\r\n\t * @param value Vertical neck position\r\n\t */\r\n\tpublic set verticalNeck(value: Percent) {\r\n\t\tthis.setPropertyValue(\"verticalNeck\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Vertical neck position\r\n\t */\r\n\tpublic get verticalNeck(): Percent {\r\n\t\treturn this.getPropertyValue(\"verticalNeck\");\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Trapezoid\"] = Trapezoid;\r\n","/**\r\n * Functionality for drawing triangles.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite, ISpriteProperties, ISpriteAdapters, ISpriteEvents } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $path from \"../rendering/Path\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Triangle]].\r\n */\r\nexport interface ITriangleProperties extends ISpriteProperties {\r\n\tdirection: \"left\" | \"right\" | \"top\" | \"bottom\"\r\n}\r\n\r\n/**\r\n * Defines events for [[Triangle]].\r\n */\r\nexport interface ITriangleEvents extends ISpriteEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Triangle]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ITriangleAdapters extends ISpriteAdapters, ITriangleProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Used to draw a triangle.\r\n *\r\n * @see {@link ITriangleEvents} for a list of available events\r\n * @see {@link ITriangleAdapters} for a list of available Adapters\r\n */\r\nexport class Triangle extends Sprite {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ITriangleProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ITriangleAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ITriangleEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"Triangle\";\r\n\t\tthis.element = this.paper.add(\"path\");\r\n\t\tthis.direction = \"top\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tsuper.draw();\r\n\t\tlet w: number = this.pixelWidth;\r\n\t\tlet h: number = this.pixelHeight;\r\n\r\n\t\tlet path: string;\r\n\r\n\r\n\r\n\t\tswitch (this.direction) {\r\n\t\t\tcase \"right\":\r\n\t\t\t\tpath = $path.moveTo({ x: 0, y: 0 })\r\n\t\t\t\t\t+ $path.lineTo({ x: w, y: h / 2 })\r\n\t\t\t\t\t+ $path.lineTo({ x: 0, y: h })\r\n\t\t\t\t\t+ $path.closePath();\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"left\":\r\n\t\t\t\tpath = $path.moveTo({ x: w, y: 0 })\r\n\t\t\t\t\t+ $path.lineTo({ x: 0, y: h / 2 })\r\n\t\t\t\t\t+ $path.lineTo({ x: w, y: h })\r\n\t\t\t\t\t+ $path.closePath();\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"bottom\":\r\n\t\t\t\tpath = $path.moveTo({ x: 0, y: 0 })\r\n\t\t\t\t\t+ $path.lineTo({ x: w, y: 0 })\r\n\t\t\t\t\t+ $path.lineTo({ x: w / 2, y: h })\r\n\t\t\t\t\t+ $path.closePath();\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"top\":\r\n\t\t\t\tpath = $path.moveTo({ x: w / 2, y: 0 })\r\n\t\t\t\t\t+ $path.lineTo({ x: w, y: h })\r\n\t\t\t\t\t+ $path.lineTo({ x: 0, y: h })\r\n\t\t\t\t\t+ $path.closePath();\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.path = path;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets direction of a triangle\r\n\t *\r\n\t * @param value\r\n\t */\r\n\tpublic set direction(value: \"left\" | \"right\" | \"top\" | \"bottom\") {\r\n\t\tthis.setPropertyValue(\"direction\", value, true);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Returns direction of a triangle\r\n\t *\r\n\t * @return value\r\n\t */\r\n\tpublic get direction(): \"left\" | \"right\" | \"top\" | \"bottom\" {\r\n\t\treturn this.getPropertyValue(\"direction\");\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Triangle\"] = Triangle;\r\n","/**\r\n * Functionality for drawing waved circles.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Circle, ICircleProperties, ICircleAdapters, ICircleEvents } from \"./Circle\";\r\nimport { IWavedShape } from \"../defs/IWavedShape\";\r\nimport { IPoint } from \"../defs/IPoint\";\r\nimport { Percent } from \"../utils/Percent\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $smoothing from \"../../core/rendering/Smoothing\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[WavedCircle]].\r\n */\r\nexport interface IWavedCircleProperties extends ICircleProperties {\r\n\r\n\t/**\r\n\t * Wave length in pixels.\r\n\t *\r\n\t * @default 16\r\n\t */\r\n\twaveLength?: number;\r\n\r\n\t/**\r\n\t * Wave height in pixels.\r\n\t *\r\n\t * @default 4\r\n\t */\r\n\twaveHeight?: number;\r\n\r\n\t/**\r\n\t * Wave tension.\r\n\t *\r\n\t * @default 0.8\r\n\t */\r\n\ttension?: number;\r\n\r\n\t/**\r\n\t * Inner radius of the circle in pixels.\r\n\t */\r\n\tinnerRadius?: number | Percent;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[WavedCircle]].\r\n */\r\nexport interface IWavedCircleEvents extends ICircleEvents { }\r\n\r\n/**\r\n * Defines adapters for [[WavedCircle]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IWavedCircleAdapters extends ICircleAdapters, IWavedCircleProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Draws a waved circle.\r\n *\r\n * @see {@link IWavedCircleEvents} for a list of available events\r\n * @see {@link IWavedCircleAdapters} for a list of available Adapters\r\n */\r\nexport class WavedCircle extends Circle implements IWavedShape {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IWavedCircleProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IWavedCircleAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IWavedCircleEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"WavedCircle\";\r\n\t\tthis.element = this.paper.add(\"path\");\r\n\t\tthis.waveLength = 16;\r\n\t\tthis.waveHeight = 4;\r\n\r\n\t\tthis.fill = undefined;\r\n\t\tthis.fillOpacity = 0;\r\n\t\tthis.tension = 0.8;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the waved line.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tlet path: string = \"\";\r\n\r\n\t\tlet radius: number = this.pixelRadius;\r\n\r\n\t\tif (radius > 0) {\r\n\t\t\tlet points: IPoint[] = this.getPoints(radius);\r\n\t\t\tpath = $path.moveTo(points[0]) + new $smoothing.Tension(this.tension, this.tension).smooth(points);\r\n\t\t}\r\n\r\n\t\tlet innerRadius: number = this.pixelInnerRadius;\r\n\t\tif (innerRadius > 0) {\r\n\t\t\tlet points: IPoint[] = this.getPoints(innerRadius);\r\n\t\t\tpoints.reverse();\r\n\t\t\tpath += $path.moveTo(points[0]) + new $smoothing.Tension(this.tension, this.tension).smooth(points);\r\n\t\t}\r\n\r\n\t\tthis.path = path;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns points that circle consists of.\r\n\t *\r\n\t * @param radius Radius (px)\r\n\t * @return Points\r\n\t */\r\n\tprotected getPoints(radius: number): IPoint[] {\r\n\t\tlet circleLength: number = radius * Math.PI * 2;\r\n\t\tlet halfWaveHeight: number = this.waveHeight / 2;\r\n\r\n\t\tlet waveLength = circleLength / Math.round(circleLength / this.waveLength);\r\n\t\tlet halfWaveLength: number = waveLength / 2;\r\n\t\tlet points: IPoint[] = [];\r\n\r\n\t\tlet count = circleLength / waveLength;\r\n\t\tfor (let i = 0; i <= count; i++) {\r\n\t\t\tlet angle1: number = (i * waveLength) / circleLength * 360;\r\n\t\t\tlet angle2: number = (i * waveLength + halfWaveLength) / circleLength * 360;\r\n\r\n\t\t\tpoints.push({ x: (radius - halfWaveHeight) * $math.cos(angle1), y: (radius - halfWaveHeight) * $math.sin(angle1) });\r\n\t\t\tpoints.push({ x: (radius + halfWaveHeight) * $math.cos(angle2), y: (radius + halfWaveHeight) * $math.sin(angle2) });\r\n\t\t}\r\n\t\tpoints.pop();\r\n\t\treturn points;\r\n\t}\r\n\r\n\t/**\r\n\t * Inner radius of the circle in pixels (absolute) or [[Percent]] (relative).\r\n\t *\r\n\t * @param value Inner radius\r\n\t */\r\n\tpublic set innerRadius(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Inner radius\r\n\t */\r\n\tpublic get innerRadius(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"innerRadius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Calculated inner radius of the circle in pixels.\r\n\t *\r\n\t * @readonly\r\n\t * @return Inner radius (px)\r\n\t */\r\n\tpublic get pixelInnerRadius(): number {\r\n\t\treturn $utils.relativeToValue(this.innerRadius, $math.min(this.innerWidth / 2, this.innerHeight / 2));\r\n\t}\r\n\r\n\t/**\r\n\t * Wave length in pixels.\r\n\t *\r\n\t * @default 16\r\n\t * @param value Wave length (px)\r\n\t */\r\n\tpublic set waveLength(value: number) {\r\n\t\tthis.setPropertyValue(\"waveLength\", value);\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Wave length (px)\r\n\t */\r\n\tpublic get waveLength(): number {\r\n\t\treturn this.getPropertyValue(\"waveLength\");\r\n\t}\r\n\r\n\t/**\r\n\t * Wave height in pixels.\r\n\t *\r\n\t * @default 4\r\n\t * @param value Wave height (px)\r\n\t */\r\n\tpublic set waveHeight(value: number) {\r\n\t\tthis.setPropertyValue(\"waveHeight\", value);\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Wave height (px)\r\n\t */\r\n\tpublic get waveHeight(): number {\r\n\t\treturn this.getPropertyValue(\"waveHeight\");\r\n\t}\r\n\r\n\t/**\r\n\t * Tension of the wave.\r\n\t *\r\n\t * @default 0.8\r\n\t * @param value Tension\r\n\t */\r\n\tpublic set tension(value: number) {\r\n\t\tthis.setPropertyValue(\"tension\", value);\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Tension\r\n\t */\r\n\tpublic get tension(): number {\r\n\t\treturn this.getPropertyValue(\"tension\");\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"WavedCircle\"] = WavedCircle;\r\n","/**\r\n * Functionality for drawing waved lines.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Line, ILineProperties, ILineAdapters, ILineEvents } from \"./Line\";\r\nimport { IPoint } from \"../defs/IPoint\";\r\nimport { IWavedShape } from \"../defs/IWavedShape\";\r\nimport { color } from \"../utils/Color\";\r\nimport { wavedLine } from \"../rendering/Smoothing\";\r\nimport * as $path from \"../rendering/Path\";\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines available properties for [[WavedLine]].\r\n */\r\nexport interface IWavedLineProperties extends ILineProperties {\r\n\r\n\t/**\r\n\t * Wave length in pixels.\r\n\t *\r\n\t * @default 16\r\n\t */\r\n\twaveLength?: number;\r\n\r\n\t/**\r\n\t * Wave height in pixels.\r\n\t *\r\n\t * @default 4\r\n\t */\r\n\twaveHeight?: number;\r\n\r\n\t/**\r\n\t * Wave tension.\r\n\t *\r\n\t * @default 0.8\r\n\t */\r\n\ttension?: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[WavedLine]].\r\n */\r\nexport interface IWavedLineEvents extends ILineEvents { }\r\n\r\n/**\r\n * Defines adapters for [[WavedLine]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IWavedLineAdapters extends ILineAdapters, IWavedLineProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Draws a waved line.\r\n *\r\n * @see {@link IWavedLineEvents} for a list of available events\r\n * @see {@link IWavedLineAdapters} for a list of available Adapters\r\n */\r\nexport class WavedLine extends Line implements IWavedShape {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IWavedLineProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IWavedLineAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IWavedLineEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"WavedLine\";\r\n\t\tthis.element = this.paper.add(\"path\");\r\n\t\tthis.waveLength = 16;\r\n\t\tthis.waveHeight = 4;\r\n\t\tthis.tension = 0.8;\r\n\t\tthis.pixelPerfect = false;\r\n\r\n\t\tthis.fill = color();\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the waved line.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\t//super.draw();\r\n\t\tlet p1: IPoint = { x: this.x1, y: this.y1 };\r\n\t\tlet p2: IPoint = { x: this.x2, y: this.y2 };\r\n\r\n\t\tthis.path = $path.moveTo(p1) + wavedLine(p1, p2, this.waveLength, this.waveHeight, this.tension, true);\r\n\t}\r\n\r\n\t/**\r\n\t * Wave length in pixels.\r\n\t *\r\n\t * @default 16\r\n\t * @param value Wave length (px)\r\n\t */\r\n\tpublic set waveLength(value: number) {\r\n\t\tthis.setPropertyValue(\"waveLength\", value);\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Wave length (px)\r\n\t */\r\n\tpublic get waveLength(): number {\r\n\t\treturn this.getPropertyValue(\"waveLength\");\r\n\t}\r\n\r\n\t/**\r\n\t * Wave height in pixels.\r\n\t *\r\n\t * @default 4\r\n\t * @param value Wave height (px)\r\n\t */\r\n\tpublic set waveHeight(value: number) {\r\n\t\tthis.setPropertyValue(\"waveHeight\", value);\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Wave height (px)\r\n\t */\r\n\tpublic get waveHeight(): number {\r\n\t\treturn this.getPropertyValue(\"waveHeight\");\r\n\t}\r\n\r\n\t/**\r\n\t * Tension of the wave.\r\n\t *\r\n\t * @default 0.8\r\n\t * @param value Tension\r\n\t */\r\n\tpublic set tension(value: number) {\r\n\t\tthis.setPropertyValue(\"tension\", value);\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Tension\r\n\t */\r\n\tpublic get tension(): number {\r\n\t\treturn this.getPropertyValue(\"tension\");\r\n\t}\r\n\r\n}\r\n","/**\r\n * Functionality for drawing rectangles with waved edges.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Rectangle, IRectangleProperties, IRectangleAdapters, IRectangleEvents } from \"./Rectangle\";\r\nimport { IPoint } from \"../defs/IPoint\";\r\nimport { IWavedShape } from \"../defs/IWavedShape\";\r\nimport { wavedLine } from \"../rendering/Smoothing\";\r\nimport * as $path from \"../rendering/Path\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines available properties for [[WavedRectangle]].\r\n */\r\nexport interface IWavedRectangleProperties extends IRectangleProperties {\r\n\r\n\t/**\r\n\t * Wave length in pixels.\r\n\t *\r\n\t * @default 16\r\n\t */\r\n\twaveHeight?: number;\r\n\r\n\t/**\r\n\t * Wave height in pixels.\r\n\t *\r\n\t * @default 4\r\n\t */\r\n\twaveLength?: number;\r\n\r\n\t/**\r\n\t * Wave tension.\r\n\t *\r\n\t * @default 0.8\r\n\t */\r\n\ttension?: number;\r\n\r\n\t/**\r\n\t * If right side of a rectangle should be waved.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\twavedRight?: boolean;\r\n\r\n\t/**\r\n\t * If left side of a rectangle should be waved.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\twavedLeft?: boolean;\r\n\r\n\t/**\r\n\t * If top side of a rectangle should be waved.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\twavedTop?: boolean;\r\n\r\n\t/**\r\n\t * If bottom side of a rectangle should be waved.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\twavedBottom?: boolean;\r\n}\r\n\r\n/**\r\n * Defines events for [[WavedRectangle]].\r\n */\r\nexport interface IWavedRectangleEvents extends IRectangleEvents { }\r\n\r\n/**\r\n * Defines adapters for [[WavedRectangle]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IWavedRectangleAdapters extends IRectangleAdapters, IWavedRectangleProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Draws a rectangle with waved edges.\r\n *\r\n * @see {@link IWavedRectangleEvents} for a list of available events\r\n * @see {@link IWavedRectangleAdapters} for a list of available Adapters\r\n */\r\nexport class WavedRectangle extends Rectangle implements IWavedShape {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IWavedRectangleProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IWavedRectangleAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IWavedRectangleEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"WavedRectangle\";\r\n\r\n\t\t// Add path element\r\n\t\tthis.element = this.paper.add(\"path\");\r\n\r\n\t\t// Set defaults\r\n\t\tthis.waveLength = 16;\r\n\t\tthis.waveHeight = 4;\r\n\t\tthis.tension = 0.8;\r\n\r\n\t\tthis.setPropertyValue(\"wavedLeft\", true);\r\n\t\tthis.setPropertyValue(\"wavedRight\", true);\r\n\t\tthis.setPropertyValue(\"wavedTop\", true);\r\n\t\tthis.setPropertyValue(\"wavedBottom\", true);\r\n\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the waved rectangle.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tsuper.draw();\r\n\r\n\t\tlet w: number = this.pixelWidth;\r\n\t\tlet h: number = this.pixelHeight;\r\n\r\n\t\tif (w > 0 && h > 0) {\r\n\t\t\tlet p1: IPoint = { x: 0, y: 0 };\r\n\t\t\tlet p2: IPoint = { x: w, y: 0 };\r\n\t\t\tlet p3: IPoint = { x: w, y: h };\r\n\t\t\tlet p4: IPoint = { x: 0, y: h };\r\n\r\n\t\t\tlet waveLengthH: number = Math.min(w, this.waveLength);\r\n\t\t\tlet waveHeightH: number = Math.min(h, this.waveHeight);\r\n\r\n\t\t\tlet waveLengthV: number = Math.min(h, this.waveLength);\r\n\t\t\tlet waveHeightV: number = Math.min(w, this.waveHeight);\t\t\t\r\n\r\n\t\t\tlet td: string = \"\";\r\n\t\t\tlet rd: string = \"\";\r\n\t\t\tlet bd: string = \"\";\r\n\t\t\tlet ld: string = \"\";\r\n\r\n\t\t\tif (this.wavedTop) {\r\n\t\t\t\ttd = wavedLine(p1, p2, waveLengthH, waveHeightH, this.tension, true);\r\n\t\t\t}\r\n\t\t\tif (this.wavedRight) {\r\n\t\t\t\trd = wavedLine(p2, p3, waveLengthV, waveHeightV, this.tension, true);\r\n\t\t\t}\r\n\t\t\tif (this.wavedBottom) {\r\n\t\t\t\tbd = wavedLine(p3, p4, waveLengthH, waveHeightH, this.tension, true);\r\n\t\t\t}\r\n\t\t\tif (this.wavedLeft) {\r\n\t\t\t\tld = wavedLine(p4, p1, waveLengthV, waveHeightV, this.tension, true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.path = $path.moveTo(p1) + td + $path.lineTo(p2) + rd + $path.lineTo(p3) + bd + $path.lineTo(p4) + ld + \"z\";\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Wave length in pixels.\r\n\t *\r\n\t * @default 16\r\n\t * @param value Wave length (px)\r\n\t */\r\n\tpublic set waveLength(value: number) {\r\n\t\tthis.setPropertyValue(\"waveLength\", value);\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Wave length (px)\r\n\t */\r\n\tpublic get waveLength(): number {\r\n\t\treturn this.getPropertyValue(\"waveLength\");\r\n\t}\r\n\r\n\t/**\r\n\t * Wave height in pixels.\r\n\t *\r\n\t * @default 4\r\n\t * @param value Wave height (px)\r\n\t */\r\n\tpublic set waveHeight(value: number) {\r\n\t\tthis.setPropertyValue(\"waveHeight\", value);\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Wave height (px)\r\n\t */\r\n\tpublic get waveHeight(): number {\r\n\t\treturn this.getPropertyValue(\"waveHeight\");\r\n\t}\r\n\r\n\t/**\r\n\t * Sets which side should be waved or not. If particular side is set to\r\n\t * `false`, a straight line will be drawn on that side.\r\n\t *\r\n\t * @param top Top waved?\r\n\t * @param right Right side waved?\r\n\t * @param bottom Bottom Waved?\r\n\t * @param left Left side waved?\r\n\t */\r\n\tpublic setWavedSides(top: boolean, right: boolean, bottom: boolean, left: boolean): void {\r\n\t\tthis.wavedTop = top;\r\n\t\tthis.wavedRight = right;\r\n\t\tthis.wavedBottom = bottom;\r\n\t\tthis.wavedLeft = left;\r\n\t}\r\n\r\n\t/**\r\n\t * Tension of the wave.\r\n\t *\r\n\t * @default 0.8\r\n\t * @param value Tension\r\n\t */\r\n\tpublic set tension(value: number) {\r\n\t\tthis.setPropertyValue(\"tension\", value);\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Tension\r\n\t */\r\n\tpublic get tension(): number {\r\n\t\treturn this.getPropertyValue(\"tension\");\r\n\t}\r\n\r\n\t/**\r\n\t * Specifies if right side should be waved.\r\n\t *\r\n\t * @default true\r\n\t * @param value Waved?\r\n\t */\r\n\tpublic set wavedRight(value: boolean) {\r\n\t\tthis.setPropertyValue(\"wavedRight\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Wave right side?\r\n\t */\r\n\tpublic get wavedRight(): boolean {\r\n\t\treturn this.getPropertyValue(\"wavedRight\");\r\n\t}\r\n\r\n\t/**\r\n\t * Specifies if left side should be waved.\r\n\t *\r\n\t * @default true\r\n\t * @param value Waved?\r\n\t */\r\n\tpublic set wavedLeft(value: boolean) {\r\n\t\tthis.setPropertyValue(\"wavedLeft\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Wave left side?\r\n\t */\r\n\tpublic get wavedLeft(): boolean {\r\n\t\treturn this.getPropertyValue(\"wavedLeft\");\r\n\t}\r\n\r\n\t/**\r\n\t * Specifies if top side should be waved.\r\n\t *\r\n\t * @default true\r\n\t * @param value Waved?\r\n\t */\r\n\tpublic set wavedTop(value: boolean) {\r\n\t\tthis.setPropertyValue(\"wavedTop\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Wave top side?\r\n\t */\r\n\tpublic get wavedTop(): boolean {\r\n\t\treturn this.getPropertyValue(\"wavedTop\");\r\n\t}\r\n\r\n\t/**\r\n\t * Specifies if bottom side should be waved.\r\n\t *\r\n\t * @default true\r\n\t * @param value Waved?\r\n\t */\r\n\tpublic set wavedBottom(value: boolean) {\r\n\t\tthis.setPropertyValue(\"wavedBottom\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Wave bottom side?\r\n\t */\r\n\tpublic get wavedBottom(): boolean {\r\n\t\treturn this.getPropertyValue(\"wavedBottom\");\r\n\t}\r\n\r\n}\r\n","/**\r\n * Zoom out button functionality.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Button, IButtonProperties, IButtonAdapters, IButtonEvents } from \"./Button\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { RoundedRectangle } from \"./RoundedRectangle\";\r\nimport { registry } from \"../Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[ZoomOutButton]].\r\n */\r\nexport interface IZoomOutButtonProperties extends IButtonProperties { }\r\n\r\n/**\r\n * Defines events for [[ZoomOutButton]].\r\n */\r\nexport interface IZoomOutButtonEvents extends IButtonEvents { }\r\n\r\n/**\r\n * Defines adapters for [[ZoomOutButton]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IZoomOutButtonAdapters extends IButtonAdapters, IZoomOutButtonProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates a zoom out button.\r\n *\r\n * @see {@link IZoomOutButtonEvents} for a list of available events\r\n * @see {@link IZoomOutButtonAdapters} for a list of available Adapters\r\n */\r\nexport class ZoomOutButton extends Button {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IZoomOutButtonProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IZoomOutButtonAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IZoomOutButtonEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"ZoomOutButton\";\r\n\r\n\t\tthis.padding(9, 9, 9, 9);\r\n\t\t//this.dx = - 5;\r\n\t\t//this.dy = 5;\r\n\r\n\t\tthis.showSystemTooltip = true;\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\r\n\t\tlet background: RoundedRectangle = this.background;\r\n\t\tbackground.cornerRadius(20, 20, 20, 20);\r\n\t\tbackground.fill = interfaceColors.getFor(\"primaryButton\");\r\n\t\tbackground.stroke = interfaceColors.getFor(\"primaryButtonStroke\");\r\n\t\tbackground.strokeOpacity = 0;\r\n\r\n\t\tbackground.states.getKey(\"hover\").properties.fill = interfaceColors.getFor(\"primaryButtonHover\");\r\n\t\tbackground.states.getKey(\"down\").properties.fill = interfaceColors.getFor(\"primaryButtonActive\");\r\n\r\n\t\t// Create an icon\r\n\t\tlet icon: Sprite = new Sprite();\r\n\t\ticon.element = this.paper.add(\"path\");\r\n\r\n\t\tlet path = $path.moveTo({ x: 0, y: 0 });\r\n\t\tpath += $path.lineTo({ x: 11, y: 0 });\r\n\t\ticon.path = path;\r\n\r\n\t\ticon.pixelPerfect = true;\r\n\t\ticon.padding(8, 3, 8, 3);\r\n\t\ticon.stroke = interfaceColors.getFor(\"primaryButtonText\");\r\n\t\tthis.icon = icon;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets defaults that instantiate some objects that rely on parent, so they\r\n\t * cannot be set in constructor.\r\n\t */\r\n\tprotected applyInternalDefaults(): void {\r\n\t\tsuper.applyInternalDefaults();\r\n\t\tif (!$type.hasValue(this.readerTitle)) {\r\n\t\t\tthis.readerTitle = this.language.translate(\"Zoom Out\");\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ZoomOutButton\"] = ZoomOutButton;\r\n","/**\r\n * Export module.\r\n *\r\n * Parts of Export functionality rely on the following third party libraries:\r\n *\r\n * [canvg.js](https://github.com/canvg/canvg)\r\n * Copyright (c) Gabe Lerner\r\n * Licensed under [MIT](https://github.com/canvg/canvg/blob/master/LICENSE)\r\n *\r\n * [pdfmake](http://pdfmake.org/)\r\n * Copyright (c) 2014 bpampuch\r\n * Licensed under [MIT](https://github.com/bpampuch/pdfmake/blob/master/LICENSE)\r\n *\r\n * [SheetJS Community Edition](https://github.com/sheetjs/js-xlsx)\r\n * Licensed under [Apache License 2.0](https://github.com/SheetJS/js-xlsx/blob/master/LICENSE)\r\n *\r\n * [JSZip](http://stuartk.com/jszip)\r\n * Copyright (c) Stuart Knightley\r\n * Dual licenced under the [MIT license or GPLv3](https://raw.githubusercontent.com/Stuk/jszip/master/LICENSE.markdown).\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ExportMenu } from \"./ExportMenu\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { AMEvent } from \"../utils/EventDispatcher\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { Preloader } from \"../elements/Preloader\";\r\nimport { Modal } from \"../elements/Modal\";\r\nimport { List } from \"../utils/List\";\r\nimport { Dictionary } from \"../utils/Dictionary\";\r\nimport { IDisposer } from \"../utils/Disposer\";\r\nimport { DateFormatter } from \"../formatters/DateFormatter\";\r\nimport { DurationFormatter } from \"../formatters/DurationFormatter\";\r\nimport { NumberFormatter } from \"../formatters/NumberFormatter\";\r\nimport { Language } from \"../utils/Language\";\r\nimport { Validatable } from \"../utils/Validatable\";\r\nimport { Color, color } from \"../utils/Color\";\r\nimport { registry } from \"../Registry\";\r\nimport { options } from \"../Options\";\r\nimport { StyleRule, getComputedStyle } from \"../utils/DOM\";\r\nimport * as $browser from \"../utils/Browser\";\r\nimport * as $object from \"../utils/Object\";\r\nimport * as $net from \"../utils/Net\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $math from \"../utils/Math\";\r\n\r\n\r\n// This is used to cache the pdfmake loading\r\nlet pdfmakePromise: Promise<any>;\r\n\r\n/**\r\n * Loads pdfmake dynamic module\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of pdfmake\r\n * @async\r\n */\r\nasync function _pdfmake(): Promise<any> {\r\n\tlet a = await Promise.all([\r\n\t\timport(/* webpackChunkName: \"pdfmake\" */ \"pdfmake/build/pdfmake.js\"),\r\n\t\timport(/* webpackChunkName: \"pdfmake\" */ \"../../pdfmake/vfs_fonts\")\r\n\t]);\r\n\tlet pdfmake = a[0];\r\n\tlet vfs_fonts = a[1];\r\n\tconst global = <any>window;\r\n\tglobal.pdfMake = global.pdfMake || {};\r\n\tglobal.pdfMake.vfs = vfs_fonts.default;\r\n\tpdfmake.vfs = vfs_fonts.default;\r\n\treturn pdfmake;\r\n}\r\n\r\n\r\n// TODO better parsing\r\nconst fontFamilySrcRegexp = /src: ([^;]+);/;\r\n\r\n// TODO better checks\r\nfunction supportsBlobUri(): boolean {\r\n\treturn window.navigator.msSaveOrOpenBlob != null;\r\n}\r\n\r\n// TODO move into utils or something ?\r\nfunction blobToDataUri(blob: Blob): Promise<string> {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t// TODO handle abort ?\r\n\t\tconst f = new FileReader();\r\n\t\tf.onload = (e) => { resolve(<string>f.result); };\r\n\t\tf.onerror = (e) => { reject(e); };\r\n\t\tf.readAsDataURL(blob);\r\n\t});\r\n}\r\n\r\nasync function getCssRules(s: HTMLStyleElement): Promise<CSSRuleList> {\r\n\tconst sheet = <CSSStyleSheet>s.sheet;\r\n\r\n\ttry {\r\n\t\treturn sheet.cssRules;\r\n\r\n\t} catch (e) {\r\n\t\t// Needed because of https://bugzilla.mozilla.org/show_bug.cgi?id=625013\r\n\t\treturn await new Promise<CSSRuleList>((success, error) => {\r\n\t\t\ts.addEventListener(\"load\", () => {\r\n\t\t\t\tsuccess(sheet.cssRules);\r\n\t\t\t}, true);\r\n\r\n\t\t\ts.addEventListener(\"error\", (e) => {\r\n\t\t\t\terror(e);\r\n\t\t\t}, true);\r\n\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\terror(new Error(\"Timeout while waiting for <style> to load\"));\r\n\t\t\t}, 10000);\r\n\t\t});\r\n\t}\r\n}\r\n\r\n// This loads a stylesheet by URL and then calls the function with it\r\n// TODO this should be moved into utils or something\r\nasync function loadStylesheet(doc: Document, url: string, f: (topUrl: string, rule: CSSRule) => void): Promise<void> {\r\n\tlet response;\r\n\r\n\ttry {\r\n\t\tresponse = await $net.load(url);\r\n\r\n\t} catch (e) {\r\n\t\tconsole.error(\"Failed to load stylesheet\", url, e);\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst s = doc.createElement(\"style\");\r\n\ts.textContent = response.response;\r\n\tdoc.head.appendChild(s);\r\n\r\n\ttry {\r\n\t\tconst rules = await getCssRules(s);\r\n\t\tawait eachStylesheet(doc, url, rules, f);\r\n\r\n\t} finally {\r\n\t\tdoc.head.removeChild(s);\r\n\t}\r\n}\r\n\r\n// This calls a function for each CSSRule inside of a CSSStyleSheet.\r\n// If the CSSStyleSheet has any @import, then it will recursively call the function for those CSSRules too.\r\n// TODO this should be moved into utils or something\r\nasync function eachStylesheet(doc: Document, topUrl: string, rules: CSSRuleList, f: (topUrl: string, rule: CSSRule) => void): Promise<void> {\r\n\tconst promises: Array<Promise<void>> = [];\r\n\r\n\tconst length = rules.length;\r\n\r\n\tfor (let i = 0; i < length; i++) {\r\n\t\tconst rule = rules[i];\r\n\r\n\t\tif (rule.type === CSSRule.IMPORT_RULE) {\r\n\t\t\tlet url = (<CSSImportRule>rule).href;\r\n\r\n\t\t\tif (url) {\r\n\t\t\t\turl = $utils.joinUrl(topUrl, url);\r\n\t\t\t\tpromises.push(loadStylesheet(doc, url, f));\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tf(topUrl, rule);\r\n\t\t}\r\n\t}\r\n\r\n\tif (promises.length) {\r\n\t\tawait Promise.all(promises);\r\n\t}\r\n}\r\n\r\n// This calls a function for each CSSRule for all of the stylesheets in the page.\r\n// If the CSSStyleSheet has any @import, then it will recursively call the function for those CSSRules too.\r\n// TODO this should be moved into utils or something\r\nasync function eachStylesheets(f: (topUrl: string, rule: CSSRule) => void): Promise<void> {\r\n\t// This uses an <iframe> so it doesn't screw up the site's styles\r\n\tconst iframe = document.createElement(\"iframe\");\r\n\r\n\t// This causes it to use the same origin policy as the parent page\r\n\tiframe.src = \"about:blank\";\r\n\t// This tries to make it more accessible for screen readers\r\n\tiframe.setAttribute(\"title\", \"\");\r\n\r\n\tdocument.head.appendChild(iframe);\r\n\r\n\ttry {\r\n\t\tconst doc = iframe.contentDocument;\r\n\r\n\t\t// TODO use $dom.getRoot instead of document ?\r\n\t\tawait Promise.all($array.map(document.styleSheets, (sheet) => {\r\n\t\t\tlet url = sheet.href;\r\n\r\n\t\t\tif (url == null) {\r\n\t\t\t\treturn eachStylesheet(doc, location.href, (<CSSStyleSheet>sheet).cssRules, f);\r\n\r\n\t\t\t} else {\r\n\t\t\t\turl = $utils.joinUrl(location.href, url);\r\n\t\t\t\treturn loadStylesheet(doc, url, f);\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t} finally {\r\n\t\tdocument.head.removeChild(iframe);\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Represents an Event object that comes from [[Export]].\r\n */\r\nexport type ExportOperation = {\r\n\tformat?: string;\r\n\toptions?: any;\r\n}\r\n\r\n/**\r\n * Defines image formats available for export.\r\n */\r\nexport type imageFormats = \"png\" | \"gif\" | \"jpg\";\r\n\r\n/**\r\n * An interface describing extra elements to include in export.\r\n *\r\n * @since 4.2.0\r\n */\r\nexport interface IExportCanvas {\r\n\r\n\t/**\r\n\t * Top margin in pixels.\r\n\t */\r\n\tmarginTop?: number;\r\n\r\n\t/**\r\n\t * Right margin in pixels.\r\n\t */\r\n\tmarginRight?: number;\r\n\r\n\t/**\r\n\t * Bottom margin in pixels.\r\n\t */\r\n\tmarginBottom?: number;\r\n\r\n\t/**\r\n\t * Left margin in pixels.\r\n\t */\r\n\tmarginLeft?: number;\r\n\r\n\t/**\r\n\t * Position to put extra element in relation to main chart.\r\n\t */\r\n\tposition?: \"left\" | \"right\" | \"top\" | \"bottom\";\r\n\r\n\t/**\r\n\t * Reference to element.\r\n\t */\r\n\tsprite?: Sprite;\r\n\r\n\t/**\r\n\t * If this is set to `true` and extra element is higher/wider than main\r\n\t * chart element, the extra element will be cropped.\r\n\t *\r\n\t * @default false\r\n\t * @since 4.6.1\r\n\t */\r\n\tcrop?: boolean;\r\n}\r\n\r\n/**\r\n * Represents options for image export.\r\n */\r\nexport interface IExportImageOptions {\r\n\r\n\t/**\r\n\t * Quality of the exported image. (0-1)\r\n\t */\r\n\tquality?: number;\r\n\r\n\t/**\r\n\t * Rescale image.\r\n\t *\r\n\t * Number less than 1 will shrink the image.\r\n\t *\r\n\t * Number bigger than 1 will scale up the image.\r\n\t *\r\n\t * @default 1\r\n\t */\r\n\tscale?: number;\r\n\r\n\t/**\r\n\t * Normally, Export removes \"tainted\" images (images that are loaded from\r\n\t * other host than the chart itself) before export.\r\n\t *\r\n\t * Set this to `true` to disable it.\r\n\t *\r\n\t * Please note that removal of tainted images might trigger cross-origin\r\n\t * security restrictions in browser and prevent the whole export operation,\r\n\t * so use with caution.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tkeepTainted?: boolean;\r\n\r\n}\r\n\r\n/**\r\n * Represents options for SVG export.\r\n */\r\nexport interface IExportSVGOptions {\r\n}\r\n\r\n/**\r\n * Available PDF page sizes.\r\n */\r\nexport type pageSizes = \"4A0\" | \"2A0\" | \"A0\" | \"A1\" | \"A2\" | \"A3\" | \"A4\" | \"A5\" | \"A6\" | \"A7\" | \"A8\" | \"A9\" | \"A10\" |\r\n\t\"B0\" | \"B1\" | \"B2\" | \"B3\" | \"B4\" | \"B5\" | \"B6\" | \"B7\" | \"B8\" | \"B9\" | \"B10\" |\r\n\t\"C0\" | \"C1\" | \"C2\" | \"C3\" | \"C4\" | \"C5\" | \"C6\" | \"C7\" | \"C8\" | \"C9\" | \"C10\" |\r\n\t\"RA0\" | \"RA1\" | \"RA2\" | \"RA3\" | \"RA4\" |\r\n\t\"SRA0\" | \"SRA1\" | \"SRA2\" | \"SRA3\" | \"SRA4\" |\r\n\t\"EXECUTIVE\" | \"FOLIO\" | \"LEGAL\" | \"LETTER\" | \"TABLOID\";\r\n\r\n/**\r\n * Represents options for PDF export.\r\n */\r\nexport interface IExportPDFOptions extends IExportImageOptions {\r\n\r\n\t/**\r\n\t * Font size to use for all texts.\r\n\t */\r\n\tfontSize?: number;\r\n\r\n\t/**\r\n\t * An image format to use for embedded images in PDF.\r\n\t *\r\n\t * See `imageFormats` in [[Export_module]].\r\n\t */\r\n\timageFormat?: imageFormats;\r\n\r\n\t/**\r\n\t * Whether to add a URL of the web page the chart has been exported from.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\taddURL?: boolean;\r\n\r\n\t/**\r\n\t * Page size of the exported PDF.\r\n\t *\r\n\t * See `pageSizes` in [[Export_module]].\r\n\t */\r\n\tpageSize?: pageSizes;\r\n\r\n\t/**\r\n\t * Page orientation.\r\n\t */\r\n\tpageOrientation?: \"landscape\" | \"portrait\";\r\n\r\n\t/**\r\n\t * Page margins.\r\n\t *\r\n\t * Can be one of the following:\r\n\t *\r\n\t * A single number, in which case it will act as margin setting\r\n\t * for all four edges of the page.\r\n\t *\r\n\t * An array of two numbers `[ horizontal, vertical ]`.\r\n\t *\r\n\t * An array of four numbers `[ left, top, right, bottom ]`.\r\n\t */\r\n\tpageMargins?: number | number[];\r\n\r\n\t/**\r\n\t * Should data table be included together with the image?\r\n\t *\r\n\t * Use \"pdfdata\" options to configure table output.\r\n\t *\r\n\t * @default false\r\n\t * @since 4.7.0\r\n\t */\r\n\taddData?: boolean;\r\n\r\n\t/**\r\n\t * Add column names in first row?\r\n\t *\r\n\t * Export will try to use user-friendly column names where possible, either\r\n\t * from Export's `dataFields` or deduced from chart's series' names that are\r\n\t * bound to specific data fields.\r\n\t *\r\n\t * @default true\r\n\t * @since 4.7.0\r\n\t */\r\n\taddColumnNames?: boolean;\r\n\r\n\t/**\r\n\t * Use timestamps instead of formatted date/time values.\r\n\t *\r\n\t * @default false\r\n\t * @since 4.7.0\r\n\t */\r\n\tuseTimestamps?: boolean;\r\n\r\n\t/**\r\n\t * Will try to format numbers and date/time according to user's locale\r\n\t * settings.\r\n\t *\r\n\t * @default true\r\n\t * @since 4.7.0\r\n\t */\r\n\tuseLocale?: boolean;\r\n\r\n\t/**\r\n\t * Replace missing values with this.\r\n\t *\r\n\t * @default \"\" (empty string)\r\n\t * @since 4.7.0\r\n\t */\r\n\temptyAs?: any;\r\n\r\n\t/**\r\n\t * If set to `true` will export data as pivoted (column names in first column;\r\n\t * values in rows).\r\n\t *\r\n\t * @default false\r\n\t * @since 4.7.0\r\n\t */\r\n\tpivot?: boolean;\r\n}\r\n\r\n/**\r\n * Represents options for CSV export.\r\n */\r\nexport interface IExportCSVOptions {\r\n\r\n\t/**\r\n\t * Separator string to separate columns with.\r\n\t *\r\n\t * @default \",\"\r\n\t */\r\n\tseparator?: string;\r\n\r\n\t/**\r\n\t * CSV format does not require enclosing values in quotes, unless it\r\n\t * contains strings.\r\n\t *\r\n\t * This setting can be used to enforce enclosing of all values in CSV with\r\n\t * quotes.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tforceQuotes?: boolean;\r\n\r\n\t/**\r\n\t * Add column names in first row?\r\n\t *\r\n\t * Export will try to use user-friendly column names where possible, either\r\n\t * from Export's `dataFields` or deduced from chart's series' names that are\r\n\t * bound to specific data fields.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\taddColumnNames?: boolean;\r\n\r\n\t/**\r\n\t * Add rows in reverse order.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\treverse?: boolean;\r\n\r\n\t/**\r\n\t * Use timestamps instead of formatted date/time values.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tuseTimestamps?: boolean;\r\n\r\n\t/**\r\n\t * Will try to format numbers and date/time according to user's locale\r\n\t * settings.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tuseLocale?: boolean;\r\n\r\n\t/**\r\n\t * Replace missing values with this.\r\n\t *\r\n\t * @default \"\" (empty string)\r\n\t */\r\n\temptyAs?: any;\r\n\r\n\t/**\r\n\t * If set to `true` will export data as pivoted (column names in first column;\r\n\t * values in rows).\r\n\t *\r\n\t * @default false\r\n\t * @since 4.6.8\r\n\t */\r\n\tpivot?: boolean;\r\n\r\n}\r\n\r\n/**\r\n * Represents options for JSON export\r\n */\r\nexport interface IExportJSONOptions {\r\n\r\n\t/**\r\n\t * Use timestamps instead of formatted date/time values.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tuseTimestamps?: boolean;\r\n\r\n\t/**\r\n\t * Will try to format numbers and date/time according to user's locale\r\n\t * settings.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tuseLocale?: boolean;\r\n\r\n\t/**\r\n\t * Sets indent size for each hierarchical elements.\r\n\t *\r\n\t * @default \" \"\r\n\t */\r\n\tindent?: number;\r\n\r\n}\r\n\r\n/**\r\n * Represents options for XLSX export.\r\n */\r\nexport interface IExportExcelOptions {\r\n\r\n\t/**\r\n\t * Add column names in first row?\r\n\t *\r\n\t * Export will try to use user-friendly column names where possible, either\r\n\t * from Export's `dataFields` or deduced from chart's series' names that are\r\n\t * bound to specific data fields.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\taddColumnNames?: boolean;\r\n\r\n\t/**\r\n\t * Use timestamps instead of formatted date/time values.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tuseTimestamps?: boolean;\r\n\r\n\t/**\r\n\t * Will try to format numbers and date/time according to user's locale\r\n\t * settings.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tuseLocale?: boolean;\r\n\r\n\t/**\r\n\t * Replace missing values with this.\r\n\t *\r\n\t * @default \"\" (empty string)\r\n\t */\r\n\temptyAs?: any;\r\n\r\n\t/**\r\n\t * If set to `true` will export data as pivoted (column names in first column;\r\n\t * values in rows).\r\n\t *\r\n\t * @default false\r\n\t * @since 4.6.8\r\n\t */\r\n\tpivot?: boolean;\r\n\r\n}\r\n\r\n/**\r\n * Represents options for HTML export.\r\n * @since 4.7.0\r\n */\r\nexport interface IExportHTMLOptions {\r\n\r\n\t/**\r\n\t * Add column names in first row?\r\n\t *\r\n\t * Export will try to use user-friendly column names where possible, either\r\n\t * from Export's `dataFields` or deduced from chart's series' names that are\r\n\t * bound to specific data fields.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\taddColumnNames?: boolean;\r\n\r\n\t/**\r\n\t * Use timestamps instead of formatted date/time values.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tuseTimestamps?: boolean;\r\n\r\n\t/**\r\n\t * Will try to format numbers and date/time according to user's locale\r\n\t * settings.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tuseLocale?: boolean;\r\n\r\n\t/**\r\n\t * Replace missing values with this.\r\n\t *\r\n\t * @default \"\" (empty string)\r\n\t */\r\n\temptyAs?: any;\r\n\r\n\t/**\r\n\t * If set to `true` will export data as pivoted (column names in first column;\r\n\t * values in rows).\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tpivot?: boolean;\r\n\r\n\t/**\r\n\t * A class name to add to table.\r\n\t */\r\n\ttableClass?: string;\r\n\r\n\t/**\r\n\t * A class name to add to table headers.\r\n\t */\r\n\trowClass?: string;\r\n\r\n\t/**\r\n\t * A class name to add to table headers.\r\n\t */\r\n\theaderClass?: string;\r\n\r\n\t/**\r\n\t * A class name to add to table cells.\r\n\t */\r\n\tcellClass?: string;\r\n\r\n}\r\n\r\n/**\r\n * Represents options for print.\r\n */\r\nexport interface IExportPrintOptions extends IExportImageOptions {\r\n\r\n\t/**\r\n\t * A delay in milliseconds to wait before initiating print.\r\n\t *\r\n\t * This delay is necessary to ensure DOM is prepared and repainted before\r\n\t * print dialog kicks in.\r\n\t *\r\n\t * @default 500\r\n\t */\r\n\tdelay?: number;\r\n\r\n\t/**\r\n\t * Method to use for printing.\r\n\t *\r\n\t * If one fails for your particular setup, try the other.\r\n\t *\r\n\t * \"css\" - inserts dynamic CSS that hides everything, except the image being printed.\r\n\t * \"iframe\" - creates a dynamic `<iframe>` with the image, then prints it.\r\n\t *\r\n\t * @default \"iframe\"\r\n\t */\r\n\tprintMethod?: \"css\" | \"iframe\";\r\n\r\n}\r\n\r\n/**\r\n * Represents options for custom menu items.\r\n */\r\nexport interface IExportCustomOptions {\r\n\r\n\t/**\r\n\t * A callback function reference that will be called when this custom item\r\n\t * is clicked.\r\n\t */\r\n\tcallback?: (branch?: any) => any;\r\n\r\n\t/**\r\n\t * A target which will be `this` context for callback calls.\r\n\t */\r\n\tcallbackTarget?: any;\r\n\r\n}\r\n\r\n/**\r\n * Represents interface for a temporarily removed image.\r\n */\r\nexport interface IExportRemovedObject {\r\n\r\n\t/**\r\n\t * Element that was removed out of DOM.\r\n\t */\r\n\telement: Node;\r\n\r\n\t/**\r\n\t * A placeholder element that was placed instead of removed element so that\r\n\t * we know where to put removed element back in.\r\n\t */\r\n\tplaceholder: Node;\r\n\r\n}\r\n\r\n/**\r\n * Represents all available options for all export operations.\r\n */\r\nexport interface IExportOptions {\r\n\tpng: IExportImageOptions;\r\n\tgif: IExportImageOptions;\r\n\tjpg: IExportImageOptions;\r\n\tsvg: IExportSVGOptions;\r\n\tpdf: IExportPDFOptions;\r\n\txlsx: IExportExcelOptions;\r\n\tcsv: IExportCSVOptions;\r\n\tjson: IExportJSONOptions;\r\n\tpdfdata: IExportPDFOptions;\r\n\thtml: IExportHTMLOptions;\r\n\tprint: IExportPrintOptions;\r\n\tcustom: IExportCustomOptions;\r\n}\r\n\r\n/**\r\n * All export options as a type.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport type ExportOptions = IExportImageOptions | IExportSVGOptions | IExportPDFOptions | IExportExcelOptions | IExportCSVOptions | IExportJSONOptions | IExportHTMLOptions | IExportPrintOptions;\r\n\r\n/**\r\n * Defines events for export operations.\r\n */\r\nexport interface IExportEvents {\r\n\r\n\t/**\r\n\t * Invoked when Export initializes.\r\n\t */\r\n\tinited: {};\r\n\r\n\t/**\r\n\t * Invoked when Export menu is created.\r\n\t */\r\n\tmenucreated: {};\r\n\r\n\t/**\r\n\t * Invoked when the Export starts export procedure.\r\n\t *\r\n\t * You can use event handlers here to modify config before actual export\r\n\t * starts.\r\n\t */\r\n\texportstarted: ExportOperation;\r\n\r\n\t/**\r\n\t * Invoked when export operation finishes.\r\n\t */\r\n\texportfinished: ExportOperation;\r\n\r\n\t/**\r\n\t * Invoked when export operation encounters error.\r\n\t */\r\n\terror: ExportOperation;\r\n\r\n\t/**\r\n\t * Invoked when export operation times out.\r\n\t *\r\n\t * Use Export's `timeoutDelay` setting to set timeout. (default: 2000ms)\r\n\t */\r\n\texporttimedout: ExportOperation;\r\n\r\n}\r\n\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport type Keys = keyof IExportOptions;\r\n\r\n/**\r\n * Represents a list of available adapters for [[Export]].\r\n */\r\nexport interface IExportAdapters {\r\n\r\n\tsupported: {\r\n\t\tsupported: boolean,\r\n\t\ttype: Keys,\r\n\t\toptions?: IExportOptions[Keys]\r\n\t},\r\n\r\n\texportFunction: {\r\n\t\tfunc: <Key extends keyof IExportOptions>(type: Key, options?: IExportOptions[Key]) => Promise<any>,\r\n\t\ttype: Keys,\r\n\t\toptions?: IExportOptions[Keys]\r\n\t},\r\n\r\n\toptions: {\r\n\t\toptions: IExportOptions[Keys],\r\n\t\ttype?: Keys\r\n\t},\r\n\r\n\ttitle: {\r\n\t\ttitle: $type.Optional<string>,\r\n\t\toptions?: IExportOptions[Keys]\r\n\t},\r\n\r\n\tcharset: {\r\n\t\tcharset: string,\r\n\t\ttype?: Keys,\r\n\t\toptions?: IExportOptions[Keys]\r\n\t}\r\n\r\n\tsvgToDataURI: {\r\n\t\tdata: string,\r\n\t\toptions?: IExportOptions[Keys]\r\n\t},\r\n\r\n\tgetSVG: {\r\n\t\tdata: string,\r\n\t\toptions?: IExportOptions[Keys]\r\n\t},\r\n\r\n\tnormalizeSVG: {\r\n\t\tdata: string,\r\n\t\toptions?: IExportOptions[Keys]\r\n\t},\r\n\r\n\tgetCSV: {\r\n\t\tdata: string,\r\n\t\toptions?: IExportOptions[Keys]\r\n\t},\r\n\r\n\tgetJSON: {\r\n\t\tdata: string,\r\n\t\toptions?: IExportOptions[Keys]\r\n\t},\r\n\r\n\tgetExcel: {\r\n\t\tdata: string,\r\n\t\toptions?: IExportOptions[Keys]\r\n\t},\r\n\r\n\tgetHTML: {\r\n\t\tdata: string,\r\n\t\toptions?: IExportOptions[Keys]\r\n\t},\r\n\r\n\tpdfmakeDocument: {\r\n\t\tdoc: any,\r\n\t\toptions?: IExportOptions[Keys]\r\n\t},\r\n\r\n\tpdfmakeTable: {\r\n\t\ttable: any,\r\n\t\toptions?: IExportOptions[Keys]\r\n\t},\r\n\r\n\tcontainer: {\r\n\t\tcontainer: HTMLElement\r\n\t},\r\n\r\n\tsprite: {\r\n\t\tsprite: Sprite\r\n\t},\r\n\r\n\textraSprites: {\r\n\t\textraSprites: Array<Sprite | IExportCanvas>\r\n\t},\r\n\r\n\tvalidateSprites: {\r\n\t\tvalidateSprites: Array<Sprite>\r\n\t},\r\n\r\n\tdata: {\r\n\t\tdata: Array<any>\r\n\t},\r\n\r\n\tdataFields: {\r\n\t\tdataFields: any\r\n\t},\r\n\r\n\tformatDataFields: {\r\n\t\tdataFields: any,\r\n\t\tformat: string\r\n\t},\r\n\r\n\tdateFormatter: {\r\n\t\tdateFormatter: DateFormatter\r\n\t},\r\n\r\n\tdateFormat: {\r\n\t\tdateFormat: $type.Optional<string | Intl.DateTimeFormatOptions>\r\n\t},\r\n\r\n\tdateFields: {\r\n\t\tdateFields: any\r\n\t},\r\n\r\n\tnumberFormatter: {\r\n\t\tnumberFormatter: NumberFormatter\r\n\t},\r\n\r\n\tnumberFormat: {\r\n\t\tnumberFormat: $type.Optional<string>\r\n\t},\r\n\r\n\tnumberFields: {\r\n\t\tnumberFields: any\r\n\t},\r\n\r\n\tdurationFormatter: {\r\n\t\tdurationFormatter: DurationFormatter\r\n\t},\r\n\r\n\tdurationFormat: {\r\n\t\tdurationFormat: $type.Optional<string>\r\n\t},\r\n\r\n\tdurationFields: {\r\n\t\tdurationFields: any\r\n\t},\r\n\r\n\tdataFieldName: {\r\n\t\tname: string,\r\n\t\tfield: string\r\n\t},\r\n\r\n\tisDateField: {\r\n\t\tisDateField: boolean,\r\n\t\tfield: string\r\n\t},\r\n\r\n\tisNumberField: {\r\n\t\tisNumberField: boolean,\r\n\t\tfield: string\r\n\t},\r\n\r\n\tisDurationField: {\r\n\t\tisDurationField: boolean,\r\n\t\tfield: string\r\n\t},\r\n\r\n\tcontentType: {\r\n\t\tcontentType: string,\r\n\t\ttype: Keys\r\n\t},\r\n\r\n\tfilePrefix: {\r\n\t\tfilePrefix: string\r\n\t},\r\n\r\n\tbackgroundColor: {\r\n\t\tbackgroundColor: $type.Optional<Color>\r\n\t},\r\n\r\n\ttimeoutMessage: {\r\n\t\tmessage: string\r\n\t},\r\n\r\n\txlsxWorkbookOptions: {\r\n\t\toptions: any\r\n\t},\r\n\r\n\txlsxSheetName: {\r\n\t\tname: string\r\n\t}\r\n\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * [[Export]] allows downloading of current snapshot of the chart as an\r\n * image, PDF, or its data in various formats.\r\n *\r\n * The export functionality is enabled by default in charts and is accessible\r\n * via API or optional export menu.\r\n *\r\n * To enable menu, simply access export's `menu` property. E.g.:\r\n *\r\n * ```TypeScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"exporting\": {\r\n * \"menu\": {}\r\n * }\r\n * }\r\n * ```\r\n *\r\n * To export via API, use `export()` method:\r\n *\r\n * ```TypeScript\r\n * chart.exporting.export(type, [options]);\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.export(type, [options]);\r\n * ```\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * chart.exporting.export(\"png\");\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.export(\"png\");\r\n * ```\r\n *\r\n * @todo Better loading indicator?\r\n * @todo Implement multiplier option\r\n * @todo Handling of hanged exports\r\n * @important\r\n */\r\nexport class Export extends Validatable {\r\n\r\n\t/**\r\n\t * XLINK namespace definition.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tstatic XLINK: string = \"http://www.w3.org/1999/xlink\";\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IExportEvents;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IExportAdapters;\r\n\r\n\t/**\r\n\t * Adapter.\r\n\t */\r\n\tpublic adapter = new Adapter<Export, IExportAdapters>(this);\r\n\r\n\t/**\r\n\t * Holds options for each format.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprivate _formatOptions: Dictionary<string, ExportOptions> = new Dictionary<string, ExportOptions>();\r\n\r\n\t/**\r\n\t * An instance of [[Language]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _language: $type.Optional<Language>;\r\n\r\n\t/**\r\n\t * An instance of [[ExportMenu]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _menu: $type.Optional<ExportMenu>;\r\n\r\n\t/**\r\n\t * Reference to main container to place menu in.\r\n\t */\r\n\tprotected _container: HTMLElement;\r\n\r\n\t/**\r\n\t * [[Sprite]] instance to be used when converting to image.\r\n\t */\r\n\tprotected _sprite: $type.Optional<Sprite>;\r\n\r\n\t/**\r\n\t * Extra [[Sprite]] elements to include in exports.\r\n\t */\r\n\tprotected _extraSprites: Array<Sprite | IExportCanvas> = [];\r\n\r\n\t/**\r\n\t * A list of [[Sprite]] elements that need to be valid before export\r\n\t * commences.\r\n\t */\r\n\tprotected _validateSprites: Array<Sprite> = [];\r\n\r\n\t/**\r\n\t * Data storage to be used when exporting to data formats.\r\n\t */\r\n\tprotected _data: any;\r\n\r\n\t/**\r\n\t * Holds an object of field key / field name used to name columns when\r\n\t * exporting to data formats.\r\n\t */\r\n\tprotected _dataFields: any;\r\n\r\n\t/**\r\n\t * Indicates whether data fields were generated dynamically (`true`) or\r\n\t * if they were pre-set by the user (`false`).\r\n\t */\r\n\tprotected _dynamicDataFields: boolean = true;\r\n\r\n\t/**\r\n\t * A reference to [[DateFormatter]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _dateFormatter: $type.Optional<DateFormatter>;\r\n\r\n\t/**\r\n\t * A Date format to be used when formatting dates in string-based data\r\n\t * formats.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _dateFormat: $type.Optional<string | Intl.DateTimeFormatOptions>;\r\n\r\n\t/**\r\n\t * A list of column keys that hold date values.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _dateFields: $type.Optional<List<string>>;\r\n\r\n\t/**\r\n\t * A reference to [[DurationFormatter]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _durationFormatter: $type.Optional<DurationFormatter>;\r\n\r\n\t/**\r\n\t * A duration format to be used when formatting numeric values.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _durationFormat: $type.Optional<string>;\r\n\r\n\t/**\r\n\t * A list of column keys that hold duration values.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _durationFields: $type.Optional<List<string>>;\r\n\r\n\t/**\r\n\t * A reference to [[NumberFormatter]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _numberFormatter: $type.Optional<NumberFormatter>;\r\n\r\n\t/**\r\n\t * A number format to be used when formatting numbers in string-based data\r\n\t * formats.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _numberFormat: $type.Optional<string>;\r\n\r\n\t/**\r\n\t * A list of column keys that hold number values.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _numberFields: $type.Optional<List<string>>;\r\n\r\n\t/**\r\n\t * Holds a list of objects that were temporarily removed from the DOM while\r\n\t * exporting. Those most probably are tainted images, or foreign objects that\r\n\t * would otherwise prevent SVG to be converted to canvas.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _removedObjects: List<IExportRemovedObject> = new List<IExportRemovedObject>();\r\n\r\n\t/**\r\n\t * Holds references to the objects that were temporarily hidden when export\r\n\t * started, so that we can reveal them back when export ends.\r\n\t */\r\n\tprotected _hiddenObjects: Sprite[] = [];\r\n\r\n\t/**\r\n\t * Indicates if non-exportable objects are now hidden;\r\n\t */\r\n\tprotected _objectsAlreadyHidden: boolean = false;\r\n\r\n\t/**\r\n\t * Exported files will be prefixed with whatever it is set here.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _filePrefix: string = \"amCharts\";\r\n\r\n\t/**\r\n\t * Export will try to determine proper background color itself. If you want to\r\n\t * override it and use some other color, set this property.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _backgroundColor: $type.Optional<Color>;\r\n\r\n\t/**\r\n\t * A title to use for some document exports, mainly for print.\r\n\t * A document.title will be used if not set.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _title: $type.Optional<string>;\r\n\r\n\t/**\r\n\t * If you are using web fonts (such as Google Fonts), your chart might be\r\n\t * using them as well.\r\n\t *\r\n\t * Normally, exporting to image will require to download these fonts so the\r\n\t * are carried over to exported image.\r\n\t *\r\n\t * This setting can be used to disable or enable this functionality.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tpublic useWebFonts: boolean = true;\r\n\r\n\t/**\r\n\t * Many modern displays have use more actual pixels per displayed pixel. This\r\n\t * results in sharper images on screen. Unfortunately, when exported to a\r\n\t * bitmap image of the sam width/height size it will lose those extra pixels,\r\n\t * resulting in somewhat blurry image.\r\n\t *\r\n\t * This is why we are going to export images larger than they are, so that we\r\n\t * don't lose any details.\r\n\t *\r\n\t * If you'd rather export images without change in size, set this to `false`.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tpublic useRetina: boolean = true;\r\n\r\n\t/**\r\n\t * By default Export will try to use built-in method for transforming chart\r\n\t * into an image for download, then fallback to external library (canvg) for\r\n\t * conversion if failed.\r\n\t *\r\n\t * Setting this to `false` will force use of external library for all export\r\n\t * operations.\r\n\t *\r\n\t * It might be useful to turn off simplified export if you are using strict\r\n\t * content security policies, that disallow images with blobs as their\r\n\t * source.\r\n\t *\r\n\t * @default true\r\n\t * @since 4.2.5\r\n\t */\r\n\tpublic useSimplifiedExport: boolean = true;\r\n\r\n\t/**\r\n\t * If export operation takes longer than milliseconds in this second, we will\r\n\t * show a modal saying export operation took longer than expected.\r\n\t */\r\n\tpublic timeoutDelay: number = 2000;\r\n\r\n\t/**\r\n\t * A reference to export timeout.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _timeoutTimeout: $type.Optional<IDisposer>;\r\n\r\n\t/**\r\n\t * Holds reference to [[Modal]] instance.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _modal: $type.Optional<Modal>;\r\n\r\n\t/**\r\n\t * Used to log original value of `interactionsEnabled` so that it can be restored\r\n\t * after temporarily disabling it.\r\n\t */\r\n\tprivate _spriteInteractionsEnabled: $type.Optional<boolean>;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor(container: HTMLElement) {\r\n\t\tsuper();\r\n\r\n\t\tthis._container = container;\r\n\r\n\t\tthis.className = \"Export\";\r\n\r\n\t\t// Set default options\r\n\t\tthis._formatOptions.setKey(\"png\", {});\r\n\r\n\t\tthis._formatOptions.setKey(\"jpg\", {\r\n\t\t\tquality: 0.8\r\n\t\t});\r\n\r\n\t\tthis._formatOptions.setKey(\"gif\", {});\r\n\r\n\t\tthis._formatOptions.setKey(\"svg\", {});\r\n\r\n\t\tthis._formatOptions.setKey(\"pdf\", {\r\n\t\t\tfontSize: 14,\r\n\t\t\timageFormat: \"png\",\r\n\t\t\taddURL: true,\r\n\t\t\taddColumnNames: true\r\n\t\t});\r\n\r\n\t\tthis._formatOptions.setKey(\"json\", {\r\n\t\t\tindent: 2,\r\n\t\t\tuseLocale: true\r\n\t\t});\r\n\r\n\t\tthis._formatOptions.setKey(\"csv\", {\r\n\t\t\taddColumnNames: true,\r\n\t\t\temptyAs: \"\"\r\n\t\t});\r\n\r\n\t\tthis._formatOptions.setKey(\"xlsx\", {\r\n\t\t\taddColumnNames: true,\r\n\t\t\tuseLocale: true,\r\n\t\t\temptyAs: \"\"\r\n\t\t});\r\n\r\n\t\tthis._formatOptions.setKey(\"html\", {\r\n\t\t\taddColumnNames: true,\r\n\t\t\temptyAs: \"\"\r\n\t\t});\r\n\r\n\t\tthis._formatOptions.setKey(\"pdfdata\", {\r\n\t\t\tfontSize: 14,\r\n\t\t\timageFormat: \"png\",\r\n\t\t\taddURL: true,\r\n\t\t\taddColumnNames: true,\r\n\t\t\temptyAs: \"\"\r\n\t\t});\r\n\r\n\t\tthis._formatOptions.setKey(\"print\", {\r\n\t\t\tdelay: 500,\r\n\t\t\tprintMethod: \"iframe\"\r\n\t\t});\r\n\r\n\t\t// Add options adapter\r\n\t\tthis.adapter.add(\"options\", (arg) => {\r\n\t\t\tlet formatOptions = this._formatOptions.getKey(arg.type);\r\n\t\t\tif (arg.options) {\r\n\t\t\t\targ.options = $object.merge(formatOptions, arg.options);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\targ.options = formatOptions;\r\n\t\t\t}\r\n\t\t\treturn arg;\r\n\t\t});\r\n\r\n\t\tthis.applyTheme();\r\n\r\n\t\tthis.dispatchImmediately(\"inited\");\r\n\t}\r\n\r\n\t/**\r\n\t * An instance of [[ExportMenu]].\r\n\t *\r\n\t * To add an export menu to a chart, set this to a new instance of\r\n\t * [[ExportMenu]].\r\n\t *\r\n\t * ```TypeScript\r\n\t * chart.exporting.menu = new am4core.ExportMenu();\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * chart.exporting.menu = new am4core.ExportMenu();\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"exporting\": {\r\n\t * \"menu\": {}\r\n\t * }\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @param menu ExportMenu instance\r\n\t */\r\n\tpublic set menu(menu: $type.Optional<ExportMenu>) {\r\n\t\tif (this._menu) {\r\n\t\t\tthis.removeDispose(this._menu);\r\n\t\t}\r\n\t\tthis._menu = menu;\r\n\r\n\t\t// Set container and language\r\n\t\tthis._menu.container = this.container;\r\n\t\tthis._menu.language = this._language;\r\n\r\n\t\t// Add adapter to check for browser support\r\n\t\tthis._menu.adapter.add(\"branch\", (arg) => {\r\n\t\t\targ.branch.unsupported = !this.typeSupported(arg.branch.type);\r\n\t\t\treturn arg;\r\n\t\t});\r\n\r\n\t\t// Add click events\r\n\t\tthis._menu.events.on(\"hit\", (ev) => {\r\n\t\t\tthis.export(ev.branch.type, ev.branch.options);\r\n\t\t\tthis.menu.close();\r\n\t\t});\r\n\r\n\t\tthis._menu.events.on(\"enter\", (ev) => {\r\n\t\t\tthis.export(ev.branch.type, ev.branch.options);\r\n\t\t\tthis.menu.close();\r\n\t\t});\r\n\r\n\t\tthis._menu.events.on(\"over\", (ev) => {\r\n\t\t\tthis._disablePointers();\r\n\t\t});\r\n\r\n\t\tthis._menu.events.on(\"out\", (ev) => {\r\n\t\t\tthis._releasePointers();\r\n\t\t});\r\n\r\n\t\t// Dispatch event\r\n\t\tthis.dispatchImmediately(\"menucreated\");\r\n\r\n\t\t// Prefix with Sprite's class name\r\n\t\tthis._menu.adapter.add(\"classPrefix\", (obj) => {\r\n\t\t\tobj.classPrefix = options.classNamePrefix + obj.classPrefix;\r\n\t\t\treturn obj;\r\n\t\t});\r\n\r\n\t\t// Add menu to disposers so that it's destroyed when Export is disposed\r\n\t\tthis._disposers.push(this._menu);\r\n\t}\r\n\r\n\t/**\r\n\t * @return ExportMenu instance\r\n\t */\r\n\tpublic get menu(): $type.Optional<ExportMenu> {\r\n\t\treturn this._menu;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if this specific menu item type is supported by current system.\r\n\t *\r\n\t * @param type Menu item type\r\n\t * @return `false` if not supported\r\n\t */\r\n\tpublic typeSupported<Key extends keyof IExportOptions>(type: Key): boolean {\r\n\t\tlet supported = true;\r\n\t\tif (type === \"pdf\") {\r\n\t\t\t//supported = this.downloadSupport();\r\n\t\t}\r\n\t\telse if (type === \"xlsx\") {\r\n\t\t\t//supported = (this.downloadSupport() && this._hasData()) ? true : false;\r\n\t\t\tsupported = this._hasData() ? true : false;\r\n\t\t}\r\n\t\telse if (type == \"print\" && !(<any>window).print) {\r\n\t\t\tsupported = false;\r\n\t\t}\r\n\t\telse if ([\"json\", \"csv\", \"html\", \"pdfdata\"].indexOf(type) !== -1 && !this._hasData()) {\r\n\t\t\tsupported = false;\r\n\t\t}\r\n\t\treturn this.adapter.apply(\"supported\", {\r\n\t\t\tsupported: supported,\r\n\t\t\ttype: type\r\n\t\t}).supported;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if data is available.\r\n\t *\r\n\t * @return Has data?\r\n\t */\r\n\tprivate _hasData(): boolean {\r\n\t\treturn this.data && this.data.length;\r\n\t}\r\n\r\n\t/**\r\n\t * Get function to handle export for particular format.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprivate _getFunction<Key extends keyof IExportOptions>(type: Key): (this: this, type: Key, options?: IExportOptions[Key]) => Promise<any> {\r\n\t\tswitch (type) {\r\n\t\t\tcase \"png\":\r\n\t\t\tcase \"gif\":\r\n\t\t\tcase \"jpg\":\r\n\t\t\t\treturn <any>this.getImage;\r\n\t\t\tcase \"svg\":\r\n\t\t\t\treturn <any>this.getSVG;\r\n\t\t\tcase \"pdf\":\r\n\t\t\tcase \"pdfdata\":\r\n\t\t\t\treturn <any>this.getPDF;\r\n\t\t\tcase \"xlsx\":\r\n\t\t\t\treturn <any>this.getExcel;\r\n\t\t\tcase \"csv\":\r\n\t\t\t\treturn <any>this.getCSV;\r\n\t\t\tcase \"json\":\r\n\t\t\t\treturn <any>this.getJSON;\r\n\t\t\tcase \"html\":\r\n\t\t\t\treturn <any>this.getHTML;\r\n\t\t\tcase \"print\":\r\n\t\t\t\treturn <any>this.getPrint;\r\n\t\t\tdefault:\r\n\t\t\t\treturn this.unsupported;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Initiates export procedure.\r\n\t *\r\n\t * @param type Export type\r\n\t * @param options Options\r\n\t * @return `true` if export was successful\r\n\t * @async\r\n\t */\r\n\tpublic async export<Key extends keyof IExportOptions>(type: Key, options?: IExportOptions[Key]): Promise<boolean> {\r\n\r\n\t\t// Check if it's a custom item, and do nothing or execute custom callback\r\n\t\tif (type == \"custom\") {\r\n\t\t\tthis.handleCustom(<IExportCustomOptions>options);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// Dispatch event\r\n\t\tif (this.events.isEnabled(\"exportstarted\")) {\r\n\t\t\tconst event: AMEvent<this, IExportEvents>[\"exportstarted\"] = {\r\n\t\t\t\t\"type\": \"exportstarted\",\r\n\t\t\t\t\"target\": this,\r\n\t\t\t\t\"format\": type,\r\n\t\t\t\t\"options\": options\r\n\t\t\t};\r\n\t\t\tthis.events.dispatchImmediately(\"exportstarted\", event);\r\n\t\t}\r\n\r\n\t\t// Schedule a preloader\r\n\t\tthis.showPreloader()\r\n\r\n\t\t// Schedule a timeout\r\n\t\tif (this.timeoutDelay) {\r\n\t\t\tthis.hideTimeout();\r\n\t\t\tthis._timeoutTimeout = this.setTimeout((): void => {\r\n\r\n\t\t\t\t// Dispatch event\r\n\t\t\t\tif (this.events.isEnabled(\"exporttimedout\")) {\r\n\t\t\t\t\tconst event: AMEvent<this, IExportEvents>[\"exporttimedout\"] = {\r\n\t\t\t\t\t\t\"type\": \"exporttimedout\",\r\n\t\t\t\t\t\t\"target\": this,\r\n\t\t\t\t\t\t\"format\": type,\r\n\t\t\t\t\t\t\"options\": options\r\n\t\t\t\t\t};\r\n\t\t\t\t\tthis.events.dispatchImmediately(\"exporttimedout\", event);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Show modal\r\n\t\t\t\tthis.showTimeout()\r\n\r\n\t\t\t}, this.timeoutDelay);\r\n\t\t}\r\n\r\n\t\t// Hide items that should not be exported\r\n\t\tthis.hideNonExportableSprites();\r\n\r\n\t\t// Get the actual export function\r\n\t\tlet func: (this: this, type: Key, options?: IExportOptions[Key]) => Promise<any> = this._getFunction(type);\r\n\r\n\t\t// Give chance for plugins to override both function and options\r\n\t\toptions = this.adapter.apply(\"options\", {\r\n\t\t\toptions: options,\r\n\t\t\ttype: type\r\n\t\t}).options;\r\n\r\n\t\tfunc = this.adapter.apply(\"exportFunction\", {\r\n\t\t\tfunc: func as any,\r\n\t\t\ttype: type,\r\n\t\t\toptions: options\r\n\t\t}).func;\r\n\r\n\t\t// Get exported stuff\r\n\t\tlet data = await func.call(this, type, options);\r\n\r\n\t\t// Restore temporarily hidden elements\r\n\t\tthis.restoreNonExportableSprites();\r\n\r\n\t\tif (data) {\r\n\r\n\t\t\t// Dispatch event\r\n\t\t\tif (this.events.isEnabled(\"exportfinished\")) {\r\n\t\t\t\tconst event: AMEvent<this, IExportEvents>[\"exportfinished\"] = {\r\n\t\t\t\t\t\"type\": \"exportfinished\",\r\n\t\t\t\t\t\"target\": this,\r\n\t\t\t\t\t\"format\": type,\r\n\t\t\t\t\t\"options\": options\r\n\t\t\t\t};\r\n\t\t\t\tthis.events.dispatchImmediately(\"exportfinished\", event);\r\n\t\t\t}\r\n\r\n\t\t\t// Hide preloader and timeout modals\r\n\t\t\tthis.hidePreloader();\r\n\t\t\tthis.hideTimeout();\r\n\t\t\tif (this.menu) {\r\n\t\t\t\tthis.menu.close();\r\n\t\t\t}\r\n\r\n\t\t\t// Download or print\r\n\t\t\tif (type === \"print\") {\r\n\t\t\t\treturn this.print(data, <IExportOptions[\"print\"]>options, this.adapter.apply(\"title\", {\r\n\t\t\t\t\ttitle: this.title,\r\n\t\t\t\t\toptions: options\r\n\t\t\t\t}).title);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (type == \"pdfdata\") {\r\n\t\t\t\t\treturn this.download(data, this.filePrefix + \".pdf\");\r\n\t\t\t\t}\r\n\t\t\t\treturn this.download(data, this.filePrefix + \".\" + type);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// Throw exception?\r\n\t\t\t// @todo\r\n\r\n\t\t\t// Dispatch event\r\n\t\t\tif (this.events.isEnabled(\"error\")) {\r\n\t\t\t\tconst event: AMEvent<this, IExportEvents>[\"error\"] = {\r\n\t\t\t\t\t\"type\": \"error\",\r\n\t\t\t\t\t\"target\": this,\r\n\t\t\t\t\t\"format\": type,\r\n\t\t\t\t\t\"options\": options\r\n\t\t\t\t};\r\n\t\t\t\tthis.events.dispatchImmediately(\"error\", event);\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * A function that should handle unsupported export types.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param type Export type\r\n\t * @param options Options\r\n\t * @return Promise\r\n\t * @async\r\n\t */\r\n\tpublic async unsupported<Key extends keyof IExportOptions>(type: Key, options?: IExportOptions[Key]): Promise<string> {\r\n\t\t// TODO should this return `undefined`?\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\t/**\r\n\t * Handles click on a \"custom\" menu item.\r\n\t *\r\n\t * Basically, if it has \"callback\" enabled, it will be called. Nothing else.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param options Options\r\n\t */\r\n\tpublic handleCustom(options: IExportCustomOptions): void {\r\n\t\tif ($type.hasValue(options) && $type.hasValue(options.callback)) {\r\n\t\t\toptions.callback.call(options.callbackTarget || this, options);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Requests a Print of the chart.\r\n\t *\r\n\t * @param type Export type\r\n\t * @param options Options\r\n\t * @return Promise\r\n\t * @async\r\n\t */\r\n\tpublic async getPrint(type: string, options?: IExportPrintOptions): Promise<string> {\r\n\t\treturn this.getImage(\"png\", options);\r\n\t}\r\n\r\n\t/**\r\n\t * A function that returns data: URI encoded @font-family, so that way it can be embedded into SVG.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return String which can be embedded directly into a <style> element.\r\n\t * @async\r\n\t */\r\n\tpublic async getFontFamilies(): Promise<{ blobs: Array<string>, cssText: string }> {\r\n\t\tconst DOMURL = this.getDOMURL();\r\n\r\n\t\tconst blobs: Array<string> = [];\r\n\t\tconst promises: Array<Promise<string>> = [];\r\n\r\n\t\tawait eachStylesheets((topUrl, rule) => {\r\n\t\t\tif (rule.type === CSSRule.FONT_FACE_RULE) {\r\n\t\t\t\tconst cssText = rule.cssText;\r\n\r\n\t\t\t\t// TODO this is necessary because Edge doesn't let you access the src using getPropertyValue\r\n\t\t\t\tconst src = fontFamilySrcRegexp.exec(cssText);\r\n\r\n\t\t\t\tif (src !== null) {\r\n\t\t\t\t\t// TODO make this faster (don't create Promises for non-url stuff)\r\n\t\t\t\t\tconst urls: Array<Promise<string | null>> = src[1].split(/ *, */).map(async (url) => {\r\n\t\t\t\t\t\t// TODO better parsing for this\r\n\t\t\t\t\t\t// TODO is it necessary to handle ' ?\r\n\t\t\t\t\t\tconst a = /^url\\([\"']?([^\"'\\)]+)[\"']?\\)([^,]*)$/.exec(url);\r\n\r\n\t\t\t\t\t\tif (a === null) {\r\n\t\t\t\t\t\t\treturn url;\r\n\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconst after = a[2];\r\n\r\n\t\t\t\t\t\t\tconst fullUrl = $utils.joinUrl(topUrl, a[1]);\r\n\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t// Fetch the actual font-file (.woff)\r\n\t\t\t\t\t\t\t\tconst response = await $net.load(fullUrl, undefined, { responseType: \"blob\" });\r\n\r\n\t\t\t\t\t\t\t\tlet url;\r\n\r\n\t\t\t\t\t\t\t\t// We need blob for IE and Edge\r\n\t\t\t\t\t\t\t\tif (supportsBlobUri()) {\r\n\t\t\t\t\t\t\t\t\turl = DOMURL.createObjectURL(response.blob);\r\n\t\t\t\t\t\t\t\t\tblobs.push(url);\r\n\r\n\t\t\t\t\t\t\t\t\t// We need a data URI for Firefox and Chrome\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\turl = await blobToDataUri(response.blob);\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t// TODO should it should escape the URI ?\r\n\t\t\t\t\t\t\t\treturn \"url(\\\"\" + url + \"\\\")\" + after;\r\n\r\n\t\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\t\tconsole.error(\"Failed to load font\", fullUrl, e);\r\n\t\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tpromises.push(Promise.all(urls).then((a) => {\r\n\t\t\t\t\t\ta = a.filter((x) => x != null);\r\n\r\n\t\t\t\t\t\tif (a.length === 0) {\r\n\t\t\t\t\t\t\treturn \"\";\r\n\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\treturn cssText.replace(fontFamilySrcRegexp, \"src: \" + a.join(\", \") + \";\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tconst a = await Promise.all(promises);\r\n\r\n\t\treturn {\r\n\t\t\tblobs: blobs,\r\n\t\t\tcssText: a.filter((x) => !!x).join(\"\\n\")\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Produces image output from the element.\r\n\t *\r\n\t * Converts to a `Canvas` first, then produces an image to download.\r\n\t *\r\n\t * This is an asynchronous function. Rather than returning a result, it\r\n\t * returns a Promise.\r\n\t *\r\n\t * You can use `await` notion from other async functions, or `then()`\r\n\t * anywhere else.\r\n\t *\r\n\t * ```TypeScript\r\n\t * let img;\r\n\t *\r\n\t * // Async\r\n\t * img = await chart.exporting.getImage( \"png\" );\r\n\t *\r\n\t * // Sync\r\n\t * chart.exporting.getImage( \"png\" ).then( ( data ) => {\r\n\t * img = data;\r\n\t * } );\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * var img;\r\n\t * chart.exporting.getImage( \"png\" ).then( ( data ) => {\r\n\t * img = data;\r\n\t * } );\r\n\t * ```\r\n\t *\r\n\t * @param type Image format\r\n\t * @param options Options\r\n\t * @param includeExtras Should extra sprites be included if set?\r\n\t * @return Promise\r\n\t */\r\n\tpublic async getImage<Key extends imageFormats>(type: Key, options?: IExportImageOptions, includeExtras?: boolean): Promise<string> {\r\n\r\n\t\tlet prehidden = this._objectsAlreadyHidden;\r\n\t\tif (!prehidden) {\r\n\t\t\tthis.hideNonExportableSprites();\r\n\t\t}\r\n\r\n\t\tif (!$type.hasValue(options)) {\r\n\t\t\toptions = this.getFormatOptions(type);\r\n\t\t}\r\n\r\n\t\t// Wait for required elements to be ready before proceeding\r\n\t\tawait this.awaitValidSprites();\r\n\r\n\t\t// Are we using simplified export option?\r\n\t\tif (await this.simplifiedImageExport()) {\r\n\r\n\t\t\ttry {\r\n\t\t\t\tlet canvas = await this.getCanvas(options);\r\n\r\n\t\t\t\t// Add extra sprites\r\n\t\t\t\tif (includeExtras !== false) {\r\n\t\t\t\t\tcanvas = await this.addExtras(canvas, options);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Convert to data uri\r\n\t\t\t\tlet uri = canvas.toDataURL(this.getContentType(type), options.quality);\r\n\r\n\t\t\t\t// Get rid of the canvas\r\n\t\t\t\tthis.disposeCanvas(canvas);\r\n\r\n\t\t\t\tif (!prehidden) {\r\n\t\t\t\t\tthis.restoreNonExportableSprites();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn uri;\r\n\t\t\t}\r\n\t\t\tcatch (e) {\r\n\t\t\t\tconsole.error(e.message + \"\\n\" + e.stack);\r\n\t\t\t\tconsole.warn(\"Simple export failed, falling back to advanced export\");\r\n\r\n\t\t\t\t// An error occurred, let's try advanced method\r\n\t\t\t\tconst data = await this.getImageAdvanced(type, options, includeExtras);\r\n\r\n\t\t\t\tif (!prehidden) {\r\n\t\t\t\t\tthis.restoreNonExportableSprites();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn data;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\telse {\r\n\r\n\t\t\t/**\r\n\t\t\t * Going the hard way. Converting to canvas from each node\r\n\t\t\t */\r\n\t\t\tconst data = await this.getImageAdvanced(type, options, includeExtras);\r\n\r\n\t\t\tif (!prehidden) {\r\n\t\t\t\tthis.restoreNonExportableSprites();\r\n\t\t\t}\r\n\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Adds extra elements to the canvas.\r\n\t *\r\n\t * @param canvas Original canvas\r\n\t * @param options Options\r\n\t */\r\n\tprivate async addExtras(canvas: HTMLCanvasElement, options?: IExportImageOptions, advanced?: boolean): Promise<HTMLCanvasElement> {\r\n\t\tif (this.extraSprites.length) {\r\n\t\t\tlet middleLeft = 0;\r\n\t\t\tlet middleTop = 0;\r\n\t\t\tlet middleWidth = canvas.width;\r\n\t\t\tlet middleHeight = canvas.height;\r\n\t\t\tlet extraRight = 0;\r\n\t\t\tlet extraBottom = 0;\r\n\r\n\t\t\tconst extras = await Promise.all($array.map(this.extraSprites, async (extraSprite) => {\r\n\t\t\t\t// Get that extra\r\n\t\t\t\tlet extra: IExportCanvas;\r\n\r\n\t\t\t\tif (extraSprite instanceof Sprite) {\r\n\t\t\t\t\textra = {\r\n\t\t\t\t\t\tsprite: extraSprite,\r\n\t\t\t\t\t\tposition: \"bottom\"\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\textra = extraSprite;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Set defaults\r\n\t\t\t\textra.position = extra.position || \"bottom\";\r\n\t\t\t\textra.marginTop = extra.marginTop || 0;\r\n\t\t\t\textra.marginRight = extra.marginRight || 0;\r\n\t\t\t\textra.marginBottom = extra.marginBottom || 0;\r\n\t\t\t\textra.marginLeft = extra.marginLeft || 0;\r\n\r\n\t\t\t\tlet extraCanvas;\r\n\r\n\t\t\t\tif (advanced) {\r\n\t\t\t\t\textraCanvas = await extra.sprite.exporting.getCanvasAdvanced(options);\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\textraCanvas = await extra.sprite.exporting.getCanvas(options);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst extraWidth = extraCanvas.width + extra.marginLeft + extra.marginRight;\r\n\t\t\t\tconst extraHeight = extraCanvas.height + extra.marginTop + extra.marginBottom;\r\n\r\n\t\t\t\tif (extra.position == \"top\") {\r\n\t\t\t\t\tmiddleWidth = extra.crop ? middleHeight : $math.max(middleWidth, extraWidth);\r\n\t\t\t\t\tmiddleTop += extraHeight;\r\n\r\n\t\t\t\t} else if (extra.position == \"right\") {\r\n\t\t\t\t\tmiddleHeight = extra.crop ? middleHeight : $math.max(middleHeight, extraHeight);\r\n\t\t\t\t\textraRight += extraWidth;\r\n\r\n\t\t\t\t} else if (extra.position == \"left\") {\r\n\t\t\t\t\tmiddleHeight = extra.crop ? middleHeight : $math.max(middleHeight, extraHeight);\r\n\t\t\t\t\tmiddleLeft += extraWidth;\r\n\r\n\t\t\t\t} else if (extra.position === \"bottom\") {\r\n\t\t\t\t\tmiddleWidth = extra.crop ? middleHeight : $math.max(middleWidth, extraWidth);\r\n\t\t\t\t\textraBottom += extraHeight;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tcanvas: extraCanvas,\r\n\t\t\t\t\tposition: extra.position,\r\n\t\t\t\t\tleft: extra.marginLeft,\r\n\t\t\t\t\ttop: extra.marginTop,\r\n\t\t\t\t\twidth: extraWidth,\r\n\t\t\t\t\theight: extraHeight\r\n\t\t\t\t};\r\n\t\t\t}));\r\n\r\n\t\t\tconst newCanvas = this.getDisposableCanvas();\r\n\r\n\t\t\tnewCanvas.width = middleLeft + middleWidth + extraRight;\r\n\t\t\tnewCanvas.height = middleTop + middleHeight + extraBottom;\r\n\r\n\t\t\tconst ctx = newCanvas.getContext(\"2d\");\r\n\r\n\t\t\t// Get background\r\n\t\t\tconst background = this.backgroundColor || this.findBackgroundColor(this.sprite.dom);\r\n\r\n\t\t\tif (background) {\r\n\t\t\t\tctx.fillStyle = background.toString();\r\n\t\t\t\tctx.fillRect(0, 0, newCanvas.width, newCanvas.height);\r\n\t\t\t}\r\n\r\n\t\t\tlet left = middleLeft;\r\n\t\t\tlet top = middleTop;\r\n\t\t\tlet right = left + middleWidth;\r\n\t\t\tlet bottom = top + middleHeight;\r\n\r\n\t\t\t// Radiates outwards from center\r\n\t\t\t$array.each(extras, (extra) => {\r\n\t\t\t\tif (extra.position == \"top\") {\r\n\t\t\t\t\ttop -= extra.height;\r\n\t\t\t\t\tctx.drawImage(extra.canvas, middleLeft + extra.left, top + extra.top);\r\n\r\n\t\t\t\t} else if (extra.position == \"right\") {\r\n\t\t\t\t\tctx.drawImage(extra.canvas, right + extra.left, middleTop + extra.top);\r\n\t\t\t\t\tright += extra.width;\r\n\r\n\t\t\t\t} else if (extra.position == \"left\") {\r\n\t\t\t\t\tleft -= extra.width;\r\n\t\t\t\t\tctx.drawImage(extra.canvas, left + extra.left, middleTop + extra.top);\r\n\r\n\t\t\t\t} else if (extra.position === \"bottom\") {\r\n\t\t\t\t\tctx.drawImage(extra.canvas, middleLeft + extra.left, bottom + extra.top);\r\n\t\t\t\t\tbottom += extra.height;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.disposeCanvas(extra.canvas);\r\n\t\t\t});\r\n\r\n\t\t\tctx.drawImage(canvas, middleLeft, middleTop);\r\n\r\n\t\t\treturn newCanvas;\r\n\r\n\t\t} else {\r\n\t\t\treturn canvas;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns canvas representation of the [[Sprite]].\r\n\t *\r\n\t * @param options Options\r\n\t * @return Canvas\r\n\t */\r\n\tpublic async getCanvas(options?: IExportImageOptions): Promise<HTMLCanvasElement> {\r\n\r\n\t\t// Options are set?\r\n\t\tif (!$type.hasValue(options)) {\r\n\t\t\toptions = {};\r\n\t\t}\r\n\r\n\t\t// Get background\r\n\t\tlet background = this.backgroundColor || this.findBackgroundColor(this.sprite.dom);\r\n\r\n\t\t// Get DOM URL\r\n\t\tlet DOMURL = this.getDOMURL();\r\n\t\tlet url: string | null = null;\r\n\t\tlet blobs: Array<string> | null = null;\r\n\t\tlet canvas;\r\n\r\n\t\t// Create temporary image element\r\n\t\ttry {\r\n\t\t\t/**\r\n\t\t\t * Simplified version using `createObjectURL`\r\n\t\t\t * Not supported in older browsers\r\n\t\t\t */\r\n\r\n\t\t\t// Get dimensions\r\n\t\t\tlet width = this.sprite.pixelWidth,\r\n\t\t\t\theight = this.sprite.pixelHeight,\r\n\t\t\t\tfont = $dom.findFont(this.sprite.dom),\r\n\t\t\t\tfontSize = $dom.findFontSize(this.sprite.dom);\r\n\r\n\t\t\t// Create canvas and its 2D context\r\n\t\t\tcanvas = this.getDisposableCanvas();\r\n\r\n\t\t\t// Set canvas width/height\r\n\t\t\tlet pixelRatio = this.getPixelRatio(options);\r\n\t\t\tcanvas.style.width = width + 'px';\r\n\t\t\tcanvas.style.height = height + 'px';\r\n\t\t\tcanvas.width = width * pixelRatio;\r\n\t\t\tcanvas.height = height * pixelRatio;\r\n\r\n\t\t\tlet ctx = canvas.getContext(\"2d\");\r\n\r\n\t\t\tif (pixelRatio != 1) {\r\n\t\t\t\tctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\r\n\t\t\t}\r\n\r\n\t\t\t// Add background if necessary\r\n\t\t\tif (background) {\r\n\t\t\t\tctx.fillStyle = background.toString();\r\n\t\t\t\tctx.fillRect(0, 0, width, height);\r\n\t\t\t}\r\n\r\n\t\t\tlet promises: Promise<any>[] = [];\r\n\r\n\t\t\tif (this.useWebFonts) {\r\n\t\t\t\t// TODO what if one of the other things errors before it's been able to set `blobs` ?\r\n\t\t\t\tpromises.push(this.getFontFamilies().then((fonts) => {\r\n\t\t\t\t\tblobs = fonts.blobs;\r\n\t\t\t\t\treturn fonts.cssText;\r\n\t\t\t\t}));\r\n\t\t\t}\r\n\r\n\t\t\tpromises.push(this.imagesToDataURI(this.sprite.dom, options));\r\n\t\t\tpromises.push(this.prepForeignObjects(this.sprite.dom, options));\r\n\r\n\t\t\t// Do prepareations on a document\r\n\t\t\tlet a = await Promise.all(promises);\r\n\r\n\t\t\t// Get SVG representation of the Sprite\r\n\t\t\tlet data = this.normalizeSVG(\r\n\t\t\t\t\"<style>\" + a[0] + \"</style>\" + this.serializeElement(this.sprite.paper.defs) + this.serializeElement(this.sprite.dom),\r\n\t\t\t\toptions,\r\n\t\t\t\twidth,\r\n\t\t\t\theight,\r\n\t\t\t\tfont,\r\n\t\t\t\tfontSize\r\n\t\t\t);\r\n\r\n\t\t\t// Get Blob representation of SVG and create object URL\r\n\t\t\tlet svg = new Blob([data], { type: \"image/svg+xml\" });\r\n\t\t\turl = DOMURL.createObjectURL(svg);\r\n\r\n\t\t\tlet img = await this.loadNewImage(url, width, height, \"anonymous\");\r\n\r\n\t\t\t// Draw image on canvas\r\n\t\t\tctx.drawImage(img, 0, 0);\r\n\r\n\t\t} finally {\r\n\t\t\tif (url !== null) {\r\n\t\t\t\tDOMURL.revokeObjectURL(url);\r\n\t\t\t}\r\n\r\n\t\t\tif (blobs !== null) {\r\n\t\t\t\t$array.each(blobs, (url) => {\r\n\t\t\t\t\tDOMURL.revokeObjectURL(url);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Restore replaced tainted images in DOM\r\n\t\t\tthis.restoreRemovedObjects();\r\n\t\t}\r\n\r\n\t\treturn canvas;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns canvas representation of the [[Sprite]] using canvg.\r\n\t *\r\n\t * @param options Options\r\n\t * @return Canvas\r\n\t */\r\n\tpublic async getCanvasAdvanced(options?: IExportImageOptions): Promise<HTMLCanvasElement> {\r\n\r\n\t\t// Options are set?\r\n\t\tif (!$type.hasValue(options)) {\r\n\t\t\toptions = {};\r\n\t\t}\r\n\t\t// Convert external images to data uris\r\n\t\tawait this.imagesToDataURI(this.sprite.dom, options);\r\n\r\n\t\t// Get background\r\n\t\tlet background = this.backgroundColor || this.findBackgroundColor(this.sprite.dom);\r\n\r\n\t\t// Get canvg\r\n\t\tlet canvg = await this.canvg;\r\n\r\n\t\t// Get dimensions\r\n\t\tlet width = this.sprite.pixelWidth,\r\n\t\t\theight = this.sprite.pixelHeight,\r\n\t\t\tfont = $dom.findFont(this.sprite.dom),\r\n\t\t\tfontSize = $dom.findFontSize(this.sprite.dom);\r\n\r\n\t\t// Get SVG representation of the Sprite\r\n\t\tlet data = this.normalizeSVG(\r\n\t\t\tthis.serializeElement(this.sprite.paper.defs) + this.serializeElement(this.sprite.dom),\r\n\t\t\toptions,\r\n\t\t\twidth,\r\n\t\t\theight,\r\n\t\t\tfont,\r\n\t\t\tfontSize,\r\n\t\t\tbackground\r\n\t\t);\r\n\r\n\t\t// Create canvas and its 2D context\r\n\t\tlet canvas = this.getDisposableCanvas();\r\n\r\n\t\t// Set canvas width/height\r\n\t\tlet pixelRatio = this.getPixelRatio(options);\r\n\t\tcanvas.style.width = (width * pixelRatio) + 'px';\r\n\t\tcanvas.style.height = (height * pixelRatio) + 'px';\r\n\t\tcanvas.width = width * pixelRatio;\r\n\t\tcanvas.height = height * pixelRatio;\r\n\r\n\t\tlet config: any = {\r\n\t\t\t//ignoreDimensions: true,\r\n\t\t\tuseCORS: true\r\n\t\t};\r\n\r\n\t\tif (pixelRatio != 1) {\r\n\t\t\tconfig.ignoreDimensions = true;\r\n\t\t\tconfig.scaleWidth = width * pixelRatio;\r\n\t\t\tconfig.scaleHeight = height * pixelRatio;\r\n\t\t}\r\n\r\n\t\tcanvg(canvas, data, config);\r\n\r\n\t\treturn canvas;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Tries to dynamically load [canvg.js](https://github.com/canvg/canvg) and\r\n\t * export an image using its functions.\r\n\t *\r\n\t * This is an asynchronous function. Check the description of `getImage()`\r\n\t * for description and example usage.\r\n\t *\r\n\t * @param type Image format\r\n\t * @param options Options\r\n\t * @return Data uri\r\n\t */\r\n\tpublic async getImageAdvanced(type: imageFormats, options?: IExportImageOptions, includeExtras?: boolean): Promise<string> {\r\n\r\n\t\tlet prehidden = this._objectsAlreadyHidden;\r\n\t\tif (!prehidden) {\r\n\t\t\tthis.hideNonExportableSprites();\r\n\t\t}\r\n\r\n\t\tif (!$type.hasValue(options)) {\r\n\t\t\toptions = this.getFormatOptions(type);\r\n\t\t}\r\n\t\t// Get canvas\r\n\t\tlet canvas = await this.getCanvasAdvanced(options);\r\n\r\n\t\t// Add extra sprites\r\n\t\tif (includeExtras !== false) {\r\n\t\t\tcanvas = await this.addExtras(canvas, options, true);\r\n\t\t}\r\n\r\n\t\t// Convert canvas to data url\r\n\t\tlet uri = canvas.toDataURL(this.getContentType(type), options.quality);\r\n\r\n\t\t// Get rid of the canvas\r\n\t\tthis.disposeCanvas(canvas);\r\n\r\n\t\tif (!prehidden) {\r\n\t\t\tthis.restoreNonExportableSprites();\r\n\t\t}\r\n\r\n\t\treturn uri;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a `<canvas>` element and returns it.\r\n\t *\r\n\t * @return Canvas element\r\n\t */\r\n\tprotected getDisposableCanvas(): HTMLCanvasElement {\r\n\t\tlet canvas = document.createElement(\"canvas\");\r\n\t\tcanvas.style.position = \"fixed\";\r\n\t\tcanvas.style.top = \"-10000px\";\r\n\t\tdocument.body.appendChild(canvas);\r\n\t\treturn canvas;\r\n\t}\r\n\r\n\t/**\r\n\t * Removes canvas.\r\n\t *\r\n\t * @param canvas Canvas element\r\n\t */\r\n\tprotected disposeCanvas(canvas: HTMLCanvasElement): void {\r\n\t\tdocument.body.removeChild(canvas);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns pixel ratio for retina displays.\r\n\t *\r\n\t * @return Pixel ratio\r\n\t */\r\n\tprotected getPixelRatio(options?: IExportImageOptions): number {\r\n\t\tconst scale = options && options.scale ? options.scale : 1;\r\n\t\treturn (this.useRetina ? $utils.getPixelRatio() : 1) * scale;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts all `<image>` tags in SVG to use data uris instead of external\r\n\t * URLs\r\n\t *\r\n\t * This is an asynchronous function. Check the description of `getImage()`\r\n\t * for description and example usage.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param el SVG node\r\n\t * @param options Options\r\n\t * @return Promise\r\n\t */\r\n\tpublic async imagesToDataURI(el: SVGSVGElement, options?: IExportImageOptions): Promise<void> {\r\n\r\n\t\t// Get and process all images\r\n\t\tlet images = el.querySelectorAll(\"image\");\r\n\t\tif (images.length) {\r\n\r\n\t\t\t// Init promises\r\n\t\t\tlet promises = [];\r\n\r\n\t\t\t// There are images, process each of them\r\n\t\t\tfor (let count = images.length, i = 0; i < count; i++) {\r\n\r\n\t\t\t\t// Get image and its href\r\n\t\t\t\tlet image = images[i];\r\n\t\t\t\tlet href = image.getAttributeNS(Export.XLINK, \"href\");\r\n\r\n\t\t\t\t// no href?\r\n\t\t\t\tif (!href) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (href.indexOf(\"data:image\") !== -1) {\r\n\t\t\t\t\t// Ignore image if it's already in Data URI format\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\r\n\t\t\t\t\t// SVG or bitmap image?\r\n\t\t\t\t\tif (href.indexOf(\".svg\") !== -1) {\r\n\t\t\t\t\t\tpromises.push(this.svgToDataURI(image, options));\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tpromises.push(this.imageToDataURI(image, options));\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tawait Promise.all(promises);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * `foreignObject` elements cannot be exported. This function hides them\r\n\t * temprarily. In the future it might try to convert them to SVG to make them\r\n\t * exportable.\r\n\t *\r\n\t * This is an asynchronous function. Check the description of `getImage()`\r\n\t * for description and example usage.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param el SVG node\r\n\t * @param options Options\r\n\t * @return Promise\r\n\t */\r\n\tpublic async prepForeignObjects(el: SVGSVGElement, options?: IExportImageOptions): Promise<void> {\r\n\r\n\t\t// Get and process all foreign objects\r\n\t\tlet objects = el.querySelectorAll(\"foreignObject\");\r\n\t\tif (objects.length) {\r\n\r\n\t\t\t// There are foreign objects, process each of them\r\n\t\t\tfor (let count = objects.length, i = 0; i < count; i++) {\r\n\t\t\t\tthis.temporarilyRemoveObject(objects[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts an SVG `<image>` to use its data uri for `href` instead of\r\n\t * external file.\r\n\t *\r\n\t * This is an asynchronous function. Check the description of `getImage()`\r\n\t * for description and example usage.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param el SVG element\r\n\t * @param options Options\r\n\t */\r\n\tpublic async imageToDataURI(el: SVGImageElement, options?: IExportImageOptions): Promise<string> {\r\n\r\n\t\t// Create a new image and set its `crossOrigin`. This might not work on some\r\n\t\t// browsers. We'll deal with it if error occurs\r\n\t\tlet img: HTMLImageElement;\r\n\t\ttry {\r\n\r\n\t\t\t// Create image\r\n\t\t\timg = await this.loadNewImage(el.getAttributeNS(Export.XLINK, \"href\"), null, null, \"anonymous\");\r\n\r\n\t\t\t// Create new canvas\r\n\t\t\tlet canvas = document.createElement(\"canvas\");\r\n\t\t\tcanvas.width = img.width;\r\n\t\t\tcanvas.height = img.height;\r\n\r\n\t\t\t// Draw new image on it via `toDataURL`\r\n\t\t\tcanvas.getContext(\"2d\").drawImage(img, 0, 0);\r\n\r\n\t\t\t// Replace image `href` with data uri\r\n\t\t\t// If we got to this point it means image has loaded, however we might\r\n\t\t\t// still get an error with `toDataURL()`\r\n\t\t\ttry {\r\n\t\t\t\tlet uri = canvas.toDataURL();\r\n\t\t\t\tel.setAttribute(\"href\", uri);\r\n\t\t\t\treturn uri;\r\n\t\t\t}\r\n\t\t\tcatch (e) {\r\n\t\t\t\t// Give up and temporarily remove the element href temporarily\r\n\t\t\t\tif (options.keepTainted !== false) {\r\n\t\t\t\t\t/*this._removedObjects.push({\r\n\t\t\t\t\t\t\"element\": el,\r\n\t\t\t\t\t\t\"originalHref\": el.getAttributeNS(Export.XLINK, \"href\")\r\n\t\t\t\t\t});\r\n\t\t\t\t\tel.setAttributeNS(Export.XLINK, \"href\", \"\");*/\r\n\t\t\t\t\tthis.temporarilyRemoveObject(el);\r\n\t\t\t\t}\r\n\t\t\t\treturn undefined;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\tcatch (e) {\r\n\r\n\t\t\t// Give up and temporarily remove the element's href\r\n\t\t\tif (!options || options.keepTainted !== false) {\r\n\t\t\t\t/*this._removedObjects.push({\r\n\t\t\t\t\t\"element\": el,\r\n\t\t\t\t\t\"originalHref\": el.getAttributeNS(Export.XLINK, \"href\")\r\n\t\t\t\t});\r\n\t\t\t\tel.setAttributeNS(Export.XLINK, \"href\", \"\");*/\r\n\t\t\t\tthis.temporarilyRemoveObject(el);\r\n\t\t\t}\r\n\t\t\treturn undefined;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Converts `<image>` with external SVG source to data uri. Loads external SVG\r\n\t * file, then converts it to data uri and replaces the `xlink:href` parameter.\r\n\t *\r\n\t * This is an asynchronous function. Check the description of `getImage()`\r\n\t * for description and example usage.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param el An SVG element\r\n\t * @param options Options\r\n\t */\r\n\tpublic async svgToDataURI(el: SVGImageElement, options?: IExportImageOptions): Promise<string> {\r\n\t\tlet href = el.getAttributeNS(Export.XLINK, \"href\");\r\n\t\ttry {\r\n\t\t\tlet data = await $net.load(href);\r\n\t\t\tlet charset = this.adapter.apply(\"charset\", {\r\n\t\t\t\tcharset: \"base64\",\r\n\t\t\t\ttype: \"svg\",\r\n\t\t\t\toptions: options\r\n\t\t\t}).charset;\r\n\r\n\t\t\tlet uri = this.adapter.apply(\"svgToDataURI\", {\r\n\t\t\t\tdata: \"data:\" + this.getContentType(\"svg\") + \";\" + charset + \",\" + btoa(data.response),\r\n\t\t\t\toptions: options\r\n\t\t\t}).data;\r\n\r\n\t\t\tel.setAttributeNS(Export.XLINK, \"href\", uri);\r\n\t\t\treturn uri;\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\t// Disable temporarily\r\n\t\t\tif (!options || options.keepTainted !== false) {\r\n\t\t\t\t/*this._removedObjects.push({\r\n\t\t\t\t\t\"element\": el,\r\n\t\t\t\t\t\"originalHref\": href\r\n\t\t\t\t});\r\n\t\t\t\tel.setAttributeNS(Export.XLINK, \"href\", \"\");*/\r\n\t\t\t\tthis.temporarilyRemoveObject(el);\r\n\t\t\t}\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Temporarily removes element from DOM, and replaces it with a dummy\r\n\t * placeholder, as well as stores it for later restoration.\r\n\t *\r\n\t * This is an asynchronous function. Check the description of `getImage()`\r\n\t * for description and example usage.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param el Node\r\n\t */\r\n\tpublic temporarilyRemoveObject(el: Node, placeholder?: SVGSVGElement): void {\r\n\r\n\t\t// Get parent\r\n\t\tlet parent = el.parentElement || el.parentNode;\r\n\r\n\t\t// Create a placeholder group element if it has not been passed in\r\n\t\tif (!placeholder) {\r\n\t\t\tplaceholder = this.sprite.paper.add(\"g\").node;\r\n\t\t}\r\n\t\tparent.insertBefore(placeholder, el);\r\n\r\n\t\t// Check if we have a textContents we can replace with\r\n\t\t// @todo Perhaps we should explore alternatives to creating text nodes\r\n\t\t// i.e. creating a text version of the HTML-based Text, just for export\r\n\t\t// purposes. Converting HTML into SVG is very complicated\r\n\t\tif (el.textContent) {\r\n\t\t\t/*let text = this.sprite.paper.add(\"text\").node;\r\n\t\t\ttext.textContent = el.textContent;\r\n\t\t\tplaceholder.appendChild(text);\r\n\r\n\t\t\t// Copy properties from the removing element to the placeholder\r\n\t\t\t$dom.copyAttributes(el, placeholder);*/\r\n\t\t}\r\n\r\n\t\t// Remove the old element\r\n\t\tparent.removeChild(el);\r\n\r\n\t\t// Log removed item\r\n\t\tthis._removedObjects.push({\r\n\t\t\t\"element\": el,\r\n\t\t\t\"placeholder\": placeholder\r\n\t\t});\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Restores all (possibly tainted or unsupported) objects that were\r\n\t * temporarily removed when exporting.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic restoreRemovedObjects(): void {\r\n\t\tlet obj: IExportRemovedObject;\r\n\r\n\t\twhile (true) {\r\n\t\t\tobj = this._removedObjects.pop()\r\n\r\n\t\t\tif (!obj) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t//obj.element.setAttribute(\"href\", obj.originalHref);\r\n\t\t\tlet parent = obj.placeholder.parentElement || obj.placeholder.parentNode;\r\n\t\t\tparent.insertBefore(obj.element, obj.placeholder);\r\n\t\t\t//parent.removeChild(obj.placeholder);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checkes if simplified export can be used using `createObjectURL` and SVG\r\n\t * document does not contain any external images.\r\n\t *\r\n\t * This is an asynchronous function. Check the description of `getImage()`\r\n\t * for description and example usage.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return `true` if simplified export can be used\r\n\t */\r\n\tpublic async simplifiedImageExport(): Promise<boolean> {\r\n\r\n\t\tif (this.useSimplifiedExport === false) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Do we have this cached?\r\n\t\tlet cache = registry.getCache(\"simplifiedImageExport\");\r\n\t\tif (cache === false || cache === true) {\r\n\t\t\treturn cache;\r\n\t\t}\r\n\r\n\t\t// Try generating a small SVG-embedded canvas\r\n\t\t// If exception occurs, simplified method is not supported\r\n\t\ttry {\r\n\t\t\tlet canvas = document.createElement(\"canvas\");\r\n\t\t\tcanvas.width = 1;\r\n\t\t\tcanvas.height = 1;\r\n\t\t\tlet ctx = canvas.getContext(\"2d\");\r\n\t\t\tlet DOMURL = this.getDOMURL();\r\n\t\t\tlet svg = new Blob([this.normalizeSVG(\"<g></g>\", {}, 1, 1)], { type: \"image/svg+xml\" });\r\n\t\t\tlet url = DOMURL.createObjectURL(svg);\r\n\t\t\tlet img;\r\n\t\t\ttry {\r\n\t\t\t\timg = await this.loadNewImage(url, 1, 1);\r\n\t\t\t}\r\n\t\t\tcatch (e) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tctx.drawImage(img, 0, 0);\r\n\t\t\tDOMURL.revokeObjectURL(url);\r\n\t\t\ttry {\r\n\t\t\t\t//let uri = canvas.toDataURL(\"image/png\");\r\n\t\t\t\tregistry.setCache(\"simplifiedImageExport\", true);\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tcatch (e) {\r\n\t\t\t\tregistry.setCache(\"simplifiedImageExport\", false);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t} catch (e) {\r\n\t\t\tregistry.setCache(\"simplifiedImageExport\", false);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new `<image>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param url URL of the image\r\n\t * @param width Width (px)\r\n\t * @param height Height (px)\r\n\t * @param crossOrigin Cross-Origin setting\r\n\t * @return Promise\r\n\t */\r\n\tpublic loadNewImage(url: string, width?: number, height?: number, crossOrigin?: string): Promise<HTMLImageElement> {\r\n\t\treturn new Promise((success, error) => {\r\n\r\n\t\t\t// New image\r\n\t\t\tlet image: HTMLImageElement;\r\n\t\t\tif (width && height) {\r\n\t\t\t\timage = new Image(width, height);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\timage = new Image();\r\n\t\t\t}\r\n\r\n\t\t\t// Set crossorigin\r\n\t\t\tif (crossOrigin) {\r\n\t\t\t\timage.setAttribute(\"crossOrigin\", crossOrigin);\r\n\t\t\t}\r\n\r\n\t\t\t// Report success on load\r\n\t\t\timage.onload = () => {\r\n\t\t\t\tsuccess(image);\r\n\t\t\t};\r\n\r\n\t\t\tfunction onerror() {\r\n\t\t\t\t// Error occurred. Just in case it's the crossOrigin issue, let's try\r\n\t\t\t\t// stripping off this attribute and trying again\r\n\t\t\t\tif (crossOrigin) {\r\n\r\n\t\t\t\t\t// Retain old uri\r\n\t\t\t\t\tlet currentHref = image.src;\r\n\r\n\t\t\t\t\t// Set up another `onerror` to handle situations where image is not\r\n\t\t\t\t\t// loadable at all (i.e. protected by CORS)\r\n\t\t\t\t\timage.onerror = () => {\r\n\t\t\t\t\t\t// Nope, no luck\r\n\t\t\t\t\t\terror(new Error(\"Loading image \\\"\" + url + \"\\\" failed\"));\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// remove the `crossOrigin` attribute\r\n\t\t\t\t\timage.removeAttribute(\"crossorigin\");\r\n\r\n\t\t\t\t\t// retry\r\n\t\t\t\t\timage.src = \"\";\r\n\t\t\t\t\timage.src = currentHref;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\terror(new Error(\"Loading image \\\"\" + url + \"\\\" failed\"));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Set image error handlers\r\n\t\t\timage.onabort = onerror;\r\n\t\t\timage.onerror = onerror;\r\n\r\n\t\t\t// Trigger load\r\n\t\t\timage.src = url;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current DOM URL.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return URL\r\n\t */\r\n\tpublic getDOMURL(): any {\r\n\t\treturn self.URL || (<any>self).webkitURL || self;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an SVG representation of the chart.\r\n\t *\r\n\t * This is an asynchronous function. Check the description of `getImage()`\r\n\t * for description and example usage.\r\n\t *\r\n\t * @param type Type of the export\r\n\t * @param options Options\r\n\t * @return Promise\r\n\t */\r\n\tpublic async getSVG(type: \"svg\", options?: IExportSVGOptions): Promise<string> {\r\n\r\n\t\tlet prehidden = this._objectsAlreadyHidden;\r\n\t\tif (!prehidden) {\r\n\t\t\tthis.hideNonExportableSprites();\r\n\t\t}\r\n\r\n\t\t// Wait for required elements to be ready before proceeding\r\n\t\tawait this.awaitValidSprites();\r\n\r\n\t\t// Get dimensions\r\n\t\tlet width = this.sprite.pixelWidth,\r\n\t\t\theight = this.sprite.pixelHeight,\r\n\t\t\tfont = $dom.findFont(this.sprite.dom),\r\n\t\t\tfontSize = $dom.findFontSize(this.sprite.dom);\r\n\t\t// Get SVG\r\n\t\tlet svg = this.normalizeSVG(\r\n\t\t\tthis.serializeElement(this.sprite.paper.defs) + this.serializeElement(this.sprite.dom),\r\n\t\t\toptions,\r\n\t\t\twidth,\r\n\t\t\theight,\r\n\t\t\tfont,\r\n\t\t\tfontSize\r\n\t\t);\r\n\r\n\t\t// Prep data URI\r\n\t\tlet charset = this.adapter.apply(\"charset\", {\r\n\t\t\tcharset: \"charset=utf-8\",\r\n\t\t\ttype: \"svg\",\r\n\t\t\toptions: options\r\n\t\t}).charset;\r\n\r\n\t\tlet uri = this.adapter.apply(\"getSVG\", {\r\n\t\t\tdata: \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(svg),\r\n\t\t\toptions: options\r\n\t\t}).data;\r\n\r\n\t\tif (!prehidden) {\r\n\t\t\tthis.restoreNonExportableSprites();\r\n\t\t}\r\n\r\n\t\treturn uri;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if SVG is fully formatted. Encloses in `<svg>...</svg>` if\r\n\t * necessary.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param svg Input SVG\r\n\t * @param options Options\r\n\t * @param width Width of the SVG viewport\r\n\t * @param height Height of the SVG viewport\r\n\t * @param font Font family to use as a base\r\n\t * @param fontSize Font size to use as a base\r\n\t * @return Output SVG\r\n\t * @todo Add style params to existing <svg>\r\n\t */\r\n\tpublic normalizeSVG(svg: string, options?: IExportSVGOptions, width?: number, height?: number, font?: string, fontSize?: string, background?: Color): string {\r\n\r\n\t\t// Construct width/height params\r\n\t\tlet dimParams = \"\";\r\n\t\tif (width) {\r\n\t\t\tdimParams += \"width=\\\"\" + width + \"px\\\" \";\r\n\t\t}\r\n\t\tif (height) {\r\n\t\t\tdimParams += \"height=\\\"\" + height + \"px\\\" \";\r\n\t\t}\r\n\r\n\t\t// Apply font settings\r\n\t\tlet styleParams = \"\";\r\n\t\tif (font) {\r\n\t\t\tstyleParams += \"font-family: \" + font.replace(/\"/g, \"\") + \";\";\r\n\t\t}\r\n\t\tif (fontSize) {\r\n\t\t\tstyleParams += \"font-size: \" + fontSize + \";\";\r\n\t\t}\r\n\t\t// Add missing <svg> enclosure\r\n\t\tif (!svg.match(/<svg/)) {\r\n\t\t\tsvg = \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?><svg \" + dimParams + \" style=\\\"\" + styleParams + \"\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">\" + svg + \"</svg>\";\r\n\t\t}\r\n\t\telse {\r\n\r\n\t\t\tif (dimParams !== \"\") {\r\n\t\t\t\t// Clear current params\r\n\t\t\t\tsvg = svg.replace(/(<svg[^>]*)width=\"[^\"]*\"/, \"$1\");\r\n\t\t\t\tsvg = svg.replace(/(<svg[^>]*)height=\"[^\"]*\"/, \"$1\");\r\n\r\n\t\t\t\t// Add new params\r\n\t\t\t\tsvg = svg.replace(/(<svg)/, \"$1\" + dimParams);\r\n\t\t\t}\r\n\r\n\t\t\t/*if (styleParams !== \"\") {\r\n\t\t\t\t// Clear current params\r\n\t\t\t\tsvg = svg.replace(/(<svg[^>]*)stylewidth=\"[^\"]*\"/, \"$1\");\r\n\t\t\t\tsvg = svg.replace(/(<svg[^>]*)height=\"[^\"]*\"/, \"$1\");\r\n\r\n\t\t\t\t// Add new params\r\n\t\t\t\tsvg = svg.replace(/(<svg)/, \"$1\" + dimParams);\r\n\t\t\t}*/\r\n\t\t}\r\n\r\n\r\n\t\tif (background) {\r\n\t\t\tsvg = svg.replace(/(<svg[^>]*>)/, \"$1<rect width=\\\"100%\\\" height=\\\"100%\\\" fill=\\\"\" + background.rgba + \"\\\"/>\");\r\n\t\t\t//svg = svg.replace(/<\\/svg>/, \"<rect width=\\\"100%\\\" height=\\\"100%\\\" fill=\\\"\" + background.rgba + \"\\\"/></svg>\");\r\n\t\t}\r\n\r\n\t\tif ($browser.isInternetExplorer()) {\r\n\t\t\t// IE can't handle exporting <feColorMatrix> for some reason\r\n\t\t\tsvg = svg.replace(/<feColorMatrix [^\\/>]*\\/>/gi, \"\");\r\n\t\t}\r\n\r\n\t\t// Remove base uri-related stuff\r\n\t\tlet reg = new RegExp(\"url\\\\(\" + $utils.escapeForRgex($utils.getBaseURI()), \"g\");\r\n\t\tsvg = svg.replace(reg, \"url(#\");\r\n\r\n\t\tsvg = this.adapter.apply(\"normalizeSVG\", {\r\n\t\t\tdata: svg,\r\n\t\t\toptions: options\r\n\t\t}).data;\r\n\r\n\t\treturn svg;\r\n\t}\r\n\r\n\t/**\r\n\t * Serializes an element and returns its contents.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param element An element to serialize\r\n\t * @return A serialized XML\r\n\t */\r\n\tpublic serializeElement(element: HTMLElement | SVGSVGElement | SVGDefsElement): string {\r\n\t\treturn new XMLSerializer().serializeToString(element);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a PDF containing chart image.\r\n\t *\r\n\t * This is an asynchronous function. Check the description of `getImage()`\r\n\t * for description and example usage.\r\n\t *\r\n\t * @param type Type of the export\r\n\t * @param options Options\r\n\t * @return Promise\r\n\t * @async\r\n\t * @todo Account for header when calculating vertical fit\r\n\t */\r\n\tpublic async getPDF(type: \"pdf\" | \"pdfdata\", options?: IExportPDFOptions): Promise<string> {\r\n\r\n\t\t// Get image\r\n\t\tlet image = await this.getImage(options.imageFormat || \"png\", options);\r\n\r\n\t\t// Load pdfmake\r\n\t\tlet pdfmake = await this.pdfmake;\r\n\r\n\t\t// Defaults\r\n\t\tlet defaultMargins = [30, 30, 30, 30];\r\n\r\n\t\t// Init content for PDF\r\n\t\tlet doc = {\r\n\t\t\tpageSize: options.pageSize || \"A4\",\r\n\t\t\tpageOrientation: options.pageOrientation || \"portrait\",\r\n\t\t\tpageMargins: options.pageMargins || defaultMargins,\r\n\t\t\t//header: <any>[],\r\n\t\t\tcontent: <any>[]\r\n\t\t};\r\n\r\n\t\t// Should we add title?\r\n\t\tlet title = this.adapter.apply(\"title\", {\r\n\t\t\ttitle: this.title,\r\n\t\t\toptions: options\r\n\t\t}).title;\r\n\r\n\t\tif (title) {\r\n\t\t\tdoc.content.push({\r\n\t\t\t\ttext: title,\r\n\t\t\t\tfontSize: options.fontSize,\r\n\t\t\t\tbold: true,\r\n\t\t\t\tmargin: [0, 0, 0, 15]\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Add page URL?\r\n\t\tif (options.addURL) {\r\n\t\t\tdoc.content.push({\r\n\t\t\t\ttext: this.language.translate(\"Saved from\") + \": \" + document.location.href,\r\n\t\t\t\tfontSize: options.fontSize,\r\n\t\t\t\tmargin: [0, 0, 0, 15]\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Add image\r\n\t\tif (type != \"pdfdata\") {\r\n\t\t\tdoc.content.push({\r\n\t\t\t\timage: image,\r\n\t\t\t\tfit: this.getPageSizeFit(doc.pageSize, doc.pageMargins)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Add data\r\n\t\tif (type == \"pdfdata\" || options.addData) {\r\n\t\t\tdoc.content.push({\r\n\t\t\t\ttable: await this.getPDFData(\"pdf\", options)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Apply adapters\r\n\t\tdoc = this.adapter.apply(\"pdfmakeDocument\", {\r\n\t\t\tdoc: doc,\r\n\t\t\toptions: options\r\n\t\t}).doc;\r\n\r\n\t\t// Create PDF\r\n\t\treturn await new Promise<string>((success, error) => {\r\n\t\t\tpdfmake.createPdf(doc).getDataUrl((uri: string) => {\r\n\t\t\t\tsuccess(uri);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns chart's data formatted suitable for PDF export (pdfmake).\r\n\t *\r\n\t * This is an asynchronous function. Check the description of `getImage()`\r\n\t * for description and example usage.\r\n\t *\r\n\t * @since 4.7.0\r\n\t * @param type Type of the export\r\n\t * @param options Options\r\n\t * @return Promise\r\n\t * @async\r\n\t */\r\n\tpublic async getPDFData(type: \"pdf\", options?: IExportPDFOptions): Promise<any> {\r\n\r\n\t\t// Init output\r\n\t\tlet content = <any>{\r\n\t\t\t\"body\": <any>[]\r\n\t\t};\r\n\r\n\t\t// Data fields\r\n\t\tconst dataFields = this.adapter.apply(\"formatDataFields\", {\r\n\t\t\tdataFields: this.dataFields,\r\n\t\t\tformat: \"pdf\"\r\n\t\t}).dataFields;\r\n\r\n\t\t// Add rows\r\n\t\tconst data = this.data;\r\n\r\n\t\t// Vertical or horizontal (default) layout\r\n\t\tif (options.pivot) {\r\n\r\n\t\t\t$object.each(dataFields, (key, val) => {\r\n\t\t\t\tlet dataRow = [];\r\n\t\t\t\tif (options.addColumnNames) {\r\n\t\t\t\t\tdataRow.push(val);\r\n\t\t\t\t}\r\n\t\t\t\tfor (let len = data.length, i = 0; i < len; i++) {\r\n\t\t\t\t\tlet dataValue = data[i][key];\r\n\t\t\t\t\tdataRow.push(this.convertToSpecialFormat<\"pdf\">(key, dataValue, options, true));\r\n\t\t\t\t}\r\n\t\t\t\tcontent.body.push(this.getPDFDataRow(dataRow, options, undefined, true));\r\n\t\t\t});\r\n\r\n\t\t}\r\n\r\n\t\telse {\r\n\r\n\t\t\t// Add column names?\r\n\t\t\tif (options.addColumnNames) {\r\n\t\t\t\tcontent.body.push(this.getPDFDataRow(dataFields, options, undefined, true));\r\n\t\t\t\tcontent.headerRows = 1;\r\n\t\t\t}\r\n\r\n\t\t\tfor (let len = data.length, i = 0; i < len; i++) {\r\n\t\t\t\tcontent.body.push(this.getPDFDataRow(data[i], options, dataFields));\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn this.adapter.apply(\"pdfmakeTable\", {\r\n\t\t\ttable: content,\r\n\t\t\toptions: options\r\n\t\t}).table;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Formats a row of data for use in PDF data table (pdfmake).\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @since 4.7.0\r\n\t * @param row An object holding data for the row\r\n\t * @param options Options\r\n\t * @param dataFields Data fields\r\n\t * @param asIs Do not try to convert to dates\r\n\t * @return Formated Data line\r\n\t */\r\n\tpublic getPDFDataRow(row: any, options?: IExportPDFOptions, dataFields?: any, asIs: boolean = false): Array<string> {\r\n\r\n\t\t// Init\r\n\t\tlet items: any[] = [];\r\n\r\n\t\t// Data fields\r\n\t\tif (!dataFields) {\r\n\t\t\tdataFields = row;\r\n\t\t}\r\n\r\n\t\t// Process each row item\r\n\t\t$object.each(dataFields, (key, name) => {\r\n\r\n\t\t\t// Get value\r\n\t\t\tlet value = this.convertEmptyValue(key, row[key], options);\r\n\r\n\t\t\t// Convert dates\r\n\t\t\tlet item = asIs ? value : this.convertToSpecialFormat<\"csv\">(key, value, options);\r\n\t\t\titem = \"\" + item;\r\n\r\n\t\t\t// Add to item\r\n\t\t\titems.push(item);\r\n\t\t});\r\n\r\n\t\treturn items;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns fit dimensions for available page sizes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param pageSize Page size\r\n\t * @return `[width, height]` in pixels\r\n\t */\r\n\tpublic getPageSizeFit(pageSize: pageSizes, margins?: number | number[]): number[] {\r\n\r\n\t\t// Check margins\r\n\t\tlet newMargins = [0, 0, 0, 0];\r\n\t\tif (typeof margins == \"number\") {\r\n\t\t\tnewMargins = [margins, margins, margins, margins];\r\n\t\t}\r\n\t\telse if (margins.length == 2) {\r\n\t\t\tnewMargins = [margins[0], margins[1], margins[0], margins[1]];\r\n\t\t}\r\n\t\telse if (margins.length == 4) {\r\n\t\t\tnewMargins = margins;\r\n\t\t}\r\n\r\n\t\t// Define available page sizes\r\n\t\tlet sizes = {\r\n\t\t\t\"4A0\": [4767.87, 6740.79],\r\n\t\t\t\"2A0\": [3370.39, 4767.87],\r\n\t\t\tA0: [2383.94, 3370.39],\r\n\t\t\tA1: [1683.78, 2383.94],\r\n\t\t\tA2: [1190.55, 1683.78],\r\n\t\t\tA3: [841.89, 1190.55],\r\n\t\t\tA4: [595.28, 841.89],\r\n\t\t\tA5: [419.53, 595.28],\r\n\t\t\tA6: [297.64, 419.53],\r\n\t\t\tA7: [209.76, 297.64],\r\n\t\t\tA8: [147.40, 209.76],\r\n\t\t\tA9: [104.88, 147.40],\r\n\t\t\tA10: [73.70, 104.88],\r\n\t\t\tB0: [2834.65, 4008.19],\r\n\t\t\tB1: [2004.09, 2834.65],\r\n\t\t\tB2: [1417.32, 2004.09],\r\n\t\t\tB3: [1000.63, 1417.32],\r\n\t\t\tB4: [708.66, 1000.63],\r\n\t\t\tB5: [498.90, 708.66],\r\n\t\t\tB6: [354.33, 498.90],\r\n\t\t\tB7: [249.45, 354.33],\r\n\t\t\tB8: [175.75, 249.45],\r\n\t\t\tB9: [124.72, 175.75],\r\n\t\t\tB10: [87.87, 124.72],\r\n\t\t\tC0: [2599.37, 3676.54],\r\n\t\t\tC1: [1836.85, 2599.37],\r\n\t\t\tC2: [1298.27, 1836.85],\r\n\t\t\tC3: [918.43, 1298.27],\r\n\t\t\tC4: [649.13, 918.43],\r\n\t\t\tC5: [459.21, 649.13],\r\n\t\t\tC6: [323.15, 459.21],\r\n\t\t\tC7: [229.61, 323.15],\r\n\t\t\tC8: [161.57, 229.61],\r\n\t\t\tC9: [113.39, 161.57],\r\n\t\t\tC10: [79.37, 113.39],\r\n\t\t\tRA0: [2437.80, 3458.27],\r\n\t\t\tRA1: [1729.13, 2437.80],\r\n\t\t\tRA2: [1218.90, 1729.13],\r\n\t\t\tRA3: [864.57, 1218.90],\r\n\t\t\tRA4: [609.45, 864.57],\r\n\t\t\tSRA0: [2551.18, 3628.35],\r\n\t\t\tSRA1: [1814.17, 2551.18],\r\n\t\t\tSRA2: [1275.59, 1814.17],\r\n\t\t\tSRA3: [907.09, 1275.59],\r\n\t\t\tSRA4: [637.80, 907.09],\r\n\t\t\tEXECUTIVE: [521.86, 756.00],\r\n\t\t\tFOLIO: [612.00, 936.00],\r\n\t\t\tLEGAL: [612.00, 1008.00],\r\n\t\t\tLETTER: [612.00, 792.00],\r\n\t\t\tTABLOID: [792.00, 1224.00]\r\n\t\t};\r\n\r\n\t\t// Calculate size\r\n\t\tlet fitSize = sizes[pageSize]\r\n\t\tfitSize[0] -= newMargins[0] + newMargins[2];\r\n\t\tfitSize[1] -= newMargins[1] + newMargins[3];\r\n\t\treturn fitSize;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an Excel file of chart's data.\r\n\t *\r\n\t * This is an asynchronous function. Check the description of `getImage()`\r\n\t * for description and example usage.\r\n\t *\r\n\t * @param type Type of the export\r\n\t * @param options Options\r\n\t * @return Promise\r\n\t * @async\r\n\t * @todo Handle dates\r\n\t * @todo Support for multi-sheet\r\n\t */\r\n\tpublic async getExcel(type: \"xlsx\", options?: IExportExcelOptions): Promise<string> {\r\n\r\n\t\t// Load xlsx\r\n\t\tlet XLSX = await this.xlsx;\r\n\r\n\t\t// Create workbook options\r\n\t\tlet wbOptions = this.adapter.apply(\"xlsxWorkbookOptions\", {\r\n\t\t\toptions: {\r\n\t\t\t\tbookType: \"xlsx\",\r\n\t\t\t\tbookSST: false,\r\n\t\t\t\ttype: \"base64\",\r\n\t\t\t\t//dateNF: 'yyyy-mm-dd'\r\n\t\t\t}\r\n\t\t}).options;\r\n\r\n\t\t// Get sheet name\r\n\t\tlet sheetName = this.normalizeExcelSheetName(this.adapter.apply(\"xlsxSheetName\", {\r\n\t\t\tname: this.title || this.language.translate(\"Data\")\r\n\t\t}).name);\r\n\r\n\t\t// Create a workbook\r\n\t\tlet wb = {\r\n\t\t\tSheetNames: <any>[sheetName],\r\n\t\t\tSheets: <any>{}\r\n\t\t};\r\n\r\n\t\t// Init worksheet data\r\n\t\tlet data: Array<any> = [];\r\n\r\n\t\t// Data fields\r\n\t\tconst dataFields = this.adapter.apply(\"formatDataFields\", {\r\n\t\t\tdataFields: this.dataFields,\r\n\t\t\tformat: \"xslx\"\r\n\t\t}).dataFields;\r\n\r\n\t\t// Vertical or horizontal (default) layout\r\n\t\tif (options.pivot) {\r\n\r\n\t\t\t$object.each(dataFields, (key, val) => {\r\n\t\t\t\tlet dataRow = [];\r\n\t\t\t\tif (options.addColumnNames) {\r\n\t\t\t\t\tdataRow.push(val);\r\n\t\t\t\t}\r\n\t\t\t\tfor (let len = this.data.length, i = 0; i < len; i++) {\r\n\t\t\t\t\tlet dataValue = this.data[i][key];\r\n\t\t\t\t\tdataRow.push(this.convertToSpecialFormat<\"xlsx\">(key, dataValue, options, true));\r\n\t\t\t\t}\r\n\t\t\t\tdata.push(this.getExcelRow(dataRow, options, undefined, true));\r\n\t\t\t});\r\n\r\n\t\t}\r\n\r\n\t\telse {\r\n\t\t\t// Add column names?\r\n\t\t\tif (options.addColumnNames) {\r\n\t\t\t\tdata.push(this.getExcelRow(dataFields, options, undefined, true));\r\n\t\t\t}\r\n\r\n\t\t\t// Add lines\r\n\t\t\tfor (let len = this.data.length, i = 0; i < len; i++) {\r\n\t\t\t\tdata.push(this.getExcelRow(this.data[i], options, dataFields));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Create sheet and add data\r\n\t\twb.Sheets[sheetName] = XLSX.utils.aoa_to_sheet(data);\r\n\r\n\t\t// Generate data uri\r\n\t\tlet uri = this.adapter.apply(\"getExcel\", {\r\n\t\t\tdata: \"data:\" + this.getContentType(type) + \";base64,\" + XLSX.write(wb, wbOptions),\r\n\t\t\toptions: options\r\n\t\t}).data;\r\n\r\n\t\treturn uri;\r\n\t}\r\n\r\n\t/**\r\n\t * This is needed to work around Excel limitations.\r\n\t *\r\n\t * @param name Source name\r\n\t * @return Normalized name\r\n\t */\r\n\tprivate normalizeExcelSheetName(name: string): string {\r\n\t\tname = name.replace(/([:\\\\\\/?*\\[\\]]+)/g, \" \");\r\n\t\treturn $utils.truncateWithEllipsis(name, 31, \"...\", true);\r\n\t}\r\n\r\n\t/**\r\n\t * Rertuns an array of values to be used as Excel row.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param row Row data\r\n\t * @param options Options\r\n\t * @param dataFields Data fields\r\n\t * @param asIs Do not try to convert to dates\r\n\t * @return Array of values\r\n\t */\r\n\tpublic getExcelRow(row: any, options?: IExportExcelOptions, dataFields?: any, asIs: boolean = false): any[] {\r\n\r\n\t\t// Init\r\n\t\tlet items: any[] = [];\r\n\r\n\t\t// Data fields\r\n\t\tif (!dataFields) {\r\n\t\t\tdataFields = row;\r\n\t\t}\r\n\r\n\t\t// Process each row item\r\n\t\t$object.each(dataFields, (key, name) => {\r\n\r\n\t\t\t// Get value\r\n\t\t\tlet value = this.convertEmptyValue(key, row[key], options);\r\n\r\n\t\t\t// Convert dates\r\n\t\t\tlet item = asIs ? value : this.convertToSpecialFormat<\"xlsx\">(key, value, options, true);\r\n\r\n\t\t\titems.push(item);\r\n\t\t});\r\n\r\n\t\treturn items;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns chart's data formatted as CSV.\r\n\t *\r\n\t * This is an asynchronous function. Check the description of `getImage()`\r\n\t * for description and example usage.\r\n\t *\r\n\t * @param type Type of the export\r\n\t * @param options Options\r\n\t * @return Promise\r\n\t * @async\r\n\t */\r\n\tpublic async getCSV(type: \"csv\", options?: IExportCSVOptions): Promise<string> {\r\n\r\n\t\t// Init output\r\n\t\tlet csv = \"\";\r\n\r\n\t\t// Data fields\r\n\t\tconst dataFields = this.adapter.apply(\"formatDataFields\", {\r\n\t\t\tdataFields: this.dataFields,\r\n\t\t\tformat: \"csv\"\r\n\t\t}).dataFields;\r\n\r\n\t\t// Add rows\r\n\t\tlet br = \"\";\r\n\t\tconst data = this.data;\r\n\r\n\t\t// Vertical or horizontal (default) layout\r\n\t\tif (options.pivot) {\r\n\r\n\t\t\t$object.each(dataFields, (key, val) => {\r\n\t\t\t\tlet dataRow = [];\r\n\t\t\t\tif (options.addColumnNames) {\r\n\t\t\t\t\tdataRow.push(val);\r\n\t\t\t\t}\r\n\t\t\t\tfor (let len = data.length, i = 0; i < len; i++) {\r\n\t\t\t\t\tlet dataValue = data[i][key];\r\n\t\t\t\t\tdataRow.push(this.convertToSpecialFormat<\"csv\">(key, dataValue, options, true));\r\n\t\t\t\t}\r\n\t\t\t\tcsv += br + this.getCSVRow(dataRow, options, undefined, true);\r\n\t\t\t\tbr = \"\\n\";\r\n\t\t\t});\r\n\r\n\t\t}\r\n\r\n\t\telse {\r\n\t\t\tfor (let len = data.length, i = 0; i < len; i++) {\r\n\t\t\t\tlet row = this.getCSVRow(data[i], options, dataFields);\r\n\t\t\t\tif (options.reverse) {\r\n\t\t\t\t\tcsv = row + br + csv;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tcsv += br + row;\r\n\t\t\t\t}\r\n\t\t\t\tbr = \"\\n\";\r\n\t\t\t}\r\n\r\n\t\t\t// Add column names?\r\n\t\t\tif (options.addColumnNames) {\r\n\t\t\t\tcsv = this.getCSVRow(dataFields, options, undefined, true) + br + csv;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Add content type\r\n\t\tlet charset = this.adapter.apply(\"charset\", {\r\n\t\t\tcharset: \"charset=utf-8\",\r\n\t\t\ttype: type,\r\n\t\t\toptions: options\r\n\t\t}).charset;\r\n\r\n\t\tlet uri = this.adapter.apply(\"getCSV\", {\r\n\t\t\tdata: \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(csv),\r\n\t\t\toptions: options\r\n\t\t}).data;\r\n\r\n\t\treturn uri;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Formats a row of CSV data.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param row An object holding data for the row\r\n\t * @param options Options\r\n\t * @param dataFields Data fields\r\n\t * @param asIs Do not try to convert to dates\r\n\t * @return Formated CSV line\r\n\t */\r\n\tpublic getCSVRow(row: any, options?: IExportCSVOptions, dataFields?: any, asIs: boolean = false): string {\r\n\r\n\t\t// Init\r\n\t\tlet separator = options.separator || \",\";\r\n\t\tlet items: any[] = [];\r\n\r\n\t\t// Data fields\r\n\t\tif (!dataFields) {\r\n\t\t\tdataFields = row;\r\n\t\t}\r\n\r\n\t\t// Process each row item\r\n\t\t$object.each(dataFields, (key, name) => {\r\n\r\n\t\t\t// Get value\r\n\t\t\tlet value = this.convertEmptyValue(key, row[key], options);\r\n\r\n\t\t\t// Check if we need to skip\r\n\t\t\t// This is no longer required because we are iterating via dataFields anyway\r\n\t\t\t/*if ($type.hasValue(this.dataFields) && !$type.hasValue(this.dataFields[key])) {\r\n\t\t\t\treturn;\r\n\t\t\t}*/\r\n\r\n\t\t\t// Convert dates\r\n\t\t\tlet item = asIs ? value : this.convertToSpecialFormat<\"csv\">(key, value, options);\r\n\r\n\t\t\t// Cast and escape doublequotes\r\n\t\t\titem = \"\" + item;\r\n\t\t\titem = item.replace(/\"/g, '\"\"');\r\n\r\n\t\t\t// Enclose into double quotes\r\n\t\t\tif (options.forceQuotes || (item.search(new RegExp(\"\\\"|\\n|\" + separator, \"g\")) >= 0)) {\r\n\t\t\t\titem = \"\\\"\" + item + \"\\\"\";\r\n\t\t\t}\r\n\r\n\t\t\t// Add to item\r\n\t\t\titems.push(item);\r\n\t\t});\r\n\r\n\t\treturn items.join(separator);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns chart's data formatted as HTML table.\r\n\t *\r\n\t * This is an asynchronous function. Check the description of `getImage()`\r\n\t * for description and example usage.\r\n\t *\r\n\t * @since 4.7.0\r\n\t * @param type Type of the export\r\n\t * @param options Options\r\n\t * @return Promise\r\n\t * @async\r\n\t */\r\n\tpublic async getHTML(type: \"html\", options?: IExportHTMLOptions): Promise<string> {\r\n\r\n\t\t// Init output\r\n\t\tlet html = \"<table>\";\r\n\t\tif (options.tableClass) {\r\n\t\t\thtml = \"<table class=\\\"\" + options.tableClass + \"\\\">\";\r\n\t\t}\r\n\r\n\t\t// Data fields\r\n\t\tconst dataFields = this.adapter.apply(\"formatDataFields\", {\r\n\t\t\tdataFields: this.dataFields,\r\n\t\t\tformat: \"html\"\r\n\t\t}).dataFields;\r\n\r\n\t\t// Add rows\r\n\t\tconst data = this.data;\r\n\r\n\t\t// Vertical or horizontal (default) layout\r\n\t\tif (options.pivot) {\r\n\r\n\t\t\t$object.each(dataFields, (key, val) => {\r\n\t\t\t\tlet dataRow = [];\r\n\t\t\t\tif (options.addColumnNames) {\r\n\t\t\t\t\tdataRow.push(val);\r\n\t\t\t\t}\r\n\t\t\t\tfor (let len = data.length, i = 0; i < len; i++) {\r\n\t\t\t\t\tlet dataValue = data[i][key];\r\n\t\t\t\t\tdataRow.push(this.convertToSpecialFormat<\"html\">(key, dataValue, options, true));\r\n\t\t\t\t}\r\n\t\t\t\thtml += \"\\n\" + this.getHTMLRow(dataRow, options, undefined, true);\r\n\t\t\t});\r\n\r\n\t\t}\r\n\r\n\t\telse {\r\n\t\t\t// Add column names?\r\n\t\t\tif (options.addColumnNames) {\r\n\t\t\t\thtml += \"\\n\" + this.getHTMLRow(dataFields, options, undefined, true, true);\r\n\t\t\t}\r\n\r\n\t\t\tfor (let len = data.length, i = 0; i < len; i++) {\r\n\t\t\t\thtml += \"\\n\" + this.getHTMLRow(data[i], options, dataFields);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thtml += \"</table>\";\r\n\r\n\t\t// Add content type\r\n\t\tlet charset = this.adapter.apply(\"charset\", {\r\n\t\t\tcharset: \"charset=utf-8\",\r\n\t\t\ttype: type,\r\n\t\t\toptions: options\r\n\t\t}).charset;\r\n\r\n\t\tlet uri = this.adapter.apply(\"getHTML\", {\r\n\t\t\tdata: \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(html),\r\n\t\t\toptions: options\r\n\t\t}).data;\r\n\r\n\t\treturn uri;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Formats a row of HTML data.\r\n\t *\r\n\t * @since 4.7.0\r\n\t * @ignore Exclude from docs\r\n\t * @param row An object holding data for the row\r\n\t * @param options Options\r\n\t * @param dataFields Data fields\r\n\t * @param asIs Do not try to convert to dates\r\n\t * @return Formated HTML row\r\n\t */\r\n\tpublic getHTMLRow(row: any, options?: IExportHTMLOptions, dataFields?: any, asIs: boolean = false, headerRow: boolean = false): string {\r\n\r\n\t\t// Init output\r\n\t\tlet html = \"\\t<tr>\";\r\n\t\tif (options.rowClass) {\r\n\t\t\thtml = \"\\t<tr class=\\\"\" + options.rowClass + \"\\\">\";\r\n\t\t}\r\n\r\n\t\t// Data fields\r\n\t\tif (!dataFields) {\r\n\t\t\tdataFields = row;\r\n\t\t}\r\n\r\n\t\t// th or dh?\r\n\t\tconst tag = headerRow ? \"th\" : \"td\";\r\n\r\n\t\t// Process each row item\r\n\t\tlet first = true;\r\n\t\t$object.each(dataFields, (key, name) => {\r\n\r\n\t\t\t// Get value\r\n\t\t\tlet value = this.convertEmptyValue(key, row[key], options);\r\n\r\n\t\t\t// Convert dates\r\n\t\t\tlet item = asIs ? value : this.convertToSpecialFormat<\"html\">(key, value, options);\r\n\r\n\t\t\t// Escape HTML entities\r\n\t\t\titem = \"\" + item;\r\n\t\t\titem = item.replace(/[\\u00A0-\\u9999<>\\&]/gim, function(i: string) {\r\n\t\t\t\treturn \"&#\" + i.charCodeAt(0) + \";\";\r\n\t\t\t});\r\n\r\n\t\t\t// Which tag to use\r\n\t\t\tlet useTag = tag;\r\n\t\t\tif (options.pivot && first) {\r\n\t\t\t\tuseTag = \"th\";\r\n\t\t\t}\r\n\r\n\t\t\t// Add cell\r\n\t\t\tif (options.cellClass) {\r\n\t\t\t\thtml += \"\\n\\t\\t<\" + useTag + \" class=\\\"\" + options.cellClass + \"\\\">\" + item + \"</\" + useTag + \">\";\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\thtml += \"\\n\\t\\t<\" + useTag + \">\" + item + \"</\" + useTag + \">\";\r\n\t\t\t}\r\n\r\n\t\t\tfirst = false;\r\n\t\t});\r\n\r\n\t\thtml += \"\\n\\t</tr>\";\r\n\r\n\t\treturn html;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns chart's data in JSON format.\r\n\t *\r\n\t * This is an asynchronous function. Check the description of `getImage()`\r\n\t * for description and example usage.\r\n\t *\r\n\t * @param type Type of the export\r\n\t * @param options Options\r\n\t * @return Promise\r\n\t * @async\r\n\t */\r\n\tpublic async getJSON(type: \"json\", options?: IExportJSONOptions): Promise<string> {\r\n\r\n\t\t// Check if we need to regenerate data based on `dataFields`\r\n\t\tlet data: any[];\r\n\t\tconst dataFields = this.adapter.apply(\"formatDataFields\", {\r\n\t\t\tdataFields: this.dataFields,\r\n\t\t\tformat: \"csv\"\r\n\t\t}).dataFields;\r\n\t\tif (!this._dynamicDataFields) {\r\n\t\t\tdata = [];\r\n\t\t\tconst sourceData = this.data;\r\n\t\t\tfor (let len = sourceData.length, i = 0; i < len; i++) {\r\n\t\t\t\tlet value = sourceData[i];\r\n\t\t\t\tif (typeof value == \"object\") {\r\n\t\t\t\t\tlet newValue: any = {};\r\n\t\t\t\t\t$object.each(value, (field, item) => {\r\n\t\t\t\t\t\tif ($type.hasValue(dataFields[field])) {\r\n\t\t\t\t\t\t\tnewValue[dataFields[field]] = this.convertToSpecialFormat<\"json\">(field, item, options);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tdata.push(newValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdata = this.data;\r\n\t\t}\r\n\r\n\t\t// Stringify JSON\r\n\t\tlet json = JSON.stringify(data, (key, value) => {\r\n\t\t\tif (typeof value == \"object\") {\r\n\t\t\t\t$object.each(value, (field, item) => {\r\n\t\t\t\t\tvalue[field] = this.convertToSpecialFormat<\"json\">(field, item, options);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn value;\r\n\t\t}, options.indent);\r\n\r\n\t\t// Add content type\r\n\t\tlet charset = this.adapter.apply(\"charset\", {\r\n\t\t\tcharset: \"charset=utf-8\",\r\n\t\t\ttype: type,\r\n\t\t\toptions: options\r\n\t\t}).charset;\r\n\r\n\t\tlet uri = this.adapter.apply(\"getJSON\", {\r\n\t\t\tdata: \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(json),\r\n\t\t\toptions: options\r\n\t\t}).data;\r\n\r\n\t\treturn uri;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Converts the value to proper date format.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param field Field name\r\n\t * @param value Value\r\n\t * @param options Options\r\n\t * @param keepOriginal Will ignore formatting and will keep value as it is in data\r\n\t * @return Formatted date value or unmodified value\r\n\t */\r\n\tpublic convertToSpecialFormat<Key extends \"json\" | \"csv\" | \"xlsx\" | \"html\" | \"pdf\">(field: string, value: any, options?: IExportOptions[Key], keepOriginal?: boolean): any {\r\n\r\n\t\t// Is this a timestamp or duration?\r\n\t\tif (typeof value == \"number\") {\r\n\t\t\tif (this.isDateField(field)) {\r\n\t\t\t\tvalue = new Date(value);\r\n\t\t\t}\r\n\t\t\telse if (this.isDurationField(field)) {\r\n\t\t\t\treturn this.durationFormatter.format(value, this.durationFormat);\r\n\t\t\t}\r\n\t\t\telse if (this.isNumberField(field) && this.numberFormat) {\r\n\t\t\t\treturn this.numberFormatter.format(value, this.numberFormat);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (value instanceof Date) {\r\n\t\t\tif (options.useTimestamps) {\r\n\t\t\t\tvalue = value.getTime();\r\n\t\t\t}\r\n\t\t\telse if (options.useLocale) {\r\n\t\t\t\tif (!keepOriginal) {\r\n\t\t\t\t\tvalue = value.toLocaleString();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvalue = this.dateFormatter.format(value, this.dateFormat);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if ($type.isString(value) && this.isDateField(field) && this.dateFormat) {\r\n\t\t\tvalue = this.dateFormatter.format(this.dateFormatter.parse(value), this.dateFormat);\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts empty value based on `emptyAs` option.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic convertEmptyValue<Key extends \"csv\" | \"xlsx\">(field: string, value: any, options?: IExportOptions[Key]): any {\r\n\t\treturn $type.hasValue(value) ? value : options.emptyAs;\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers download of the file.\r\n\t *\r\n\t * This is an asynchronous function. Check the description of `getImage()`\r\n\t * for description and example usage.\r\n\t *\r\n\t * @param uri Data URI with file content\r\n\t * @param fileName File name\r\n\t * @return Promise\r\n\t * @async\r\n\t */\r\n\tpublic async download(uri: string, fileName: string): Promise<boolean> {\r\n\r\n\t\tif (this.msBlobDownloadSupport()) {\r\n\r\n\t\t\t/**\r\n\t\t\t * For all IEs 10 and up we use native method `msSaveBlob`\r\n\t\t\t */\r\n\r\n\t\t\t// Extract content type and get pure data without headers\r\n\t\t\tlet parts = uri.split(\";\");\r\n\t\t\tlet contentType = parts.shift().replace(/data:/, \"\");\r\n\t\t\turi = decodeURIComponent(parts.join(\";\").replace(/^[^,]*,/, \"\"));\r\n\r\n\r\n\t\t\t// Check if we need to Base64-decode\r\n\t\t\tif ([\"image/svg+xml\", \"application/json\", \"text/csv\"].indexOf(contentType) == -1) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tlet decoded = atob(uri);\r\n\t\t\t\t\turi = decoded;\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\t// Error occurred, meaning string was not Base64-encoded. Do nothing.\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet blob = new Blob([uri], { type: contentType });\r\n\t\t\t\twindow.navigator.msSaveBlob(blob, fileName);\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\t// Dissect uri into array\r\n\t\t\tlet chars = new Array(uri.length);\r\n\t\t\tfor (let i = 0; i < uri.length; ++i) {\r\n\t\t\t\tlet charCode = uri.charCodeAt(i);\r\n\t\t\t\tchars[i] = charCode;\r\n\t\t\t}\r\n\r\n\t\t\t// Prep Blob and force the download\r\n\t\t\tlet blob = new Blob([new Uint8Array(chars)], { type: contentType });\r\n\t\t\twindow.navigator.msSaveBlob(blob, fileName);\r\n\r\n\t\t}\r\n\r\n\t\telse if (this.blobDownloadSupport()) {\r\n\r\n\t\t\t/**\r\n\t\t\t * Supports Blob object.\r\n\t\t\t * Use it.\r\n\t\t\t */\r\n\t\t\tlet link = document.createElement(\"a\");\r\n\t\t\tlink.download = fileName;\r\n\t\t\tdocument.body.appendChild(link);\r\n\r\n\t\t\t// Extract content type and get pure data without headers\r\n\t\t\tlet parts = uri.split(\";\");\r\n\t\t\tlet contentType = parts.shift().replace(/data:/, \"\");\r\n\r\n\t\t\turi = decodeURIComponent(parts.join(\";\").replace(/^[^,]*,/, \"\"));\r\n\r\n\t\t\tif ([\"image/svg+xml\", \"application/json\", \"text/csv\", \"text/html\"].indexOf(contentType) == -1) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tlet decoded = atob(uri);\r\n\t\t\t\t\turi = decoded;\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\t// Error occurred, meaning string was not Base64-encoded. Do nothing.\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet blob = new Blob([uri], { type: contentType });\r\n\t\t\t\tlet url = window.URL.createObjectURL(blob);\r\n\t\t\t\tlink.href = url;\r\n\t\t\t\tlink.download = fileName;\r\n\t\t\t\tlink.click();\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tdocument.body.removeChild(link);\r\n\t\t\t\t\twindow.URL.revokeObjectURL(url);\r\n\t\t\t\t}, 100);\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\t// Dissect uri into array\r\n\t\t\tlet chars = new Array(uri.length);\r\n\t\t\tfor (let i = 0; i < uri.length; ++i) {\r\n\t\t\t\tlet charCode = uri.charCodeAt(i);\r\n\t\t\t\tchars[i] = charCode;\r\n\t\t\t}\r\n\r\n\t\t\tlet blob = new Blob([new Uint8Array(chars)], { type: contentType });\r\n\t\t\tlet url = window.URL.createObjectURL(blob);\r\n\t\t\tlink.href = url;\r\n\t\t\tlink.download = fileName;\r\n\t\t\tdocument.body.appendChild(link);\r\n\t\t\tlink.click();\r\n\t\t\tdocument.body.removeChild(link);\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\twindow.URL.revokeObjectURL(url);\r\n\t\t\t}, 100);\r\n\r\n\t\t}\r\n\r\n\t\telse if (this.linkDownloadSupport()) {\r\n\r\n\t\t\t/**\r\n\t\t\t * For regular browsers, we create a link then simulate a click on it\r\n\t\t\t */\r\n\r\n\t\t\tlet link = document.createElement(\"a\");\r\n\t\t\tlink.download = fileName;\r\n\t\t\tlink.href = uri;\r\n\t\t\tdocument.body.appendChild(link);\r\n\t\t\tlink.click();\r\n\t\t\tdocument.body.removeChild(link);\r\n\r\n\t\t}\r\n\t\telse if (this.legacyIE()) {\r\n\r\n\t\t\t/**\r\n\t\t\t * Old IEs (9 and down) we will use an <iframe> trick\r\n\t\t\t */\r\n\r\n\t\t\tlet parts = uri.match(/^data:(.*);[ ]*([^,]*),(.*)$/);\r\n\r\n\t\t\tif (parts.length === 4) {\r\n\t\t\t\t// Base64-encoded or text-based stuff?\r\n\t\t\t\tif (parts[2] == \"base64\") {\r\n\r\n\t\t\t\t\t// Base64-encoded - probably an image\r\n\t\t\t\t\tif (parts[1].match(/^image\\//)) {\r\n\r\n\t\t\t\t\t\t// Yep, an image. Let's create a temporary image placeholder,\r\n\t\t\t\t\t\t// so that user can use do Save As.\r\n\t\t\t\t\t\tthis.showModal(\r\n\t\t\t\t\t\t\t\"<img src=\\\"\" + uri + \"\\\" style=\\\"float: left; max-width: 50%; max-height: 80%; margin: 0 1em 0.5em 0; border: 1px solid #eee;\\\" />\" +\r\n\t\t\t\t\t\t\t\"<p>\" + this.language.translate(\r\n\t\t\t\t\t\t\t\t\"To save the image, right-click thumbnail on the left and choose \\\"Save picture as...\\\"\"\r\n\t\t\t\t\t\t\t) +\r\n\t\t\t\t\t\t\t\"</p>\" +\r\n\t\t\t\t\t\t\t\"<p style=\\\"text-align: center;\\\"><small>\" + this.language.translate(\r\n\t\t\t\t\t\t\t\t\"(Press ESC to close this message)\"\r\n\t\t\t\t\t\t\t) + \"</small></p>\",\r\n\t\t\t\t\t\t\tthis.language.translate(\"Image Export Complete\")\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\r\n\t\t\t\t\t// Text-based\r\n\r\n\t\t\t\t\t// IE9 is trippy about saving files with filenames of the extensions it\r\n\t\t\t\t\t// does not know. Let's use .txt extension for all text-based export\r\n\t\t\t\t\t// formats, except SVG.\r\n\t\t\t\t\tlet contentType;\r\n\t\t\t\t\tif (fileName.match(/\\.svg$/)) {\r\n\t\t\t\t\t\tcontentType = \"image/svg+xml\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tcontentType = \"text/plain\";\r\n\t\t\t\t\t\tfileName += \".txt\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Create temporary iframe\r\n\t\t\t\t\tlet iframe = document.createElement(\"iframe\");\r\n\t\t\t\t\tiframe.width = \"1px\";\r\n\t\t\t\t\tiframe.height = \"1px\"\r\n\t\t\t\t\tiframe.style.display = \"none\";\r\n\t\t\t\t\tdocument.body.appendChild(iframe);\r\n\r\n\t\t\t\t\t// Add our stuff to the document of the iframe and trigger save as\r\n\t\t\t\t\tlet idoc = iframe.contentDocument;\r\n\t\t\t\t\tidoc.open(contentType, \"replace\");\r\n\t\t\t\t\t// TODO test this with various encodings (e.g. UTF)\r\n\t\t\t\t\t//idoc.charset = parts[2].replace(/charset=/, \"\");\r\n\t\t\t\t\tidoc.write(decodeURIComponent(parts[3]));\r\n\t\t\t\t\tidoc.close();\r\n\t\t\t\t\tidoc.execCommand(\"SaveAs\", true, fileName);\r\n\r\n\t\t\t\t\t// Destroy the iframe\r\n\t\t\t\t\tdocument.body.removeChild(iframe);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\telse {\r\n\r\n\t\t\t/**\r\n\t\t\t * Something else - perhaps a mobile.\r\n\t\t\t * Let's just display it in the same page.\r\n\t\t\t * (hey we don't like it either)\r\n\t\t\t */\r\n\t\t\twindow.location.href = uri;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if browser has any supported methods to trigger download\r\n\t * of a binary file.\r\n\t *\r\n\t * @return Supports downloads?\r\n\t */\r\n\tpublic downloadSupport(): boolean {\r\n\t\t//return !this.legacyIE();\r\n\t\treturn this.linkDownloadSupport() || this.msBlobDownloadSupport();\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the browser supports \"download\" attribute on links.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Browser supports triggering downloads?\r\n\t */\r\n\tpublic linkDownloadSupport(): boolean {\r\n\t\t// Do we have this cached?\r\n\t\tlet cache = registry.getCache(\"linkDownloadSupport\");\r\n\t\tif (cache === false || cache === true) {\r\n\t\t\treturn cache;\r\n\t\t}\r\n\t\tlet a = document.createElement(\"a\");\r\n\t\tlet res = typeof a.download !== \"undefined\";\r\n\t\tregistry.setCache(\"linkDownloadSupport\", res);\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the browser supports download via `msBlob`.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Browser supports triggering downloads?\r\n\t */\r\n\tpublic blobDownloadSupport(): boolean {\r\n\t\treturn $type.hasValue(window.Blob);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the browser supports download via `msBlob`.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Browser supports triggering downloads?\r\n\t */\r\n\tpublic msBlobDownloadSupport(): boolean {\r\n\t\treturn $type.hasValue(window.navigator.msSaveOrOpenBlob);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if this is a legacy version of IE.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return IE9 or less?\r\n\t */\r\n\tpublic legacyIE(): boolean {\r\n\t\t// Create a temporary <div> with conditional tags in it an an <i> tag.\r\n\t\t// Count <i>s. If there are some, we have IE9 or late on our hands.\r\n\t\tlet div = document.createElement(\"div\");\r\n\t\tdiv.innerHTML = \"<!--[if lt IE 10]><i></i><![endif]-->\";\r\n\t\treturn div.getElementsByTagName(\"i\").length == 1;\r\n\t}\r\n\r\n\t/**\r\n\t * Initiates print of the chart.\r\n\t *\r\n\t * This is an asynchronous function. Check the description of `getImage()`\r\n\t * for description and example usage.\r\n\t *\r\n\t * @param data Data URI for the image\r\n\t * @param options Options\r\n\t * @param title Optional title to use (uses window's title by default)\r\n\t * @return Promise\r\n\t * @async\r\n\t */\r\n\tpublic async print(data: string, options?: IExportPrintOptions, title?: string): Promise<boolean> {\r\n\r\n\t\tif (options.printMethod == \"css\") {\r\n\t\t\treturn this.printViaCSS(data, options, title);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.printViaIframe(data, options, title);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprotected async printViaCSS(data: string, options?: IExportPrintOptions, title?: string): Promise<boolean> {\r\n\t\t// Save current scroll position\r\n\t\tlet scroll = document.documentElement.scrollTop || document.body.scrollTop;\r\n\r\n\t\t// Hide all current nodes of the document and save their current states\r\n\t\t// of `display` style\r\n\t\t/*let states: Array<string> = [];\r\n\t\tlet items = document.body.childNodes;\r\n\t\tfor (let len = items.length, i = 0; i < len; i++) {\r\n\t\t\tlet item = <HTMLElement>items[i];\r\n\t\t\tif ($dom.isElement(item)) {\r\n\t\t\t\tstates[i] = item.style.display;\r\n\t\t\t\titem.style.display = \"none\";\r\n\t\t\t}\r\n\t\t}*/\r\n\r\n\t\t// Hide all document nodes by applyin custom CSS\r\n\t\tlet rule = new StyleRule(\"body > *\", {\r\n\t\t\t\"display\": \"none\",\r\n\t\t\t\"position\": \"fixed\",\r\n\t\t\t\"visibility\": \"hidden\",\r\n\t\t\t\"opacity\": \"0\",\r\n\t\t\t\"clipPath\": \"polygon(0px 0px,0px 0px,0px 0px,0px 0px);\"\r\n\t\t});\r\n\r\n\t\t// Replace title?\r\n\t\tlet originalTitle: string;\r\n\t\tif (title && document && document.title) {\r\n\t\t\toriginalTitle = document.title;\r\n\t\t\tdocument.title = title;\r\n\t\t}\r\n\r\n\t\t// Create and add exported image\r\n\t\tlet img = new Image();\r\n\t\timg.src = data;\r\n\t\timg.style.maxWidth = \"100%\";\r\n\t\timg.style.display = \"block\";\r\n\t\timg.style.position = \"relative\";\r\n\t\timg.style.visibility = \"visible\";\r\n\t\timg.style.opacity = \"1\";\r\n\t\timg.style.clipPath = \"none\";\r\n\t\tdocument.body.appendChild(img);\r\n\r\n\t\t// Print\r\n\t\tthis.setTimeout(() => {\r\n\t\t\t(<any>window).print();\r\n\t\t}, 50);\r\n\r\n\t\t// Delay needs to be at least a second for iOS devices\r\n\t\tlet isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !(<any>window).MSStream;\r\n\t\tif (isIOS && (options.delay < 1000)) {\r\n\t\t\toptions.delay = 1000;\r\n\t\t}\r\n\t\telse if (options.delay < 100) {\r\n\t\t\toptions.delay = 100;\r\n\t\t}\r\n\r\n\t\t// Delay function that resets back the document the way ot was before\r\n\t\tthis.setTimeout(() => {\r\n\r\n\t\t\t// Remove image\r\n\t\t\tdocument.body.removeChild(img);\r\n\r\n\t\t\t// Reset back all elements\r\n\t\t\t/*for (let len = items.length, i = 0; i < len; i++) {\r\n\t\t\t\tlet item = <HTMLElement>items[i];\r\n\t\t\t\tif ($dom.isElement(item)) {\r\n\t\t\t\t\titem.style.display = states[i];\r\n\t\t\t\t}\r\n\t\t\t}*/\r\n\t\t\trule.dispose();\r\n\r\n\t\t\t// Restore title\r\n\t\t\tif (originalTitle) {\r\n\t\t\t\tdocument.title = document.title;\r\n\t\t\t}\r\n\r\n\t\t\t// Scroll back the document the way it was before\r\n\t\t\tdocument.documentElement.scrollTop = document.body.scrollTop = scroll;\r\n\r\n\t\t}, options.delay || 500);\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprotected async printViaIframe(data: string, options?: IExportPrintOptions, title?: string): Promise<boolean> {\r\n\r\n\t\t// Create an iframe\r\n\t\tlet iframe = document.createElement(\"iframe\");\r\n\t\tiframe.style.visibility = \"hidden\";\r\n\t\tdocument.body.appendChild(iframe);\r\n\r\n\t\t// This is needed for FireFox\r\n\t\tiframe.contentWindow.document.open();\r\n\t\tiframe.contentWindow.document.close();\r\n\r\n\t\t// Create and add exported image\r\n\t\tlet img = new Image();\r\n\t\timg.src = data;\r\n\t\timg.style.maxWidth = \"100%\";\r\n\t\tif (title) {\r\n\t\t\tiframe.contentWindow.document.title = title;\r\n\t\t}\r\n\t\tiframe.contentWindow.document.body.appendChild(img);\r\n\r\n\t\t(<any>iframe).load = function() {\r\n\t\t\tiframe.contentWindow.document.body.appendChild(img);\r\n\t\t};\r\n\r\n\t\t// Print\r\n\t\tthis.setTimeout(() => {\r\n\t\t\ttry {\r\n\t\t\t\tif (!(<any>iframe).contentWindow.document.execCommand(\"print\", false, null)) {\r\n\t\t\t\t\t(<any>iframe).contentWindow.print()​​​​​​;\r\n\t\t\t\t}\r\n\t\t\t} catch (e) {\r\n\t\t\t\t(<any>iframe).contentWindow.print()​​​​​​;\r\n\t\t\t}\r\n\t\t}, options.delay || 50);\r\n\r\n\t\t// Delay needs to be at least a second for iOS devices\r\n\t\tlet isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !(<any>window).MSStream;\r\n\t\tif (isIOS && (options.delay < 1000)) {\r\n\t\t\toptions.delay = 1000;\r\n\t\t}\r\n\t\telse if (options.delay < 100) {\r\n\t\t\toptions.delay = 100;\r\n\t\t}\r\n\r\n\t\t// Delay function that resets back the document the way ot was before\r\n\t\tthis.setTimeout(() => {\r\n\r\n\t\t\t// Remove image\r\n\t\t\tdocument.body.removeChild(iframe);\r\n\r\n\t\t}, options.delay + 50 || 100);\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Finds a background color for the element. If element is transparent it goes\r\n\t * up the DOM hierarchy to find a parent element that does.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param element Element\r\n\t * @return Color code\r\n\t */\r\n\tpublic findBackgroundColor(element: Element): Color {\r\n\r\n\t\t// Check if element has styles set\r\n\t\tlet opacity = 1,\r\n\t\t\tcurrentColor = (<string>getComputedStyle(element, \"background-color\"));\r\n\r\n\t\t// Check opacity\r\n\t\tif (currentColor.match(/[^,]*,[^,]*,[^,]*,[ ]?0/) || currentColor == \"transparent\") {\r\n\t\t\topacity = 0;\r\n\t\t}\r\n\r\n\t\tif (opacity == 0) {\r\n\t\t\tlet parent = element.parentElement;// || <Element>element.parentNode;\r\n\r\n\t\t\t// Completely transparent. Look for a parent\r\n\t\t\tif (parent) {\r\n\t\t\t\treturn this.findBackgroundColor(parent);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn color(\"#fff\");\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn color(currentColor, opacity);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * A reference to a container to be used to place [[ExportMenu]] in.\r\n\t *\r\n\t * @param value Reference\r\n\t */\r\n\tpublic set container(value: HTMLElement) {\r\n\t\tthis._container = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Reference\r\n\t */\r\n\tpublic get container(): HTMLElement {\r\n\t\treturn this.adapter.apply(\"container\", {\r\n\t\t\tcontainer: this._container\r\n\t\t}).container;\r\n\t}\r\n\r\n\t/**\r\n\t * A reference to [[Sprite]] to export. Can be any Sprite, including some\r\n\t * internal elements.\r\n\t *\r\n\t * @param value Sprite\r\n\t */\r\n\tpublic set sprite(value: Sprite) {\r\n\t\tthis._sprite = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Sprite\r\n\t */\r\n\tpublic get sprite(): Sprite {\r\n\t\treturn this.adapter.apply(\"sprite\", {\r\n\t\t\tsprite: this._sprite\r\n\t\t}).sprite;\r\n\t}\r\n\r\n\t/**\r\n\t * An array of extra [[Sprite]] elements to include in export.\r\n\t *\r\n\t * It can be used to export any external elements, or even other charts.\r\n\t *\r\n\t * E.g.:\r\n\t *\r\n\t * ```TypeScript\r\n\t * chart.exporting.extraSprites.push(chart2);\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * chart.exporting.extraSprites.push(chart2);\r\n\t * ```\r\n\t *\r\n\t * @since 4.2.0\r\n\t * @param value Sprite\r\n\t */\r\n\tpublic set extraSprites(value: Array<Sprite | IExportCanvas>) {\r\n\t\tthis._extraSprites = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Sprite\r\n\t */\r\n\tpublic get extraSprites(): Array<Sprite | IExportCanvas> {\r\n\t\treturn this.adapter.apply(\"extraSprites\", {\r\n\t\t\textraSprites: this._extraSprites\r\n\t\t}).extraSprites;\r\n\t}\r\n\r\n\t/**\r\n\t * An array of [[Sprite]] elements that need to be valid before export\r\n\t * commences.\r\n\t *\r\n\t * If any of those elements is not completely ready when export is triggered,\r\n\t * the export will wait until they are (their `validated` event triggers)\r\n\t * before going through with the export opertaion.\r\n\t *\r\n\t * This is useful if you need to modify chart appearance for the export.\r\n\t *\r\n\t * E.g.:\r\n\t *\r\n\t * ```TypeScript\r\n\t * // Add watermark\r\n\t * let watermark = chart.createChild(am4core.Label);\r\n\t * watermark.text = \"Copyright (C) 2019\";\r\n\t * watermark.disabled = true;\r\n\t *\r\n\t * // Add watermark to validated sprites\r\n\t * chart.exporting.validateSprites.push(watermark);\r\n\t *\r\n\t * // Enable watermark on export\r\n\t * chart.exporting.events.on(\"exportstarted\", function(ev) {\r\n\t * watermark.disabled = false;\r\n\t * });\r\n\t *\r\n\t * // Disable watermark when export finishes\r\n\t * chart.exporting.events.on(\"exportfinished\", function(ev) {\r\n\t * watermark.disabled = true;\r\n\t * });\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * // Add watermark\r\n\t * var watermark = chart.createChild(am4core.Label);\r\n\t * watermark.text = \"Copyright (C) 2019\";\r\n\t * watermark.disabled = true;\r\n\t *\r\n\t * // Add watermark to validated sprites\r\n\t * chart.exporting.validateSprites.push(watermark);\r\n\t *\r\n\t * // Enable watermark on export\r\n\t * chart.exporting.events.on(\"exportstarted\", function(ev) {\r\n\t * watermark.disabled = false;\r\n\t * });\r\n\t *\r\n\t * // Disable watermark when export finishes\r\n\t * chart.exporting.events.on(\"exportfinished\", function(ev) {\r\n\t * watermark.disabled = true;\r\n\t * });\r\n\t * ```\r\n\t *\r\n\t * @since 4.6.8\r\n\t * @param value Sprite\r\n\t */\r\n\tpublic set validateSprites(value: Array<Sprite>) {\r\n\t\tthis._validateSprites = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Sprite\r\n\t */\r\n\tpublic get validateSprites(): Array<Sprite> {\r\n\t\treturn this.adapter.apply(\"validateSprites\", {\r\n\t\t\tvalidateSprites: this._validateSprites\r\n\t\t}).validateSprites;\r\n\t}\r\n\r\n\t/**\r\n\t * Data to export.\r\n\t *\r\n\t * @param value Data\r\n\t */\r\n\tpublic set data(value: any) {\r\n\t\tthis._data = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Data\r\n\t */\r\n\tpublic get data(): any {\r\n\t\treturn this.adapter.apply(\"data\", {\r\n\t\t\tdata: this._data\r\n\t\t}).data;\r\n\t}\r\n\r\n\t/**\r\n\t * Data fields in `{ field: fieldName }` format. Those are used for\r\n\t * exporting in data formats to name the columns.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/exporting/#Changing_order_and_names_of_columns} for examples and details\r\n\t * @param value Field names\r\n\t */\r\n\tpublic set dataFields(value: any) {\r\n\t\tthis._dataFields = value;\r\n\t\tthis._dynamicDataFields = false;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Field names `{ field: fieldName }`\r\n\t */\r\n\tpublic get dataFields(): any {\r\n\t\tif (!this._dataFields) {\r\n\t\t\tthis.generateDataFields();\r\n\t\t}\r\n\t\treturn this.adapter.apply(\"dataFields\", {\r\n\t\t\tdataFields: this._dataFields\r\n\t\t}).dataFields;\r\n\t}\r\n\r\n\t/**\r\n\t * Called after target chart's data updates.\r\n\t *\r\n\t * @ignore\r\n\t */\r\n\tpublic handleDataUpdated(): void {\r\n\t\tif (this._dynamicDataFields) {\r\n\t\t\tthis._dataFields = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A [[DateFormatter]] to use when formatting dates when exporting data.\r\n\t *\r\n\t * @param value DateFormatter instance\r\n\t */\r\n\tpublic set dateFormatter(value: DateFormatter) {\r\n\t\tthis._dateFormatter = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return A DateFormatter instance\r\n\t */\r\n\tpublic get dateFormatter(): DateFormatter {\r\n\t\tif (!this._dateFormatter) {\r\n\t\t\tthis._dateFormatter = new DateFormatter();\r\n\t\t\tthis._dateFormatter.language = this.language;\r\n\t\t}\r\n\t\treturn this.adapter.apply(\"dateFormatter\", {\r\n\t\t\tdateFormatter: this._dateFormatter\r\n\t\t}).dateFormatter;\r\n\t}\r\n\r\n\t/**\r\n\t * A date format to use for exporting dates. Will use [[DateFormatter]]\r\n\t * format if not set.\r\n\t *\r\n\t * @param value Date format\r\n\t */\r\n\tpublic set dateFormat(value: $type.Optional<string | Intl.DateTimeFormatOptions>) {\r\n\t\tthis._dateFormat = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Date format\r\n\t */\r\n\tpublic get dateFormat(): $type.Optional<string | Intl.DateTimeFormatOptions> {\r\n\t\treturn this.adapter.apply(\"dateFormat\", {\r\n\t\t\tdateFormat: this._dateFormat\r\n\t\t}).dateFormat;\r\n\t}\r\n\r\n\t/**\r\n\t * A list of fields that hold date values.\r\n\t *\r\n\t * @param value Date field list\r\n\t */\r\n\tpublic set dateFields(value: List<string>) {\r\n\t\tthis._dateFields = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Date field list\r\n\t */\r\n\tpublic get dateFields(): List<string> {\r\n\t\tif (!this._dateFields) {\r\n\t\t\tthis._dateFields = new List<string>();\r\n\t\t}\r\n\t\treturn this.adapter.apply(\"dateFields\", {\r\n\t\t\tdateFields: this._dateFields\r\n\t\t}).dateFields;\r\n\t}\r\n\r\n\t/**\r\n\t * A [[NumberFormatter]] to use when formatting dates when exporting data.\r\n\t *\r\n\t * @since 4.5.15\r\n\t * @param value NumberFormatter instance\r\n\t */\r\n\tpublic set numberFormatter(value: NumberFormatter) {\r\n\t\tthis._numberFormatter = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return A NumberFormatter instance\r\n\t */\r\n\tpublic get numberFormatter(): NumberFormatter {\r\n\t\tif (!this._numberFormatter) {\r\n\t\t\tthis._numberFormatter = new NumberFormatter();\r\n\t\t\tthis._numberFormatter.language = this.language;\r\n\t\t}\r\n\t\treturn this.adapter.apply(\"numberFormatter\", {\r\n\t\t\tnumberFormatter: this._numberFormatter\r\n\t\t}).numberFormatter;\r\n\t}\r\n\r\n\t/**\r\n\t * A number format to use for exporting dates. Will use [[NumberFormatter]]\r\n\t * format if not set.\r\n\t *\r\n\t * @since 4.5.15\r\n\t * @param value Number format\r\n\t */\r\n\tpublic set numberFormat(value: $type.Optional<string>) {\r\n\t\tthis._numberFormat = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Number format\r\n\t */\r\n\tpublic get numberFormat(): $type.Optional<string> {\r\n\t\treturn this.adapter.apply(\"numberFormat\", {\r\n\t\t\tnumberFormat: this._numberFormat\r\n\t\t}).numberFormat;\r\n\t}\r\n\r\n\t/**\r\n\t * A list of fields that hold number values.\r\n\t *\r\n\t * @since 4.5.15\r\n\t * @param value Number field list\r\n\t */\r\n\tpublic set numberFields(value: List<string>) {\r\n\t\tthis._numberFields = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Number field list\r\n\t */\r\n\tpublic get numberFields(): List<string> {\r\n\t\tif (!this._numberFields) {\r\n\t\t\tthis._numberFields = new List<string>();\r\n\t\t}\r\n\t\treturn this.adapter.apply(\"numberFields\", {\r\n\t\t\tnumberFields: this._numberFields\r\n\t\t}).numberFields;\r\n\t}\r\n\r\n\t/**\r\n\t * A [[DurationFormatter]] to use when formatting duration values when\r\n\t * exporting data.\r\n\t *\r\n\t * @param value DurationFormatter instance\r\n\t */\r\n\tpublic set durationFormatter(value: DurationFormatter) {\r\n\t\tthis._durationFormatter = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return A DurationFormatter instance\r\n\t */\r\n\tpublic get durationFormatter(): DurationFormatter {\r\n\t\tif (!this._durationFormatter) {\r\n\t\t\tthis._durationFormatter = new DurationFormatter();\r\n\t\t\tthis._durationFormatter.language = this.language;\r\n\t\t}\r\n\t\treturn this.adapter.apply(\"durationFormatter\", {\r\n\t\t\tdurationFormatter: this._durationFormatter\r\n\t\t}).durationFormatter;\r\n\t}\r\n\r\n\t/**\r\n\t * A format to use when formatting values from `durationFields`.\r\n\t * Will use [[DurationFormatter]] format if not set.\r\n\t *\r\n\t * @param value Duration format\r\n\t */\r\n\tpublic set durationFormat(value: $type.Optional<string>) {\r\n\t\tthis._durationFormat = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Duration format\r\n\t */\r\n\tpublic get durationFormat(): $type.Optional<string> {\r\n\t\treturn this.adapter.apply(\"durationFormat\", {\r\n\t\t\tdurationFormat: this._durationFormat\r\n\t\t}).durationFormat;\r\n\t}\r\n\r\n\t/**\r\n\t * A list of fields that hold duration values.\r\n\t *\r\n\t * @param value Duration field list\r\n\t */\r\n\tpublic set durationFields(value: List<string>) {\r\n\t\tthis._durationFields = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Duration field list\r\n\t */\r\n\tpublic get durationFields(): List<string> {\r\n\t\tif (!this._durationFields) {\r\n\t\t\tthis._durationFields = new List<string>();\r\n\t\t}\r\n\t\treturn this.adapter.apply(\"durationFields\", {\r\n\t\t\tdurationFields: this._durationFields\r\n\t\t}).durationFields;\r\n\t}\r\n\r\n\t/**\r\n\t * Generates data fields out of the first row of data.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic generateDataFields(): void {\r\n\t\tthis._dataFields = {};\r\n\t\tif (this.data.length) {\r\n\t\t\t$array.each(this.data, (row) => {\r\n\t\t\t\t$object.each(row, (key, value) => {\r\n\t\t\t\t\tif (!$type.hasValue(this._dataFields[key])) {\r\n\t\t\t\t\t\tthis._dataFields[key] = this.adapter.apply(\"dataFieldName\", {\r\n\t\t\t\t\t\t\tname: key,\r\n\t\t\t\t\t\t\tfield: key\r\n\t\t\t\t\t\t}).name;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Cheks against `dateFields` property to determine if this field holds\r\n\t * dates.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param field Field name\r\n\t * @param options Options\r\n\t * @return `true` if it's a date field\r\n\t */\r\n\tpublic isDateField(field: string): boolean {\r\n\t\treturn this.adapter.apply(\"isDateField\", {\r\n\t\t\tisDateField: this.dateFields.contains(field),\r\n\t\t\tfield: field\r\n\t\t}).isDateField;\r\n\t}\r\n\r\n\t/**\r\n\t * Cheks against `numberFields` property to determine if this field holds\r\n\t * numbers.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param field Field name\r\n\t * @param options Options\r\n\t * @return `true` if it's a number field\r\n\t */\r\n\tpublic isNumberField(field: string): boolean {\r\n\t\treturn this.adapter.apply(\"isNumberField\", {\r\n\t\t\tisNumberField: this.numberFields.contains(field),\r\n\t\t\tfield: field\r\n\t\t}).isNumberField;\r\n\t}\r\n\r\n\t/**\r\n\t * Cheks against `durationFields` property to determine if this field holds\r\n\t * durations.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param field Field name\r\n\t * @param options Options\r\n\t * @return `true` if it's a date field\r\n\t */\r\n\tpublic isDurationField(field: string): boolean {\r\n\t\treturn this.adapter.apply(\"isDurationField\", {\r\n\t\t\tisDurationField: this.durationFields.contains(field),\r\n\t\t\tfield: field\r\n\t\t}).isDurationField;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns proper content type for the export type.\r\n\t *\r\n\t * @param type Export format/type\r\n\t * @return Proper content type, i.e. \"image/jpeg\"\r\n\t */\r\n\tpublic getContentType<Key extends keyof IExportOptions>(type: Key): string {\r\n\r\n\t\tlet contentType = \"\";\r\n\t\tswitch (type) {\r\n\t\t\tcase \"png\":\r\n\t\t\tcase \"gif\":\r\n\t\t\t\tcontentType = \"image/\" + type;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"jpg\":\r\n\t\t\t\tcontentType = \"image/jpeg\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"svg\":\r\n\t\t\t\tcontentType = \"image/svg+xml\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"csv\":\r\n\t\t\t\tcontentType = \"text/csv\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"json\":\r\n\t\t\t\tcontentType = \"application/json\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"html\":\r\n\t\t\t\tcontentType = \"text/html\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"pdf\":\r\n\t\t\tcase \"pdfdata\":\r\n\t\t\t\tcontentType = \"application/pdf\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"xlsx\":\r\n\t\t\t\tcontentType = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn this.adapter.apply(\"contentType\", {\r\n\t\t\tcontentType: contentType,\r\n\t\t\ttype: type\r\n\t\t}).contentType;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * A file prefix to be used for all exported formats.\r\n\t *\r\n\t * Export will apply format-related extension to it. E.g. if this is set to\r\n\t * \"myExport\", the file name of the PNG exported image will be \"myExport.png\".\r\n\t *\r\n\t * @param value File prefix\r\n\t */\r\n\tpublic set filePrefix(value: string) {\r\n\t\tthis._filePrefix = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return File prefix\r\n\t */\r\n\tpublic get filePrefix(): string {\r\n\t\treturn this.adapter.apply(\"filePrefix\", {\r\n\t\t\tfilePrefix: this._filePrefix\r\n\t\t}).filePrefix;\r\n\t}\r\n\r\n\t/**\r\n\t * A background color to be used for exported images. If set, this will\r\n\t * override the automatically acquired background color.\r\n\t *\r\n\t * @param value Color\r\n\t */\r\n\tpublic set backgroundColor(value: $type.Optional<Color>) {\r\n\t\tthis._backgroundColor = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Background color\r\n\t */\r\n\tpublic get backgroundColor(): $type.Optional<Color> {\r\n\t\treturn this.adapter.apply(\"backgroundColor\", {\r\n\t\t\tbackgroundColor: this._backgroundColor\r\n\t\t}).backgroundColor;\r\n\t}\r\n\r\n\t/**\r\n\t * A title to be used when printing.\r\n\t *\r\n\t * @param value Title\r\n\t */\r\n\tpublic set title(value: $type.Optional<string>) {\r\n\t\tthis._title = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Title\r\n\t */\r\n\tpublic get title(): $type.Optional<string> {\r\n\t\treturn this.adapter.apply(\"title\", {\r\n\t\t\ttitle: this._title\r\n\t\t}).title;\r\n\t}\r\n\r\n\t/**\r\n\t * Displays a preloader/exporting indicator.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Add ability to change text\r\n\t */\r\n\tpublic showPreloader(): void {\r\n\t\tlet preloader = this.preloader;\r\n\t\tif (preloader) {\r\n\t\t\tpreloader.progress = 0.5;\r\n\t\t\tpreloader.label.text = \"...\";\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Hides preloader/exporting indicator\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic hidePreloader(): void {\r\n\t\tlet preloader = this.preloader;\r\n\t\tif (preloader) {\r\n\t\t\tpreloader.progress = 1;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a an instance of [[Preloader]] associated with the Sprite being\r\n\t * exported.\r\n\t *\r\n\t * @return Preloader\r\n\t */\r\n\tpublic get preloader(): Preloader {\r\n\t\treturn this._sprite && this._sprite.parent && this._sprite.parent.preloader ?\r\n\t\t\tthis._sprite.parent.preloader :\r\n\t\t\tundefined;\r\n\t}\r\n\r\n\t/**\r\n\t * Displays a modal saying export is taking longer than expected.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic showTimeout(): void {\r\n\t\tthis.showModal(\r\n\t\t\tthis.adapter.apply(\"timeoutMessage\", {\r\n\t\t\t\tmessage: this.language.translate(\"Export operation took longer than expected. Something might have gone wrong.\")\r\n\t\t\t}).message\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Hides preloader/exporting indicator.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic hideTimeout(): void {\r\n\t\tif (this._timeoutTimeout) {\r\n\t\t\tthis.removeDispose(this._timeoutTimeout);\r\n\t\t\tthis._timeoutTimeout = null;\r\n\t\t}\r\n\t\tthis.hideModal();\r\n\t}\r\n\r\n\t/**\r\n\t * A [[Language]] instance to be used for translations.\r\n\t *\r\n\t * @param value An instance of [[Language]]\r\n\t */\r\n\tpublic set language(value: Language) {\r\n\t\tthis._language = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return A [[Language]] instance to be used\r\n\t */\r\n\tpublic get language(): Language {\r\n\t\tif (!this._language) {\r\n\t\t\tthis._language = new Language();\r\n\t\t}\r\n\r\n\t\treturn this._language;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns (and creates) [[Modal]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Modal instance\r\n\t */\r\n\tpublic get modal(): Modal {\r\n\t\tif (!this._modal) {\r\n\t\t\tthis._modal = new Modal();\r\n\r\n\t\t\t// Prefix with Sprite's class name\r\n\t\t\tthis._modal.adapter.add(\"classPrefix\", (value) => {\r\n\t\t\t\tvalue = options.classNamePrefix + value;\r\n\t\t\t\treturn value;\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn this._modal;\r\n\t}\r\n\r\n\t/**\r\n\t * Shows [[Modal]] with specific text.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param text Modal contents\r\n\t */\r\n\tpublic showModal(text: string, title?: string): void {\r\n\r\n\t\t// Hide previous modal and preloader\r\n\t\tthis.hideModal();\r\n\t\tthis.hidePreloader();\r\n\r\n\t\t// Create modal\r\n\t\tlet modal = this.modal;\r\n\t\tmodal.container = this.sprite.svgContainer.SVGContainer;\r\n\t\tmodal.content = text;\r\n\t\tmodal.readerTitle = title;\r\n\t\tmodal.open();\r\n\t}\r\n\r\n\t/**\r\n\t * Hides modal window if one's currently open.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic hideModal(): void {\r\n\t\tif (this._modal) {\r\n\t\t\tthis.modal.close();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Loads canvg dynamic module.\r\n\t *\r\n\t * This is an asynchronous function. Check the description of `getImage()`\r\n\t * for description and example usage.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Instance of canvg\r\n\t * @async\r\n\t */\r\n\tprivate async _canvg(): Promise<any> {\r\n\t\tconst canvg = (await import(/* webpackChunkName: \"canvg\" */ \"canvg\")) as any;\r\n\r\n\t\tif (canvg.default != null) {\r\n\t\t\treturn canvg.default;\r\n\r\n\t\t} else {\r\n\t\t\treturn canvg;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns canvg instance.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Instance of canvg\r\n\t */\r\n\tpublic get canvg(): Promise<any> {\r\n\t\treturn this._canvg();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns pdfmake instance.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Instance of pdfmake\r\n\t */\r\n\tpublic get pdfmake(): Promise<any> {\r\n\t\tif (pdfmakePromise == null) {\r\n\t\t\tpdfmakePromise = _pdfmake();\r\n\t\t}\r\n\r\n\t\treturn pdfmakePromise;\r\n\t}\r\n\r\n\t/**\r\n\t * Loads xlsx dynamic module.\r\n\t *\r\n\t * This is an asynchronous function. Check the description of `getImage()`\r\n\t * for description and example usage.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Instance of pdfmake\r\n\t * @async\r\n\t */\r\n\tprivate async _xlsx(): Promise<any> {\r\n\t\treturn await import(/* webpackChunkName: \"xlsx\" */ \"xlsx\");\r\n\t}\r\n\r\n\t/**\r\n\t * Returns xlsx instance.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Instance of pdfmake\r\n\t */\r\n\tpublic get xlsx(): Promise<any> {\r\n\t\treturn this._xlsx();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets options for a format.\r\n\t */\r\n\tpublic setFormatOptions<Key extends keyof IExportOptions>(type: Key, options: IExportOptions[Key]): void {\r\n\t\tthis._formatOptions.setKey(type, options);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current options for a format.\r\n\t */\r\n\tpublic getFormatOptions<Key extends keyof IExportOptions>(type: Key): IExportOptions[Key] {\r\n\t\treturn this._formatOptions.getKey(type);\r\n\t}\r\n\r\n\t/**\r\n\t * Disables interactivity on parent chart.\r\n\t */\r\n\tprotected _disablePointers(): void {\r\n\t\tif (!$type.hasValue(this._spriteInteractionsEnabled)) {\r\n\t\t\tthis._spriteInteractionsEnabled = this.sprite.interactionsEnabled;\r\n\t\t}\r\n\t\tthis.sprite.interactionsEnabled = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Releases temporarily disabled pointers on parent chart.\r\n\t */\r\n\tprotected _releasePointers(): void {\r\n\t\tif ($type.hasValue(this._spriteInteractionsEnabled)) {\r\n\t\t\tthis.sprite.interactionsEnabled = this._spriteInteractionsEnabled;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Hides all elements that should not be included in the exported image.\r\n\t */\r\n\tprivate hideNonExportableSprites(): void {\r\n\t\tif (this._objectsAlreadyHidden) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst svgContainer = this.sprite.svgContainer;\r\n\t\tif (svgContainer) {\r\n\t\t\t$array.each(svgContainer.nonExportableSprites, (item) => {\r\n\t\t\t\tif (!item.isHidden && !item.isHiding && item.visible) {\r\n\t\t\t\t\tthis._hiddenObjects.push(item);\r\n\t\t\t\t}\r\n\t\t\t\titem.hide(0);\r\n\t\t\t});\r\n\t\t}\r\n\t\tthis._objectsAlreadyHidden = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Respores elements that were hidden before export.\r\n\t */\r\n\tprivate restoreNonExportableSprites(): void {\r\n\t\tif (!this._objectsAlreadyHidden) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t$array.each(this._hiddenObjects, (item) => {\r\n\t\t\titem.show(0);\r\n\t\t});\r\n\t\tthis._hiddenObjects = [];\r\n\t\tthis._objectsAlreadyHidden = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if there are elements that absolutely need to be validated before\r\n\t * export.\r\n\t *\r\n\t * If there are invalid elements, it will await for them to be validated.\r\n\t *\r\n\t * @return Promise\r\n\t */\r\n\tprivate async awaitValidSprites(): Promise<void> {\r\n\t\tlet promises: Promise<any>[] = [];\r\n\r\n\t\tif (this.validateSprites.length) {\r\n\t\t\t$array.each(this.validateSprites, (sprite, index) => {\r\n\t\t\t\tif (sprite.invalid) {\r\n\t\t\t\t\tpromises.push(new Promise((resolve, reject) => {\r\n\t\t\t\t\t\tsprite.events.once(\"validated\", (ev) => {\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (promises.length) {\r\n\t\t\tawait Promise.all(promises);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tregistry.registeredClasses[\"ExportMenu\"] = ExportMenu;\r\n\r\n\t\tif (config) {\r\n\r\n\t\t\t// Set up menu\r\n\t\t\tif ($type.hasValue(config.menu) && !$type.hasValue(config.menu.type)) {\r\n\t\t\t\tconfig.menu.type = \"ExportMenu\";\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tsuper.processConfig(config);\r\n\r\n\t}\r\n\r\n}\r\n","import { StyleRule } from \"../utils/DOM\";\r\nimport { InterfaceColorSet } from \"../utils/InterfaceColorSet\";\r\nimport { Dictionary } from \"../utils/Dictionary\";\r\nimport { MultiDisposer, IDisposer, CounterDisposer } from \"../utils/Disposer\";\r\n\r\nconst rules = new Dictionary<string, CounterDisposer>();\r\n\r\n/**\r\n * A dynamically-loadable CSS module for Export menu.\r\n *\r\n * @ignore Exclude from docs\r\n * @param prefix Prefix to addtach to class names\r\n * @return A MultiDisposer with style rules\r\n */\r\nexport default function (prefix?: string): IDisposer {\r\n\tconst newPrefix = (prefix ? prefix : \"amexport\");\r\n\r\n\tlet colorSet = new InterfaceColorSet();\r\n\r\n\tconst counter = rules.insertKeyIfEmpty(newPrefix, () => {\r\n\t\tconst disposer = new MultiDisposer([\r\n\r\n\t\t\t/*new StyleRule(`.${newPrefix}-menu`, {\r\n\t\t\t\t\"opacity\": \"0.3\",\r\n\t\t\t\t\"transition\": \"all 100ms ease-in-out\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`div:hover .${newPrefix}-menu, .${newPrefix}-menu.active`, {\r\n\t\t\t\t\"opacity\": \"0.9\",\r\n\t\t\t}),*/\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-menu *`, {\r\n\t\t\t\t\"box-sizing\": \"border-box\"\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-menu-level-0`, {\r\n\t\t\t\t\"position\": \"absolute\",\r\n\t\t\t\t\"top\": \"5px\",\r\n\t\t\t\t\"right\": \"5px\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-menu-level-0.${newPrefix}-left`, {\r\n\t\t\t\t\"right\": \"auto\",\r\n\t\t\t\t\"left\": \"5px\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-menu-level-0.${newPrefix}-right`, {\r\n\t\t\t\t\"right\": \"5px\",\r\n\t\t\t\t\"left\": \"auto\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-menu-level-0.${newPrefix}-top`, {\r\n\t\t\t\t\"top\": \"5px\",\r\n\t\t\t\t\"bottom\": \"auto\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-menu-level-0.${newPrefix}-bottom`, {\r\n\t\t\t\t\"top\": \"auto\",\r\n\t\t\t\t\"bottom\": \"5px\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-item.${newPrefix}-item-level-0`, {\r\n\t\t\t\t\"opacity\": \"0.3\",\r\n\t\t\t\t\"width\": \"30px\",\r\n\t\t\t\t\"min-height\": \"30px\",\r\n\t\t\t\t\"transition\": \"all 100ms ease-in-out\",\r\n\t\t\t\t//\"text-indent\": \"-9999px\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`div:hover .${newPrefix}-item.${newPrefix}-item-level-0, .${newPrefix}-item.${newPrefix}-item-level-0.active`, {\r\n\t\t\t\t\"opacity\": \"0.9\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-item.${newPrefix}-item-level-0 > a`, {\r\n\t\t\t\t\"padding\": \"0\",\r\n\t\t\t\t\"text-align\": \"center\",\r\n\t\t\t\t\"overflow\": \"hidden\"\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-item.${newPrefix}-item-level-0:before`, {\r\n\t\t\t\t\"display\": \"block\"\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-item`, {\r\n\t\t\t\t\"position\": \"relative\",\r\n\t\t\t\t\"display\": \"block\",\r\n\t\t\t\t\"opacity\": \"0\",\r\n\t\t\t\t\"z-index\": \"1\",\r\n\t\t\t\t\"border-radius\": \"3px\",\r\n\t\t\t\t\"background-color\": colorSet.getFor(\"secondaryButton\").hex,\r\n\t\t\t\t\"padding\": \"0\",\r\n\t\t\t\t\"margin\": \"1px 1px 0 0\",\r\n\t\t\t\t\"color\": colorSet.getFor(\"secondaryButton\").alternative.hex,\r\n\t\t\t\t\"transition\": \"all 100ms ease-in-out, opacity 0.5s ease 0.5s\",\r\n\t\t\t\t//\"width\": \"initial\",\r\n\t\t\t\t//\"height\": \"initial\",\r\n\t\t\t\t//\"text-indent\": \"initial\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-left .${newPrefix}-item`, {\r\n\t\t\t\t\"margin\": \"1px 0 0 1px\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-item:hover, .${newPrefix}-item.active`, {\r\n\t\t\t\t\"background\": colorSet.getFor(\"secondaryButtonHover\").hex,\r\n\t\t\t\t\"color\": colorSet.getFor(\"secondaryButtonText\").hex,\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-item > .${newPrefix}-menu`, {\r\n\t\t\t\t\"position\": \"absolute\",\r\n\t\t\t\t\"top\": \"-1px\",\r\n\t\t\t\t\"right\": \"0\",\r\n\t\t\t\t\"margin-right\": \"100%\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-left .${newPrefix}-item > .${newPrefix}-menu`, {\r\n\t\t\t\t\"left\": \"0\",\r\n\t\t\t\t\"right\": \"auto\",\r\n\t\t\t\t\"margin-left\": \"100%\",\r\n\t\t\t\t\"margin-right\": \"auto\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-right .${newPrefix}-item > .${newPrefix}-menu`, {\r\n\t\t\t\t\"left\": \"auto\",\r\n\t\t\t\t\"right\": \"0\",\r\n\t\t\t\t\"margin-left\": \"auto\",\r\n\t\t\t\t\"margin-right\": \"100%\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-top .${newPrefix}-item > .${newPrefix}-menu`, {\r\n\t\t\t\t\"top\": \"-1px\",\r\n\t\t\t\t\"bottom\": \"auto\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-bottom .${newPrefix}-item > .${newPrefix}-menu`, {\r\n\t\t\t\t\"top\": \"auto\",\r\n\t\t\t\t\"bottom\": \"0\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-item > .${newPrefix}-menu`, {\r\n\t\t\t\t\"display\": \"none\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-item:hover > .${newPrefix}-menu, .${newPrefix}-item.active > .${newPrefix}-menu`, {\r\n\t\t\t\t\"display\": \"block\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-item:hover > .${newPrefix}-menu > .${newPrefix}-item, .${newPrefix}-item.active > .${newPrefix}-menu > .${newPrefix}-item`, {\r\n\t\t\t\t\"opacity\": \"1\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-menu`, {\r\n\t\t\t\t\"display\": \"block\",\r\n\t\t\t\t\"list-style\": \"none\",\r\n\t\t\t\t\"margin\": \"0\",\r\n\t\t\t\t\"padding\": \"0\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-label`, {\r\n\t\t\t\t\"display\": \"block\",\r\n\t\t\t\t\"cursor\": \"default\",\r\n\t\t\t\t\"padding\": \"0.5em 1em\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-icon`, {\r\n\t\t\t\t\"display\": \"block\",\r\n\t\t\t\t\"cursor\": \"default\",\r\n\t\t\t\t\"padding\": \"0.2em 0.4em\",\r\n\t\t\t\t\"width\": \"1.2em\",\r\n\t\t\t\t\"height\": \"1.2em\",\r\n\t\t\t\t\"min-width\": \"32px\",\r\n\t\t\t\t\"min-height\": \"32px\",\r\n\t\t\t\t\"margin\": \"auto auto\",\r\n\t\t\t\t\"border-radius\": \"3px\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-item-level-0 > .${newPrefix}-icon`, {\r\n\t\t\t\t\"padding\": \"0.1em 0.2em\",\r\n\t\t\t}),\r\n\r\n\t\t\tnew StyleRule(`.${newPrefix}-clickable`, {\r\n\t\t\t\t\"cursor\": \"pointer\",\r\n\t\t\t}),\r\n\t\t]);\r\n\r\n\t\treturn new CounterDisposer(() => {\r\n\t\t\trules.removeKey(newPrefix);\r\n\t\t\tdisposer.dispose();\r\n\t\t});\r\n\t});\r\n\r\n\treturn counter.increment();\r\n}\r\n","/**\r\n * ExportMenu provides functionality for building Export menu\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport exportCSS from \"./ExportCSS\";\r\nimport { IExportOptions } from \"./Export\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { List } from \"../utils/List\";\r\nimport { Align } from \"../defs/Align\";\r\nimport { VerticalAlign } from \"../defs/VerticalAlign\";\r\nimport { getInteraction } from \"../interaction/Interaction\";\r\nimport { InteractionObject } from \"../interaction/InteractionObject\";\r\nimport { AMEvent } from \"../utils/EventDispatcher\";\r\nimport { IDisposer, MutableValueDisposer } from \"../utils/Disposer\";\r\nimport { Language, ILocaleProperties } from \"../utils/Language\";\r\nimport { Validatable } from \"../utils/Validatable\";\r\nimport { keyboard, KeyboardKeys } from \"../utils/Keyboard\";\r\nimport { Color } from \"../utils/Color\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $iter from \"../utils/Iterator\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $type from \"../utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Export menu item interface.\r\n */\r\nexport interface IExportMenuItem {\r\n\r\n\t/**\r\n\t * Item type, usually an export format.\r\n\t */\r\n\ttype?: keyof IExportOptions;\r\n\r\n\t/**\r\n\t * Label to display in the menu.\r\n\t */\r\n\tlabel?: string;\r\n\r\n\t/**\r\n\t * A `href` of the image to show instead of a label.\r\n\t */\r\n\ticon?: string;\r\n\r\n\t/**\r\n\t * Raw SVG content to add to instead of regular label.\r\n\t */\r\n\tsvg?: string;\r\n\r\n\t/**\r\n\t * Export format. (optional)\r\n\t */\r\n\tformat?: string;\r\n\r\n\t/**\r\n\t * Menu item options.\r\n\t *\r\n\t * @see {@link IExportOptions}\r\n\t */\r\n\toptions?: IExportOptions[keyof IExportOptions];\r\n\r\n\t/**\r\n\t * Priority.\r\n\t *\r\n\t * The items in Export menu will be sorted by their priority in ascending\r\n\t * order.\r\n\t *\r\n\t * @ignore Exclude from docs (this feature is not yet implemented)\r\n\t */\r\n\tpriority?: number;\r\n\r\n\t/**\r\n\t * An array of [[IExportMenuItem]] items, to construct a sub-menu out of.\r\n\t *\r\n\t * An Export menu can have any number of nesting levels.\r\n\t */\r\n\tmenu?: Array<IExportMenuItem>;\r\n\r\n\t/**\r\n\t * If this is set to true, it means that this specific menu item is not\r\n\t * supported by the current client system.\r\n\t *\r\n\t * This is usually populated by [[Export]]'s `supported` Adapter.\r\n\t *\r\n\t * @see {@link IExportAdapters}\r\n\t */\r\n\tunsupported?: boolean\r\n\r\n\t/**\r\n\t * An [[InteractionObject]] representation of the menu item label.\r\n\t */\r\n\tinteractions?: InteractionObject;\r\n\r\n\t/**\r\n\t * Actual HTML element of the menu item.\r\n\t */\r\n\telement?: HTMLElement;\r\n\r\n\t/**\r\n\t * Holds list of parent menu items to this item.\r\n\t */\r\n\tascendants?: List<IExportMenuItem>;\r\n\r\n\t/**\r\n\t * Holds timeout reference.\r\n\t *\r\n\t * Used to delay auto-closing of the menu when it is no longer hovered.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tcloseTimeout?: IDisposer;\r\n\r\n\t/**\r\n\t * Should this item be hidden?\r\n\t */\r\n\thidden?: boolean;\r\n\r\n\t/**\r\n\t * A unique id to attach to the menu item.\r\n\t */\r\n\tid?: string;\r\n\r\n\t/**\r\n\t * Color to use as a background.\r\n\t */\r\n\tcolor?: Color;\r\n\r\n}\r\n\r\n/**\r\n * Defines [[ExportMenu]] events.\r\n */\r\nexport interface IExportMenuEvents {\r\n\r\n\t/**\r\n\t * Invoked when menu item is clicked/tapped.\r\n\t */\r\n\thit: {\r\n\t\tbranch: IExportMenuItem;\r\n\t\tevent: MouseEvent | TouchEvent;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when menu item is hovered.\r\n\t */\r\n\tover: {\r\n\t\tbranch: IExportMenuItem;\r\n\t\tevent: MouseEvent | TouchEvent;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when menu item is no longer hovered.\r\n\t */\r\n\tout: {\r\n\t\tbranch: IExportMenuItem;\r\n\t\tevent: MouseEvent | TouchEvent;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when ENTER key is pressed when certain menu item is in focus.\r\n\t */\r\n\tenter: {\r\n\t\tbranch: IExportMenuItem;\r\n\t\tevent: KeyboardEvent;\r\n\t}\r\n\r\n\t/**\r\n\t * Invoked when menu branch is selected. (either by hover or keyboard)\r\n\t */\r\n\tbranchselected: {\r\n\t\tbranch: IExportMenuItem;\r\n\t}\r\n\r\n\t/**\r\n\t * Invoked when menu branch is unselected.\r\n\t */\r\n\tbranchunselected: {\r\n\t\tbranch: IExportMenuItem;\r\n\t}\r\n\r\n\t/**\r\n\t * Invoked when menu is closed.\r\n\t */\r\n\tclosed: {};\r\n\r\n}\r\n\r\n/**\r\n * Represents a list of available adapters for Export\r\n */\r\nexport interface IExportMenuAdapters {\r\n\r\n\titems: {\r\n\t\titems: Array<IExportMenuItem>\r\n\t},\r\n\r\n\tmenuElement: {\r\n\t\tmenuElement: HTMLElement\r\n\t},\r\n\r\n\tbranch: {\r\n\t\tbranch: IExportMenuItem,\r\n\t\tlevel: number\r\n\t},\r\n\r\n\trederLabel: {\r\n\t\tlabel: string,\r\n\t\tbranch: IExportMenuItem\r\n\t},\r\n\r\n\tmenuClass: {\r\n\t\tclassName: string,\r\n\t\tlevel: number\r\n\t},\r\n\r\n\titemClass: {\r\n\t\tclassName: string,\r\n\t\tlevel: number,\r\n\t\ttype?: keyof IExportOptions\r\n\t},\r\n\r\n\tlabelClass: {\r\n\t\tclassName: string,\r\n\t\tlevel: number,\r\n\t\ttype?: keyof IExportOptions\r\n\t},\r\n\r\n\tmenuTag: {\r\n\t\ttag: string\r\n\t},\r\n\r\n\titemTag: {\r\n\t\ttag: string\r\n\t},\r\n\r\n\tlabelTag: {\r\n\t\ttag: string\r\n\t},\r\n\r\n\ticonTag: {\r\n\t\ttag: string\r\n\t},\r\n\r\n\talign: {\r\n\t\talign: Align\r\n\t},\r\n\r\n\tverticalAlign: {\r\n\t\tverticalAlign: VerticalAlign\r\n\t},\r\n\r\n\tclassPrefix: {\r\n\t\tclassPrefix: string\r\n\t},\r\n\r\n\tdefaultStyles: {\r\n\t\tdefaultStyles: boolean\r\n\t},\r\n\r\n\ttabindex: {\r\n\t\ttabindex: number\r\n\t},\r\n\r\n\tcloseOnClick: boolean\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates a menu for Export operations.\r\n *\r\n * To add an export menu to a chart, set this to a new instance of\r\n * [[ExportMenu]].\r\n *\r\n * ```TypeScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"exporting\": {\r\n * \"menu\": {}\r\n * }\r\n * }\r\n * ```\r\n * @important\r\n */\r\nexport class ExportMenu extends Validatable {\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IExportMenuEvents;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IExportMenuAdapters;\r\n\r\n\t/**\r\n\t * An [[Adapter]].\r\n\t */\r\n\tpublic adapter: Adapter<ExportMenu, IExportMenuAdapters> = new Adapter<ExportMenu, IExportMenuAdapters>(this);\r\n\r\n\t/**\r\n\t * How many milliseconds to hold menu/sub-menu open after it loses focus or\r\n\t * hover, before auto-closing it.\r\n\t *\r\n\t * @default 1000\r\n\t */\r\n\tpublic closeDelay: number = 1000;\r\n\r\n\t/**\r\n\t * Close the menu automatically when some export operation is triggered.\r\n\t *\r\n\t * @default true\r\n\t * @since 4.2.2\r\n\t */\r\n\tpublic closeOnClick: boolean = true;\r\n\r\n\t/**\r\n\t * An instance of [[Language]].\r\n\t */\r\n\tprotected _language = new MutableValueDisposer<Language>();\r\n\r\n\t/**\r\n\t * Reference to DOM element that holds Export menu.\r\n\t */\r\n\tprotected _container: $type.Optional<HTMLElement>;\r\n\r\n\t/**\r\n\t * Menu element.\r\n\t */\r\n\tprotected _element: $type.Optional<HTMLElement>;\r\n\r\n\t/**\r\n\t * Currently selected menu item.\r\n\t */\r\n\tprotected _currentSelection: $type.Optional<IExportMenuItem>;\r\n\r\n\t/**\r\n\t * What HTML tags to use to build menu.\r\n\t */\r\n\tprotected _menuTag: \"ul\" | \"div\" = \"ul\";\r\n\r\n\t/**\r\n\t * Which tag to use to enclose individual menu items.\r\n\t */\r\n\tprotected _itemTag: \"li\" | \"div\" = \"li\";\r\n\r\n\t/**\r\n\t * Tag to wrap menu item labels in.\r\n\t */\r\n\tprotected _labelTag: \"a\" = \"a\";\r\n\r\n\t/**\r\n\t * Tag to use for icons\r\n\t */\r\n\tprotected _iconTag: \"img\" = \"img\";\r\n\r\n\t/**\r\n\t * Prefix for class names applied to menu elements.\r\n\t */\r\n\tprotected _classPrefix: string = \"amexport\";\r\n\r\n\t/**\r\n\t * If set to `true` [[ExportMenu]] will load it's own external CSS when\r\n\t * instantiated.\r\n\t */\r\n\tprotected _defaultStyles: boolean = true;\r\n\r\n\t/**\r\n\t * Horizontal positioning.\r\n\t */\r\n\tprotected _align: Align = \"right\";\r\n\r\n\t/**\r\n\t * Vertical positioning.\r\n\t */\r\n\tprotected _verticalAlign: VerticalAlign = \"top\";\r\n\r\n\t/**\r\n\t * A tabindex to apply to Export Menu.\r\n\t */\r\n\tprotected _tabindex: number = 0;\r\n\r\n\t/**\r\n\t * Whether next menu close event should be ignored.\r\n\t */\r\n\tprotected _ignoreNextClose: boolean = false;\r\n\r\n\t/**\r\n\t * Default menu items.\r\n\t */\r\n\tprotected _items: Array<IExportMenuItem> = [\r\n\t\t{\r\n\t\t\t\"label\": \"...\",\r\n\t\t\t\"menu\": [\r\n\t\t\t\t{\r\n\t\t\t\t\t\"label\": \"Image\",\r\n\t\t\t\t\t\"menu\": [\r\n\t\t\t\t\t\t{ \"type\": \"png\", \"label\": \"PNG\" },\r\n\t\t\t\t\t\t{ \"type\": \"jpg\", \"label\": \"JPG\" },\r\n\t\t\t\t\t\t{ \"type\": \"svg\", \"label\": \"SVG\" },\r\n\t\t\t\t\t\t{ \"type\": \"pdf\", \"label\": \"PDF\" }\r\n\t\t\t\t\t]\r\n\t\t\t\t}, {\r\n\t\t\t\t\t\"label\": \"Data\",\r\n\t\t\t\t\t\"menu\": [\r\n\t\t\t\t\t\t{ \"type\": \"json\", \"label\": \"JSON\" },\r\n\t\t\t\t\t\t{ \"type\": \"csv\", \"label\": \"CSV\" },\r\n\t\t\t\t\t\t{ \"type\": \"xlsx\", \"label\": \"XLSX\" },\r\n\t\t\t\t\t\t{ \"type\": \"html\", \"label\": \"HTML\" },\r\n\t\t\t\t\t\t{ \"type\": \"pdfdata\", \"label\": \"PDF\" }\r\n\t\t\t\t\t]\r\n\t\t\t\t}, {\r\n\t\t\t\t\t\"label\": \"Print\", \"type\": \"print\"\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t}\r\n\t];\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"ExportMenu\";\r\n\t\tthis._disposers.push(this._language);\r\n\t\tthis.invalidate();\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)draws the Export menu.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate(): void {\r\n\t\tthis.draw();\r\n\t\tsuper.validate();\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the menu based on current items.\r\n\t *\r\n\t * Normally, there's no need to call this explicitly. The chart, if it has\r\n\t * export menu enabled, will automatically draw the menu.\r\n\t */\r\n\tpublic draw(): void {\r\n\r\n\t\t// Create top-level menu item, or clear it\r\n\t\tif (!this._element) {\r\n\t\t\tthis._element = this.createMenuElement(0);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._element.innerHTML = \"\";\r\n\t\t\tthis._element.className = this.getMenuItemClass(0);\r\n\t\t}\r\n\r\n\t\t// See if we're loading external CSS\r\n\t\t// Hide it until CSS is loaded\r\n\t\tif (this.defaultStyles) {\r\n\t\t\tthis._element.style.display = \"none\";\r\n\t\t}\r\n\r\n\t\t// Append to container\r\n\t\t$type.getValue(this._container).appendChild(this._element);\r\n\r\n\t\t// Apply adapter to menu items before processing\r\n\t\tlet items = this.adapter.apply(\"items\", {\r\n\t\t\titems: this._items\r\n\t\t}).items;\r\n\r\n\t\tfor (let len = items.length, i = 0; i < len; i++) {\r\n\t\t\tthis.drawBranch(this._element, items[i], 0);\r\n\t\t}\r\n\r\n\t\t// Apply adapter to finalized menu element\r\n\t\tthis._element = this.adapter.apply(\"menuElement\", {\r\n\t\t\tmenuElement: this._element\r\n\t\t}).menuElement;\r\n\r\n\t\t// Set up global \"down\" event\r\n\t\tthis._disposers.push(getInteraction().body.events.on(\"down\", (ev) => {\r\n\t\t\tif (!ev.pointer.touch) {\r\n\t\t\t\tthis._ignoreNextClose = false;\r\n\t\t\t}\r\n\t\t\tthis.close();\r\n\t\t}));\r\n\r\n\t\t// Set up global event on ESC press to close the menu\r\n\t\tthis._disposers.push(getInteraction().body.events.on(\"keyup\", (ev) => {\r\n\t\t\tlet key = keyboard.getEventKey(ev.event);\r\n\t\t\tswitch (key) {\r\n\t\t\t\tcase \"esc\":\r\n\t\t\t\t\tthis.close();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tthis.moveSelection(key);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}));\r\n\r\n\t\tif (this.defaultStyles) {\r\n\t\t\tthis.loadDefaultCSS();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new branch in export menu. This function is recursive for\r\n\t * building multi-level menus.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param container Container to put branch elements in\r\n\t * @param branch Menu item\r\n\t * @param level Current nesting level\r\n\t */\r\n\tprotected drawBranch(container: HTMLElement, branch: IExportMenuItem, level: number): void {\r\n\r\n\t\t// Apply adapter\r\n\t\tbranch = this.adapter.apply(\"branch\", {\r\n\t\t\tbranch: branch,\r\n\t\t\tlevel: level\r\n\t\t}).branch;\r\n\r\n\t\t// Unsupported?\r\n\t\t// ExportMenu does not check or know for specific browser/system\r\n\t\t// capabilities. It must happen in some other code and applied via Adapter.\r\n\t\t// Export itself will check compatibility, but there might be other plugins\r\n\t\t// that influence it or even add any specific export functionality.\r\n\t\tif (branch.unsupported === true) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Init ascendants\r\n\t\tif (!branch.ascendants) {\r\n\t\t\tbranch.ascendants = new List<IExportMenuItem>();\r\n\t\t}\r\n\r\n\t\t// Get type\r\n\t\tlet type: keyof IExportOptions | undefined | null = branch.type;\r\n\r\n\t\t// Create an item\r\n\t\tlet element = this.createItemElement(level, type);\r\n\r\n\t\t// Create label\r\n\t\tlet label;\r\n\r\n\t\t// Create icon\r\n\t\tif (branch.icon) {\r\n\t\t\tlabel = this.createIconElement(level, type);\r\n\t\t\t(<HTMLImageElement>label).src = branch.icon;\r\n\t\t\tif (branch.label) {\r\n\t\t\t\t(<HTMLImageElement>label).title = branch.label;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (branch.svg) {\r\n\t\t\tlabel = this.createSvgElement(level, type, branch.svg);\r\n\t\t\tif (branch.label) {\r\n\t\t\t\t(<HTMLElement>label).title = branch.label;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlabel = this.createLabelElement(level, type);\r\n\t\t\tlabel.innerHTML = (branch.label ? this.language.translate(<keyof ILocaleProperties>branch.label) : \"\");\r\n\t\t}\r\n\r\n\t\t// Apply reader text to label\r\n\t\tlet readerLabel = this.getReaderLabel(branch, label.innerHTML);\r\n\t\tlabel.setAttribute(\"aria-label\", readerLabel);\r\n\r\n\t\t// Add Label\r\n\t\telement.appendChild(label);\r\n\r\n\t\t// Create interaction object\r\n\t\t// TODO clean this up when it's disposed\r\n\t\tbranch.interactions = getInteraction().getInteraction(label);\r\n\t\tbranch.element = element;\r\n\r\n\t\t// Create interaction manager we can set event listeners to\r\n\t\tif (this.typeClickable(type)) {\r\n\t\t\t//branch.interactions.clickable = true;\r\n\t\t\t// TODO clean this up when it's disposed\r\n\t\t\tbranch.interactions.events.on(\"hit\", (ev) => {\r\n\t\t\t\tif (this.events.isEnabled(\"hit\")) {\r\n\t\t\t\t\tconst event: AMEvent<this, IExportMenuEvents>[\"hit\"] = {\r\n\t\t\t\t\t\t\"type\": \"hit\",\r\n\t\t\t\t\t\t\"event\": ev.event,\r\n\t\t\t\t\t\t\"target\": this,\r\n\t\t\t\t\t\t\"branch\": branch\r\n\t\t\t\t\t};\r\n\t\t\t\t\tthis.events.dispatchImmediately(\"hit\", event);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// TODO clean this up when it's disposed\r\n\t\t\tbranch.interactions.events.on(\"keyup\", (ev) => {\r\n\t\t\t\tif (keyboard.isKey(ev.event, \"enter\")) {\r\n\t\t\t\t\tif (this.events.isEnabled(\"enter\")) {\r\n\t\t\t\t\t\tconst event: AMEvent<this, IExportMenuEvents>[\"enter\"] = {\r\n\t\t\t\t\t\t\t\"type\": \"enter\",\r\n\t\t\t\t\t\t\t\"event\": ev.event,\r\n\t\t\t\t\t\t\t\"target\": this,\r\n\t\t\t\t\t\t\t\"branch\": branch\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tthis.events.dispatchImmediately(\"enter\", event);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t{\r\n\t\t\tconst submenu = this.getSubMenu(branch);\r\n\r\n\t\t\t// Add ENTER event to open sub-menus\r\n\t\t\tif (submenu != null) {\r\n\t\t\t\t// TODO clean this up when it's disposed\r\n\t\t\t\tbranch.interactions.events.on(\"keyup\", (ev) => {\r\n\t\t\t\t\tif (keyboard.isKey(ev.event, \"enter\")) {\r\n\t\t\t\t\t\t// This is item has sub-menu, activate the first child on ENTER\r\n\t\t\t\t\t\tthis.selectBranch(submenu[0]);\r\n\r\n\t\t\t\t\t\t// Attempt to set focus\r\n\t\t\t\t\t\tthis.setFocus(submenu[0]);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tbranch.interactions.events.on(\"hit\", (ev) => {\r\n\t\t\t\t\tthis.selectBranch(branch);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Add events\r\n\t\t// TODO clean this up when it's disposed\r\n\t\tbranch.interactions.events.on(\"over\", (ev) => {\r\n\r\n\t\t\tif (ev.pointer.touch) {\r\n\t\t\t\t// Cancel pending menu closure\r\n\t\t\t\tthis._ignoreNextClose = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis.selectBranch(branch);\r\n\r\n\t\t\tif (this.events.isEnabled(\"over\")) {\r\n\t\t\t\tconst event: AMEvent<this, IExportMenuEvents>[\"over\"] = {\r\n\t\t\t\t\t\"type\": \"over\",\r\n\t\t\t\t\t\"event\": ev.event,\r\n\t\t\t\t\t\"target\": this,\r\n\t\t\t\t\t\"branch\": branch\r\n\t\t\t\t};\r\n\t\t\t\tthis.events.dispatchImmediately(\"over\", event);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// TODO clean this up when it's disposed\r\n\t\tbranch.interactions.events.on(\"out\", (ev) => {\r\n\t\t\tif (!ev.pointer.touch) {\r\n\t\t\t\tthis.delayUnselectBranch(branch);\r\n\t\t\t}\r\n\t\t\tif (this.events.isEnabled(\"out\")) {\r\n\t\t\t\tconst event: AMEvent<this, IExportMenuEvents>[\"out\"] = {\r\n\t\t\t\t\t\"type\": \"out\",\r\n\t\t\t\t\t\"event\": ev.event,\r\n\t\t\t\t\t\"target\": this,\r\n\t\t\t\t\t\"branch\": branch\r\n\t\t\t\t};\r\n\t\t\t\tthis.events.dispatchImmediately(\"out\", event);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// TODO clean this up when it's disposed\r\n\t\tbranch.interactions.events.on(\"focus\", (ev) => {\r\n\t\t\tthis.selectBranch(branch);\r\n\t\t});\r\n\r\n\t\t// TODO clean this up when it's disposed\r\n\t\tbranch.interactions.events.on(\"blur\", (ev) => {\r\n\t\t\tthis.delayUnselectBranch(branch);\r\n\t\t});\r\n\r\n\t\t// Increment level\r\n\t\tlet local_level = level + 1;\r\n\r\n\t\t// Has sub-menu?\r\n\t\tif (branch.menu) {\r\n\t\t\tlet submenu = this.createMenuElement(local_level);\r\n\t\t\tfor (let len = branch.menu.length, i = 0; i < len; i++) {\r\n\t\t\t\tlet ascendants = new List<IExportMenuItem>();\r\n\t\t\t\tbranch.menu[i].ascendants = ascendants;\r\n\t\t\t\tif (branch.ascendants.length) {\r\n\t\t\t\t\tascendants.copyFrom(branch.ascendants);\r\n\t\t\t\t}\r\n\t\t\t\tascendants.push(branch);\r\n\t\t\t\tthis.drawBranch(submenu, branch.menu[i], local_level);\r\n\t\t\t}\r\n\r\n\t\t\t// Sub-menu is empty (all items are not supported)\r\n\t\t\t// Do not draw this menu item at all\r\n\t\t\tif (submenu.innerHTML == \"\") {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\telement.appendChild(submenu);\r\n\t\t}\r\n\r\n\t\t// Should this item be hidden?\r\n\t\tif (branch.hidden) {\r\n\t\t\tthis.hideBranch(branch);\r\n\t\t}\r\n\r\n\t\t// Add id?\r\n\t\tif (branch.id) {\r\n\t\t\telement.setAttribute(\"id\", branch.id);\r\n\t\t}\r\n\r\n\t\t// Background color?\r\n\t\tif (branch.color) {\r\n\t\t\telement.style.backgroundColor = branch.color.hex;\r\n\t\t}\r\n\r\n\t\t// Append to container\r\n\t\tcontainer.appendChild(element);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a menu element to hold its elements in. Usually it's an `<ul>`\r\n\t * tag.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param level Current nesting level\r\n\t * @return HTML element reference\r\n\t */\r\n\tpublic createMenuElement(level: number): HTMLElement {\r\n\t\tlet element: HTMLElement = document.createElement(this.menuTag);\r\n\t\telement.className = this.getMenuItemClass(level);\r\n\r\n\t\t// Accessibility\r\n\t\tif (level === 0) {\r\n\t\t\telement.setAttribute(\"role\", \"menu\");\r\n\t\t}\r\n\t\treturn element;\r\n\t}\r\n\r\n\t/**\r\n\t * Generates a class name for the menu element based on its nesting level.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param level Current nesting level\r\n\t * @return Class name(s)\r\n\t */\r\n\tpublic getMenuItemClass(level: number): string {\r\n\t\tlet className = this.classPrefix + \"-menu \" + this.classPrefix + \"-menu-level-\" + level;\r\n\t\tif (level === 0) {\r\n\t\t\tclassName += \" \" + this.classPrefix + \"-menu-root \" +\r\n\t\t\t\tthis.classPrefix + \"-\" + this.align + \" \" +\r\n\t\t\t\tthis.classPrefix + \"-\" + this.verticalAlign;\r\n\t\t}\r\n\t\treturn this.adapter.apply(\"menuClass\", {\r\n\t\t\tclassName: className,\r\n\t\t\tlevel: level\r\n\t\t}).className;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates menu item. Usually `<li>` tag. Its label and sub-elements will go\r\n\t * into this element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param level Current nesting level\r\n\t * @param type Type of the menu item\r\n\t * @return HTML element reference\r\n\t */\r\n\tpublic createItemElement(level: number, type?: keyof IExportOptions): HTMLElement {\r\n\t\tlet element: HTMLElement = document.createElement(this.itemTag);\r\n\t\tlet className = this.classPrefix + \"-item \" + this.classPrefix\r\n\t\t\t+ \"-item-level-\" + level\r\n\t\t\t+ \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\r\n\t\telement.className = this.adapter.apply(\"itemClass\", {\r\n\t\t\tclassName: className,\r\n\t\t\tlevel: level,\r\n\t\t\ttype: type\r\n\t\t}).className;\r\n\t\treturn element;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a \"label\" part of the menu item. It could be text or any HTML\r\n\t * content.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param level Current nesting level\r\n\t * @param type Type of the menu item\r\n\t * @return An HTML Element\r\n\t */\r\n\tpublic createLabelElement(level: number, type?: keyof IExportOptions): HTMLElement {\r\n\t\tlet element: HTMLElement = document.createElement(this.labelTag);\r\n\t\tlet className = this.classPrefix + \"-label \" + this.classPrefix\r\n\t\t\t+ \"-label-level-\" + level\r\n\t\t\t+ \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\r\n\t\tif (this.typeClickable(type)) {\r\n\t\t\tclassName += \" \" + this.classPrefix + \"-clickable\";\r\n\t\t}\r\n\t\telement.className = this.adapter.apply(\"labelClass\", {\r\n\t\t\tclassName: className,\r\n\t\t\tlevel: level,\r\n\t\t\ttype: type\r\n\t\t}).className;\r\n\r\n\t\t// Accessible navigation\r\n\t\telement.setAttribute(\"tabindex\", this.tabindex.toString());\r\n\t\telement.setAttribute(\"role\", \"menuitem\");\r\n\t\treturn element;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a \"icon\" part of the menu item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param level Current nesting level\r\n\t * @param type Type of the menu item\r\n\t * @return An HTML Element\r\n\t */\r\n\tpublic createIconElement(level: number, type?: keyof IExportOptions): HTMLElement {\r\n\t\tlet element: HTMLElement = document.createElement(this.iconTag);\r\n\t\tlet className = this.classPrefix + \"-icon \" + this.classPrefix\r\n\t\t\t+ \"-icon-level-\" + level\r\n\t\t\t+ \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\r\n\t\tif (this.typeClickable(type)) {\r\n\t\t\tclassName += \" \" + this.classPrefix + \"-clickable\";\r\n\t\t}\r\n\t\telement.className = this.adapter.apply(\"labelClass\", {\r\n\t\t\tclassName: className,\r\n\t\t\tlevel: level,\r\n\t\t\ttype: type\r\n\t\t}).className;\r\n\r\n\t\t// Accessible navigation\r\n\t\telement.setAttribute(\"tabindex\", this.tabindex.toString());\r\n\t\telement.setAttribute(\"role\", \"menuitem\");\r\n\t\treturn element;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a a custom element out of raw HTML.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param level Current nesting level\r\n\t * @param type Type of the menu item\r\n\t * @return An HTML Element\r\n\t */\r\n\tpublic createSvgElement(level: number, type?: keyof IExportOptions, svg?: string): HTMLElement {\r\n\t\tlet parser = new DOMParser();\r\n\t\tlet element = parser.parseFromString(svg, \"image/svg+xml\").documentElement;\r\n\t\tlet className = this.classPrefix + \"-icon \" + this.classPrefix\r\n\t\t\t+ \"-icon-level-\" + level\r\n\t\t\t+ \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\r\n\t\tif (this.typeClickable(type)) {\r\n\t\t\tclassName += \" \" + this.classPrefix + \"-clickable\";\r\n\t\t}\r\n\t\telement.setAttribute(\"class\", this.adapter.apply(\"labelClass\", {\r\n\t\t\tclassName: className,\r\n\t\t\tlevel: level,\r\n\t\t\ttype: type\r\n\t\t}).className);\r\n\r\n\t\t// Accessible navigation\r\n\t\telement.setAttribute(\"tabindex\", this.tabindex.toString());\r\n\t\telement.setAttribute(\"role\", \"menuitem\");\r\n\t\treturn element;\r\n\t}\r\n\r\n\t/**\r\n\t * Destroys the menu and all its elements.\r\n\t */\r\n\tpublic dispose(): void {\r\n\t\tif (!this._disposed) {\r\n\t\t\tsuper.dispose();\r\n\r\n\t\t\tif (this._element && this._element.parentNode) {\r\n\t\t\t\tthis._element.parentNode.removeChild(this._element);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks whether menu item type is supposed to be clickable.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param type Menu item type\r\n\t * @return Is clickable?\r\n\t */\r\n\tpublic typeClickable(type: keyof IExportOptions | undefined | null): type is keyof IExportOptions {\r\n\t\treturn $type.hasValue(type);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks whether menu item has any sub-items.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param branch A menu item\r\n\t * @return Has sub-items?\r\n\t */\r\n\tpublic hasSubMenu(branch: IExportMenuItem): boolean {\r\n\t\treturn (branch.menu && branch.menu.length) ? true : false;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns sub-items (if they exist).\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param branch A menu item\r\n\t * @return Submenus\r\n\t */\r\n\tpublic getSubMenu(branch: IExportMenuItem): $type.Optional<Array<IExportMenuItem>> {\r\n\t\tif (branch.menu && branch.menu.length) {\r\n\t\t\treturn branch.menu;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Generates and returns an applicable label to be used for screen readers.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param item A menu item instance\r\n\t * @param label Current label\r\n\t * @return Reader text\r\n\t */\r\n\tpublic getReaderLabel(branch: IExportMenuItem, label: string): string {\r\n\r\n\t\t// Strip any HTML from the label\r\n\t\tlabel = $utils.stripTags(label);\r\n\r\n\t\t// Add textual note if the branch is clickable\r\n\t\tif (this.hasSubMenu(branch)) {\r\n\t\t\tlabel += \" [\" + this.language.translate(\"Click, tap or press ENTER to open\") + \"]\";\r\n\t\t}\r\n\t\telse if (branch.type == \"print\") {\r\n\t\t\tlabel = this.language.translate(\"Click, tap or press ENTER to print.\");\r\n\t\t}\r\n\t\telse if (this.typeClickable(branch.type)) {\r\n\t\t\tlabel = this.language.translate(\"Click, tap or press ENTER to export as %1.\", undefined, label);\r\n\t\t}\r\n\r\n\t\treturn this.adapter.apply(\"rederLabel\", {\r\n\t\t\tlabel: label,\r\n\t\t\tbranch: branch\r\n\t\t}).label;\r\n\t}\r\n\r\n\t/**\r\n\t * Getters and setters\r\n\t */\r\n\r\n\t/**\r\n\t * An HTML container to place the Menu in.\r\n\t *\r\n\t * A container must be an HTML element, because menu itself is HTML, and\r\n\t * cannot be placed into SVG.\r\n\t *\r\n\t * @param container Reference to container element\r\n\t * @todo Check if menu is already build. If it is, just move it to a new container\r\n\t */\r\n\tpublic set container(container: $type.Optional<HTMLElement>) {\r\n\t\tthis._container = container;\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Container\r\n\t */\r\n\tpublic get container(): $type.Optional<HTMLElement> {\r\n\t\treturn this._container;\r\n\t}\r\n\r\n\t/**\r\n\t * A list of menu items. Can be nested.\r\n\t *\r\n\t * @param items Menu items\r\n\t */\r\n\tpublic set items(items: Array<IExportMenuItem>) {\r\n\t\tthis._items = items;\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Menu items\r\n\t */\r\n\tpublic get items(): Array<IExportMenuItem> {\r\n\t\treturn this._items;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets main menu tag to place menu in.\r\n\t *\r\n\t * This also sets up how menu items are built.\r\n\t *\r\n\t * If you set this to \"ul\", menu items will be wrapped into `<li>` tags.\r\n\t *\r\n\t * If set to \"div\", menu items will be wrapped in `<div>` tags.\r\n\t *\r\n\t * @default \"ul\"\r\n\t * @param tag Tag to use for menu\r\n\t */\r\n\tpublic set tag(tag: \"ul\" | \"div\") {\r\n\t\tthis._menuTag = tag;\r\n\t\tthis._itemTag = tag == \"ul\" ? \"li\" : \"div\";\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current menu tag.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Menu tag (item that contains sub-items)\r\n\t */\r\n\tpublic get menuTag(): string {\r\n\t\treturn this.adapter.apply(\"menuTag\", {\r\n\t\t\ttag: this._menuTag\r\n\t\t}).tag;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns tag to wrap items into.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Item tag\r\n\t */\r\n\tpublic get itemTag(): string {\r\n\t\treturn this.adapter.apply(\"itemTag\", {\r\n\t\t\ttag: this._itemTag\r\n\t\t}).tag;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns menu label tag.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Label tag\r\n\t */\r\n\tpublic get labelTag(): string {\r\n\t\treturn this.adapter.apply(\"labelTag\", {\r\n\t\t\ttag: this._labelTag\r\n\t\t}).tag;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns icon tag.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Icon tag\r\n\t */\r\n\tpublic get iconTag(): string {\r\n\t\treturn this.adapter.apply(\"iconTag\", {\r\n\t\t\ttag: this._iconTag\r\n\t\t}).tag;\r\n\t}\r\n\r\n\t/**\r\n\t * A horizontal alignment for the menu placement.\r\n\t *\r\n\t * @param value Horizontal alignment\r\n\t */\r\n\tpublic set align(value: Align) {\r\n\t\tthis._align = value;\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Horizontal alignment\r\n\t */\r\n\tpublic get align(): Align {\r\n\t\treturn this.adapter.apply(\"align\", {\r\n\t\t\talign: this._align\r\n\t\t}).align;\r\n\t}\r\n\r\n\t/**\r\n\t * A vertical alignment for the menu placement.\r\n\t *\r\n\t * @param value Vertical alignment\r\n\t */\r\n\tpublic set verticalAlign(value: VerticalAlign) {\r\n\t\tthis._verticalAlign = value;\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Vertical alignment\r\n\t */\r\n\tpublic get verticalAlign(): VerticalAlign {\r\n\t\treturn this.adapter.apply(\"verticalAlign\", {\r\n\t\t\tverticalAlign: this._verticalAlign\r\n\t\t}).verticalAlign;\r\n\t}\r\n\r\n\t/**\r\n\t * Class name prefix.\r\n\t *\r\n\t * @default \"amexport\"\r\n\t * @param value Class name prefix\r\n\t */\r\n\tpublic set classPrefix(value: string) {\r\n\t\tthis._classPrefix = value;\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Class name prefix\r\n\t */\r\n\tpublic get classPrefix(): string {\r\n\t\treturn this.adapter.apply(\"classPrefix\", {\r\n\t\t\tclassPrefix: this._classPrefix\r\n\t\t}).classPrefix;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether [[ExportMenu]] should load external CSS to style itself.\r\n\t *\r\n\t * If set to `false`, the menu will not be styled, and will rely on some\r\n\t * external CSS.\r\n\t *\r\n\t * @default true\r\n\t * @param Should ExportMenu load its own CSS?\r\n\t */\r\n\tpublic set defaultStyles(value: boolean) {\r\n\t\tif (this._defaultStyles != value) {\r\n\t\t\tthis._defaultStyles = value;\r\n\t\t\tif (value) {\r\n\t\t\t\tthis.loadDefaultCSS();\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Should ExportMenu load its own CSS?\r\n\t */\r\n\tpublic get defaultStyles(): boolean {\r\n\t\treturn this.adapter.apply(\"defaultStyles\", {\r\n\t\t\tdefaultStyles: this._defaultStyles\r\n\t\t}).defaultStyles;\r\n\t}\r\n\r\n\t/**\r\n\t * Loads the default CSS.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic loadDefaultCSS(): void {\r\n\t\tthis._disposers.push(exportCSS(this.classPrefix));\r\n\r\n\t\tif (this._element) {\r\n\t\t\tthis._element.style.display = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A tab index for the menu.\r\n\t *\r\n\t * Tab index will influence the order in which elements on the chart and\r\n\t * the whole page are selected when pressing TAB key.\r\n\t *\r\n\t * @param value Tab index\r\n\t */\r\n\tpublic set tabindex(value: number) {\r\n\t\tthis._tabindex = value;\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Tab index\r\n\t */\r\n\tpublic get tabindex(): number {\r\n\t\treturn this.adapter.apply(\"tabindex\", {\r\n\t\t\ttabindex: this._tabindex\r\n\t\t}).tabindex;\r\n\t}\r\n\r\n\t/**\r\n\t * A [[Language]] instance.\r\n\t *\r\n\t * @param value An instance of [[Language]]\r\n\t */\r\n\tpublic set language(value: Language) {\r\n\t\tthis._language.set(value, value.events.on(\"localechanged\", (ev) => {\r\n\t\t\tthis.invalidate();\r\n\t\t}));\r\n\t\tthis.invalidate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return A [[Language]] instance to be used\r\n\t */\r\n\tpublic get language(): Language {\r\n\t\tlet language = this._language.get();\r\n\r\n\t\tif (language == null) {\r\n\t\t\tlanguage = new Language();\r\n\r\n\t\t\t// TODO code duplication with `set language()`\r\n\t\t\tthis._language.set(language, language.events.on(\"localechanged\", (ev) => {\r\n\t\t\t\tthis.invalidate();\r\n\t\t\t}));\r\n\t\t}\r\n\r\n\t\treturn language;\r\n\t}\r\n\r\n\t/**\r\n\t * Controlling the menu\r\n\t */\r\n\r\n\t/**\r\n\t * Removes all active classes from menu items. Useful on touch devices and\r\n\t * keyboard navigation where open menu can be closed instantly by clicking or\r\n\t * tapping outside it.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic close(): void {\r\n\t\tif (this._ignoreNextClose) {\r\n\t\t\tthis._ignoreNextClose = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.closeOnClick) {\r\n\t\t\tthis._element.style.pointerEvents = \"none\";\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis._element.style.pointerEvents = \"auto\";\r\n\t\t\t}, 100);\r\n\t\t}\r\n\r\n\t\tif (this._currentSelection) {\r\n\t\t\tthis.setBlur(this._currentSelection);\r\n\t\t\tthis._currentSelection = undefined;\r\n\t\t}\r\n\r\n\t\tif (this._element) {\r\n\t\t\tlet items = this._element.getElementsByClassName(\"active\");\r\n\t\t\tfor (let len = items.length, i = len - 1; i >= 0; i--) {\r\n\t\t\t\tif (items[i]) {\r\n\t\t\t\t\t$dom.removeClass(<HTMLElement>items[i], \"active\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.events.dispatchImmediately(\"closed\", {\r\n\t\t\ttype: \"closed\",\r\n\t\t\ttarget: this\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Selects a branch in the menu.\r\n\t *\r\n\t * Handles closing of currently open branch.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param branch Branch to select\r\n\t */\r\n\tpublic selectBranch(branch: IExportMenuItem): void {\r\n\r\n\t\t// Cancel previous closure\r\n\t\tif (branch.closeTimeout) {\r\n\t\t\tthis.removeDispose(branch.closeTimeout);\r\n\t\t\tbranch.closeTimeout = undefined;\r\n\t\t}\r\n\r\n\t\t// Add active class\r\n\t\t$dom.addClass(branch.interactions.element.parentElement, \"active\");\r\n\r\n\t\t// Remove current selection\r\n\t\tif (this._currentSelection && this._currentSelection !== branch && this._currentSelection.ascendants) {\r\n\t\t\t$iter.each($iter.concat($iter.fromArray([this._currentSelection]), this._currentSelection.ascendants.iterator()), (ascendant) => {\r\n\t\t\t\tif (!branch.ascendants.contains(ascendant) && branch !== ascendant) {\r\n\t\t\t\t\tthis.unselectBranch(ascendant, true);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Select and/or cancel timeout for current ascendants\r\n\t\t$iter.each(branch.ascendants.iterator(), (ascendant) => {\r\n\t\t\tif (ascendant.closeTimeout) {\r\n\t\t\t\tthis.removeDispose(ascendant.closeTimeout);\r\n\t\t\t\tascendant.closeTimeout = undefined;\r\n\t\t\t}\r\n\t\t\t$dom.addClass(ascendant.interactions.element.parentElement, \"active\");\r\n\t\t});\r\n\r\n\t\t// Log current selection\r\n\t\tthis._currentSelection = branch;\r\n\r\n\t\t// Invoke event\r\n\t\tif (this.events.isEnabled(\"branchselected\")) {\r\n\t\t\tconst event: AMEvent<this, IExportMenuEvents>[\"branchselected\"] = {\r\n\t\t\t\ttype: \"branchselected\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\tbranch: branch\r\n\t\t\t};\r\n\t\t\tthis.events.dispatchImmediately(\"branchselected\", event);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Unselects a branch. Also selects a branch one level up if necessary.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param branch Branch to unselect\r\n\t * @param simple If `true`, only the branch will be unselected without selecting parent branch\r\n\t */\r\n\tpublic unselectBranch(branch: IExportMenuItem, simple?: boolean): void {\r\n\r\n\t\t// Remove active class\r\n\t\t$dom.removeClass(branch.interactions.element.parentElement, \"active\");\r\n\r\n\t\t// Remove current selection\r\n\t\tif (this._currentSelection == branch) {\r\n\t\t\tthis._currentSelection = undefined;\r\n\t\t}\r\n\r\n\t\t// Invoke event\r\n\t\tif (this.events.isEnabled(\"branchunselected\")) {\r\n\t\t\tconst event: AMEvent<this, IExportMenuEvents>[\"branchunselected\"] = {\r\n\t\t\t\ttype: \"branchunselected\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\tbranch: branch\r\n\t\t\t};\r\n\t\t\tthis.events.dispatchImmediately(\"branchunselected\", event);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Delay unselection of a branch. This can still be cancelled in some other\r\n\t * place if the branch or its children regain focus.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param branch Branch to unselect\r\n\t * @param simple If `true`, only the branch will be unselected without selecting parent branch\r\n\t */\r\n\tpublic delayUnselectBranch(branch: IExportMenuItem, simple?: boolean): void {\r\n\r\n\t\t// Schedule branch unselection\r\n\t\tif (branch.closeTimeout) {\r\n\t\t\tthis.removeDispose(branch.closeTimeout);\r\n\t\t\tbranch.closeTimeout = undefined;\r\n\t\t}\r\n\t\tbranch.closeTimeout = this.setTimeout(() => {\r\n\t\t\tthis.unselectBranch(branch, simple);\r\n\t\t}, this.closeDelay);\r\n\r\n\t\t// Schedule unselection of all ascendants\r\n\t\t// In case focus went away from the export menu altogether, this will ensure\r\n\t\t// that all items will be closed.\r\n\t\t// In case we're jumping to other menu item, those delayed unselections will\r\n\t\t// be cancelled by `selectBranch`\r\n\t\tif (simple !== true && branch.ascendants) {\r\n\t\t\t$iter.each(branch.ascendants.iterator(), (ascendant) => {\r\n\t\t\t\tthis.delayUnselectBranch(ascendant, true);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Navigates the menu based on which direction kayboard key was pressed.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param key A key that was pressed\r\n\t */\r\n\tpublic moveSelection(key: KeyboardKeys): void {\r\n\r\n\t\t// Check if there's a current selection\r\n\t\tif (!this._currentSelection) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet newSelection: $type.Optional<IExportMenuItem>;\r\n\r\n\t\tif (key == \"up\") {\r\n\t\t\t// Try moving up in current menu list, or to the last item if already\r\n\t\t\t// at the top\r\n\t\t\tnewSelection = this.getPrevSibling(this._currentSelection);\r\n\t\t}\r\n\t\telse if (key == \"down\") {\r\n\t\t\t// Try moving down in current menu list, or to the top item if already\r\n\t\t\t// at the bottom\r\n\t\t\tnewSelection = this.getNextSibling(this._currentSelection);\r\n\t\t}\r\n\t\telse if ((key == \"left\" && this.align == \"right\") || (key == \"right\" && this.align == \"left\")) {\r\n\t\t\tlet menu = this.getSubMenu(this._currentSelection);\r\n\r\n\t\t\t// Go one level-deeper\r\n\t\t\tif (menu != null) {\r\n\t\t\t\tnewSelection = menu[0];\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if ((key == \"right\" && this.align == \"right\") || (key == \"left\" && this.align == \"left\")) {\r\n\t\t\t// Go one level-deeper\r\n\t\t\tnewSelection = this.getParentItem(this._currentSelection);\r\n\t\t}\r\n\r\n\t\tif (newSelection && newSelection !== this._currentSelection) {\r\n\t\t\tthis.selectBranch(newSelection);\r\n\t\t\tthis.setFocus(newSelection);\r\n\t\t\tthis._currentSelection = newSelection;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns all siblings of a menu item, including this same menu item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param branch Menu item\r\n\t * @return List of sibling menu items\r\n\t */\r\n\tpublic getSiblings(branch: IExportMenuItem): Array<IExportMenuItem> {\r\n\t\tlet parent = this.getParentItem(branch);\r\n\r\n\t\tif (parent && parent.menu) {\r\n\t\t\treturn parent.menu;\r\n\r\n\t\t} else {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns menu items parent item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param branch Menu item\r\n\t * @return Parent menu item\r\n\t */\r\n\tpublic getParentItem(branch: IExportMenuItem): $type.Optional<IExportMenuItem> {\r\n\t\tif (branch.ascendants && branch.ascendants.length) {\r\n\t\t\treturn branch.ascendants.getIndex(branch.ascendants.length - 1);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns next sibling in the same menu branch. If there is no next sibling,\r\n\t * the first one is returned. If there is just one item, that item is\r\n\t * returned. Unsupported menu items are skipped.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param branch Menu item to search siblings for\r\n\t * @return Menu item\r\n\t */\r\n\tpublic getNextSibling(branch: IExportMenuItem): IExportMenuItem {\r\n\t\tlet siblings = this.getSiblings(branch);\r\n\t\tif (siblings.length > 1) {\r\n\t\t\tlet next = siblings.indexOf(branch) + 1;\r\n\t\t\tnext = siblings.length == next ? 0 : next;\r\n\t\t\treturn siblings[next].unsupported ? this.getNextSibling(siblings[next]) : siblings[next];\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn branch;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns previous sibling in the same menu branch. If there is no next\r\n\t * sibling, the first one is returned. If there is just one item, that item is\r\n\t * returned. Unsupported menu items are skipped.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param branch Menu item to search siblings for\r\n\t * @return Menu item\r\n\t */\r\n\tpublic getPrevSibling(branch: IExportMenuItem): IExportMenuItem {\r\n\t\tlet siblings = this.getSiblings(branch);\r\n\t\tif (siblings.length > 1) {\r\n\t\t\tlet prev = siblings.indexOf(branch) - 1;\r\n\t\t\tprev = prev == -1 ? siblings.length - 1 : prev;\r\n\t\t\treturn siblings[prev].unsupported ? this.getPrevSibling(siblings[prev]) : siblings[prev];\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn branch;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Attempts to set focus on particular menu element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param branch Menu item\r\n\t */\r\n\tpublic setFocus(branch: IExportMenuItem): void {\r\n\t\tif (branch.interactions) {\r\n\t\t\ttry {\r\n\t\t\t\t(<HTMLElement>branch.interactions.element).focus();\r\n\t\t\t}\r\n\t\t\tcatch(e) {\r\n\t\t\t\t// nothing\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Attempts to remove focus from the menu element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param branch Menu item\r\n\t */\r\n\tpublic setBlur(branch: IExportMenuItem): void {\r\n\t\tif (branch.interactions) {\r\n\t\t\ttry {\r\n\t\t\t\t(<HTMLElement>branch.interactions.element).blur();\r\n\t\t\t}\r\n\t\t\tcatch(e) {\r\n\t\t\t\t// nothing\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Hides the whole branch of menu.\r\n\t * \r\n\t * @param branch branch\r\n\t */\r\n\tpublic hideBranch(branch: IExportMenuItem): void {\r\n\t\tbranch.element.style.display = \"none\";\r\n\t}\r\n\r\n\t/**\r\n\t * Show the branch of menu.\r\n\t * \r\n\t * @param branch branch\r\n\t */\r\n\tpublic showBranch(branch: IExportMenuItem): void {\r\n\t\tbranch.element.style.display = \"\";\r\n\t}\r\n\r\n}\r\n","/**\r\n * Handles date and time formatting\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { Language, ILocaleProperties } from \"../utils/Language\";\r\nimport { BaseObject } from \"../Base\";\r\nimport { ITextChunk, getTextFormatter } from \"../formatters/TextFormatter\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $strings from \"../utils/Strings\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\n\r\n/**\r\n * Interface describing parsed date format definition.\r\n */\r\nexport interface DateFormatInfo {\r\n\t\"template\": string;\r\n\t\"parts\": any[];\r\n}\r\n\r\n/**\r\n * Month names.\r\n */\r\nexport type MonthNames = \"January\" | \"February\" | \"March\" | \"April\" | \"May\" | \"June\" | \"July\" | \"August\" | \"September\" | \"October\" | \"November\" | \"December\";\r\n\r\n/**\r\n * Short month names.\r\n *\r\n * @param {string}\r\n */\r\nexport type ShortMonthNames = \"Jan\" | \"Feb\" | \"Mar\" | \"Apr\" | \"May(short)\" | \"Jun\" | \"Jul\" | \"Aug\" | \"Sep\" | \"Oct\" | \"Nov\" | \"Dec\";\r\n\r\n/**\r\n * Weekedays.\r\n */\r\nexport type Weekdays = \"Sunday\" | \"Monday\" | \"Tuesday\" | \"Wednesday\" | \"Thursday\" | \"Friday\" | \"Saturday\";\r\n\r\n/**\r\n * Short weekday names.\r\n */\r\nexport type ShortWeekdays = \"Sun\" | \"Mon\" | \"Tue\" | \"Wed\" | \"Thu\" | \"Fri\" | \"Sat\";\r\n\r\n/**\r\n * Handles date and time formatting.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/} Tutorial on date/time formatting\r\n * @todo Better type casting of passed in date?\r\n * @todo Quarter support?\r\n * @todo When parsing named months make the search case-insensitive\r\n * @todo Escape a.m./p.m. properly when used in RegEx\r\n */\r\nexport class DateFormatter extends BaseObject {\r\n\r\n\t/**\r\n\t * Date format.\r\n\t */\r\n\tprotected _dateFormat: string | Intl.DateTimeFormatOptions = \"yyyy-MM-dd\";\r\n\r\n\t/**\r\n\t * Locales to use when formatting using Intl.DateFormatter\r\n\t */\r\n\tprotected _intlLocales: string;\r\n\r\n\t/**\r\n\t * Input date format.\r\n\t */\r\n\tprotected _inputDateFormat: string = \"yyyy-MM-dd\";\r\n\r\n\t/**\r\n\t * Assume UTC time zone.\r\n\t */\r\n\tprotected _utc: boolean = false;\r\n\r\n\t/**\r\n\t * Timezone offset.\r\n\t */\r\n\tprotected _timezoneOffset: $type.Optional<number>;\r\n\r\n\t/**\r\n\t * First day of week.\r\n\t *\r\n\t * 0 - Sunday\r\n\t * 1 - Monday\r\n\t *\r\n\t * Etc.\r\n\t */\r\n\tprotected _firstDayOfWeek: number = 1;\r\n\r\n\t/**\r\n\t * A list of month names.\r\n\t */\r\n\tprotected _months: Array<MonthNames> = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\r\n\r\n\t/**\r\n\t * A list of short month names.\r\n\t *\r\n\t * @param {Array<ShortMonthNames>}\r\n\t */\r\n\tprotected _monthsShort: Array<ShortMonthNames> = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May(short)\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\n\r\n\t/**\r\n\t * A list of weekday names.\r\n\t */\r\n\tprotected _weekdays: Array<Weekdays> = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\r\n\r\n\t/**\r\n\t * A list of short weekday names.\r\n\t */\r\n\tprotected _weekdaysShort: Array<ShortWeekdays> = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\r\n\r\n\t/**\r\n\t * Output format to produce. If the format calls for applying color to the\r\n\t * formatted value, this setting will determine what markup to use: SVG or\r\n\t * HTML.\r\n\t *\r\n\t * Available options: svg, html.\r\n\t *\r\n\t * @default \"svg\"\r\n\t */\r\n\tprotected _outputFormat: string = \"svg\";\r\n\r\n\t/**\r\n\t * Holds reference to parent [[Sprite]] object.\r\n\t */\r\n\tpublic sprite: $type.Optional<Sprite>;\r\n\r\n\t/**\r\n\t * Holds reference to [[Language]] object.\r\n\t */\r\n\tpublic _language: $type.Optional<Language>;\r\n\r\n\t/**\r\n\t * Should the first letter of the formatted date be capitalized?\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tpublic capitalize: boolean = true;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"DateFormatter\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * A reference to [[Language]] object.\r\n\t *\r\n\t * @param value Language\r\n\t */\r\n\tpublic set language(value: $type.Optional<Language>) {\r\n\t\tthis._language = value;\r\n\t\tthis.dateFormat = this._language.translate(\"_date\");\r\n\t}\r\n\r\n\t/**\r\n\t * @return Language\r\n\t */\r\n\tpublic get language(): $type.Optional<Language> {\r\n\t\treturn this._language;\r\n\t}\r\n\r\n\t/**\r\n\t * Formats the date value according to specified format.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/} Tutorial on date/time formatting\r\n\t * @param source Date value\r\n\t * @param format Format\r\n\t * @return Formatted date string\r\n\t */\r\n\tpublic format(source: any, format?: string | Intl.DateTimeFormatOptions): string {\r\n\r\n\t\t// No language?\r\n\t\tif (!this.language) {\r\n\t\t\tif (this.sprite) {\r\n\t\t\t\tthis.language = this.sprite.language;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.language = new Language();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// No format passed in or it's empty\r\n\t\tif (typeof format === \"undefined\" || format === \"\") {\r\n\t\t\tformat = this._dateFormat;\r\n\t\t}\r\n\r\n\t\t// Init return value\r\n\t\tlet formatted;\r\n\r\n\t\t// Do casting if required\r\n\t\t// This will take care of timestamps as well as Date objects\r\n\t\tlet date: Date;\r\n\t\tif ($type.isString(source)) {\r\n\t\t\t// If it's a string, let's try parsing it using our own functionality\r\n\t\t\tdate = this.parse(source);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdate = $utils.anyToDate(source);\r\n\t\t}\r\n\r\n\t\t// Is it a built-in format or Intl.DateTimeFormat\r\n\t\tif (format instanceof Object) {\r\n\r\n\t\t\tif (this.intlLocales) {\r\n\t\t\t\treturn new Intl.DateTimeFormat(this.intlLocales, <Intl.DateTimeFormatOptions>format).format(date);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn new Intl.DateTimeFormat(undefined, <Intl.DateTimeFormatOptions>format).format(date);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\telse {\r\n\r\n\t\t\t// Clean format\r\n\t\t\tformat = $utils.cleanFormat(format);\r\n\r\n\t\t\t// get format info (it will also deal with parser caching)\r\n\t\t\tlet info = this.parseFormat(format);\r\n\r\n\t\t\t// Should we apply custom time zone?\r\n\t\t\tif ($type.hasValue(this.timezoneOffset)) {\r\n\t\t\t\tdate.setMinutes(date.getMinutes() + date.getTimezoneOffset() - this.timezoneOffset);\r\n\t\t\t}\r\n\r\n\t\t\t// Check if it's a valid date\r\n\t\t\tif (!$type.isNumber(date.getTime())) {\r\n\t\t\t\treturn this.language.translate(\"Invalid date\");\r\n\t\t\t}\r\n\r\n\t\t\t// Apply format\r\n\t\t\tformatted = this.applyFormat(date, info, this.language);\r\n\r\n\t\t\t// Capitalize\r\n\t\t\tif (this.capitalize) {\r\n\t\t\t\tformatted = formatted.replace(\r\n\t\t\t\t\t/^.{1}/, formatted.substr(0, 1).toUpperCase()\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// We're done\r\n\t\treturn formatted;\r\n\t}\r\n\r\n\t/**\r\n\t * Parses format into structured infromation.\r\n\t *\r\n\t * @param format Format template\r\n\t */\r\n\tprotected parseFormat(format: string): DateFormatInfo {\r\n\r\n\t\t// Check cache\r\n\t\tlet cached = this.getCache(format);\r\n\t\tif ($type.hasValue(cached)) {\r\n\t\t\treturn cached;\r\n\t\t}\r\n\r\n\t\t// Init format parse info holder\r\n\t\tlet info: DateFormatInfo = {\r\n\t\t\t\"template\": \"\",\r\n\t\t\t\"parts\": <any>[]\r\n\t\t};\r\n\r\n\t\t// Let TextFormatter split into chunks\r\n\t\tlet chunks: ITextChunk[] = getTextFormatter().chunk(format, true);\r\n\t\tfor (let i: number = 0; i < chunks.length; i++) {\r\n\t\t\tlet chunk: ITextChunk = chunks[i];\r\n\r\n\t\t\tif (chunk.type === \"value\") {\r\n\r\n\t\t\t\t// Just \"Date\"?\r\n\t\t\t\tif (chunk.text.match(/^date$/i) && $type.isString(this._dateFormat)) {\r\n\t\t\t\t\tchunk.text = this._dateFormat;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Find all possible parts\r\n\t\t\t\tlet matches = chunk.text.match(/G|yyyy|yyy|yy|y|YYYY|YYY|YY|Y|u|MMMMM|MMMM|MMM|MM|M|ww|w|W|dd|d|DDD|DD|D|F|g|EEEEE|EEEE|EEE|EE|E|eeeee|eeee|eee|ee|e|aaa|aa|a|hh|h|HH|H|KK|K|kk|k|mm|m|ss|s|SSS|SS|S|A|zzzz|zzz|zz|z|ZZ|Z|t|x|nnn|nn|n|i|I/g);\r\n\r\n\t\t\t\t// Found?\r\n\t\t\t\tif (matches) {\r\n\r\n\t\t\t\t\t// Populate template\r\n\t\t\t\t\tfor (let x = 0; x < matches.length; x++) {\r\n\t\t\t\t\t\tinfo.parts.push(matches[x]);\r\n\t\t\t\t\t\tchunk.text = chunk.text.replace(matches[x], $strings.PLACEHOLDER);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Apply to template\r\n\t\t\tinfo.template += chunk.text;\r\n\t\t}\r\n\r\n\t\t// Apply style formatting\r\n\t\t//info.template = getTextFormatter().format(info.template, this.outputFormat);\r\n\r\n\t\t// Save cache\r\n\t\tthis.setCache(format, info);\r\n\r\n\t\treturn info;\r\n\t}\r\n\r\n\t/**\r\n\t * Applies format to Date.\r\n\t *\r\n\t * @param date Date object\r\n\t * @param info Parsed format information\r\n\t * @param language Language\r\n\t * @return Formatted date string\r\n\t */\r\n\tprotected applyFormat(date: Date, info: DateFormatInfo, language: Language): string {\r\n\r\n\t\t// Init return value\r\n\t\tlet res = info.template;\r\n\r\n\t\t// Get values\r\n\t\tlet fullYear: number,\r\n\t\t\tmonth: number,\r\n\t\t\tweekday: number,\r\n\t\t\tday: number,\r\n\t\t\thours: number,\r\n\t\t\tminutes: number,\r\n\t\t\tseconds: number,\r\n\t\t\tmilliseconds: number,\r\n\t\t\toffset: number = date.getTimezoneOffset(),\r\n\t\t\ttimestamp: number = date.getTime();\r\n\t\tif (this.utc) {\r\n\t\t\tfullYear = date.getUTCFullYear();\r\n\t\t\tmonth = date.getUTCMonth();\r\n\t\t\tweekday = date.getUTCDay();\r\n\t\t\tday = date.getUTCDate();\r\n\t\t\thours = date.getUTCHours();\r\n\t\t\tminutes = date.getUTCMinutes();\r\n\t\t\tseconds = date.getUTCSeconds();\r\n\t\t\tmilliseconds = date.getUTCMilliseconds();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tfullYear = date.getFullYear();\r\n\t\t\tmonth = date.getMonth();\r\n\t\t\tweekday = date.getDay();\r\n\t\t\tday = date.getDate();\r\n\t\t\thours = date.getHours();\r\n\t\t\tminutes = date.getMinutes();\r\n\t\t\tseconds = date.getSeconds();\r\n\t\t\tmilliseconds = date.getMilliseconds();\r\n\t\t}\r\n\r\n\t\t// Go through each part and format/replace it in template\r\n\t\tfor (let i = 0, len = info.parts.length; i < len; i++) {\r\n\t\t\tlet value: string = \"\";\r\n\t\t\tswitch (info.parts[i]) {\r\n\r\n\t\t\t\tcase \"G\":\r\n\t\t\t\t\tvalue = language.translate(\r\n\t\t\t\t\t\tfullYear < 0\r\n\t\t\t\t\t\t\t? \"_era_bc\"\r\n\t\t\t\t\t\t\t: \"_era_ad\"\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"yyyy\":\r\n\t\t\t\t\tvalue = Math.abs(fullYear).toString();\r\n\t\t\t\t\tif (fullYear < 0) {\r\n\t\t\t\t\t\tvalue += language.translate(\"_era_bc\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"yyy\":\r\n\t\t\t\tcase \"yy\":\r\n\t\t\t\tcase \"y\":\r\n\t\t\t\t\tvalue = Math.abs(fullYear).toString().substr(-info.parts[i].length);\r\n\t\t\t\t\tif (fullYear < 0) {\r\n\t\t\t\t\t\tvalue += language.translate(\"_era_bc\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"YYYY\":\r\n\t\t\t\tcase \"YYY\":\r\n\t\t\t\tcase \"YY\":\r\n\t\t\t\tcase \"Y\":\r\n\t\t\t\t\tlet week = $utils.getWeek(date);\r\n\t\t\t\t\tlet year = fullYear;\r\n\t\t\t\t\tif (week == 1 && (weekday > 1)) {\r\n\t\t\t\t\t\tyear--;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (info.parts[i] == \"YYYY\") {\r\n\t\t\t\t\t\tvalue = Math.abs(year).toString();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tvalue = Math.abs(year).toString().substr(-info.parts[i].length);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (year < 0) {\r\n\t\t\t\t\t\tvalue += language.translate(\"_era_bc\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"u\":\r\n\t\t\t\t\t// @todo\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"MMMMM\":\r\n\t\t\t\t\tvalue = language.translate(this._months[month]).substr(0, 1);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"MMMM\":\r\n\t\t\t\t\tvalue = language.translate(this._months[month]);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"MMM\":\r\n\t\t\t\t\tvalue = language.translate(this._monthsShort[month]);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"MM\":\r\n\t\t\t\t\tvalue = $utils.padString(month + 1, 2, \"0\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"M\":\r\n\t\t\t\t\tvalue = (month + 1).toString();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"ww\":\r\n\t\t\t\t\tvalue = $utils.padString($utils.getWeek(date, this.utc), 2, \"0\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"w\":\r\n\t\t\t\t\tvalue = $utils.getWeek(date, this.utc).toString();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"W\":\r\n\t\t\t\t\tvalue = $utils.getMonthWeek(date, this.utc).toString();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"dd\":\r\n\t\t\t\t\tvalue = $utils.padString(day, 2, \"0\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"d\":\r\n\t\t\t\t\tvalue = day.toString();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"DD\":\r\n\t\t\t\tcase \"DDD\":\r\n\t\t\t\t\tvalue = $utils.padString($utils.getYearDay(date, this.utc).toString(), info.parts[i].length, \"0\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"D\":\r\n\t\t\t\t\tvalue = $utils.getYearDay(date, this.utc).toString();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"F\":\r\n\t\t\t\t\t// @todo\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"g\":\r\n\t\t\t\t\t// @todo\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"t\":\r\n\t\t\t\t\tvalue = language.translateFunc(\"_dateOrd\").call(this, day);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"E\":\r\n\t\t\t\t\tvalue = (weekday || 7).toString();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"EE\":\r\n\t\t\t\t\tvalue = $utils.padString((weekday || 7).toString(), 2, \"0\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"EEE\":\r\n\t\t\t\tcase \"eee\":\r\n\t\t\t\t\tvalue = language.translate(this._weekdaysShort[weekday]);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"EEEE\":\r\n\t\t\t\tcase \"eeee\":\r\n\t\t\t\t\tvalue = language.translate(this._weekdays[weekday]);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"EEEEE\":\r\n\t\t\t\tcase \"eeeee\":\r\n\t\t\t\t\tvalue = language.translate(this._weekdays[weekday]).substr(0, 1);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"e\":\r\n\t\t\t\tcase \"ee\":\r\n\t\t\t\t\tvalue = (weekday - this.firstDayOfWeek + 1).toString();\r\n\t\t\t\t\tif (info.parts[i] == \"ee\") {\r\n\t\t\t\t\t\tvalue = $utils.padString(value, 2, \"0\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"a\":\r\n\t\t\t\t\tif (hours >= 12) {\r\n\t\t\t\t\t\tvalue = language.translate(\"PM\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tvalue = language.translate(\"AM\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"aa\":\r\n\t\t\t\t\tif (hours >= 12) {\r\n\t\t\t\t\t\tvalue = language.translate(\"P.M.\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tvalue = language.translate(\"A.M.\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"aaa\":\r\n\t\t\t\t\tif (hours >= 12) {\r\n\t\t\t\t\t\tvalue = language.translate(\"P\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tvalue = language.translate(\"A\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"h\":\r\n\t\t\t\t\tvalue = $utils.get12Hours(hours).toString();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"hh\":\r\n\t\t\t\t\tvalue = $utils.padString($utils.get12Hours(hours), 2, \"0\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"H\":\r\n\t\t\t\t\tvalue = hours.toString();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"HH\":\r\n\t\t\t\t\tvalue = $utils.padString(hours, 2, \"0\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"K\":\r\n\t\t\t\t\tvalue = $utils.get12Hours(hours, 0).toString();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"KK\":\r\n\t\t\t\t\tvalue = $utils.padString($utils.get12Hours(hours, 0), 2, \"0\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"k\":\r\n\t\t\t\t\tvalue = (hours + 1).toString();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"kk\":\r\n\t\t\t\t\tvalue = $utils.padString(hours + 1, 2, \"0\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"m\":\r\n\t\t\t\t\tvalue = minutes.toString();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"mm\":\r\n\t\t\t\t\tvalue = $utils.padString(minutes, 2, \"0\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"s\":\r\n\t\t\t\t\tvalue = seconds.toString();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"ss\":\r\n\t\t\t\t\tvalue = $utils.padString(seconds, 2, \"0\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"S\":\r\n\t\t\t\tcase \"SS\":\r\n\t\t\t\tcase \"SSS\":\r\n\t\t\t\t\tvalue = Math.round((milliseconds / 1000) * Math.pow(10, info.parts[i].length)).toString();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"x\":\r\n\t\t\t\t\tvalue = timestamp.toString();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"n\":\r\n\t\t\t\tcase \"nn\":\r\n\t\t\t\tcase \"nnn\":\r\n\t\t\t\t\tvalue = $utils.padString(milliseconds, info.parts[i].length, \"0\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"z\":\r\n\t\t\t\t\tvalue = $utils.getTimeZone(date, false, false, this.utc);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"zz\":\r\n\t\t\t\t\tvalue = $utils.getTimeZone(date, true, false, this.utc);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"zzz\":\r\n\t\t\t\t\tvalue = $utils.getTimeZone(date, false, true, this.utc);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"zzzz\":\r\n\t\t\t\t\tvalue = $utils.getTimeZone(date, true, true, this.utc);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"Z\":\r\n\t\t\t\tcase \"ZZ\":\r\n\t\t\t\t\tlet tz = Math.abs(offset) / 60;\r\n\t\t\t\t\tlet tzh = Math.floor(tz);\r\n\t\t\t\t\tlet tzm = tz * 60 - tzh * 60;\r\n\r\n\t\t\t\t\tif (this.utc) {\r\n\t\t\t\t\t\ttzh = 0;\r\n\t\t\t\t\t\ttzm = 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (info.parts[i] == \"Z\") {\r\n\t\t\t\t\t\tvalue = \"GMT\";\r\n\t\t\t\t\t\tvalue += offset > 0 ? \"-\" : \"+\";\r\n\t\t\t\t\t\tvalue += $utils.padString(tzh, 2) + \":\" + $utils.padString(tzm, 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tvalue = offset > 0 ? \"-\" : \"+\";\r\n\t\t\t\t\t\tvalue += $utils.padString(tzh, 2) + $utils.padString(tzm, 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"i\":\r\n\t\t\t\t\tvalue = date.toISOString();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"I\":\r\n\t\t\t\t\tvalue = date.toUTCString();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t}\r\n\t\t\tres = res.replace($strings.PLACEHOLDER, value);\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Parses any input value into Date object.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/#Parsing_Dates} Tutorial on date/time parsing\r\n\t * @param source Source value\r\n\t * @param format Source format\r\n\t * @return Date object\r\n\t */\r\n\tpublic parse(source: any, format?: string): Date {\r\n\r\n\t\t// Format set?\r\n\t\tif (!$type.hasValue(format)) {\r\n\t\t\tformat = this.inputDateFormat;\r\n\t\t}\r\n\r\n\t\t// Is it already a Date\r\n\t\tif (source instanceof Date) {\r\n\t\t\treturn source;\r\n\t\t}\r\n\r\n\t\t// Is it a numeric timestamp\r\n\t\tif (typeof source === \"number\") {\r\n\t\t\treturn new Date(source);\r\n\t\t}\r\n\r\n\t\t// No? Let's check if it's string, and try converting to it if nec\r\n\t\tif (typeof source !== \"string\") {\r\n\t\t\tsource = source.toString();\r\n\t\t}\r\n\r\n\t\t// no language?\r\n\t\tif (!this.language) {\r\n\t\t\tif (this.sprite) {\r\n\t\t\t\tthis.language = this.sprite.language;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.language = new Language;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Init return value\r\n\t\tlet res: Date;\r\n\r\n\t\t// Init RegEx for parsing\r\n\t\tlet reg: string = \"\";\r\n\r\n\t\t// Clean format\r\n\t\tformat = $utils.cleanFormat(format);\r\n\r\n\t\t// Clip format to length of the source string\r\n\t\tformat = format.substr(0, source.length);\r\n\r\n\t\t// Parse format\r\n\t\tlet info = this.parseFormat(format);\r\n\r\n\t\t// Init parsed items holder\r\n\t\tlet parsedIndexes = {\r\n\t\t\t\"year\": -1,\r\n\t\t\t\"year3\": -1,\r\n\t\t\t\"year2\": -1,\r\n\t\t\t\"year1\": -1,\r\n\t\t\t\"month\": -1,\r\n\t\t\t\"monthShort\": -1,\r\n\t\t\t\"monthLong\": -1,\r\n\t\t\t\"weekdayShort\": -1,\r\n\t\t\t\"weekdayLong\": -1,\r\n\t\t\t\"day\": -1,\r\n\t\t\t\"yearDay\": -1,\r\n\t\t\t\"week\": -1,\r\n\t\t\t\"hourBase0\": -1,\r\n\t\t\t\"hour12Base0\": -1,\r\n\t\t\t\"hourBase1\": -1,\r\n\t\t\t\"hour12Base1\": -1,\r\n\t\t\t\"minute\": -1,\r\n\t\t\t\"second\": -1,\r\n\t\t\t\"millisecond\": -1,\r\n\t\t\t\"millisecondDigits\": -1,\r\n\t\t\t\"am\": -1,\r\n\t\t\t\"zone\": -1,\r\n\t\t\t\"timestamp\": -1,\r\n\t\t\t\"iso\": -1\r\n\t\t};\r\n\r\n\t\t// Init values\r\n\t\tlet resValues = {\r\n\t\t\t\"year\": 1970,\r\n\t\t\t\"month\": 0,\r\n\t\t\t\"day\": 1,\r\n\t\t\t\"hour\": 0,\r\n\t\t\t\"minute\": 0,\r\n\t\t\t\"second\": 0,\r\n\t\t\t\"millisecond\": 0,\r\n\t\t\t\"timestamp\": <any>null,\r\n\t\t\t\"offset\": 0,\r\n\t\t\t\"utc\": this.utc\r\n\t\t}\r\n\r\n\t\t// Index adjuster\r\n\t\tlet indexAdjust: number = 0,\r\n\t\t\tindex: number = 0;\r\n\r\n\t\t// Iterate through all of the parts\r\n\t\tfor (let i: number = 0; i < info.parts.length; i++) {\r\n\r\n\t\t\t// Set current match index\r\n\t\t\tindex = i + indexAdjust + 1;\r\n\r\n\t\t\tswitch (info.parts[i]) {\r\n\r\n\t\t\t\tcase \"yyyy\":\r\n\t\t\t\tcase \"YYYY\":\r\n\t\t\t\t\treg += \"([0-9]{4})\";\r\n\t\t\t\t\tparsedIndexes.year = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"yyy\":\r\n\t\t\t\tcase \"YYY\":\r\n\t\t\t\t\treg += \"([0-9]{3})\";\r\n\t\t\t\t\tparsedIndexes.year3 = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"yy\":\r\n\t\t\t\tcase \"YY\":\r\n\t\t\t\t\treg += \"([0-9]{2})\";\r\n\t\t\t\t\tparsedIndexes.year2 = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"y\":\r\n\t\t\t\tcase \"Y\":\r\n\t\t\t\t\treg += \"([0-9]{1})\";\r\n\t\t\t\t\tparsedIndexes.year1 = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"MMMM\":\r\n\t\t\t\t\treg += \"(\" + this.getStringList(this._months).join(\"|\") + \")\";\r\n\t\t\t\t\tparsedIndexes.monthLong = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"MMM\":\r\n\t\t\t\t\treg += \"(\" + this.getStringList(this._monthsShort).join(\"|\") + \")\";\r\n\t\t\t\t\tparsedIndexes.monthShort = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"MM\":\r\n\t\t\t\tcase \"M\":\r\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\r\n\t\t\t\t\tparsedIndexes.month = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"ww\":\r\n\t\t\t\tcase \"w\":\r\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\r\n\t\t\t\t\tparsedIndexes.week = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"dd\":\r\n\t\t\t\tcase \"d\":\r\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\r\n\t\t\t\t\tparsedIndexes.day = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"DDD\":\r\n\t\t\t\tcase \"DD\":\r\n\t\t\t\tcase \"D\":\r\n\t\t\t\t\treg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\r\n\t\t\t\t\tparsedIndexes.yearDay = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\r\n\t\t\t\tcase \"dddd\":\r\n\t\t\t\t\treg += \"(\" + this.getStringList(this._weekdays).join(\"|\") + \")\";\r\n\t\t\t\t\tparsedIndexes.weekdayLong = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"ddd\":\r\n\t\t\t\t\treg += \"(\" + this.getStringList(this._weekdaysShort).join(\"|\") + \")\";\r\n\t\t\t\t\tparsedIndexes.weekdayShort = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"aaa\":\r\n\t\t\t\tcase \"aa\":\r\n\t\t\t\tcase \"a\":\r\n\t\t\t\t\t// TODO: fix (escape regex)\r\n\t\t\t\t\treg += \"(\" + this.getStringList([\"AM\", \"PM\", \"A\\.M\\.\", \"P\\.M\\.\", \"A\", \"P\"]).join(\"|\") + \")\";\r\n\t\t\t\t\tparsedIndexes.am = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"hh\":\r\n\t\t\t\tcase \"h\":\r\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\r\n\t\t\t\t\tparsedIndexes.hour12Base1 = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"HH\":\r\n\t\t\t\tcase \"H\":\r\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\r\n\t\t\t\t\tparsedIndexes.hourBase0 = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"KK\":\r\n\t\t\t\tcase \"K\":\r\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\r\n\t\t\t\t\tparsedIndexes.hour12Base0 = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"kk\":\r\n\t\t\t\tcase \"k\":\r\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\r\n\t\t\t\t\tparsedIndexes.hourBase1 = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"mm\":\r\n\t\t\t\tcase \"m\":\r\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\r\n\t\t\t\t\tparsedIndexes.minute = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"ss\":\r\n\t\t\t\tcase \"s\":\r\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\r\n\t\t\t\t\tparsedIndexes.second = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"SSS\":\r\n\t\t\t\tcase \"SS\":\r\n\t\t\t\tcase \"S\":\r\n\t\t\t\t\treg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\r\n\t\t\t\t\tparsedIndexes.millisecond = index;\r\n\t\t\t\t\tparsedIndexes.millisecondDigits = info.parts[i].length;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"nnn\":\r\n\t\t\t\tcase \"nn\":\r\n\t\t\t\tcase \"n\":\r\n\t\t\t\t\treg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\r\n\t\t\t\t\tparsedIndexes.millisecond = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"x\":\r\n\t\t\t\t\treg += \"([0-9]{1,})\";\r\n\t\t\t\t\tparsedIndexes.timestamp = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"Z\":\r\n\t\t\t\t\treg += \"GMT([-+]+[0-9]{2}:[0-9]{2})\";\r\n\t\t\t\t\tparsedIndexes.zone = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"ZZ\":\r\n\t\t\t\t\treg += \"([\\\\-+]+[0-9]{2}[0-9]{2})\";\r\n\t\t\t\t\tparsedIndexes.zone = index;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"i\":\r\n\t\t\t\t\treg += \"([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})\\.([0-9]{3})([Zz]?)\";\r\n\t\t\t\t\tparsedIndexes.iso = index;\r\n\t\t\t\t\tindexAdjust += 7;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"G\":\r\n\t\t\t\tcase \"YYYY\":\r\n\t\t\t\tcase \"YYY\":\r\n\t\t\t\tcase \"YY\":\r\n\t\t\t\tcase \"Y\":\r\n\t\t\t\tcase \"MMMMM\":\r\n\t\t\t\tcase \"W\":\r\n\t\t\t\tcase \"EEEEE\":\r\n\t\t\t\tcase \"EEEE\":\r\n\t\t\t\tcase \"EEE\":\r\n\t\t\t\tcase \"EE\":\r\n\t\t\t\tcase \"E\":\r\n\t\t\t\tcase \"eeeee\":\r\n\t\t\t\tcase \"eeee\":\r\n\t\t\t\tcase \"eee\":\r\n\t\t\t\tcase \"ee\":\r\n\t\t\t\tcase \"e\":\r\n\t\t\t\tcase \"zzzz\":\r\n\t\t\t\tcase \"zzz\":\r\n\t\t\t\tcase \"zz\":\r\n\t\t\t\tcase \"z\":\r\n\t\t\t\tcase \"t\":\r\n\t\t\t\t\t// Ignore\r\n\t\t\t\t\tindexAdjust--;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treg += \"[^0-9]*\";\r\n\t\t}\r\n\r\n\t\t// Try matching\r\n\t\tlet regex = new RegExp(reg);\r\n\t\tlet matches: RegExpMatchArray = source.match(regex);\r\n\r\n\t\tif (matches) {\r\n\t\t\t// Populate the date object\r\n\r\n\t\t\t// Full year\r\n\t\t\tif (parsedIndexes.year > -1) {\r\n\t\t\t\tresValues.year = parseInt(matches[parsedIndexes.year]);\r\n\t\t\t}\r\n\r\n\t\t\t// 3-digit year\r\n\t\t\tif (parsedIndexes.year3 > -1) {\r\n\t\t\t\tlet val = parseInt(matches[parsedIndexes.year3]);\r\n\t\t\t\tval += 1000;\r\n\t\t\t\tresValues.year = val;\r\n\t\t\t}\r\n\r\n\t\t\t// 2-digit year\r\n\t\t\tif (parsedIndexes.year2 > -1) {\r\n\t\t\t\tlet val = parseInt(matches[parsedIndexes.year2]);\r\n\t\t\t\tif (val > 50) {\r\n\t\t\t\t\tval += 1000;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tval += 2000;\r\n\t\t\t\t}\r\n\t\t\t\tresValues.year = val;\r\n\t\t\t}\r\n\r\n\t\t\t// 1-digit year\r\n\t\t\tif (parsedIndexes.year1 > -1) {\r\n\t\t\t\tlet val = parseInt(matches[parsedIndexes.year1]);\r\n\t\t\t\tval = Math.floor((new Date().getFullYear()) / 10) * 10 + val;\r\n\t\t\t\tresValues.year = val;\r\n\t\t\t}\r\n\r\n\t\t\t// Full month\r\n\t\t\tif (parsedIndexes.monthLong > -1) {\r\n\t\t\t\tresValues.month = this.resolveMonth(<any>matches[parsedIndexes.monthLong]);\r\n\t\t\t}\r\n\r\n\t\t\t// Short month\r\n\t\t\tif (parsedIndexes.monthShort > -1) {\r\n\t\t\t\tresValues.month = this.resolveShortMonth(<any>matches[parsedIndexes.monthShort]);\r\n\t\t\t}\r\n\r\n\t\t\t// Numeric month\r\n\t\t\tif (parsedIndexes.month > -1) {\r\n\t\t\t\tresValues.month = parseInt(matches[parsedIndexes.month]) - 1;\r\n\t\t\t}\r\n\r\n\t\t\t// Weekday\r\n\t\t\t// @todo\r\n\r\n\t\t\t// Week\r\n\t\t\tif ((parsedIndexes.week > -1) && (parsedIndexes.day === -1)) {\r\n\t\t\t\t// We parse weeks ONLY if day is not explicitly set\r\n\t\t\t\t// TODO: this needs work\r\n\t\t\t\t// (but maybe later - I can hardly imagine anyone passing their dates in weeks)\r\n\t\t\t\tresValues.month = 0;\r\n\t\t\t\tresValues.day = $utils.getDayFromWeek(\r\n\t\t\t\t\tparseInt(matches[parsedIndexes.week]),\r\n\t\t\t\t\tresValues.year,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tthis.utc\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\t// Day\r\n\t\t\tif (parsedIndexes.day > -1) {\r\n\t\t\t\tresValues.day = parseInt(matches[parsedIndexes.day]);\r\n\t\t\t}\r\n\r\n\t\t\t// Year day\r\n\t\t\tif (parsedIndexes.yearDay > -1) {\r\n\t\t\t\tresValues.month = 0;\r\n\t\t\t\tresValues.day = parseInt(matches[parsedIndexes.yearDay]);\r\n\t\t\t}\r\n\r\n\t\t\t// 24 Hour (0-23)\r\n\t\t\tif (parsedIndexes.hourBase0 > -1) {\r\n\t\t\t\tresValues.hour = parseInt(matches[parsedIndexes.hourBase0]);\r\n\t\t\t}\r\n\r\n\t\t\t// 24 Hour (1-24)\r\n\t\t\tif (parsedIndexes.hourBase1 > -1) {\r\n\t\t\t\tresValues.hour = parseInt(matches[parsedIndexes.hourBase1]) - 1;\r\n\t\t\t}\r\n\r\n\t\t\t// 12 Hour (0-11)\r\n\t\t\tif (parsedIndexes.hour12Base0 > -1) {\r\n\t\t\t\tlet val = parseInt(matches[parsedIndexes.hour12Base0]);\r\n\t\t\t\tif (val == 11) {\r\n\t\t\t\t\tval = 0;\r\n\t\t\t\t}\r\n\t\t\t\tif ((parsedIndexes.am > -1) && !this.isAm(matches[parsedIndexes.am])) {\r\n\t\t\t\t\tval += 12;\r\n\t\t\t\t}\r\n\t\t\t\tresValues.hour = val;\r\n\t\t\t}\r\n\r\n\t\t\t// 12 Hour (1-12)\r\n\t\t\tif (parsedIndexes.hour12Base1 > -1) {\r\n\t\t\t\tlet val = parseInt(matches[parsedIndexes.hour12Base1]);\r\n\t\t\t\tif (val == 12) {\r\n\t\t\t\t\tval = 0;\r\n\t\t\t\t}\r\n\t\t\t\tif ((parsedIndexes.am > -1) && !this.isAm(matches[parsedIndexes.am])) {\r\n\t\t\t\t\tval += 12;\r\n\t\t\t\t}\r\n\t\t\t\tresValues.hour = val;\r\n\t\t\t}\r\n\r\n\t\t\t// Minute\r\n\t\t\tif (parsedIndexes.minute > -1) {\r\n\t\t\t\tresValues.minute = parseInt(matches[parsedIndexes.minute]);\r\n\t\t\t}\r\n\r\n\t\t\t// Second\r\n\t\t\tif (parsedIndexes.second > -1) {\r\n\t\t\t\tresValues.second = parseInt(matches[parsedIndexes.second]);\r\n\t\t\t}\r\n\r\n\t\t\t// Millisecond\r\n\t\t\tif (parsedIndexes.millisecond > -1) {\r\n\t\t\t\tlet val = parseInt(matches[parsedIndexes.millisecond]);\r\n\t\t\t\tif (parsedIndexes.millisecondDigits == 2) {\r\n\t\t\t\t\tval *= 10;\r\n\t\t\t\t}\r\n\t\t\t\telse if (parsedIndexes.millisecondDigits == 1) {\r\n\t\t\t\t\tval *= 100;\r\n\t\t\t\t}\r\n\t\t\t\tresValues.millisecond = val;\r\n\t\t\t}\r\n\r\n\t\t\t// Timestamp\r\n\t\t\tif (parsedIndexes.timestamp > -1) {\r\n\t\t\t\tresValues.timestamp = parseInt(matches[parsedIndexes.timestamp]);\r\n\t\t\t}\r\n\r\n\t\t\t// Adjust time zone\r\n\t\t\tif (parsedIndexes.zone > -1) {\r\n\t\t\t\tlet zone = matches[parsedIndexes.zone].replace(/:/, \"\");\r\n\t\t\t\tlet match = $type.getValue(zone.match(/([+\\-]?)([0-9]{2})([0-9]{2})/));\r\n\t\t\t\tlet dir = match[1];\r\n\t\t\t\tlet hour = match[2];\r\n\t\t\t\tlet minute = match[3];\r\n\t\t\t\tlet offset = parseInt(hour) * 60 + parseInt(minute);\r\n\r\n\t\t\t\t// Adjust offset\r\n\t\t\t\t// Making it negative does not seem to make sense, but it's right\r\n\t\t\t\t// because of how JavaScript calculates GTM offsets\r\n\t\t\t\tif (dir == \"+\") {\r\n\t\t\t\t\toffset *= -1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Check the difference in offset\r\n\t\t\t\tlet originalOffset = new Date().getTimezoneOffset();\r\n\t\t\t\tlet diff = offset - originalOffset;\r\n\t\t\t\tresValues.offset = diff;\r\n\t\t\t}\r\n\r\n\t\t\t// ISO\r\n\t\t\tif (parsedIndexes.iso > -1) {\r\n\t\t\t\tif (matches[parsedIndexes.iso + 7] == \"Z\" || matches[parsedIndexes.iso + 7] == \"z\") {\r\n\t\t\t\t\tresValues.utc = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresValues.year = $type.toNumber(matches[parsedIndexes.iso + 0]);\r\n\t\t\t\tresValues.month = $type.toNumber(matches[parsedIndexes.iso + 1]) - 1;\r\n\t\t\t\tresValues.day = $type.toNumber(matches[parsedIndexes.iso + 2]);\r\n\t\t\t\tresValues.hour = $type.toNumber(matches[parsedIndexes.iso + 3]);\r\n\t\t\t\tresValues.minute = $type.toNumber(matches[parsedIndexes.iso + 4]);\r\n\t\t\t\tresValues.second = $type.toNumber(matches[parsedIndexes.iso + 5]);\r\n\t\t\t\tresValues.millisecond = $type.toNumber(matches[parsedIndexes.iso + 6]);\r\n\t\t\t}\r\n\r\n\t\t\t// Create Date object\r\n\t\t\tif (resValues.utc) {\r\n\t\t\t\tres = new Date(Date.UTC(\r\n\t\t\t\t\tresValues.year,\r\n\t\t\t\t\tresValues.month,\r\n\t\t\t\t\tresValues.day,\r\n\t\t\t\t\tresValues.hour,\r\n\t\t\t\t\tresValues.minute,\r\n\t\t\t\t\tresValues.second,\r\n\t\t\t\t\tresValues.millisecond\r\n\t\t\t\t));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tres = new Date(\r\n\t\t\t\t\tresValues.year,\r\n\t\t\t\t\tresValues.month,\r\n\t\t\t\t\tresValues.day,\r\n\t\t\t\t\tresValues.hour,\r\n\t\t\t\t\tresValues.minute,\r\n\t\t\t\t\tresValues.second,\r\n\t\t\t\t\tresValues.millisecond\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// Didn't match anything\r\n\t\t\t// Let's try dropping it into Date constructor and hope for the best\r\n\t\t\tres = new Date(source);\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Resolves month name (i.e. \"December\") into a month number (11).\r\n\t *\r\n\t * @param value Month name\r\n\t * @return Month number\r\n\t */\r\n\tprotected resolveMonth(value: MonthNames): number {\r\n\r\n\t\t// Let's try English first\r\n\t\tlet month: number = this._months.indexOf(value);\r\n\t\tif (month > -1) {\r\n\t\t\treturn month;\r\n\t\t}\r\n\r\n\t\t// Try the translation\r\n\t\tif (this.language && !this.language.isDefault()) {\r\n\t\t\tmonth = this.language.translateAll(this._months).indexOf(value);\r\n\t\t\tif (month > -1) {\r\n\t\t\t\treturn month\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Resolves short month name (i.e. \"Dec\") into a month number.\r\n\t *\r\n\t * @param value Short month name\r\n\t * @return Month number\r\n\t */\r\n\tprotected resolveShortMonth(value: ShortMonthNames): number {\r\n\r\n\t\t// Let's try English first\r\n\t\tlet month: number = this._monthsShort.indexOf(value);\r\n\t\tif (month > -1) {\r\n\t\t\treturn month;\r\n\t\t}\r\n\r\n\t\t// Try the translation\r\n\t\tif (this.language && !this.language.isDefault()) {\r\n\t\t\tmonth = this.language.translateAll(this._monthsShort).indexOf(value);\r\n\t\t\tif (month > -1) {\r\n\t\t\t\treturn month\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if passed in string represents AM/PM notation in many of its\r\n\t * versions.\r\n\t *\r\n\t * @param value Source string\r\n\t * @return Is it AM/PM?\r\n\t */\r\n\tprotected isAm(value: string): boolean {\r\n\t\tlet list = this.getStringList([\"AM\", \"A.M.\", \"A\"]);\r\n\t\treturn list.indexOf(value.toUpperCase()) > -1;\r\n\t}\r\n\r\n\t/**\r\n\t * Invalidates related [[Sprite]] causing it to redraw.\r\n\t */\r\n\tprotected invalidateSprite(): void {\r\n\t\tif (this.sprite) {\r\n\t\t\tthis.sprite.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Translates list of strings.\r\n\t *\r\n\t * @param list Source strings\r\n\t * @return Translated strings\r\n\t */\r\n\tprotected getStringList(list: Array<keyof ILocaleProperties>): Array<string> {\r\n\t\tlet res: string[] = [];\r\n\t\tfor (let i: number = 0; i < list.length; i++) {\r\n\t\t\tres.push($utils.escapeForRgex(list[i]));\r\n\t\t\t// translate?\r\n\t\t\tif (this.language && !this.language.isDefault()) {\r\n\t\t\t\tres.push($utils.escapeForRgex(this.language.translate(list[i])));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Date format to use.\r\n\t *\r\n\t * If format is not supplied in-line in the string, this setting will be\r\n\t * used.\r\n\t *\r\n\t * @default \"yyyy-MM-dd\"\r\n\t * @param value Date format\r\n\t */\r\n\tpublic set dateFormat(value: string | Intl.DateTimeFormatOptions) {\r\n\t\tthis._dateFormat = value;\r\n\t\tthis.invalidateSprite();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Date format\r\n\t */\r\n\tpublic get dateFormat(): string | Intl.DateTimeFormatOptions {\r\n\t\treturn this._dateFormat;\r\n\t}\r\n\r\n\t/**\r\n\t * Date format to use when parsing dates.\r\n\t *\r\n\t * @default \"yyyy-MM-dd\"\r\n\t * @param value Date format\r\n\t */\r\n\tpublic set inputDateFormat(value: string) {\r\n\t\tthis._inputDateFormat = value;\r\n\t\tthis.invalidateSprite();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Date format\r\n\t */\r\n\tpublic get inputDateFormat(): string {\r\n\t\treturn this._inputDateFormat;\r\n\t}\r\n\r\n\t/**\r\n\t * Locales if you are using date formats in `Intl.DateTimeFormatOptions` syntax.\r\n\t *\r\n\t * @param value Locales\r\n\t */\r\n\tpublic set intlLocales(value: string) {\r\n\t\tthis._intlLocales = value;\r\n\t\tthis.invalidateSprite();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Date format\r\n\t */\r\n\tpublic get intlLocales(): string {\r\n\t\treturn this._intlLocales;\r\n\t}\r\n\r\n\t/**\r\n\t * Should formatter use UTC functions?\r\n\t *\r\n\t * If UTC is used, all date/time values will be independent on client's\r\n\t * time zone.\r\n\t *\r\n\t * @param value Use UTC?\r\n\t */\r\n\tpublic set utc(value: boolean) {\r\n\t\tthis._utc = value;\r\n\t\tthis.invalidateSprite();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Use UTC?\r\n\t */\r\n\tpublic get utc(): boolean {\r\n\t\treturn this._utc;\r\n\t}\r\n\r\n\t/**\r\n\t * If set, will format date/time in specific time zone.\r\n\t *\r\n\t * The value is a number of minutes from target time zone to UTC.\r\n\t *\r\n\t * E.g. `300` will recalculate Dates in \"GMT-5\" time zone.\r\n\t *\r\n\t * @param value Offset (minutes)\r\n\t */\r\n\tpublic set timezoneOffset(value: $type.Optional<number>) {\r\n\t\tif (this._timezoneOffset != value) {\r\n\t\t\tthis._timezoneOffset = value;\r\n\t\t\tthis.invalidateSprite();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Offset (minutes)\r\n\t */\r\n\tpublic get timezoneOffset(): $type.Optional<number> {\r\n\t\treturn this._timezoneOffset;\r\n\t}\r\n\r\n\t/**\r\n\t * First day of the week:\r\n\t *\r\n\t * * 0 - Sunday\r\n\t * * 1 - Monday\r\n\t * * 2 - Tuesday\r\n\t *\r\n\t * Etc.\r\n\t *\r\n\t * @param value First day of week\r\n\t */\r\n\tpublic set firstDayOfWeek(value: number) {\r\n\t\tthis._firstDayOfWeek = value;\r\n\t\tthis.invalidateSprite();\r\n\t}\r\n\r\n\t/**\r\n\t * @return First day of week\r\n\t */\r\n\tpublic get firstDayOfWeek(): number {\r\n\t\treturn this._firstDayOfWeek;\r\n\t}\r\n\r\n\t/**\r\n\t * Output format for the formatted date.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Format\r\n\t */\r\n\tpublic set outputFormat(value: string) {\r\n\t\tthis._outputFormat = value.toLowerCase();\r\n\t\tthis.invalidateSprite();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Format\r\n\t */\r\n\tpublic get outputFormat(): string {\r\n\t\treturn this._outputFormat;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DateFormatter\"] = DateFormatter;\r\n","/**\r\n * Duration formatting functionality.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { Language } from \"../utils/Language\";\r\nimport { BaseObject } from \"../Base\";\r\nimport { ITextChunk, getTextFormatter } from \"../formatters/TextFormatter\";\r\nimport { registry } from \"../Registry\";\r\nimport { TimeUnit } from \"../defs/TimeUnit\";\r\nimport { Optional } from \"../utils/Type\";\r\nimport * as $strings from \"../utils/Strings\";\r\nimport * as $object from \"../utils/Object\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $math from \"../utils/Math\";\r\n\r\n/**\r\n * DurationFormatter class. Formats numbers as durations.\r\n *\r\n * `1000` as `16:40`\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/} Tutorial on duration formatting\r\n */\r\nexport class DurationFormatter extends BaseObject {\r\n\r\n\t/**\r\n\t * If set will force this format to be used, regardless of the scale.\r\n\t */\r\n\tprotected _durationFormat: string;\r\n\r\n\t/**\r\n\t * Holds duration formats for various possible scenarios.\r\n\t */\r\n\tprotected _durationFormats: Partial<Record<TimeUnit, Partial<Record<TimeUnit, string>>>>;\r\n\r\n\t/**\r\n\t * A base value for negative numbers. Will treat all numbers below this value\r\n\t * as negative numbers.\r\n\t */\r\n\tprotected _negativeBase: number = 0;\r\n\r\n\t/**\r\n\t * A base unit to consider values are in.\r\n\t *\r\n\t * @default \"s\"\r\n\t */\r\n\tprotected _baseUnit: TimeUnit = \"second\";\r\n\r\n\t/**\r\n\t * Output format to produce. If the format calls for applying color to the\r\n\t * formatted value, this setting will determine what markup to use: SVG or\r\n\t * HTML.\r\n\t *\r\n\t * Available options: svg, html.\r\n\t *\r\n\t * @default \"svg\"\r\n\t */\r\n\tprotected _outputFormat: string = \"svg\";\r\n\r\n\r\n\t/**\r\n\t * How many milliseconds each unit represents.\r\n\t */\r\n\tprotected _unitValues: Record<TimeUnit, number> = {\r\n\t\t\"millisecond\": 1,\r\n\t\t\"second\": 1000,\r\n\t\t\"minute\": 60000,\r\n\t\t\"hour\": 3600000,\r\n\t\t\"day\": 86400000,\r\n\t\t\"week\": 604800000,\r\n\t\t\"month\": 2592000000,\r\n\t\t\"year\": 31536000000,\r\n\t};\r\n\r\n\t/**\r\n\t * Collection of aliases for units.\r\n\t */\r\n\tprotected _unitAliases: { [index: string]: string } = {\r\n\t\t\"Y\": \"y\",\r\n\t\t\"D\": \"d\",\r\n\t\t\"H\": \"h\",\r\n\t\t\"K\": \"h\",\r\n\t\t\"k\": \"h\",\r\n\t\t\"n\": \"S\"\r\n\t};\r\n\r\n\t/**\r\n\t * Holds reference to parent [[Sprite]] object.\r\n\t */\r\n\tpublic sprite: $type.Optional<Sprite>;\r\n\r\n\t/**\r\n\t * Holds reference to [[Language]] object.\r\n\t */\r\n\tpublic language: $type.Optional<Language>;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"DurationFormatter\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Formats the number according as duration.\r\n\t *\r\n\t * For example `1000` (base unit seconds) would be converted to `16:40` as in\r\n\t * 16 minutes and 40 seconds.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/} Tutorial on duration formatting\r\n\t * @param value Value to format\r\n\t * @param format Format to apply\r\n\t * @param base Override base unit\r\n\t * @return Formatted number\r\n\t */\r\n\tpublic format(value: number | string, format?: string, base?: TimeUnit): string {\r\n\r\n\t\t// no language?\r\n\t\tif (!this.language) {\r\n\t\t\tif (this.sprite) {\r\n\t\t\t\tthis.language = this.sprite.language;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.language = new Language;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// no base unit?\r\n\t\tlet baseUnit = base || this._baseUnit;\r\n\r\n\t\t// no format passed in or empty\r\n\t\tif (typeof format === \"undefined\" || format === \"\") {\r\n\t\t\tif ($type.hasValue(this.durationFormat)) {\r\n\t\t\t\tformat = this.durationFormat;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tformat = this.getFormat($type.toNumber(value), null, baseUnit);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Clean format\r\n\t\tformat = $utils.cleanFormat(format);\r\n\r\n\t\t// get format info (it will also deal with parser caching)\r\n\t\tlet info = this.parseFormat(format, baseUnit);\r\n\r\n\t\t// cast to number just in case\r\n\t\t// TODO: maybe use better casting\r\n\t\tlet source: number = Number(value);\r\n\r\n\t\t// format and replace the number\r\n\t\tlet details;\r\n\t\tif (source > this._negativeBase) {\r\n\t\t\tdetails = info.positive;\r\n\t\t}\r\n\t\telse if (source < this._negativeBase) {\r\n\t\t\tdetails = info.negative;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdetails = info.zero;\r\n\t\t}\r\n\r\n\r\n\t\t// Format\r\n\t\tlet formatted = this.applyFormat(source, details);\r\n\r\n\t\t// Apply color?\r\n\t\tif (details.color !== \"\") {\r\n\t\t\tif (this._outputFormat === \"svg\") {\r\n\t\t\t\tformatted = \"<tspan fill='\" + details.color + \"'>\" + formatted + \"</tspan>\";\r\n\t\t\t}\r\n\t\t\telse if (this._outputFormat === \"html\") {\r\n\t\t\t\tformatted = \"<span style='color: \" + details.color + \";'>\" + formatted + \"</span>\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn formatted;\r\n\t}\r\n\r\n\t/**\r\n\t * Parses supplied format into structured object which can be used to format\r\n\t * the number.\r\n\t *\r\n\t * @param format Format string, i.e. \"#,###.00\"\r\n\t * @param base Override base unit\r\n\t * @return Parsed information\r\n\t */\r\n\tprotected parseFormat(format: string, base?: TimeUnit): any {\r\n\r\n\t\t// Check cache\r\n\t\tlet cached = this.getCache(format);\r\n\t\tif ($type.hasValue(cached)) {\r\n\t\t\treturn cached;\r\n\t\t}\r\n\r\n\t\t// no base unit?\r\n\t\tlet baseUnit = base || this._baseUnit;\r\n\r\n\t\t// Initialize duration parsing info\r\n\t\tlet info = {\r\n\t\t\t\"positive\": {\r\n\t\t\t\t\"color\": \"\",\r\n\t\t\t\t\"template\": \"\",\r\n\t\t\t\t\"parts\": <any>[],\r\n\t\t\t\t\"source\": \"\",\r\n\t\t\t\t\"baseUnit\": baseUnit,\r\n\t\t\t\t\"parsed\": false,\r\n\t\t\t\t\"absolute\": false\r\n\t\t\t},\r\n\t\t\t\"negative\": {\r\n\t\t\t\t\"color\": \"\",\r\n\t\t\t\t\"template\": \"\",\r\n\t\t\t\t\"parts\": <any>[],\r\n\t\t\t\t\"source\": \"\",\r\n\t\t\t\t\"baseUnit\": baseUnit,\r\n\t\t\t\t\"parsed\": false,\r\n\t\t\t\t\"absolute\": false\r\n\t\t\t},\r\n\t\t\t\"zero\": {\r\n\t\t\t\t\"color\": \"\",\r\n\t\t\t\t\"template\": \"\",\r\n\t\t\t\t\"parts\": <any>[],\r\n\t\t\t\t\"source\": \"\",\r\n\t\t\t\t\"baseUnit\": baseUnit,\r\n\t\t\t\t\"parsed\": false,\r\n\t\t\t\t\"absolute\": false\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Escape double vertical bars (that mean display one vertical bar)\r\n\t\tformat = format.replace(\"||\", $strings.PLACEHOLDER2);\r\n\r\n\t\t// Split it up and deal with different formats\r\n\t\tlet parts = format.split(\"|\");\r\n\t\tinfo.positive.source = parts[0];\r\n\r\n\t\tif (typeof parts[2] === \"undefined\") {\r\n\t\t\tinfo.zero = info.positive;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tinfo.zero.source = parts[2];\r\n\t\t}\r\n\r\n\t\tif (typeof parts[1] === \"undefined\") {\r\n\t\t\tinfo.negative = info.positive;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tinfo.negative.source = parts[1];\r\n\t\t}\r\n\r\n\t\t// Parse each\r\n\t\t$object.each(info, (part, item) => {\r\n\t\t\t// Already parsed\r\n\t\t\tif (item.parsed) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Check cached\r\n\t\t\tif (typeof this.getCache(item.source) !== \"undefined\") {\r\n\t\t\t\tinfo[part] = this.getCache(item.source);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Begin parsing\r\n\t\t\tlet partFormat: string = item.source;\r\n\r\n\t\t\t// Check for [] directives\r\n\t\t\tlet dirs: string[] | null = [];\r\n\t\t\tdirs = item.source.match(/^\\[([^\\]]*)\\]/);\r\n\t\t\tif (dirs && dirs.length && dirs[0] !== \"\") {\r\n\t\t\t\tpartFormat = item.source.substr(dirs[0].length);\r\n\t\t\t\titem.color = dirs[1];\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// Let TextFormatter split into chunks\r\n\t\t\tlet chunks: ITextChunk[] = getTextFormatter().chunk(partFormat, true);\r\n\t\t\tfor (let i: number = 0; i < chunks.length; i++) {\r\n\t\t\t\tlet chunk: ITextChunk = chunks[i];\r\n\r\n\t\t\t\t// replace back double vertical bar\r\n\t\t\t\tchunk.text = chunk.text.replace($strings.PLACEHOLDER2, \"|\");\r\n\r\n\t\t\t\tif (chunk.type === \"value\") {\r\n\r\n\t\t\t\t\t// Just \"Duration\"?\r\n\t\t\t\t\t// if (chunk.text.toLowerCase() === \"duration\") {\r\n\t\t\t\t\t// \tchunk.text = durationFormat;\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\t// Check for \"a\" (absolute) modifier\r\n\t\t\t\t\tif (chunk.text.match(/[yYMdDwhHKkmsSn]+a/)) {\r\n\t\t\t\t\t\titem.absolute = true;\r\n\t\t\t\t\t\tchunk.text = chunk.text.replace(/([yYMdDwhHKkmsSn]+)a/, \"$1\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Find all possible parts\r\n\t\t\t\t\tlet matches = chunk.text.match(/y+|Y+|M+|d+|D+|w+|h+|H+|K+|k+|m+|s+|S+|n+/g);\r\n\r\n\t\t\t\t\tif (matches) {\r\n\t\t\t\t\t\t// Populate template\r\n\t\t\t\t\t\tfor (let x = 0; x < matches.length; x++) {\r\n\t\t\t\t\t\t\t// Is it an alias?\r\n\t\t\t\t\t\t\tif (!$type.hasValue(matches[x])) {\r\n\t\t\t\t\t\t\t\tmatches[x] = this._unitAliases[matches[x]];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\titem.parts.push(matches[x]);\r\n\t\t\t\t\t\t\tchunk.text = chunk.text.replace(matches[x], $strings.PLACEHOLDER);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Apply to template\r\n\t\t\t\titem.template += chunk.text;\r\n\t\t\t}\r\n\r\n\t\t\t// Apply style formatting\r\n\t\t\t//item.template = getTextFormatter().format(item.template, this.outputFormat);\r\n\r\n\t\t\t// Save cache\r\n\t\t\tthis.setCache(item.source, item);\r\n\r\n\t\t\t// Mark this as parsed\r\n\t\t\titem.parsed = true;\r\n\t\t});\r\n\r\n\t\t// Save cache (the whole thing)\r\n\t\tthis.setCache(format, info);\r\n\r\n\t\treturn info;\r\n\t}\r\n\r\n\t/**\r\n\t * Applies parsed format to a numeric value.\r\n\t *\r\n\t * @param value Value\r\n\t * @param details Parsed format as returned by {parseFormat}\r\n\t * @return Formatted duration\r\n\t */\r\n\tprotected applyFormat(value: number, details: any): string {\r\n\r\n\t\t// Use absolute values\r\n\t\tlet negative: boolean = !details.absolute && (value < this._negativeBase);\r\n\t\tvalue = Math.abs(value);\r\n\r\n\t\t// Recalculate to milliseconds\r\n\t\tlet tstamp: number = this.toTimeStamp(value, details.baseUnit);\r\n\r\n\t\t// Init return value\r\n\t\tlet res: string = details.template;\r\n\r\n\t\t// Iterate through duration parts\r\n\t\tfor (let i = 0, len = details.parts.length; i < len; i++) {\r\n\r\n\t\t\t// Gather the part\r\n\t\t\tlet part: string = details.parts[i];\r\n\t\t\tlet unit: TimeUnit = this.toTimeUnit(part.substr(0, 1));\r\n\t\t\tlet digits: number = part.length;\r\n\r\n\t\t\t// Calculate current unit value\r\n\t\t\tlet ints: number = Math.floor(tstamp / this._unitValues[unit]);\r\n\t\t\tres = res.replace($strings.PLACEHOLDER, $utils.padString(ints, digits, \"0\"));\r\n\r\n\t\t\t// Reduce timestamp\r\n\t\t\ttstamp -= ints * this._unitValues[unit];\r\n\t\t}\r\n\r\n\t\t// Reapply negative sign\r\n\t\tif (negative) {\r\n\t\t\tres = \"-\" + res;\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts numeric value to timestamp in milliseconds.\r\n\t *\r\n\t * @param value A source value\r\n\t * @param baseUnit Base unit the source value is in: \"q\", \"s\", \"i\", \"h\", \"d\", \"w\", \"m\", \"y\"\r\n\t * @return Value representation as a timestamp in milliseconds\r\n\t */\r\n\tpublic toTimeStamp(value: number, baseUnit: TimeUnit): number {\r\n\t\treturn value * this._unitValues[baseUnit];\r\n\t}\r\n\r\n\tprotected toTimeUnit(code: string): Optional<TimeUnit> {\r\n\t\tswitch (code) {\r\n\t\t\tcase \"S\":\r\n\t\t\t\treturn \"millisecond\";\r\n\t\t\tcase \"s\":\r\n\t\t\t\treturn \"second\";\r\n\t\t\tcase \"m\":\r\n\t\t\t\treturn \"minute\";\r\n\t\t\tcase \"h\":\r\n\t\t\t\treturn \"hour\";\r\n\t\t\tcase \"d\":\r\n\t\t\t\treturn \"day\";\r\n\t\t\tcase \"w\":\r\n\t\t\t\treturn \"week\";\r\n\t\t\tcase \"M\":\r\n\t\t\t\treturn \"month\";\r\n\t\t\tcase \"y\":\r\n\t\t\t\treturn \"year\";\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Invalidates the parent [[Sprite]] object.\r\n\t */\r\n\tprotected invalidateSprite(): void {\r\n\t\tif (this.sprite) {\r\n\t\t\tthis.sprite.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Base unit the values are in.\r\n\t *\r\n\t * A base unit will be used to recalculate the numeric value to millisecond\r\n\t * timestamps.\r\n\t *\r\n\t * Available options:\r\n\t *\r\n\t * * \"millisecond\"\r\n\t * * \"second\"\r\n\t * * \"minute\"\r\n\t * * \"hour\"\r\n\t * * \"day\"\r\n\t * * \"week\"\r\n\t * * \"month\"\r\n\t * * \"year\"\r\n\t *\r\n\t * @default \"s\"\r\n\t * @param baseUnit A base unit\r\n\t */\r\n\tpublic set baseUnit(baseUnit: TimeUnit) {\r\n\t\tthis._baseUnit = baseUnit;\r\n\t\tthis.invalidateSprite();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Base unit\r\n\t */\r\n\tpublic get baseUnit(): TimeUnit {\r\n\t\treturn this._baseUnit;\r\n\t}\r\n\r\n\t/**\r\n\t * Setter for output format: \"svg\" or \"html.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Output format\r\n\t */\r\n\tpublic set outputFormat(outputFormat: string) {\r\n\t\tthis._outputFormat = outputFormat.toLowerCase();\r\n\t\tthis.invalidateSprite();\r\n\t}\r\n\r\n\t/**\r\n\t * Getter for output format.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Output format\r\n\t */\r\n\tpublic get outputFormat(): string {\r\n\t\treturn this._outputFormat;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns appropriate default format for the value.\r\n\t *\r\n\t * If `maxValue` is sepcified, it will use that value to determine the time\r\n\t * unit for the format.\r\n\t *\r\n\t * For example if your `baseUnit` is `\"second\"` and you pass in `10`, you\r\n\t * will get `\"10\"`.\r\n\t *\r\n\t * However, you might want it to be formatted in the context of bigger scale,\r\n\t * say 10 minutes (600 seconds). If you pass in `600` as `maxValue`, all\r\n\t * values, including small ones will use format with minutes, e.g.:\r\n\t * `00:10`, `00:50`, `12: 30`, etc.\r\n\t *\r\n\t * @param value Value to format\r\n\t * @param maxValue Maximum value to be used to determine format\r\n\t * @param baseUnit Base unit of the value\r\n\t * @return Format\r\n\t */\r\n\tpublic getFormat(value: number, maxValue?: number, baseUnit?: TimeUnit): string {\r\n\r\n\t\t// Is format override set?\r\n\t\tif ($type.hasValue(this.durationFormat)) {\r\n\t\t\treturn this.durationFormat;\r\n\t\t}\r\n\r\n\t\t// Get base unit\r\n\t\tif (!baseUnit) {\r\n\t\t\tbaseUnit = this.baseUnit;\r\n\t\t}\r\n\r\n\t\tif ($type.hasValue(maxValue) && value != maxValue) {\r\n\t\t\tvalue = Math.abs(value);\r\n\t\t\tmaxValue = Math.abs(maxValue);\r\n\t\t\tlet maxUnit = this.getValueUnit($math.max(value, maxValue), baseUnit);\r\n\t\t\t//let diffUnit = this.getValueUnit(Math.abs(maxValue - value), baseUnit);\r\n\t\t\t//console.log(maxUnit, diffUnit);\r\n\t\t\treturn this.durationFormats[baseUnit][maxUnit];\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet unit = this.getValueUnit(value, baseUnit);\r\n\t\t\treturn this.durationFormats[baseUnit][unit];\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns value's closest denominator time unit, e.g 100 seconds is\r\n\t * `\"minute\"`, while 59 seconds would still be `second`.\r\n\t *\r\n\t * @param value Source duration value\r\n\t * @param baseUnit Base unit\r\n\t * @return Denominator\r\n\t */\r\n\tpublic getValueUnit(value: number, baseUnit?: TimeUnit): TimeUnit {\r\n\r\n\t\t// Get base unit\r\n\t\tif (!baseUnit) {\r\n\t\t\tbaseUnit = this.baseUnit;\r\n\t\t}\r\n\r\n\t\t// Convert to milliseconds\r\n\t\tlet currentUnit: TimeUnit;\r\n\t\tlet ms = this.getMilliseconds(value, baseUnit);\r\n\t\t$object.eachContinue(this._unitValues, (key, val) => {\r\n\t\t\tif (key == baseUnit || currentUnit) {\r\n\t\t\t\tlet num = ms / val;\r\n\t\t\t\tif (num <= 1) {\r\n\t\t\t\t\tif (!currentUnit) {\r\n\t\t\t\t\t\tcurrentUnit = key;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tcurrentUnit = key;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\treturn currentUnit;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts value to milliseconds according to `baseUnit`.\r\n\t *\r\n\t * @param value Source duration value\r\n\t * @param baseUnit Base unit\r\n\t * @return Value in milliseconds\r\n\t */\r\n\tpublic getMilliseconds(value: number, baseUnit?: TimeUnit): number {\r\n\r\n\t\t// Get base unit\r\n\t\tif (!baseUnit) {\r\n\t\t\tbaseUnit = this.baseUnit;\r\n\t\t}\r\n\r\n\t\treturn value * this._unitValues[baseUnit];\r\n\t}\r\n\r\n\t/**\r\n\t * If set, this format will be used instead of the one determined dynamically\r\n\t * based on the basedUnit and range of values.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/} Available fomatting codes\r\n\t * @param value Format\r\n\t */\r\n\tpublic set durationFormat(value: string) {\r\n\t\tif (this._durationFormat != value) {\r\n\t\t\tthis._durationFormat = value;\r\n\t\t\tthis.invalidateSprite();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Format\r\n\t */\r\n\tpublic get durationFormat(): Optional<string> {\r\n\t\treturn this._durationFormat;\r\n\t}\r\n\r\n\t/**\r\n\t * Duration formats for various combination of base units.\r\n\t *\r\n\t * @param value Formats\r\n\t */\r\n\tpublic set durationFormats(value: Partial<Record<TimeUnit, Partial<Record<TimeUnit, string>>>>) {\r\n\t\tthis._durationFormats = value;\r\n\t\tthis.invalidateSprite();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Formats\r\n\t */\r\n\tpublic get durationFormats(): Partial<Record<TimeUnit, Partial<Record<TimeUnit, string>>>> {\r\n\t\tif (!this._durationFormats) {\r\n\t\t\tthis._durationFormats = {\r\n\t\t\t\t\"millisecond\": {\r\n\t\t\t\t\t\"millisecond\": this.language.translate(\"_duration_millisecond\"),\r\n\t\t\t\t\t\"second\": this.language.translate(\"_duration_millisecond_second\"),\r\n\t\t\t\t\t\"minute\": this.language.translate(\"_duration_millisecond_minute\"),\r\n\t\t\t\t\t\"hour\": this.language.translate(\"_duration_millisecond_hour\"),\r\n\t\t\t\t\t\"day\": this.language.translate(\"_duration_millisecond_day\"),\r\n\t\t\t\t\t\"week\": this.language.translate(\"_duration_millisecond_week\"),\r\n\t\t\t\t\t\"month\": this.language.translate(\"_duration_millisecond_month\"),\r\n\t\t\t\t\t\"year\": this.language.translate(\"_duration_millisecond_year\")\r\n\t\t\t\t},\r\n\t\t\t\t\"second\": {\r\n\t\t\t\t\t\"second\": this.language.translate(\"_duration_second\"),\r\n\t\t\t\t\t\"minute\": this.language.translate(\"_duration_second_minute\"),\r\n\t\t\t\t\t\"hour\": this.language.translate(\"_duration_second_hour\"),\r\n\t\t\t\t\t\"day\": this.language.translate(\"_duration_second_day\"),\r\n\t\t\t\t\t\"week\": this.language.translate(\"_duration_second_week\"),\r\n\t\t\t\t\t\"month\": this.language.translate(\"_duration_second_month\"),\r\n\t\t\t\t\t\"year\": this.language.translate(\"_duration_second_year\")\r\n\t\t\t\t},\r\n\t\t\t\t\"minute\": {\r\n\t\t\t\t\t\"minute\": this.language.translate(\"_duration_minute\"),\r\n\t\t\t\t\t\"hour\": this.language.translate(\"_duration_minute_hour\"),\r\n\t\t\t\t\t\"day\": this.language.translate(\"_duration_minute_day\"),\r\n\t\t\t\t\t\"week\": this.language.translate(\"_duration_minute_week\"),\r\n\t\t\t\t\t\"month\": this.language.translate(\"_duration_minute_month\"),\r\n\t\t\t\t\t\"year\": this.language.translate(\"_duration_minute_year\")\r\n\t\t\t\t},\r\n\t\t\t\t\"hour\": {\r\n\t\t\t\t\t\"hour\": this.language.translate(\"_duration_hour\"),\r\n\t\t\t\t\t\"day\": this.language.translate(\"_duration_hour_day\"),\r\n\t\t\t\t\t\"week\": this.language.translate(\"_duration_hour_week\"),\r\n\t\t\t\t\t\"month\": this.language.translate(\"_duration_hour_month\"),\r\n\t\t\t\t\t\"year\": this.language.translate(\"_duration_hour_year\")\r\n\t\t\t\t},\r\n\t\t\t\t\"day\": {\r\n\t\t\t\t\t\"day\": this.language.translate(\"_duration_day\"),\r\n\t\t\t\t\t\"week\": this.language.translate(\"_duration_day_week\"),\r\n\t\t\t\t\t\"month\": this.language.translate(\"_duration_day_month\"),\r\n\t\t\t\t\t\"year\": this.language.translate(\"_duration_day_year\")\r\n\t\t\t\t},\r\n\t\t\t\t\"week\": {\r\n\t\t\t\t\t\"week\": this.language.translate(\"_duration_week\"),\r\n\t\t\t\t\t\"month\": this.language.translate(\"_duration_week_month\"),\r\n\t\t\t\t\t\"year\": this.language.translate(\"_duration_week_year\")\r\n\t\t\t\t},\r\n\t\t\t\t\"month\": {\r\n\t\t\t\t\t\"month\": this.language.translate(\"_duration_month\"),\r\n\t\t\t\t\t\"year\": this.language.translate(\"_duration_month_year\")\r\n\t\t\t\t},\r\n\t\t\t\t\"year\": {\r\n\t\t\t\t\t\"year\": this.language.translate(\"_duration_year\")\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn this._durationFormats;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DurationFormatter\"] = DurationFormatter;\r\n","/**\r\n * Number formatting-related functionality.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { Language } from \"../utils/Language\";\r\nimport { BaseObject } from \"../Base\";\r\nimport { ITextChunk, getTextFormatter } from \"../formatters/TextFormatter\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $strings from \"../utils/Strings\";\r\nimport * as $object from \"../utils/Object\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $type from \"../utils/Type\";\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport interface INumberSuffix {\r\n\tnumber: number;\r\n\tsuffix: string;\r\n}\r\n\r\n/**\r\n * NumberFormatter class. Formats numbers according to specified formats.\r\n *\r\n * @todo Apply translations to suffixes/prefixes\r\n */\r\nexport class NumberFormatter extends BaseObject {\r\n\r\n\t/**\r\n\t * A base value for negative numbers. Will treat all numbers below this value\r\n\t * as negative numbers.\r\n\t */\r\n\tprotected _negativeBase: number = 0;\r\n\r\n\t/**\r\n\t * Holds number format.\r\n\t *\r\n\t * @default #,###.#####\r\n\t */\r\n\tprotected _numberFormat: string | Intl.NumberFormatOptions = \"#,###.#####\";\r\n\r\n\t/**\r\n\t * Locales to use when formatting using Intl.NumberFormatter\r\n\t */\r\n\tprotected _intlLocales: string;\r\n\r\n\t/**\r\n\t * Output format to produce. If the format calls for applying color to the\r\n\t * formatted value, this setting will determine what markup to use: SVG or\r\n\t * HTML.\r\n\t *\r\n\t * Available options: svg, html.\r\n\t *\r\n\t * @default \"svg\"\r\n\t */\r\n\tprotected _outputFormat: string = \"svg\";\r\n\r\n\t/**\r\n\t * Holds big number prefixes to apply to numbers if `a` modifier is used in\r\n\t * format.\r\n\t */\r\n\tprotected _bigNumberPrefixes: INumberSuffix[];\r\n\r\n\t/**\r\n\t * Holds small number prefixes to apply to numbers if `a` modifier is used in\r\n\t * format.\r\n\t */\r\n\tprotected _smallNumberPrefixes: INumberSuffix[];\r\n\r\n\t/**\r\n\t * Any number smaller than this will be considered \"small\" number, which will\r\n\t * trigger special formatting if \"a\" format modifier is used.\r\n\t */\r\n\tprotected _smallNumberThreshold: number = 1.00;\r\n\r\n\t/**\r\n\t * Holds prefixes to apply to data size numbers if `b` modifier is used in\r\n\t * format.\r\n\t */\r\n\tprotected _bytePrefixes: INumberSuffix[];\r\n\r\n\t/**\r\n\t * Holds reference to parent [[Sprite]] object.\r\n\t */\r\n\tpublic sprite: $type.Optional<Sprite>;\r\n\r\n\t/**\r\n\t * Holds reference to [[Language]] object.\r\n\t */\r\n\tprivate _language: $type.Optional<Language>;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"NumberFormatter\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\tpublic dispose(): void {\r\n\t\tsuper.dispose();\r\n\r\n\t\tif (this.language) {\r\n\t\t\tthis.language.dispose();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A reference to [[Language]] instance.\r\n\t *\r\n\t * Formatter will use language to translate various items, like number\r\n\t * suffixes, etc.\r\n\t *\r\n\t * @param value Language\r\n\t */\r\n\tpublic set language(value: Language) {\r\n\t\tthis._language = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Language\r\n\t */\r\n\tpublic get language(): Language {\r\n\t\tif (!this._language) {\r\n\t\t\tif (this.sprite) {\r\n\t\t\t\tthis._language = this.sprite.language;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis._language = new Language;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this._language;\r\n\t}\r\n\r\n\t/**\r\n\t * Formats the number according to specific format.\r\n\t *\r\n\t * @param value Value to format\r\n\t * @param format Format to apply\r\n\t * @return Formatted number\r\n\t */\r\n\tpublic format(value: number | string, format?: string | Intl.NumberFormatOptions): string {\r\n\r\n\t\t// no format passed in or \"Number\"\r\n\t\tif (typeof format === \"undefined\" || ($type.isString(format) && format.toLowerCase() === \"number\")) {\r\n\t\t\tformat = this._numberFormat;\r\n\t\t}\r\n\r\n\t\t// Init return value\r\n\t\tlet formatted;\r\n\r\n\t\t// Cast to number just in case\r\n\t\t// TODO: maybe use better casting\r\n\t\tlet source: number = Number(value);\r\n\r\n\t\t// Is it a built-in format or Intl.NumberFormatOptions\r\n\t\tif (format instanceof Object) {\r\n\r\n\t\t\tif (this.intlLocales) {\r\n\t\t\t\treturn new Intl.NumberFormat(this.intlLocales, <Intl.NumberFormatOptions>format).format(source);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn new Intl.NumberFormat(undefined, <Intl.NumberFormatOptions>format).format(source);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\telse {\r\n\r\n\t\t\t// Clean format\r\n\t\t\tformat = $utils.cleanFormat(format);\r\n\r\n\t\t\t// Get format info (it will also deal with parser caching)\r\n\t\t\tlet info = this.parseFormat(format, this.language);\r\n\r\n\t\t\t// format and replace the number\r\n\t\t\tlet details;\r\n\t\t\tif (source > this._negativeBase) {\r\n\t\t\t\tdetails = info.positive;\r\n\t\t\t}\r\n\t\t\telse if (source < this._negativeBase) {\r\n\t\t\t\tdetails = info.negative;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tdetails = info.zero;\r\n\t\t\t}\r\n\r\n\t\t\t// Format\r\n\t\t\tformatted = details.template.split($strings.PLACEHOLDER).join(this.applyFormat(source, details));\r\n\r\n\t\t}\r\n\r\n\t\treturn formatted;\r\n\t}\r\n\r\n\t/**\r\n\t * Parses supplied format into structured object which can be used to format\r\n\t * the number.\r\n\t *\r\n\t * @param format Format string, i.e. \"#,###.00\"\r\n\t * @param language Language\r\n\t */\r\n\tprotected parseFormat(format: string, language: Language): any {\r\n\r\n\t\t// Check cache\r\n\t\tlet cached = this.getCache(format);\r\n\t\tif ($type.hasValue(cached)) {\r\n\t\t\treturn cached;\r\n\t\t}\r\n\r\n\t\t// init format parse info holder\r\n\t\tlet info: any = {\r\n\t\t\t\"positive\": {\r\n\t\t\t\t\"thousands\": {\r\n\t\t\t\t\t\"active\": -1,\r\n\t\t\t\t\t\"passive\": -1,\r\n\t\t\t\t\t\"interval\": -1,\r\n\t\t\t\t\t\"separator\": language.translateEmpty(\"_thousandSeparator\")\r\n\t\t\t\t},\r\n\t\t\t\t\"decimals\": {\r\n\t\t\t\t\t\"active\": -1,\r\n\t\t\t\t\t\"passive\": -1,\r\n\t\t\t\t\t\"separator\": language.translateEmpty(\"_decimalSeparator\")\r\n\t\t\t\t},\r\n\t\t\t\t\"template\": \"\",\r\n\t\t\t\t\"source\": \"\",\r\n\t\t\t\t\"parsed\": false\r\n\t\t\t},\r\n\t\t\t\"negative\": {\r\n\t\t\t\t\"thousands\": {\r\n\t\t\t\t\t\"active\": -1,\r\n\t\t\t\t\t\"passive\": -1,\r\n\t\t\t\t\t\"interval\": -1,\r\n\t\t\t\t\t\"separator\": language.translateEmpty(\"_thousandSeparator\")\r\n\t\t\t\t},\r\n\t\t\t\t\"decimals\": {\r\n\t\t\t\t\t\"active\": -1,\r\n\t\t\t\t\t\"passive\": -1,\r\n\t\t\t\t\t\"separator\": language.translateEmpty(\"_decimalSeparator\")\r\n\t\t\t\t},\r\n\t\t\t\t\"template\": \"\",\r\n\t\t\t\t\"source\": \"\",\r\n\t\t\t\t\"parsed\": false\r\n\t\t\t},\r\n\t\t\t\"zero\": {\r\n\t\t\t\t\"thousands\": {\r\n\t\t\t\t\t\"active\": -1,\r\n\t\t\t\t\t\"passive\": -1,\r\n\t\t\t\t\t\"interval\": -1,\r\n\t\t\t\t\t\"separator\": language.translateEmpty(\"_thousandSeparator\")\r\n\t\t\t\t},\r\n\t\t\t\t\"decimals\": {\r\n\t\t\t\t\t\"active\": -1,\r\n\t\t\t\t\t\"passive\": -1,\r\n\t\t\t\t\t\"separator\": language.translateEmpty(\"_decimalSeparator\")\r\n\t\t\t\t},\r\n\t\t\t\t\"template\": \"\",\r\n\t\t\t\t\"source\": \"\",\r\n\t\t\t\t\"parsed\": false\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Escape double vertical bars (that mean display one vertical bar)\r\n\t\tformat = format.replace(\"||\", $strings.PLACEHOLDER2);\r\n\r\n\t\t// Split it up and deal with different formats\r\n\t\tlet parts = format.split(\"|\");\r\n\t\tinfo.positive.source = parts[0];\r\n\r\n\t\tif (typeof parts[2] === \"undefined\") {\r\n\t\t\tinfo.zero = info.positive;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tinfo.zero.source = parts[2];\r\n\t\t}\r\n\r\n\t\tif (typeof parts[1] === \"undefined\") {\r\n\t\t\tinfo.negative = info.positive;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tinfo.negative.source = parts[1];\r\n\t\t}\r\n\r\n\t\t// Parse each\r\n\t\t$object.each(info, (part, item) => {\r\n\t\t\t// Already parsed\r\n\t\t\tif (item.parsed) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Check cached\r\n\t\t\tif (typeof this.getCache(item.source) !== \"undefined\") {\r\n\t\t\t\tinfo[part] = this.getCache(item.source);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Begin parsing\r\n\t\t\tlet partFormat: string = item.source;\r\n\r\n\t\t\t// Just \"Number\"?\r\n\t\t\tif (partFormat.toLowerCase() === \"number\") {\r\n\t\t\t\tpartFormat = $type.isString(this._numberFormat) ? this._numberFormat : \"#,###.#####\";\r\n\t\t\t}\r\n\r\n\t\t\t// Let TextFormatter split into chunks\r\n\t\t\tlet chunks: ITextChunk[] = getTextFormatter().chunk(partFormat, true);\r\n\t\t\tfor (let i: number = 0; i < chunks.length; i++) {\r\n\t\t\t\tlet chunk: ITextChunk = chunks[i];\r\n\r\n\t\t\t\t// replace back double vertical bar\r\n\t\t\t\tchunk.text = chunk.text.replace($strings.PLACEHOLDER2, \"|\");\r\n\r\n\t\t\t\tif (chunk.type === \"value\") {\r\n\t\t\t\t\t// Parse format\r\n\r\n\t\t\t\t\t// Look for codes\r\n\t\t\t\t\tlet matches: string[] | null = chunk.text.match(/[#0.,]+[ ]?[abesABES%!]?[abesABES‰!]?/);\r\n\r\n\t\t\t\t\tif (matches) {\r\n\t\t\t\t\t\tif (matches === null || matches[0] === \"\") {\r\n\t\t\t\t\t\t\t// no codes here - assume string\r\n\t\t\t\t\t\t\t// nothing to do here\r\n\t\t\t\t\t\t\titem.template += chunk.text;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\r\n\t\t\t\t\t\t\t// look for the format modifiers at the end\r\n\t\t\t\t\t\t\tlet mods: string[] | null = matches[0].match(/[abesABES%‰!]{2}|[abesABES%‰]{1}$/);\r\n\r\n\t\t\t\t\t\t\tif (mods) {\r\n\t\t\t\t\t\t\t\titem.mod = mods[0].toLowerCase();\r\n\t\t\t\t\t\t\t\titem.modSpacing = matches[0].match(/[ ]{1}[abesABES%‰!]{1}$/) ? true : false;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t// break the format up\r\n\t\t\t\t\t\t\tlet a = matches[0].split(\".\");\r\n\r\n\t\t\t\t\t\t\t// Deal with thousands\r\n\t\t\t\t\t\t\tif (a[0] === \"\") {\r\n\t\t\t\t\t\t\t\t// No directives for thousands\r\n\t\t\t\t\t\t\t\t// Leave default settings (no formatting)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t// Counts\r\n\t\t\t\t\t\t\t\titem.thousands.active = (a[0].match(/0/g) || []).length;\r\n\t\t\t\t\t\t\t\titem.thousands.passive = (a[0].match(/\\#/g) || []).length + item.thousands.active;\r\n\r\n\t\t\t\t\t\t\t\t// Separator interval\r\n\t\t\t\t\t\t\t\tlet b = a[0].split(\",\");\r\n\t\t\t\t\t\t\t\tif (b.length === 1) {\r\n\t\t\t\t\t\t\t\t\t// No thousands separators\r\n\t\t\t\t\t\t\t\t\t// Do nothing\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t// Use length fo the last chunk as thousands length\r\n\t\t\t\t\t\t\t\t\titem.thousands.interval = $type.getValue(b.pop()).length;\r\n\r\n\t\t\t\t\t\t\t\t\tif (item.thousands.interval === 0) {\r\n\t\t\t\t\t\t\t\t\t\titem.thousands.interval = -1;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t// Deal with decimals\r\n\t\t\t\t\t\t\tif (typeof (a[1]) === \"undefined\") {\r\n\t\t\t\t\t\t\t\t// No directives for decimals\r\n\t\t\t\t\t\t\t\t// Leave at defaults (no formatting)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t// Counts\r\n\t\t\t\t\t\t\t\titem.decimals.active = (a[1].match(/0/g) || []).length;\r\n\t\t\t\t\t\t\t\titem.decimals.passive = (a[1].match(/\\#/g) || []).length + item.decimals.active;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t// Add special code to template\r\n\t\t\t\t\t\t\titem.template += chunk.text.split(matches[0]).join($strings.PLACEHOLDER);\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// Quoted string - take it as it is\r\n\t\t\t\t\titem.template += chunk.text;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Apply style formatting\r\n\t\t\t//item.template = getTextFormatter().format(item.template, this.outputFormat);\r\n\r\n\t\t\t// Save cache\r\n\t\t\tthis.setCache(item.source, item);\r\n\r\n\t\t\t// Mark this as parsed\r\n\t\t\titem.parsed = true;\r\n\r\n\t\t});\r\n\r\n\t\t// Save cache (the whole thing)\r\n\t\tthis.setCache(format, info);\r\n\r\n\t\treturn info;\r\n\t}\r\n\r\n\t/**\r\n\t * Applies parsed format to a numeric value.\r\n\t *\r\n\t * @param value Value\r\n\t * @param details Parsed format as returned by parseFormat()\r\n\t * @return Formatted number\r\n\t */\r\n\tprotected applyFormat(value: number, details: any): string {\r\n\r\n\t\t// Use absolute values\r\n\t\tlet negative: boolean = value < 0;\r\n\t\tvalue = Math.abs(value);\r\n\r\n\t\t// Recalculate according to modifier\r\n\t\tlet prefix: string = \"\", suffix: string = \"\";\r\n\t\tlet mods: string[] = details.mod ? details.mod.split(\"\") : [];\r\n\t\tif (mods.indexOf(\"b\") !== -1) {\r\n\t\t\tlet a = this.applyPrefix(value, this.bytePrefixes, mods.indexOf(\"!\") !== -1);\r\n\t\t\tvalue = a[0];\r\n\t\t\tprefix = a[1];\r\n\t\t\tsuffix = a[2];\r\n\t\t\tif (details.modSpacing) {\r\n\t\t\t\tsuffix = \" \" + suffix;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (mods.indexOf(\"a\") !== -1) {\r\n\t\t\tlet a = this.applyPrefix(value, value < this.smallNumberThreshold ? this.smallNumberPrefixes : this.bigNumberPrefixes, mods.indexOf(\"!\") !== -1);\r\n\t\t\tvalue = a[0];\r\n\t\t\tprefix = a[1];\r\n\t\t\tsuffix = a[2];\r\n\t\t\tif (details.modSpacing) {\r\n\t\t\t\tsuffix = \" \" + suffix;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (mods.indexOf(\"%\") !== -1) {\r\n\t\t\tlet ol = value.toString().length;\r\n\t\t\tvalue *= 100;\r\n\t\t\tvalue = parseFloat(value.toPrecision(ol + 2));\r\n\t\t\tsuffix = \"%\";\r\n\t\t}\r\n\t\telse if (mods.indexOf(\"‰\") !== -1) {\r\n\t\t\tlet ol = value.toString().length;\r\n\t\t\tvalue *= 1000;\r\n\t\t\tvalue = parseFloat(value.toPrecision(ol + 3));\r\n\t\t\tsuffix = \"‰\";\r\n\t\t}\r\n\r\n\t\t// Round to passive\r\n\t\tif (mods.indexOf(\"e\") !== -1) {\r\n\t\t\t// convert the value to exponential\r\n\t\t\tlet exp: string[];\r\n\t\t\tif (details.decimals.passive >= 0) {\r\n\t\t\t\texp = value.toExponential(details.decimals.passive).split(\"e\");\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\texp = value.toExponential().split(\"e\");\r\n\t\t\t}\r\n\t\t\tvalue = Number(exp[0]);\r\n\t\t\tsuffix = \"e\" + exp[1];\r\n\t\t\tif (details.modSpacing) {\r\n\t\t\t\tsuffix = \" \" + suffix;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (details.decimals.passive === 0) {\r\n\t\t\tvalue = Math.round(value);\r\n\t\t}\r\n\t\telse if (details.decimals.passive > 0) {\r\n\t\t\tlet d: number = Math.pow(10, details.decimals.passive);\r\n\t\t\tvalue = Math.round(value * d) / d;\r\n\t\t}\r\n\r\n\t\t// Init return value\r\n\t\tlet res: string = \"\";\r\n\r\n\t\t// Calc integer and decimal parts\r\n\t\tlet a = $utils.numberToString(value).split(\".\");\r\n\r\n\t\t// Format integers\r\n\t\tlet ints = a[0];\r\n\r\n\t\t// Pad integers to active length\r\n\t\tif (ints.length < details.thousands.active) {\r\n\t\t\tints = Array(details.thousands.active - ints.length + 1).join(\"0\") + ints;\r\n\t\t}\r\n\r\n\t\t// Insert thousands separators\r\n\t\tif (details.thousands.interval > 0) {\r\n\t\t\tlet ip: string[] = [];\r\n\t\t\tlet intsr: string = ints.split(\"\").reverse().join(\"\");\r\n\t\t\tfor (let i = 0, len = ints.length; i <= len; i += details.thousands.interval) {\r\n\t\t\t\tlet c: string = intsr.substr(i, details.thousands.interval).split(\"\").reverse().join(\"\");\r\n\t\t\t\tif (c !== \"\") {\r\n\t\t\t\t\tip.unshift(c);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tints = ip.join(details.thousands.separator);\r\n\t\t}\r\n\r\n\t\t// Add integers\r\n\t\tres += ints;\r\n\r\n\t\t// Add decimals\r\n\t\tif (a.length === 1) {\r\n\t\t\ta.push(\"\");\r\n\t\t}\r\n\t\tlet decs: string = a[1];\r\n\r\n\t\t// Fill zeros?\r\n\t\tif (decs.length < details.decimals.active) {\r\n\t\t\tdecs += Array(details.decimals.active - decs.length + 1).join(\"0\");\r\n\t\t}\r\n\r\n\t\tif (decs !== \"\") {\r\n\t\t\tres += details.decimals.separator + decs;\r\n\t\t}\r\n\r\n\t\t// Can't have empty return value\r\n\t\tif (res === \"\") {\r\n\t\t\tres = \"0\";\r\n\t\t}\r\n\r\n\t\t// Add minus sign back\r\n\t\tif (value !== 0 && negative && (mods.indexOf(\"s\") === -1)) {\r\n\t\t\tres = \"-\" + res;\r\n\t\t}\r\n\r\n\t\t// Add suffixes/prefixes\r\n\t\tif (prefix) {\r\n\t\t\tres = prefix + res;\r\n\t\t}\r\n\t\tif (suffix) {\r\n\t\t\tres += suffix;\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Chooses appropriate prefix and suffix based on the passed in rules.\r\n\t *\r\n\t * @param value Value\r\n\t * @param prefixes Prefix array\r\n\t * @param force Force application of a first prefix (@sice 4.5.4)\r\n\t * @return Result\r\n\t */\r\n\tprotected applyPrefix(value: number, prefixes: any[], force: boolean = false): any[] {\r\n\t\tlet newvalue = value;\r\n\t\tlet prefix = \"\";\r\n\t\tlet suffix = \"\";\r\n\t\tlet applied = false;\r\n\t\tlet k = 1;\r\n\r\n\t\tfor (let i = 0, len = prefixes.length; i < len; i++) {\r\n\t\t\tif (prefixes[i].number <= value) {\r\n\t\t\t\tif (prefixes[i].number === 0) {\r\n\t\t\t\t\tnewvalue = 0;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tnewvalue = value / prefixes[i].number;\r\n\t\t\t\t\tk = prefixes[i].number;\r\n\t\t\t\t}\r\n\t\t\t\tprefix = prefixes[i].prefix;\r\n\t\t\t\tsuffix = prefixes[i].suffix;\r\n\t\t\t\tapplied = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tif (!applied && force && prefixes.length && value != 0) {\r\n\t\t\t// Prefix was not applied. Use the first prefix.\r\n\t\t\tnewvalue = value / prefixes[0].number;\r\n\t\t\tprefix = prefixes[0].prefix;\r\n\t\t\tsuffix = prefixes[0].suffix;\r\n\t\t\tapplied = true;\r\n\t\t}\r\n\r\n\t\tif (applied) {\r\n\t\t\tnewvalue = parseFloat(\r\n\t\t\t\tnewvalue.toPrecision(\r\n\t\t\t\t\tk.toString().length + Math.floor(newvalue).toString().replace(/[^0-9]*/g, \"\").length\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn [newvalue, prefix, suffix];\r\n\t}\r\n\r\n\t/**\r\n\t * Invalidates the parent [[Sprite]] object.\r\n\t */\r\n\tprotected invalidateSprite(): void {\r\n\t\tif (this.sprite) {\r\n\t\t\tthis.sprite.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Number format.\r\n\t *\r\n\t * @default \"#,###.#####\"\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n\t * @param format A format to use for number formatting\r\n\t */\r\n\tpublic set numberFormat(format: string | Intl.NumberFormatOptions) {\r\n\t\tthis._numberFormat = format;\r\n\t}\r\n\r\n\t/**\r\n\t * @return A format to use for number formatting\r\n\t */\r\n\tpublic get numberFormat(): string | Intl.NumberFormatOptions {\r\n\t\treturn this._numberFormat;\r\n\t}\r\n\r\n\t/**\r\n\t * Locales if you are using date formats in `Intl.NumberFormatOptions` syntax.\r\n\t * \r\n\t * @see (@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat) about using Intl for number formatting\r\n\t * @param value Locales\r\n\t */\r\n\tpublic set intlLocales(value: string) {\r\n\t\tthis._intlLocales = value;\r\n\t\tthis.invalidateSprite();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Date format\r\n\t */\r\n\tpublic get intlLocales(): string {\r\n\t\treturn this._intlLocales;\r\n\t}\r\n\r\n\t/**\r\n\t * Negative base for negative numbers.\r\n\t *\r\n\t * @default 0\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n\t * @param format A format to use for number formatting\r\n\t */\r\n\tpublic set negativeBase(value: number) {\r\n\t\tthis._negativeBase = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return A format to use for number formatting\r\n\t */\r\n\tpublic get negativeBase(): number {\r\n\t\treturn this._negativeBase;\r\n\t}\r\n\r\n\t/**\r\n\t * Prefixes for big numbers.\r\n\t *\r\n\t * It's an array of objects of number/prefix pairs.\r\n\t *\r\n\t * ```JSON\r\n\t * [\r\n\t * { \"number\": 1e+3, \"suffix\": \"K\" },\r\n\t * { \"number\": 1e+6, \"suffix\": \"M\" },\r\n\t * { \"number\": 1e+9, \"suffix\": \"G\" },\r\n\t * { \"number\": 1e+12, \"suffix\": \"T\" },\r\n\t * { \"number\": 1e+15, \"suffix\": \"P\" },\r\n\t * { \"number\": 1e+18, \"suffix\": \"E\" },\r\n\t * { \"number\": 1e+21, \"suffix\": \"Z\" },\r\n\t * { \"number\": 1e+24, \"suffix\": \"Y\" }\r\n\t * ]\r\n\t * ```\r\n\t *\r\n\t * If the number is bigger than the `number` ir will be converted to the\r\n\t * appropriate bigger number with prefix.\r\n\t *\r\n\t * E.g. as per above `1500` will be converted to `1.5K`.\r\n\t *\r\n\t * Please note that for this transformation to be enabled, you need to\r\n\t * enable it specific modifier in your format setting.\r\n\t *\r\n\t * The modifier for big/small number modification is \"a\":\r\n\t *\r\n\t * ```Text\r\n\t * {myfield.formatNumber(\"#,###.00a\")}\r\n\t * ```\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n\t * @param prefixes Prefixes for big numbers\r\n\t */\r\n\tpublic set bigNumberPrefixes(prefixes: INumberSuffix[]) {\r\n\t\tthis._bigNumberPrefixes = prefixes;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Prefixes for big numbers\r\n\t */\r\n\tpublic get bigNumberPrefixes(): INumberSuffix[] {\r\n\t\tif (!$type.hasValue(this._bigNumberPrefixes)) {\r\n\t\t\tthis._bigNumberPrefixes = [\r\n\t\t\t\t{ \"number\": 1e+3, \"suffix\": this.language.translate(\"_big_number_suffix_3\") },\r\n\t\t\t\t{ \"number\": 1e+6, \"suffix\": this.language.translate(\"_big_number_suffix_6\") },\r\n\t\t\t\t{ \"number\": 1e+9, \"suffix\": this.language.translate(\"_big_number_suffix_9\") },\r\n\t\t\t\t{ \"number\": 1e+12, \"suffix\": this.language.translate(\"_big_number_suffix_12\") },\r\n\t\t\t\t{ \"number\": 1e+15, \"suffix\": this.language.translate(\"_big_number_suffix_15\") },\r\n\t\t\t\t{ \"number\": 1e+18, \"suffix\": this.language.translate(\"_big_number_suffix_18\") },\r\n\t\t\t\t{ \"number\": 1e+21, \"suffix\": this.language.translate(\"_big_number_suffix_21\") },\r\n\t\t\t\t{ \"number\": 1e+24, \"suffix\": this.language.translate(\"_big_number_suffix_24\") }\r\n\t\t\t]\r\n\t\t}\r\n\t\treturn this._bigNumberPrefixes;\r\n\t}\r\n\r\n\t/**\r\n\t * Prefixes for big numbers.\r\n\t *\r\n\t * It's an array of objects of number/prefix pairs.\r\n\t *\r\n\t * ```JSON\r\n\t * [\r\n\t * { \"number\": 1e-24, \"suffix\": \"y\" },\r\n\t * { \"number\": 1e-21, \"suffix\": \"z\" },\r\n\t * { \"number\": 1e-18, \"suffix\": \"a\" },\r\n\t * { \"number\": 1e-15, \"suffix\": \"f\" },\r\n\t * { \"number\": 1e-12, \"suffix\": \"p\" },\r\n\t * { \"number\": 1e-9, \"suffix\": \"n\" },\r\n\t * { \"number\": 1e-6, \"suffix\": \"μ\" },\r\n\t * { \"number\": 1e-3, \"suffix\": \"m\" }\r\n\t * ]\r\n\t * ```\r\n\t *\r\n\t * If the number is smaller than the `number` ir will be converted to the\r\n\t * appropriate smaller number with prefix.\r\n\t *\r\n\t * E.g. as per above `0.0015` will be converted to `1.5m`.\r\n\t *\r\n\t * Please note that for this transformation to be enabled, you need to\r\n\t * enable it specific modifier in your format setting.\r\n\t *\r\n\t * The modifier for big/small number modification is \"a\":\r\n\t *\r\n\t * ```Text\r\n\t * {myfield.formatNumber(\"#,###.00a\")}\r\n\t * ```\r\n\t *\r\n\t * IMPORTANT: The order of the suffixes is important. The list must start\r\n\t * from the smallest number and work towards bigger ones.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n\t * @param prefixes Prefixes for small numbers\r\n\t */\r\n\tpublic set smallNumberPrefixes(prefixes: INumberSuffix[]) {\r\n\t\tthis._smallNumberPrefixes = prefixes;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Prefixes for small numbers\r\n\t */\r\n\tpublic get smallNumberPrefixes(): INumberSuffix[] {\r\n\t\tif (!$type.hasValue(this._smallNumberPrefixes)) {\r\n\t\t\tthis._smallNumberPrefixes = [\r\n\t\t\t\t{ \"number\": 1e-24, \"suffix\": this.language.translate(\"_small_number_suffix_24\") },\r\n\t\t\t\t{ \"number\": 1e-21, \"suffix\": this.language.translate(\"_small_number_suffix_21\") },\r\n\t\t\t\t{ \"number\": 1e-18, \"suffix\": this.language.translate(\"_small_number_suffix_18\") },\r\n\t\t\t\t{ \"number\": 1e-15, \"suffix\": this.language.translate(\"_small_number_suffix_15\") },\r\n\t\t\t\t{ \"number\": 1e-12, \"suffix\": this.language.translate(\"_small_number_suffix_12\") },\r\n\t\t\t\t{ \"number\": 1e-9, \"suffix\": this.language.translate(\"_small_number_suffix_9\") },\r\n\t\t\t\t{ \"number\": 1e-6, \"suffix\": this.language.translate(\"_small_number_suffix_6\") },\r\n\t\t\t\t{ \"number\": 1e-3, \"suffix\": this.language.translate(\"_small_number_suffix_3\") }\r\n\t\t\t]\r\n\t\t}\r\n\t\treturn this._smallNumberPrefixes;\r\n\t}\r\n\r\n\t/**\r\n\t * Any number smaller than this will be considered \"small\" number, which will\r\n\t * trigger special formatting if \"a\" format modifier is used.\r\n\t *\r\n\t * @since 4.6.8\r\n\t * @param value Small number threshold\r\n\t */\r\n\tpublic set smallNumberThreshold(value: number) {\r\n\t\tthis._smallNumberThreshold = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Small number threshold\r\n\t */\r\n\tpublic get smallNumberThreshold(): number {\r\n\t\treturn this._smallNumberThreshold;\r\n\t}\r\n\r\n\t/**\r\n\t * Basically the same as `bigNumberPrefixes`, except base for calculation\r\n\t * is not thousand but byte (1024).\r\n\t *\r\n\t * The modifier is \"b\".\r\n\t *\r\n\t * ```Text\r\n\t * {myfield.formatNumber(\"#,###.00b\")}\r\n\t * ```\r\n\t *\r\n\t * The above `2048` will change to `2K`.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n\t * @param prefixes Prefixes for byte-size formatting\r\n\t */\r\n\tpublic set bytePrefixes(prefixes: INumberSuffix[]) {\r\n\t\tthis._bytePrefixes = prefixes;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Prefixes for byte-size formatting\r\n\t */\r\n\tpublic get bytePrefixes(): INumberSuffix[] {\r\n\t\tif (!$type.hasValue(this._bytePrefixes)) {\r\n\t\t\tthis._bytePrefixes = [\r\n\t\t\t\t{ \"number\": 1, suffix: this.language.translate(\"_byte_suffix_B\") },\r\n\t\t\t\t{ \"number\": 1024, suffix: this.language.translate(\"_byte_suffix_KB\") },\r\n\t\t\t\t{ \"number\": 1048576, suffix: this.language.translate(\"_byte_suffix_MB\") },\r\n\t\t\t\t{ \"number\": 1073741824, suffix: this.language.translate(\"_byte_suffix_GB\") },\r\n\t\t\t\t{ \"number\": 1099511627776, suffix: this.language.translate(\"_byte_suffix_TB\") },\r\n\t\t\t\t{ \"number\": 1125899906842624, suffix: this.language.translate(\"_byte_suffix_PB\") }\r\n\t\t\t]\r\n\t\t}\r\n\t\treturn this._bytePrefixes;\r\n\t}\r\n\r\n\t/**\r\n\t * Ooutput format: \"svg\" or \"html\".\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Output format\r\n\t */\r\n\tpublic set outputFormat(outputFormat: string) {\r\n\t\tthis._outputFormat = outputFormat.toLowerCase();\r\n\t\tthis.invalidateSprite();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Output format\r\n\t */\r\n\tpublic get outputFormat(): string {\r\n\t\treturn this._outputFormat;\r\n\t}\r\n\r\n\t/**\r\n\t * Replaces brackets with temporary placeholders.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param text Input text\r\n\t * @return Escaped text\r\n\t */\r\n\tpublic escape(text: string): string {\r\n\t\treturn text.replace(\"||\", $strings.PLACEHOLDER2);\r\n\t}\r\n\r\n\t/**\r\n\t * Replaces placeholders back to brackets.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param text Escaped text\r\n\t * @return Unescaped text\r\n\t */\r\n\tpublic unescape(text: string): string {\r\n\t\treturn text.replace($strings.PLACEHOLDER2, \"|\");\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"NumberFormatter\"] = NumberFormatter;\r\n","/**\r\n * Handles formatting of pseudo-markup in text.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { AMElement } from \"../rendering/AMElement\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $strings from \"../utils/Strings\";\r\nimport * as $type from \"../utils/Type\";\r\n\r\n/**\r\n * Defines an interface for an object that holds a chunk of text.\r\n */\r\nexport interface ITextChunk {\r\n\r\n\t/**\r\n\t * Type of the chunk.\r\n\t */\r\n\t\"type\": \"value\" | \"text\" | \"format\" | \"image\",\r\n\r\n\t/**\r\n\t * Text.\r\n\t */\r\n\t\"text\": string\r\n\r\n}\r\n\r\n/**\r\n * A list of Adapters for [[TextFormatter]].\r\n */\r\nexport interface ITextFormatterAdapters {\r\n\r\n\t/**\r\n\t * Applied to each chunk of text when it is parsed and added to chunk list.\r\n\t */\r\n\tchunk: string\r\n\r\n}\r\n\r\n/**\r\n * Handles formatting of pseudo-markdown in text.\r\n *\r\n * @todo Encode < > in output\r\n * @todo Add more adapters\r\n * @important\r\n */\r\nexport class TextFormatter extends BaseObject {\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ITextFormatterAdapters;\r\n\r\n\t/**\r\n\t * Adapter.\r\n\t */\r\n\tpublic adapter = new Adapter<TextFormatter, ITextFormatterAdapters>(this);\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"TextFormatter\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\tprotected debug(): void { }\r\n\r\n\t/**\r\n\t * Formats the text according to specifications passed in.\r\n\t *\r\n\t * @param text Text to format\r\n\t * @param output Output format (svg, html)\r\n\t * @return Formatted text\r\n\t */\r\n\tpublic format(text: string, output?: string): string {\r\n\r\n\t\t// Apply default\r\n\t\tif (!$type.hasValue(output)) {\r\n\t\t\toutput = \"svg\";\r\n\t\t}\r\n\r\n\t\t// Init return value\r\n\t\tlet formatted: string = \"\";\r\n\r\n\t\t// Replace double (escaped) square spaces with remporary codes\r\n\t\ttext = this.escape(text);\r\n\r\n\t\t// Divvy up the string by style tags\r\n\t\tlet styles: string[] | null = text.match(/\\[([^\\]]*?)\\]/gm);\r\n\r\n\t\tif (!styles) {\r\n\t\t\t// Nothing to do here - no formatting elements\r\n\t\t\treturn this.wrap(text, \"\", output);\r\n\t\t}\r\n\r\n\t\t// Get pure text - no style tags\r\n\t\tlet texts: string[] = text.split(/\\[[^\\[\\]]*\\]/);\r\n\r\n\t\t// Go through each of the texts and wrap it in style tags\r\n\t\tfor (let i = 0, len = texts.length; i < len; i++) {\r\n\r\n\t\t\t// Get text bit\r\n\t\t\tlet t: string = texts[i];\r\n\r\n\t\t\t// Check if string is empty\r\n\t\t\tif (t === \"\") {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// Run through an adapter\r\n\t\t\tt = this.adapter.apply(\"chunk\", t);\r\n\r\n\t\t\t// Get related style\r\n\t\t\tlet s: string = \"\";\r\n\t\t\tif (i > 0) {\r\n\t\t\t\ts = styles[i - 1].replace('[', '').replace(']', '');\r\n\t\t\t}\r\n\r\n\t\t\t// Wrap text in tag\r\n\t\t\tformatted += this.wrap(t, s, output);\r\n\t\t}\r\n\r\n\t\t// Replace placeholders back\r\n\t\tformatted = this.unescape(formatted);\r\n\r\n\t\t// Return result\r\n\t\treturn this.cleanUp(formatted);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Replaces brackets with temporary placeholders.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param text Input text\r\n\t * @return Escaped text\r\n\t */\r\n\tpublic escape(text: string): string {\r\n\t\treturn text.\r\n\t\t\treplace(/\\[\\[/g, registry.getPlaceholder(\"1\")).\r\n\t\t\treplace(/([^\\/]{1})\\]\\]/g, \"$1\" + registry.getPlaceholder(\"2\")).\r\n\t\t\treplace(/\\]\\]/g, registry.getPlaceholder(\"2\")).\r\n\t\t\treplace(/\\{\\{/g, registry.getPlaceholder(\"3\")).\r\n\t\t\treplace(/\\}\\}/g, registry.getPlaceholder(\"4\")).\r\n\t\t\treplace(/\\'\\'/g, registry.getPlaceholder(\"5\"));\r\n\t}\r\n\r\n\t/**\r\n\t * Replaces placeholders back to brackets.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param text Escaped text\r\n\t * @return Unescaped text\r\n\t */\r\n\tpublic unescape(text: string): string {\r\n\t\treturn text.\r\n\t\t\treplace(new RegExp(registry.getPlaceholder(\"1\"), \"g\"), \"[[\").\r\n\t\t\treplace(new RegExp(registry.getPlaceholder(\"2\"), \"g\"), \"]]\").\r\n\t\t\treplace(new RegExp(registry.getPlaceholder(\"3\"), \"g\"), \"{{\").\r\n\t\t\treplace(new RegExp(registry.getPlaceholder(\"4\"), \"g\"), \"}}\").\r\n\t\t\treplace(new RegExp(registry.getPlaceholder(\"5\"), \"g\"), \"'\");\r\n\t}\r\n\r\n\t/**\r\n\t * Cleans up the text text for leftover double square brackets.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param text Input text\r\n\t * @return Cleaned up text\r\n\t */\r\n\tpublic cleanUp(text: string): string {\r\n\t\treturn text.\r\n\t\t\treplace(/\\[\\[/g, \"[\").\r\n\t\t\treplace(/\\]\\]/g, \"]\").\r\n\t\t\treplace(/\\{\\{/g, \"{\").\r\n\t\t\treplace(/\\}\\}/g, \"}\").\r\n\t\t\treplace(/\\'\\'/g, \"'\");\r\n\t}\r\n\r\n\t/**\r\n\t * Wraps text into corresponding tags.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param text Text to wrap\r\n\t * @param style Styles\r\n\t * @param output Format to output in (svg, html)\r\n\t * @return Formatted string\r\n\t */\r\n\tpublic wrap(text: string, style: string, output: string): string {\r\n\r\n\t\tif (style === \"\" || style === \"/\") {\r\n\t\t\t//return text;\r\n\t\t\tstyle = \"\";\r\n\t\t}\r\n\r\n\t\tswitch (output) {\r\n\t\t\tcase \"html\":\r\n\t\t\t\treturn this.wrapHtml(text, this.translateStyleShortcuts(style));\r\n\t\t\tdefault:\r\n\t\t\t\treturn this.wrapSvg(text, this.translateStyleShortcuts(style));\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Wraps text in styled SVG tag.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param text Text to wrap\r\n\t * @param style Style property\r\n\t * @return Formatted tag\r\n\t */\r\n\tpublic wrapSvg(text: string, style: string): string {\r\n\t\tif (style === \"\") {\r\n\t\t\treturn \"<tspan>\" + text + \"</tspan>\";\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn \"<tspan style='\" + style + \"'>\" + text + \"</tspan>\";\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an SVG `<tspan>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param text Text\r\n\t * @param style Style\r\n\t * @return Element\r\n\t */\r\n\tpublic getSvgElement(text: string, style?: string): AMElement {\r\n\t\tlet element = new AMElement(\"tspan\");\r\n\t\telement.textContent = text;\r\n\t\tif (style) {\r\n\t\t\telement.node.setAttribute(\"style\", style);\r\n\t\t}\r\n\t\treturn element;\r\n\t}\r\n\r\n\t/**\r\n\t * Wraps text in HTML <span> tag.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param text Text to wrap\r\n\t * @param style Style property\r\n\t * @return Formatted tag\r\n\t * @todo Translate SVG styles into HTML ones\r\n\t */\r\n\tpublic wrapHtml(text: string, style: string): string {\r\n\t\tif (style === \"\") {\r\n\t\t\treturn \"<span>\" + text + \"</span>\";\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn \"<span style='\" + this.styleSvgToHtml(style) + \"'>\" + text + \"</span>\";\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an HTML `<span>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param text Text/HTML\r\n\t * @param style Style definition\r\n\t * @return HTML element\r\n\t */\r\n\tpublic getHtmlElement(text: string, style?: string): HTMLElement {\r\n\t\tlet element = document.createElement(\"span\");\r\n\t\telement.innerHTML = text;\r\n\t\tif (style) {\r\n\t\t\telement.setAttribute(\"style\", style);\r\n\t\t}\r\n\t\treturn element;\r\n\t}\r\n\r\n\t/**\r\n\t * Trabslates SVG CSS into HTML CSS.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param style SVG CSS\r\n\t * @return HTML CSS\r\n\t * @todo Implement actual translation\r\n\t */\r\n\tpublic styleSvgToHtml(style: string): string {\r\n\t\tstyle = style.replace(/fill:/, \"color:\");\r\n\t\treturn style;\r\n\t}\r\n\r\n\t/**\r\n\t * Translates style shortcuts into full styles, i.e.:\r\n\t * \"bold\" => \"font-weight: bold\"\r\n\t * \"#f00\" => \"fill: #f00\"\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param style Untranslated style\r\n\t * @return Translated style\r\n\t * @todo Implement actual translation\r\n\t */\r\n\tpublic translateStyleShortcuts(style: string): string {\r\n\r\n\r\n\t\tif (style == \"\" || style == \"[ ]\") {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tlet cached = registry.getCache(\"translateStyleShortcuts_\" + style);\r\n\t\tif (cached) {\r\n\t\t\treturn cached;\r\n\t\t}\r\n\r\n\t\t// Get style parts\r\n\t\tlet b: string[] | null = style.match(/([\\w\\-]*:[\\s]?[^;\\s\\]]*)|(\\#[\\w]{1,6})|([\\w]+)|(\\/)/gi);\r\n\r\n\t\t// Empty?\r\n\t\tif (!b) {\r\n\t\t\treturn style;\r\n\t\t}\r\n\r\n\r\n\t\t// Check each part\r\n\t\tfor (let i: number = 0; i < b.length; i++) {\r\n\r\n\t\t\tif (b[i].match(/^bold$/i)) {\r\n\t\t\t\t// Bold\r\n\t\t\t\tb[i] = \"font-weight:\" + b[i];\r\n\t\t\t}\r\n\t\t\telse if (b[i] == \"/\") {\r\n\t\t\t\t// Just closing tag\r\n\t\t\t\t// Do nothing\r\n\t\t\t\tb[i] = \"\";\r\n\t\t\t}\r\n\t\t\telse if (!b[i].match(/:/)) {\r\n\t\t\t\t// Color\r\n\t\t\t\tb[i] = \"fill:\" + b[i];\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tlet res = b.join(';');\r\n\t\tregistry.setCache(\"translateStyleShortcuts_\" + style, res);\r\n\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Splits string into chunks. (style blocks, quoted blocks, regular blocks)\r\n\t *\r\n\t * If the second parameter `quotedBlocks` is set to `true` this method will\r\n\t * also single out text blocks enclosed within single quotes that no\r\n\t * formatting should be applied to, and they should be displayed as is.\r\n\t *\r\n\t * Default for the above is `false`, so that you can use single quote in text\r\n\t * without escaping it.\r\n\t *\r\n\t * If enabled, single quotes can be escaped by doubling it - adding two\r\n\t * single quotes, which will be replaced by a one single quote in the final\r\n\t * output.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param text Text to chunk\r\n\t * @param quotedBlocks Use quoted blocks\r\n\t * @param noFormatting Formatting blocks will be treated as regular text\r\n\t * @return Array of string chunks\r\n\t */\r\n\tpublic chunk(text: string, quotedBlocks: boolean = false, noFormatting: boolean = false): ITextChunk[] {\r\n\r\n\t\t// Init result\r\n\t\tlet res: ITextChunk[] = [];\r\n\r\n\t\t// Replace double (escaped) square spaces and quotes with temporary codes\r\n\t\ttext = this.escape(text);\r\n\r\n\t\t// Deal with style blocks\r\n\t\tlet chunks = quotedBlocks ? text.split(\"'\") : [text];\r\n\t\tfor (let i: number = 0; i < chunks.length; i++) {\r\n\t\t\tlet chunk = chunks[i];\r\n\r\n\t\t\t// Empty?\r\n\t\t\tif (chunk === \"\") {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif ((i % 2) === 0) {\r\n\r\n\t\t\t\t// Text outside quotes\r\n\t\t\t\t// Parse for style blocks which are \"text\" chunks, the rest chunks are\r\n\t\t\t\t// \"value\"\r\n\r\n\t\t\t\tchunk = chunk.replace(/\\]\\[/g, \"]\" + $strings.PLACEHOLDER + \"[\");\r\n\t\t\t\tchunk = chunk.replace(/\\[\\]/g, \"[ ]\");\r\n\t\t\t\tlet chunks2 = chunk.split(/[\\[\\]]+/);\r\n\t\t\t\tfor (let i2: number = 0; i2 < chunks2.length; i2++) {\r\n\t\t\t\t\tlet chunk2 = this.cleanUp(this.unescape(chunks2[i2]));\r\n\r\n\t\t\t\t\t// Placeholder?\r\n\t\t\t\t\tif (chunk2 === $strings.PLACEHOLDER) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Empty?\r\n\t\t\t\t\tif (chunk2 === \"\") {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Block or value\r\n\t\t\t\t\tif ((i2 % 2) === 0) {\r\n\t\t\t\t\t\tres.push({\r\n\t\t\t\t\t\t\t\"type\": \"value\",\r\n\t\t\t\t\t\t\t\"text\": this.adapter.apply(\"chunk\", chunk2)\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tres.push({\r\n\t\t\t\t\t\t\t\"type\": noFormatting ? \"value\" : \"format\",\r\n\t\t\t\t\t\t\t\"text\": \"[\" + chunk2 + \"]\"\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\telse {\r\n\r\n\t\t\t\t// A text within doublequotes\r\n\t\t\t\t// All chunks are \"text\"\r\n\r\n\t\t\t\tlet chunks2 = chunk.split(/[\\[\\]]+/);\r\n\t\t\t\tfor (let i2: number = 0; i2 < chunks2.length; i2++) {\r\n\t\t\t\t\tlet chunk2 = this.cleanUp(this.unescape(chunks2[i2]));\r\n\r\n\t\t\t\t\t// Empty?\r\n\t\t\t\t\tif (chunk2 === \"\") {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Block or text\r\n\t\t\t\t\tif ((i2 % 2) === 0) {\r\n\t\t\t\t\t\tres.push({\r\n\t\t\t\t\t\t\t\"type\": \"text\",\r\n\t\t\t\t\t\t\t\"text\": chunk2\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (this.isImage(chunk2)) {\r\n\t\t\t\t\t\tres.push({\r\n\t\t\t\t\t\t\t\"type\": \"image\",\r\n\t\t\t\t\t\t\t\"text\": \"[\" + chunk2 + \"]\"\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tres.push({\r\n\t\t\t\t\t\t\t\"type\": \"format\",\r\n\t\t\t\t\t\t\t\"text\": \"[\" + chunk2 + \"]\"\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if supplied format contains image information and should be\r\n\t * formatted as such.\r\n\t * I.e.: `[img: myImage.png]`\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param text Format\r\n\t * @return `true` if it is an image\r\n\t */\r\n\tpublic isImage(text: string): boolean {\r\n\t\treturn text.match(/img[ ]?:/) ? true : false;\r\n\t}\r\n\r\n}\r\n\r\n\r\nlet formatter: TextFormatter;\r\n\r\n/**\r\n * Returns the global instance of [[TextFormatter]].\r\n *\r\n * All classes and instances should reuse this universal text formatter,\r\n * rather than create their own instance of it.\r\n */\r\nexport function getTextFormatter(): TextFormatter {\r\n\tif (formatter == null) {\r\n\t\tformatter = new TextFormatter();\r\n\t}\r\n\r\n\treturn formatter;\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"TextFormatter\"] = TextFormatter;\r\n","/**\r\n * Functionality related to inertia\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { getInteraction } from \"./Interaction\";\r\nimport { InteractionObject, IInteractionObjectEvents } from \"./InteractionObject\";\r\nimport { Animation, IAnimatable, AnimationDisposer } from \"../utils/Animation\";\r\nimport { AMEvent } from \"../utils/EventDispatcher\";\r\nimport { IPoint } from \"../defs/IPoint\";\r\nimport * as $type from \"../utils/Type\";\r\n\r\n/**\r\n * Defines a list of available inertia types.\r\n */\r\nexport type InertiaTypes = \"move\" | \"resize\";\r\n\r\n/**\r\n * A point of inertia is to simulate gradually drecreasing motion even after\r\n * actual interaction by user, that caused it, has already ended.\r\n *\r\n * [[Inertia]] object will continue triggering the same [[Sprite]] handlers\r\n * as if the interaction was still happening, gradually reducing\r\n * shift/angle/scale values until full stop.\r\n *\r\n * Basically, from the target element's point of view, while inertia is\r\n * playing, it is still being interacted with by user, albeit with a\r\n * decreasing speed.\r\n */\r\nexport class Inertia extends BaseObject implements IAnimatable {\r\n\r\n\t/**\r\n\t * Holds what type of inertia it is.\r\n\t */\r\n\tpublic type: InertiaTypes;\r\n\r\n\t/**\r\n\t * An element we're performing animation on.\r\n\t */\r\n\tpublic interaction: InteractionObject;\r\n\r\n\t/**\r\n\t * Starting pointer position. The position of pointer when we \"released\"\r\n\t * the element.\r\n\t */\r\n\tpublic startPoint: IPoint;\r\n\r\n\t/**\r\n\t * Current (simulated) pointer position.\r\n\t */\r\n\tpublic point: IPoint;\r\n\r\n\t/**\r\n\t * List of animations currently playing.\r\n\t */\r\n\tpublic animations: Array<Animation> = [];\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor(interaction: InteractionObject, type: InertiaTypes, point: IPoint, startPoint: IPoint) {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"Inertia\";\r\n\r\n\t\tthis.interaction = interaction;\r\n\t\tthis.type = type;\r\n\t\tthis.point = point;\r\n\t\tthis.startPoint = startPoint;\r\n\r\n\t\t// Make animations disposable\r\n\t\tthis._disposers.push(new AnimationDisposer(this.animations));\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets current X coordinate.\r\n\t *\r\n\t * Will trigger \"drag\" event for the target element.\r\n\t *\r\n\t * @param value X\r\n\t */\r\n\tpublic set x(value: number) {\r\n\t\tif ($type.isNumber(value)) {\r\n\t\t\tthis.point.x = value;\r\n\t\t\tthis.handleMove();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current X coordinate.\r\n\t *\r\n\t * @return X\r\n\t */\r\n\tpublic get x(): number {\r\n\t\treturn this.point.x;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets current Y coordinate.\r\n\t *\r\n\t * Will trigger \"drag\" event for the target element.\r\n\t *\r\n\t * @param value Y\r\n\t */\r\n\tpublic set y(value: number) {\r\n\t\tif ($type.isNumber(value)) {\r\n\t\t\tthis.point.y = value;\r\n\t\t\tthis.handleMove();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current Y coordinate.\r\n\t *\r\n\t * @return Y\r\n\t */\r\n\tpublic get y(): number {\r\n\t\treturn this.point.y;\r\n\t}\r\n\r\n\t/**\r\n\t * Simulates dragging of element.\r\n\t */\r\n\tpublic handleMove() {\r\n\r\n\t\t// Prepare {InteractionEvent} object\r\n\t\tif (this.interaction.events.isEnabled(\"drag\")) {\r\n\t\t\tlet imev: AMEvent<InteractionObject, IInteractionObjectEvents>[\"drag\"] = {\r\n\t\t\t\ttype: \"drag\",\r\n\t\t\t\ttarget: this.interaction,\r\n\t\t\t\tshift: {\r\n\t\t\t\t\tx: this.x - this.startPoint.x,\r\n\t\t\t\t\ty: this.y - this.startPoint.y\r\n\t\t\t\t},\r\n\t\t\t\tstartPoint: this.startPoint,\r\n\t\t\t\tpoint: {\r\n\t\t\t\t\tx: this.x,\r\n\t\t\t\t\ty: this.y\r\n\t\t\t\t},\r\n\t\t\t\ttouch: false\r\n\t\t\t};\r\n\r\n\t\t\t// Call handler\r\n\t\t\tthis.interaction.events.dispatchImmediately(\"drag\", imev);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Finishes up the inertia animation. (removes reference to this animation\r\n\t * object)\r\n\t */\r\n\tpublic done() {\r\n\r\n\t\t// Remove inertia animation from the object\r\n\t\tthis.interaction.inertias.removeKey(this.type);\r\n\r\n\t\t// Move ended\r\n\t\tif (this.type === \"move\") {\r\n\t\t\tgetInteraction().processDragStop(this.interaction);\r\n\t\t}\r\n\r\n\t\t// Destroy\r\n\t\tthis.dispose();\r\n\r\n\t}\r\n\r\n}\r\n","/**\r\n * Interaction manages all aspects of user interaction - mouse move,\r\n * click, hover, drag events, touch gestures.\r\n *\r\n * [[InteractionObject]] elements that want to use certain events, must attach event\r\n * listeners to Interaction instance.\r\n *\r\n * Interaction itself will not modify [[InteractionObject]] elements, it will be up to\r\n * those elements to handle interaction information received via event triggers.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObjectEvents, IBaseObjectEvents } from \"../Base\";\r\nimport { List } from \"../utils/List\";\r\nimport { AMEvent } from \"../utils/EventDispatcher\";\r\nimport { Animation } from \"../utils/Animation\";\r\nimport { IInertiaOptions, ISwipeOptions, IHitOptions, IHoverOptions, IKeyboardOptions, IMouseOptions } from \"./InteractionOptions\";\r\nimport { MultiDisposer, IDisposer } from \"../utils/Disposer\";\r\nimport { InteractionObject, IInteractionObjectEvents } from \"./InteractionObject\";\r\nimport { InteractionKeyboardObject } from \"./InteractionKeyboardObject\";\r\nimport { Dictionary } from \"../utils/Dictionary\";\r\nimport { Inertia, InertiaTypes } from \"./Inertia\";\r\nimport { IPointer, IBreadcrumb } from \"./Pointer\";\r\nimport { addEventListener } from \"../utils/DOM\";\r\nimport { IPoint } from \"../defs/IPoint\";\r\nimport { IStyleProperty } from \"../defs/IStyleProperty\";\r\nimport { keyboard } from \"../utils/Keyboard\";\r\nimport { system } from \"./../System\";\r\nimport * as $ease from \"../utils/Ease\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $iter from \"../utils/Iterator\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $time from \"../utils/Time\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Represents an Event object that comes from [[Interaction]]\r\n */\r\nexport interface IInteractionEvents extends IBaseObjectEvents {\r\n\r\n\ttrack: {\r\n\t\tpointer: IPointer;\r\n\t\ttouch: boolean;\r\n\t\tevent: MouseEvent | TouchEvent;\r\n\t};\r\n\r\n\tdown: {\r\n\t\tpointer: IPointer;\r\n\t\ttouch: boolean;\r\n\t\tevent: MouseEvent | TouchEvent;\r\n\t};\r\n\r\n\tup: {\r\n\t\tpointer: IPointer;\r\n\t\ttouch: boolean;\r\n\t\tevent: MouseEvent | TouchEvent;\r\n\t};\r\n\r\n\tfocus: {\r\n\t\tevent: FocusEvent;\r\n\t}\r\n}\r\n\r\n/**\r\n * Interface representing a delayed event\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport interface IDelayedEvent {\r\n\ttype: keyof IInteractionObjectEvents;\r\n\tio: InteractionObject;\r\n\tpointer: IPointer;\r\n\tevent: MouseEvent | TouchEvent;\r\n\tkeepUntil?: number;\r\n\ttimeout?: IDisposer;\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n\r\n/**\r\n * Interaction manages all aspects of user interaction - mouse move,\r\n * click, hover, drag events, touch gestures.\r\n *\r\n * [[InteractionObject]] elements that want to use certain events, must attach event\r\n * listeners to Interaction instance.\r\n *\r\n * Interaction itself will not modify [[InteractionObject]] elements, it will be up to\r\n * those elements to handle interaction information received via event triggers.\r\n *\r\n * @see {@link IInteractionEvents} for a list of available events\r\n */\r\nexport class Interaction extends BaseObjectEvents {\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t *\r\n\t * @deprecated Use inetraction.body.events instead\r\n\t */\r\n\tpublic _events!: IInteractionEvents;\r\n\r\n\t/**\r\n\t * A reference to an [[Interaction]] object for document's body.\r\n\t *\r\n\t * Users can use it to add global, non-chart related events, that will be\r\n\t * applicable to the whole document.\r\n\t */\r\n\tpublic body: InteractionObject;\r\n\r\n\t/**\r\n\t * An indicator of global events were already initialized.\r\n\t */\r\n\tprotected _globalEventsAdded: boolean = false;\r\n\r\n\t/**\r\n\t * Holds which mouse event listeners to use.\r\n\t */\r\n\tprotected _pointerEvents = {\r\n\t\t\"pointerdown\": \"mousedown\",\r\n\t\t\"pointerup\": \"mouseup\",\r\n\t\t\"pointermove\": \"mousemove\",\r\n\t\t\"pointercancel\": \"mouseup\",\r\n\t\t\"pointerover\": \"mouseover\",\r\n\t\t\"pointerout\": \"mouseout\",\r\n\t\t\"wheel\": \"wheel\"\r\n\t};\r\n\r\n\t/**\r\n\t * Indicates if Interaction should use only \"pointer\" type events, like\r\n\t * \"pointermove\", available in all modern browsers, ignoring \"legacy\"\r\n\t * events, like \"touchmove\".\r\n\t */\r\n\tprotected _usePointerEventsOnly: boolean = false;\r\n\r\n\t/**\r\n\t * Use only touch events (for touch only devices such as tablets and phones)\r\n\t */\r\n\tprotected _useTouchEventsOnly: boolean = false;\r\n\r\n\t/**\r\n\t * Add special hover events. Normally, touch device tap will also simulate\r\n\t * hover event. On some devices (ahem iOS) we want to prevent that so that\r\n\t * over/out events are not duplicated.\r\n\t */\r\n\tprotected _addHoverEvents: boolean = true;\r\n\r\n\t/**\r\n\t * Indicates if passive mode options is supported by this browser.\r\n\t */\r\n\tprotected _passiveSupported: boolean = false;\r\n\r\n\t/**\r\n\t * Holds list of delayed events\r\n\t */\r\n\tprotected _delayedEvents: { out: IDelayedEvent[] } = { out: [] };\r\n\r\n\t/**\r\n\t * List of objects that current have a pointer hovered over them.\r\n\t */\r\n\tpublic overObjects: List<InteractionObject> = new List<InteractionObject>();\r\n\r\n\t/**\r\n\t * List of objects that currently has a pressed pointer.\r\n\t */\r\n\tpublic downObjects: List<InteractionObject> = new List<InteractionObject>();\r\n\r\n\t/**\r\n\t * List of objects that need mouse position to be reported to them.\r\n\t */\r\n\tpublic trackedObjects: List<InteractionObject> = new List<InteractionObject>();\r\n\r\n\t/**\r\n\t * List of objects that are currently being dragged.\r\n\t */\r\n\tpublic transformedObjects: List<InteractionObject> = new List<InteractionObject>();\r\n\r\n\t/**\r\n\t * An object that currently has focus. Usually set automatically via\r\n\t * [[InteractionObject]] `isFocus` method.\r\n\t */\r\n\tpublic focusedObject: $type.Optional<InteractionObject>;\r\n\r\n\t/**\r\n\t * Holds all known pointers.\r\n\t */\r\n\tpublic pointers = new Dictionary<string, IPointer>();\r\n\r\n\t/**\r\n\t * Inertia options that need to be applied to after element drag, if it's\r\n\t * `inert = true`.\r\n\t *\r\n\t * This is just a default, which can and probably will be overridden by\r\n\t * actual elements.\r\n\t */\r\n\tpublic inertiaOptions = new Dictionary<InertiaTypes, IInertiaOptions>();\r\n\r\n\t/**\r\n\t * Default options for click events. These can be overridden in\r\n\t * [[InteractionObject]].\r\n\t */\r\n\tpublic hitOptions: IHitOptions = {\r\n\t\t//\"holdTime\": 1000,\r\n\t\t\"doubleHitTime\": 300,\r\n\t\t//\"delayFirstHit\": false,\r\n\t\t\"hitTolerance\": 10,\r\n\t\t\"noFocus\": true\r\n\t};\r\n\r\n\t/**\r\n\t * Default options for hover events. These can be overridden in\r\n\t * [[InteractionObject]].\r\n\t */\r\n\tpublic hoverOptions: IHoverOptions = {\r\n\t\t\"touchOutBehavior\": \"leave\",\r\n\t\t\"touchOutDelay\": 1000\r\n\t};\r\n\r\n\t/**\r\n\t * Default options for detecting a swipe gesture. These can be overridden in\r\n\t * [[InteractionObject]].\r\n\t */\r\n\tpublic swipeOptions: ISwipeOptions = {\r\n\t\t\"time\": 500,\r\n\t\t\"verticalThreshold\": 75,\r\n\t\t\"horizontalThreshold\": 30\r\n\t};\r\n\r\n\t/**\r\n\t * Default options for keyboard operations. These can be overridden in\r\n\t * [[InteractionObject]].\r\n\t */\r\n\tpublic keyboardOptions: IKeyboardOptions = {\r\n\t\t\"speed\": 0.1,\r\n\t\t\"accelleration\": 1.2,\r\n\t\t\"accellerationDelay\": 2000\r\n\t};\r\n\r\n\t/**\r\n\t * Default options for keyboard operations. These can be overridden in\r\n\t * [[InteractionObject]].\r\n\t *\r\n\t * @since 4.5.14\r\n\t */\r\n\tpublic mouseOptions: IMouseOptions = {\r\n\t\t\"sensitivity\": 1\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * Constructor. Sets up universal document-wide move events to handle stuff\r\n\t * outside particular chart container.\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Call super\r\n\t\tsuper();\r\n\r\n\t\t// Set class name\r\n\t\tthis.className = \"Interaction\";\r\n\r\n\t\t// Create InteractionObject for <body>\r\n\t\tthis.body = this.getInteraction(document.body);\r\n\r\n\t\tthis._disposers.push(this.body);\r\n\r\n\t\t// Detect browser capabilities and determine what event listeners to use\r\n\t\tif (window.hasOwnProperty(\"PointerEvent\")) {\r\n\t\t\t// IE10+/Edge without touch controls enabled\r\n\t\t\tthis._pointerEvents.pointerdown = \"pointerdown\";\r\n\t\t\tthis._pointerEvents.pointerup = \"pointerup\";\r\n\t\t\tthis._pointerEvents.pointermove = \"pointermove\";\r\n\t\t\tthis._pointerEvents.pointercancel = \"pointercancel\";\r\n\t\t\tthis._pointerEvents.pointerover = \"pointerover\";\r\n\t\t\tthis._pointerEvents.pointerout = \"pointerout\";\r\n\t\t\t//this._usePointerEventsOnly = true;\r\n\t\t} else if (window.hasOwnProperty(\"MSPointerEvent\")) {\r\n\t\t\t// IE9\r\n\t\t\tthis._pointerEvents.pointerdown = \"MSPointerDown\";\r\n\t\t\tthis._pointerEvents.pointerup = \"MSPointerUp\";\r\n\t\t\tthis._pointerEvents.pointermove = \"MSPointerMove\";\r\n\t\t\tthis._pointerEvents.pointercancel = \"MSPointerUp\";\r\n\t\t\tthis._pointerEvents.pointerover = \"MSPointerOver\";\r\n\t\t\tthis._pointerEvents.pointerout = \"MSPointerOut\";\r\n\t\t\t//this._usePointerEventsOnly = true;\r\n\t\t}\r\n\t\telse if ((typeof matchMedia !== \"undefined\") && matchMedia('(pointer:fine)').matches) {\r\n\t\t\t// This is only for Safari as it does not support PointerEvent\r\n\t\t\t// Do nothing and let it use regular `mouse*` events\r\n\t\t\t// Hi Apple ;)\r\n\r\n\t\t\t// Additionally disable hover events for iOS devices\r\n\t\t\tif ('ontouchstart' in window) {\r\n\t\t\t\tthis._addHoverEvents = false;\r\n\t\t\t\tthis._useTouchEventsOnly = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (window.navigator.userAgent.match(/MSIE /)) {\r\n\t\t\t// Oh looky, an MSIE that does not support PointerEvent. Hi granpa IE9!\r\n\t\t\tthis._usePointerEventsOnly = true;\r\n\t\t}\r\n\t\telse if (this.fullFF()) {\r\n\t\t\t// Old FF, let's use regular events.\r\n\t\t\t// (Newer FFs would be detected by the PointerEvent availability check)\r\n\t\t\tthis._usePointerEventsOnly = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// Uses defaults for normal browsers\r\n\t\t\t// We also assume that this must be a touch device that does not have\r\n\t\t\t// any pointer events\r\n\t\t\tthis._useTouchEventsOnly = true;\r\n\t\t}\r\n\r\n\t\t// Detect if device has a mouse\r\n\t\t// This is turning out to be not reliable\r\n\t\t// @todo remove\r\n\t\t/*if (!window.navigator.msPointerEnabled && (typeof matchMedia !== \"undefined\") && !matchMedia('(pointer:fine)').matches && !this.fullFF()) {\r\n\t\t\tthis._useTouchEventsOnly = true;\r\n\t\t}*/\r\n\r\n\t\t// Detect proper mouse wheel events\r\n\t\tif (\"onwheel\" in document.createElement(\"div\")) {\r\n\t\t\t// Modern browsers\r\n\t\t\tthis._pointerEvents.wheel = \"wheel\";\r\n\t\t}\r\n\t\telse if ($type.hasValue((<any>document).onmousewheel)) {\r\n\t\t\t// Webkit and IE support at least \"mousewheel\"\r\n\t\t\tthis._pointerEvents.wheel = \"mousewheel\";\r\n\t\t}\r\n\r\n\t\t// Set up default inertia options\r\n\t\tthis.inertiaOptions.setKey(\"move\", {\r\n\t\t\t\"time\": 100,\r\n\t\t\t\"duration\": 500,\r\n\t\t\t\"factor\": 1,\r\n\t\t\t\"easing\": $ease.polyOut3\r\n\t\t});\r\n\t\tthis.inertiaOptions.setKey(\"resize\", {\r\n\t\t\t\"time\": 100,\r\n\t\t\t\"duration\": 500,\r\n\t\t\t\"factor\": 1,\r\n\t\t\t\"easing\": $ease.polyOut3\r\n\t\t});\r\n\r\n\t\t// Set the passive mode support\r\n\t\tthis._passiveSupported = Interaction.passiveSupported;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * This is a nasty detection for Firefox. The reason why we have is that\r\n\t * Firefox ESR version does not support matchMedia correctly.\r\n\t *\r\n\t * On iOS, Firefox uses different userAgent, so we don't have to detect iOS.\r\n\t *\r\n\t * @return Full Firefox?\r\n\t */\r\n\tprotected fullFF(): boolean {\r\n\t\treturn (window.navigator.userAgent.match(/Firefox/)) && !(window.navigator.userAgent.match(/Android/));\r\n\t}\r\n\r\n\tprotected debug(): void { }\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * Processing\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Sets up global events.\r\n\t *\r\n\t * We need this so that we can track drag movement beyond chart's container.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic addGlobalEvents(): void {\r\n\t\tif (!this._globalEventsAdded) {\r\n\r\n\t\t\tif (!this._useTouchEventsOnly) {\r\n\t\t\t\tthis._disposers.push(addEventListener<MouseEvent | PointerEvent>(\r\n\t\t\t\t\tdocument,\r\n\t\t\t\t\tthis._pointerEvents.pointerdown,\r\n\t\t\t\t\t(ev: MouseEvent) => { this.handleGlobalPointerDown(ev) }\r\n\t\t\t\t));\r\n\r\n\t\t\t\tthis._disposers.push(addEventListener<MouseEvent | PointerEvent>(\r\n\t\t\t\t\tdocument,\r\n\t\t\t\t\tthis._pointerEvents.pointermove,\r\n\t\t\t\t\t(ev: MouseEvent) => { this.handleGlobalPointerMove(ev) }\r\n\t\t\t\t));\r\n\r\n\t\t\t\tthis._disposers.push(addEventListener<MouseEvent | PointerEvent>(\r\n\t\t\t\t\tdocument,\r\n\t\t\t\t\tthis._pointerEvents.pointerup,\r\n\t\t\t\t\t(ev: MouseEvent) => { this.handleGlobalPointerUp(ev) }\r\n\t\t\t\t));\r\n\r\n\t\t\t\tthis._disposers.push(addEventListener<MouseEvent | PointerEvent>(\r\n\t\t\t\t\tdocument,\r\n\t\t\t\t\tthis._pointerEvents.pointercancel,\r\n\t\t\t\t\t(ev: MouseEvent) => { this.handleGlobalPointerUp(ev, true) }\r\n\t\t\t\t));\r\n\t\t\t}\r\n\r\n\t\t\t// No need to duplicate events for hubrid systems that support both\r\n\t\t\t// pointer events and touch events. Touch events are need only for\r\n\t\t\t// some touch-only systems, like Mobile Safari.\r\n\t\t\tif (!this._usePointerEventsOnly) {\r\n\t\t\t\tthis._disposers.push(addEventListener(\r\n\t\t\t\t\tdocument,\r\n\t\t\t\t\t\"touchstart\",\r\n\t\t\t\t\t(ev: TouchEvent) => { this.handleGlobalTouchStart(ev) }\r\n\t\t\t\t));\r\n\r\n\t\t\t\tthis._disposers.push(addEventListener(\r\n\t\t\t\t\tdocument,\r\n\t\t\t\t\t\"touchmove\",\r\n\t\t\t\t\t(ev: TouchEvent) => { this.handleGlobalTouchMove(ev) }\r\n\t\t\t\t));\r\n\r\n\t\t\t\tthis._disposers.push(addEventListener(\r\n\t\t\t\t\tdocument,\r\n\t\t\t\t\t\"touchend\",\r\n\t\t\t\t\t(ev: TouchEvent) => { this.handleGlobalTouchEnd(ev) }\r\n\t\t\t\t));\r\n\t\t\t}\r\n\r\n\t\t\tthis._disposers.push(addEventListener(\r\n\t\t\t\tdocument,\r\n\t\t\t\t\"keydown\",\r\n\t\t\t\t(ev: KeyboardEvent) => { this.handleGlobalKeyDown(ev) }\r\n\t\t\t));\r\n\r\n\t\t\tthis._disposers.push(addEventListener(\r\n\t\t\t\tdocument,\r\n\t\t\t\t\"keyup\",\r\n\t\t\t\t(ev: KeyboardEvent) => { this.handleGlobalKeyUp(ev) }\r\n\t\t\t));\r\n\r\n\t\t\tthis._globalEventsAdded = true;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets if [[InteractionObject]] is clickable.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io [[InteractionObject]] instance\r\n\t */\r\n\tpublic processClickable(io: InteractionObject): void {\r\n\t\t// Add or remove touch events\r\n\t\tthis.processTouchable(io);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets if [[InteractionObject]] will display context menu when right-clicked.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io [[InteractionObject]] instance\r\n\t */\r\n\tpublic processContextMenu(io: InteractionObject): void {\r\n\t\tif (io.contextMenuDisabled) {\r\n\t\t\tif (!io.eventDisposers.hasKey(\"contextMenuDisabled\")) {\r\n\t\t\t\tio.eventDisposers.setKey(\"contextMenuDisabled\",\r\n\t\t\t\t\taddEventListener<MouseEvent | PointerEvent>(io.element, \"contextmenu\", (e) => {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (io.eventDisposers.hasKey(\"contextMenuDisabled\")) {\r\n\t\t\t\tio.eventDisposers.getKey(\"contextMenuDisabled\").dispose();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets if [[InteractionObject]] is hoverable.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io [[InteractionObject]] instance\r\n\t */\r\n\tpublic processHoverable(io: InteractionObject): void {\r\n\t\tif (io.hoverable || io.trackable) {\r\n\r\n\t\t\t// Add global events\r\n\t\t\tthis.addGlobalEvents();\r\n\r\n\t\t\t// Add hover styles\r\n\t\t\tthis.applyCursorOverStyle(io);\r\n\r\n\t\t\t// Add local events\r\n\t\t\tif (!io.eventDisposers.hasKey(\"hoverable\") && this._addHoverEvents) {\r\n\t\t\t\tio.eventDisposers.setKey(\"hoverable\", new MultiDisposer([\r\n\t\t\t\t\taddEventListener<MouseEvent | PointerEvent>(io.element, this._pointerEvents.pointerout, (e) => this.handlePointerOut(io, e)),\r\n\t\t\t\t\taddEventListener<MouseEvent | PointerEvent>(io.element, this._pointerEvents.pointerover, (e) => this.handlePointerOver(io, e))\r\n\t\t\t\t]));\r\n\t\t\t}\r\n\r\n\t\t\tif (io.trackable) {\r\n\t\t\t\t//sprite.addEventListener(\"touchmove\", this.handleTouchMove, false, this);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tconst disposer = io.eventDisposers.getKey(\"hoverable\");\r\n\r\n\t\t\tif (disposer != null) {\r\n\t\t\t\tdisposer.dispose();\r\n\t\t\t\tio.eventDisposers.removeKey(\"hoverable\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Add or remove touch events\r\n\t\tthis.processTouchable(io);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up [[InteractionObject]] as movable. Movable can be any\r\n\t * transformation, e.g. drag, swipe, resize, track.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t */\r\n\tpublic processMovable(io: InteractionObject) {\r\n\r\n\t\t// Add unified events\r\n\t\tif (io.draggable || io.swipeable || io.trackable || io.resizable) {\r\n\r\n\t\t\t// Prep the element\r\n\t\t\tif (!this.isGlobalElement(io) && !io.isTouchProtected) {\r\n\t\t\t\tthis.prepElement(io);\r\n\t\t\t}\r\n\r\n\t\t\t// Add hover styles\r\n\t\t\tthis.applyCursorOverStyle(io);\r\n\r\n\t\t}\r\n\r\n\t\t// Add or remove touch events\r\n\t\tthis.processTouchable(io);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if [[InteractionObject]] is trackable and sets relative events.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t */\r\n\tpublic processTrackable(io: InteractionObject): void {\r\n\t\tthis.processHoverable(io);\r\n\t\tthis.processMovable(io);\r\n\t\tif (io.trackable) {\r\n\t\t\tthis.trackedObjects.moveValue(io);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.trackedObjects.removeValue(io);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if [[InteractionObject]] is draggable.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t */\r\n\tpublic processDraggable(io: InteractionObject): void {\r\n\t\tthis.processMovable(io);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if [[InteractionObject]] is swipeable and sets relative events.\r\n\t *\r\n\t * A swipe event is triggered when a horizontal drag of 75px or more (and\r\n\t * less than 30px vertically) occurs within 700 milliseconds. This can be\r\n\t * overridden in sprites [[swipeOptions]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t */\r\n\tpublic processSwipeable(io: InteractionObject): void {\r\n\t\tthis.processMovable(io);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if [[InteractionObject]] is resizable and attaches required events\r\n\t * to it.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t */\r\n\tpublic processResizable(io: InteractionObject): void {\r\n\t\tthis.processMovable(io);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if [[InteractionObject]] is supposed to capture mouse wheel events\r\n\t * and prepares it to catch those events.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t */\r\n\tpublic processWheelable(io: InteractionObject): void {\r\n\t\tif (io.wheelable) {\r\n\t\t\t//io.hoverable = true;\r\n\t\t\tif (!io.eventDisposers.hasKey(\"wheelable\")) {\r\n\t\t\t\tio.eventDisposers.setKey(\"wheelable\", new MultiDisposer([\r\n\t\t\t\t\taddEventListener<WheelEvent>(\r\n\t\t\t\t\t\tio.element,\r\n\t\t\t\t\t\tthis._pointerEvents.wheel,\r\n\t\t\t\t\t\t(e) => this.handleMouseWheel(io, e),\r\n\t\t\t\t\t\tthis._passiveSupported ? { passive: false } : false\r\n\t\t\t\t\t),\r\n\t\t\t\t\tio.events.on(\"out\", (e) => {\r\n\t\t\t\t\t\tif (io.wheelable) {\r\n\t\t\t\t\t\t\tthis.unlockWheel();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tio.events.on(\"over\", (e) => {\r\n\t\t\t\t\t\tif (io.wheelable) {\r\n\t\t\t\t\t\t\tthis.lockWheel();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t]));\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tconst disposer = io.eventDisposers.getKey(\"wheelable\");\r\n\r\n\t\t\tif (disposer != null) {\r\n\t\t\t\tdisposer.dispose();\r\n\t\t\t\tio.eventDisposers.removeKey(\"wheelable\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if [[InteractionObject]] is focusable. A focusable element is an\r\n\t * element that will be highlighted when users presses TAB key. If the\r\n\t * element is focusable, this function will attach relative focus/blur\r\n\t * events to it.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t */\r\n\tpublic processFocusable(io: InteractionObject): void {\r\n\t\tif (io.focusable === true && (io.tabindex > -1) && !this._useTouchEventsOnly) {\r\n\t\t\tif (!io.eventDisposers.hasKey(\"focusable\")) {\r\n\t\t\t\tio.eventDisposers.setKey(\"focusable\", new MultiDisposer([\r\n\t\t\t\t\taddEventListener<FocusEvent>(io.element, \"focus\", (e) => this.handleFocus(io, e)),\r\n\t\t\t\t\taddEventListener<FocusEvent>(io.element, \"blur\", (e) => this.handleBlur(io, e)),\r\n\t\t\t\t\taddEventListener<MouseEvent>(\r\n\t\t\t\t\t\tio.element,\r\n\t\t\t\t\t\tthis._pointerEvents.pointerdown,\r\n\t\t\t\t\t\t(e) => this.handleFocusBlur(io, e)\r\n\t\t\t\t\t),\r\n\r\n\t\t\t\t\taddEventListener<TouchEvent>(\r\n\t\t\t\t\t\tio.element,\r\n\t\t\t\t\t\t\"touchstart\",\r\n\t\t\t\t\t\t(e) => this.handleFocusBlur(io, e),\r\n\t\t\t\t\t\tthis._passiveSupported ? { passive: false } : false\r\n\t\t\t\t\t)\r\n\t\t\t\t]));\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconst disposer = io.eventDisposers.getKey(\"focusable\");\r\n\r\n\t\t\tif (disposer != null) {\r\n\t\t\t\tdisposer.dispose();\r\n\t\t\t\tio.eventDisposers.removeKey(\"focusable\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if [[InteractionObject]] is \"touchable\". It means any interaction\r\n\t * whatsoever: mouse click, touch screen tap, swipe, drag, resize, etc.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t */\r\n\tpublic processTouchable(io: InteractionObject): void {\r\n\r\n\t\t// Add unified events\r\n\t\tif (io.clickable || io.hoverable || io.trackable || io.draggable || io.swipeable || io.resizable) {\r\n\r\n\t\t\t// Add global events\r\n\t\t\tthis.addGlobalEvents();\r\n\r\n\t\t\t// Add local events\r\n\t\t\tif (!io.eventDisposers.hasKey(\"touchable\")) {\r\n\t\t\t\tif (!this._useTouchEventsOnly && !this._usePointerEventsOnly) {\r\n\t\t\t\t\tio.eventDisposers.setKey(\"touchable\", new MultiDisposer([\r\n\r\n\t\t\t\t\t\taddEventListener<MouseEvent>(\r\n\t\t\t\t\t\t\tio.element,\r\n\t\t\t\t\t\t\tthis._pointerEvents.pointerdown,\r\n\t\t\t\t\t\t\t(e) => this.handlePointerDown(io, e)\r\n\t\t\t\t\t\t),\r\n\r\n\t\t\t\t\t\taddEventListener<TouchEvent>(\r\n\t\t\t\t\t\t\tio.element,\r\n\t\t\t\t\t\t\t\"touchstart\",\r\n\t\t\t\t\t\t\t(e) => this.handleTouchDown(io, e),\r\n\t\t\t\t\t\t\tthis._passiveSupported ? { passive: false } : false\r\n\t\t\t\t\t\t)\r\n\r\n\t\t\t\t\t]));\r\n\t\t\t\t}\r\n\t\t\t\telse if (!this._useTouchEventsOnly) {\r\n\t\t\t\t\tio.eventDisposers.setKey(\"touchable\",\r\n\t\t\t\t\t\taddEventListener<MouseEvent>(\r\n\t\t\t\t\t\t\tio.element,\r\n\t\t\t\t\t\t\tthis._pointerEvents.pointerdown,\r\n\t\t\t\t\t\t\t(e) => this.handlePointerDown(io, e)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\telse if (!this._usePointerEventsOnly) {\r\n\t\t\t\t\tio.eventDisposers.setKey(\"touchable\",\r\n\t\t\t\t\t\taddEventListener<TouchEvent>(\r\n\t\t\t\t\t\t\tio.element,\r\n\t\t\t\t\t\t\t\"touchstart\",\r\n\t\t\t\t\t\t\t(e) => this.handleTouchDown(io, e),\r\n\t\t\t\t\t\t\tthis._passiveSupported ? { passive: false } : false\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tconst disposer = io.eventDisposers.getKey(\"touchable\");\r\n\r\n\t\t\tif (disposer != null) {\r\n\t\t\t\tdisposer.dispose();\r\n\t\t\t\tio.eventDisposers.removeKey(\"touchable\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * Non-pointer events\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Dispatches \"focus\" event when element gains focus.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic handleFocus(io: InteractionObject, ev: FocusEvent): void {\r\n\t\tif (!io.focusable) {\r\n\t\t\tev.preventDefault();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tio.isFocused = true;\r\n\t\tif (io.events.isEnabled(\"focus\") && !system.isPaused) {\r\n\t\t\tlet imev: AMEvent<InteractionObject, IInteractionObjectEvents>[\"focus\"] = {\r\n\t\t\t\ttype: \"focus\",\r\n\t\t\t\ttarget: io,\r\n\t\t\t\tevent: ev\r\n\t\t\t};\r\n\t\t\tio.events.dispatchImmediately(\"focus\", imev);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Used by regular click events to prevent focus if \"noFocus\" is set.\r\n\t *\r\n\t * This should not be called by \"focus\" handlers.\r\n\t *\r\n\t * @param io Element\r\n\t * @param ev Original event\r\n\t */\r\n\tprivate handleFocusBlur(io: InteractionObject, ev: MouseEvent | TouchEvent): void {\r\n\t\tif (io.focusable !== false && this.getHitOption(io, \"noFocus\")) {\r\n\t\t\tio.events.once(\"focus\", () => {\r\n\t\t\t\tio.events.disableType(\"blur\");\r\n\t\t\t\t$dom.blur();\r\n\t\t\t\tif (io.sprite) {\r\n\t\t\t\t\tio.sprite.handleBlur();\r\n\t\t\t\t}\r\n\t\t\t\tio.events.enableType(\"blur\");\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches \"blur\" event when element loses focus.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic handleBlur(io: InteractionObject, ev: FocusEvent): void {\r\n\t\tif (!io.focusable) {\r\n\t\t\tev.preventDefault();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tio.isFocused = false;\r\n\t\tif (io.events.isEnabled(\"blur\") && !system.isPaused) {\r\n\t\t\tlet imev: AMEvent<InteractionObject, IInteractionObjectEvents>[\"blur\"] = {\r\n\t\t\t\ttype: \"blur\",\r\n\t\t\t\ttarget: io,\r\n\t\t\t\tevent: ev\r\n\t\t\t};\r\n\t\t\tio.events.dispatchImmediately(\"blur\", imev);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * Global keyboard-related even handlers\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Checks if there is an item that has currently focus and that they key is\r\n\t * one of the directional keys. If both of the conditions are true, it\r\n\t * creates an object to simulate movement of dragable element with keyboard.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev An original keyboard event\r\n\t */\r\n\tpublic handleGlobalKeyDown(ev: KeyboardEvent): void {\r\n\r\n\t\tif (this.focusedObject) {\r\n\t\t\tif (keyboard.isKey(ev, \"esc\")) {\r\n\t\t\t\t// ESC removes focus\r\n\t\t\t\t$dom.blur();\r\n\t\t\t}\r\n\t\t\telse if (this.focusedObject.draggable && keyboard.isKey(ev, [\"up\", \"down\", \"left\", \"right\"])) {\r\n\r\n\t\t\t\t// Prevent scrolling of the document\r\n\t\t\t\tev.preventDefault();\r\n\r\n\t\t\t\t// Get focused object\r\n\t\t\t\tlet io = this.focusedObject;\r\n\r\n\t\t\t\t// Get particular key\r\n\t\t\t\tlet disposerKey = \"interactionKeyboardObject\";\r\n\r\n\t\t\t\t// If such disposer already exists we know the event is going on so we\r\n\t\t\t\t// just move on\r\n\t\t\t\tif (io.eventDisposers.hasKey(disposerKey)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Create a keyboard mover\r\n\t\t\t\tlet ko = new InteractionKeyboardObject(io, ev);\r\n\t\t\t\tio.eventDisposers.setKey(disposerKey, ko);\r\n\t\t\t\tswitch (keyboard.getEventKey(ev)) {\r\n\t\t\t\t\tcase \"up\":\r\n\t\t\t\t\t\tko.directionY = -1;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"down\":\r\n\t\t\t\t\t\tko.directionY = 1;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"left\":\r\n\t\t\t\t\t\tko.directionX = -1;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"right\":\r\n\t\t\t\t\t\tko.directionX = 1;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches related events when the keyboard key is realeasd.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev An original keyboard event\r\n\t */\r\n\tpublic handleGlobalKeyUp(ev: KeyboardEvent): void {\r\n\t\tlet disposerKey = \"interactionKeyboardObject\";\r\n\t\tif (this.focusedObject) {\r\n\t\t\tconst disposer = this.focusedObject.eventDisposers.getKey(disposerKey);\r\n\r\n\t\t\tif (disposer != null) {\r\n\t\t\t\t// Prevent scrolling of the document\r\n\t\t\t\tev.preventDefault();\r\n\r\n\t\t\t\t// Dispose stuff\r\n\t\t\t\tdisposer.dispose();\r\n\t\t\t\tthis.focusedObject.eventDisposers.removeKey(disposerKey);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * Global pointer-related even handlers\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Handler for a global \"pointermove\" event.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev Event object\r\n\t */\r\n\tpublic handleGlobalPointerMove(ev: MouseEvent): void {\r\n\t\t// Get pointer\r\n\t\tlet pointer: IPointer = this.getPointer(ev);\r\n\r\n\t\t// Update current point position\r\n\t\tpointer.point = this.getPointerPoint(ev);\r\n\r\n\t\t// Prepare and fire global event\r\n\t\tif (this.events.isEnabled(\"track\") && !system.isPaused) {\r\n\t\t\tlet imev: AMEvent<this, IInteractionEvents>[\"track\"] = {\r\n\t\t\t\ttype: \"track\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\tevent: ev,\r\n\t\t\t\tpointer: pointer,\r\n\t\t\t\ttouch: pointer.touch\r\n\t\t\t};\r\n\t\t\tthis.events.dispatchImmediately(\"track\", imev);\r\n\t\t}\r\n\r\n\t\t// Track\r\n\t\tthis.addBreadCrumb(pointer, pointer.point);\r\n\r\n\t\t// Process further\r\n\t\tthis.handleGlobalMove(pointer, ev);\r\n\t}\r\n\r\n\t/**\r\n\t * Handler for a global \"pointerdown\" event.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev Event object\r\n\t */\r\n\tpublic handleGlobalPointerDown(ev: MouseEvent): void {\r\n\r\n\t\t// Remove delayed hovers\r\n\t\tthis.processDelayed();\r\n\r\n\t\t// Get pointer\r\n\t\tlet pointer: IPointer = this.getPointer(ev);\r\n\r\n\t\t// Prepare and fire global event\r\n\t\tif (this.events.isEnabled(\"down\") && !system.isPaused) {\r\n\t\t\tlet imev: AMEvent<this, IInteractionEvents>[\"down\"] = {\r\n\t\t\t\ttype: \"down\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\tevent: ev,\r\n\t\t\t\tpointer: pointer,\r\n\t\t\t\ttouch: pointer.touch\r\n\t\t\t};\r\n\t\t\tthis.events.dispatchImmediately(\"down\", imev);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Prevents touch action from firing.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev Event\r\n\t */\r\n\tpublic preventTouchAction(ev: TouchEvent): void {\r\n\t\tif (!ev.defaultPrevented) {\r\n\t\t\tev.preventDefault();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handler for a global \"pointerup\" event.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev Event object\r\n\t */\r\n\tpublic handleGlobalPointerUp(ev: MouseEvent, cancelled: boolean = false): void {\r\n\r\n\t\t// Get pointer\r\n\t\tlet pointer: IPointer = this.getPointer(ev);\r\n\r\n\t\t// Prepare and fire global event\r\n\t\tif (this.events.isEnabled(\"up\") && !system.isPaused) {\r\n\t\t\tlet imev: AMEvent<this, IInteractionEvents>[\"up\"] = {\r\n\t\t\t\ttype: \"up\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\tevent: ev,\r\n\t\t\t\tpointer: pointer,\r\n\t\t\t\ttouch: pointer.touch\r\n\t\t\t};\r\n\t\t\tthis.events.dispatchImmediately(\"up\", imev);\r\n\t\t}\r\n\r\n\t\t// Process further\r\n\t\tthis.handleGlobalUp(pointer, ev, cancelled);\r\n\r\n\t}\r\n\r\n\t/**\r\n * ==========================================================================\r\n * Global touch-related even handlers\r\n * ==========================================================================\r\n */\r\n\r\n\t/**\r\n\t * Handler for a global \"touchmove\" event.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev Event object\r\n\t */\r\n\tpublic handleGlobalTouchMove(ev: TouchEvent): void {\r\n\r\n\t\t// Process each changed touch point\r\n\t\tfor (let i = 0; i < ev.changedTouches.length; i++) {\r\n\t\t\t// Get pointer\r\n\t\t\tlet pointer: IPointer = this.getPointer(ev.changedTouches[i]);\r\n\r\n\t\t\t// Update current point position\r\n\t\t\tpointer.point = this.getPointerPoint(ev.changedTouches[i]);\r\n\r\n\t\t\t// Prepare and fire global event\r\n\t\t\tif (this.events.isEnabled(\"track\") && !system.isPaused) {\r\n\t\t\t\tlet imev: AMEvent<this, IInteractionEvents>[\"track\"] = {\r\n\t\t\t\t\ttype: \"track\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tevent: ev,\r\n\t\t\t\t\tpointer: pointer,\r\n\t\t\t\t\ttouch: pointer.touch\r\n\t\t\t\t};\r\n\t\t\t\tthis.events.dispatchImmediately(\"track\", imev);\r\n\t\t\t}\r\n\r\n\t\t\t// Track\r\n\t\t\tthis.addBreadCrumb(pointer, pointer.point);\r\n\r\n\t\t\t// Process further\r\n\t\t\tthis.handleGlobalMove(pointer, ev);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Handler for a global \"touchstart\" event.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev Event object\r\n\t */\r\n\tpublic handleGlobalTouchStart(ev: TouchEvent): void {\r\n\r\n\t\t// Remove delayed hovers\r\n\t\tthis.processDelayed();\r\n\r\n\t\t// Process each changed touch point\r\n\t\tfor (let i = 0; i < ev.changedTouches.length; i++) {\r\n\r\n\t\t\t// Get pointer\r\n\t\t\tlet pointer: IPointer = this.getPointer(ev.changedTouches[i]);\r\n\r\n\t\t\t// Prepare and fire global event\r\n\t\t\tif (!this._usePointerEventsOnly && this.events.isEnabled(\"down\") && !system.isPaused) {\r\n\t\t\t\tlet imev: AMEvent<this, IInteractionEvents>[\"down\"] = {\r\n\t\t\t\t\ttype: \"down\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tevent: ev,\r\n\t\t\t\t\tpointer: pointer,\r\n\t\t\t\t\ttouch: pointer.touch\r\n\t\t\t\t};\r\n\t\t\t\tthis.events.dispatchImmediately(\"down\", imev);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Handler for a global \"touchend\" event.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev Event object\r\n\t */\r\n\tpublic handleGlobalTouchEnd(ev: TouchEvent): void {\r\n\r\n\t\t// Process each changed touch point\r\n\t\tfor (let i = 0; i < ev.changedTouches.length; i++) {\r\n\r\n\t\t\t// Get pointer\r\n\t\t\tlet pointer: IPointer = this.getPointer(ev.changedTouches[i]);\r\n\r\n\t\t\t// Prepare and fire global event\r\n\t\t\tif (this.events.isEnabled(\"up\") && !system.isPaused) {\r\n\t\t\t\tlet imev: AMEvent<this, IInteractionEvents>[\"up\"] = {\r\n\t\t\t\t\ttype: \"up\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tevent: ev,\r\n\t\t\t\t\tpointer: pointer,\r\n\t\t\t\t\ttouch: pointer.touch\r\n\t\t\t\t};\r\n\t\t\t\tthis.events.dispatchImmediately(\"up\", imev);\r\n\t\t\t}\r\n\r\n\t\t\t// Handle element-related events\r\n\t\t\tthis.handleGlobalUp(pointer, ev);\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * Element-specific pointer-related even handlers\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Handles event when pointer is over [[InteractionObject]] and button is\r\n\t * pressed.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic handlePointerDown(io: InteractionObject, ev: MouseEvent | PointerEvent): void {\r\n\r\n\t\t// Stop further propagation so we don't get multiple triggers on hybrid\r\n\t\t// devices (both mouse and touch capabilities)\r\n\t\t//ev.preventDefault();\r\n\t\t//ev.stopPropagation();\r\n\t\t//if (ev.defaultPrevented) {\r\n\t\t//}\r\n\r\n\t\t// Get pointer\r\n\t\tlet pointer = this.getPointer(ev);\r\n\r\n\t\t// Ignore if it's anything but mouse's primary button\r\n\t\tif (!pointer.touch && ev.which != 1 && ev.which != 3) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Set mouse button\r\n\t\tpointer.button = ev.which;\r\n\r\n\t\t// Reset pointer\r\n\t\tthis.resetPointer(pointer, ev);\r\n\r\n\t\t// Process down\r\n\t\tthis.handleDown(io, pointer, ev);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles event when [[InteractionObject]] is hovered by a mouse pointer.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic handlePointerOver(io: InteractionObject, ev: MouseEvent | PointerEvent): void {\r\n\t\t// Get pointer\r\n\t\tlet pointer = this.getPointer(ev);\r\n\r\n\t\t// Process down\r\n\t\tthis.handleOver(io, pointer, ev);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles event when [[InteractionObject]] loses hover from a mouse pointer.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic handlePointerOut(io: InteractionObject, ev: MouseEvent | PointerEvent): void {\r\n\r\n\t\t// Get pointer\r\n\t\tlet pointer = this.getPointer(ev);\r\n\r\n\t\t// Process down\r\n\t\tthis.handleOut(io, pointer, ev);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles event when mouse wheel is crolled over the [[InteractionObject]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param ev Original event\r\n\t * @todo Investigate more-cross browser stuff https://developer.mozilla.org/en-US/docs/Web/Events/wheel\r\n\t */\r\n\tpublic handleMouseWheel(io: InteractionObject, ev: WheelEvent): void {\r\n\r\n\t\t// Get pointer\r\n\t\tlet pointer = this.getPointer(ev);\r\n\r\n\t\t// Update current point position\r\n\t\tpointer.point = this.getPointerPoint(ev);\r\n\r\n\t\t// Init delta values\r\n\t\tlet deltaX: number = 0, deltaY: number = 0;\r\n\r\n\t\t// Set up modifier\r\n\t\t// This is needed because FireFox reports wheel deltas in \"lines\" instead\r\n\t\t// of pixels so we have to approximate pixel value\r\n\t\tlet mod = 1;\r\n\t\tif (ev.deltaMode == 1) {\r\n\t\t\tmod = 50;\r\n\t\t}\r\n\r\n\t\t// Adjust configurable sensitivity\r\n\t\tmod *= this.getMouseOption(io, \"sensitivity\");\r\n\r\n\t\t// Calculate deltas\r\n\t\tif (ev instanceof WheelEvent) {\r\n\t\t\tdeltaX = Math.round((-1 * (<any>ev).wheelDeltaX) || ev.deltaX) * mod;\r\n\t\t\tdeltaY = Math.round((-1 * (<any>ev).wheelDeltaY) || ev.deltaY) * mod;\r\n\t\t} else {\r\n\t\t\tthrow new Error(\"Invalid event type\");\r\n\t\t}\r\n\r\n\t\t// Handle the event\r\n\t\tthis.handleWheel(io, pointer, deltaX, deltaY, ev);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * Element-specific touch-related even handlers\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Handles an event when an [[InteractionObject]] is touched on a touch\r\n\t * device.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic handleTouchDown(io: InteractionObject, ev: TouchEvent): void {\r\n\r\n\t\t// Stop further propagation so we don't get multiple triggers on hybrid\r\n\t\t// devices (both mouse and touch capabilities)\r\n\t\t//this.maybePreventDefault(io, ev);\r\n\t\t//return;\r\n\r\n\t\t// Process each changed touch point\r\n\t\tfor (let i = 0; i < ev.changedTouches.length; i++) {\r\n\r\n\t\t\t// Get pointer\r\n\t\t\tlet pointer = this.getPointer(ev.changedTouches[i]);\r\n\t\t\tthis.maybePreventDefault(io, ev, pointer);\r\n\r\n\t\t\t// Reset pointer\r\n\t\t\tthis.resetPointer(pointer, ev.changedTouches[i]);\r\n\r\n\t\t\t// Process down\r\n\t\t\tthis.handleDown(io, pointer, ev);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * Universal handlers\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Handles click/tap. Checks for doublehit.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Interaction object\r\n\t * @param pointer Pointer\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic handleHit(io: InteractionObject, pointer: IPointer, ev: MouseEvent | TouchEvent): void {\r\n\r\n\t\t// Check if this is a double-hit\r\n\t\tlet now = $time.getTime();\r\n\t\tif (io.lastHit && (io.lastHit >= (now - this.getHitOption(io, \"doubleHitTime\")))) {\r\n\r\n\t\t\t// Yup - it's a double-hit\r\n\r\n\t\t\t// Cancel the hit\r\n\t\t\t//clearTimeout(io.lastHitPointer.hitTimeout);\r\n\r\n\t\t\t// If it happened too fast it probably means that hybrid device just\r\n\t\t\t// generated two events for the same tap\r\n\t\t\tif ((now - io.lastHit) < 100) {\r\n\t\t\t\t// Ignore\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Clear last hit\r\n\t\t\tio.lastHit = undefined;\r\n\t\t\tio.lastHitPointer = undefined;\r\n\r\n\t\t\t// Dispatch event\r\n\t\t\tif (io.events.isEnabled(\"doublehit\") && !system.isPaused) {\r\n\t\t\t\tlet imev: AMEvent<InteractionObject, IInteractionObjectEvents>[\"doublehit\"] = {\r\n\t\t\t\t\ttype: \"doublehit\",\r\n\t\t\t\t\ttarget: io,\r\n\t\t\t\t\tpoint: pointer.point,\r\n\t\t\t\t\tevent: ev,\r\n\t\t\t\t\ttouch: pointer.touch\r\n\t\t\t\t};\r\n\t\t\t\tio.events.dispatchImmediately(\"doublehit\", imev);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\telse {\r\n\r\n\t\t\t// Log last hit\r\n\t\t\tio.lastHit = now;\r\n\t\t\tio.lastHitPointer = pointer;\r\n\r\n\t\t\tif (pointer.button === 3) {\r\n\t\t\t\t// Execute HIT now\r\n\t\t\t\tif (io.events.isEnabled(\"rightclick\") && !system.isPaused) {\r\n\t\t\t\t\tlet imev: AMEvent<InteractionObject, IInteractionObjectEvents>[\"rightclick\"] = {\r\n\t\t\t\t\t\ttype: \"rightclick\",\r\n\t\t\t\t\t\ttarget: io,\r\n\t\t\t\t\t\tevent: ev\r\n\t\t\t\t\t}\r\n\t\t\t\t\tio.events.dispatchImmediately(\"rightclick\", imev);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (io.events.isEnabled(\"hit\") && !system.isPaused) {\r\n\t\t\t\t\tlet imev: AMEvent<InteractionObject, IInteractionObjectEvents>[\"hit\"] = {\r\n\t\t\t\t\t\ttype: \"hit\",\r\n\t\t\t\t\t\ttarget: io,\r\n\t\t\t\t\t\tevent: ev,\r\n\t\t\t\t\t\tpoint: pointer.point,\r\n\t\t\t\t\t\ttouch: pointer.touch\r\n\t\t\t\t\t};\r\n\t\t\t\t\tio.events.dispatchImmediately(\"hit\", imev);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Handles pointer hovering over [[InteractionObject]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Interaction object\r\n\t * @param pointer Pointer\r\n\t * @param ev Original event\r\n\t * @param soft Invoked by helper function\r\n\t */\r\n\tpublic handleOver(io: InteractionObject, pointer: IPointer, ev: MouseEvent | TouchEvent, soft: boolean = false): void {\r\n\r\n\t\tif (!io.hoverable) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Remove any delayed outs\r\n\t\tthis.processDelayed();\r\n\r\n\t\t// Add pointer\r\n\t\tio.overPointers.moveValue(pointer);\r\n\r\n\t\t// Check if object is not yet hovered\r\n\t\tif (!io.isHover) {\r\n\r\n\t\t\t// Set element as hovered\r\n\t\t\tio.isHover = true;\r\n\t\t\tthis.overObjects.moveValue(io);\r\n\r\n\t\t\t// Generate body track event. This is needed so that if element loads\r\n\t\t\t// under unmoved mouse cursor, we still need all the actions that are\r\n\t\t\t// required to happen to kick in.\r\n\t\t\tthis.handleTrack(this.body, pointer, ev, true);\r\n\r\n\t\t\t// Event\r\n\t\t\tif (io.events.isEnabled(\"over\") && !system.isPaused) {\r\n\t\t\t\tlet imev: AMEvent<InteractionObject, IInteractionObjectEvents>[\"over\"] = {\r\n\t\t\t\t\ttype: \"over\",\r\n\t\t\t\t\ttarget: io,\r\n\t\t\t\t\tevent: ev,\r\n\t\t\t\t\tpointer: pointer,\r\n\t\t\t\t\ttouch: pointer.touch\r\n\t\t\t\t};\r\n\t\t\t\tio.events.dispatchImmediately(\"over\", imev);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Handles when [[InteractionObject]] is no longer hovered.\r\n\t *\r\n\t * If `soft = true`, this means that method is being invoked by some other\r\n\t * code, not hard \"out\" function, like `handleUp` which implies we need to\r\n\t * run additional checks before unhovering the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Interaction object\r\n\t * @param pointer Pointer\r\n\t * @param ev Original event\r\n\t * @param soft Invoked by helper function\r\n\t * @param force Force imediate out\r\n\t */\r\n\tpublic handleOut(io: InteractionObject, pointer: IPointer, ev: MouseEvent | TouchEvent, soft: boolean = false, force: boolean = false): void {\r\n\r\n\t\tif (!io.hoverable) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Remove pointer\r\n\t\tio.overPointers.removeValue(pointer);\r\n\r\n\t\t// Check if element is still hovered\r\n\t\tif (io.isHover && (!io.hasDelayedOut || force)) {\r\n\r\n\r\n\t\t\t// Should we run additional checks?\r\n\t\t\tif (soft && io.overPointers.length) {\r\n\t\t\t\t// There are still pointers hovering - don't do anything else and\r\n\t\t\t\t// wait until either no over pointers are there or we get a hard out\r\n\t\t\t\t// event.\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Should we delay \"out\" if this is happening on a touch device?\r\n\t\t\tif (pointer.touch && !force && !this.old(pointer)) {\r\n\r\n\t\t\t\t// This is a touch pointer, and it hasn't moved, let's pretend\r\n\t\t\t\t// the object is still hovered, and act as per \"behavior\" setting\r\n\t\t\t\tlet behavior = this.getHoverOption(io, \"touchOutBehavior\");\r\n\t\t\t\tif (behavior == \"leave\") {\r\n\t\t\t\t\t// Set to \"leave\", so we do not execute any \"out\" event.\r\n\t\t\t\t\t// It will be handled by any other interaction that happens\r\n\t\t\t\t\t// afterwards.\r\n\t\t\t\t\tthis._delayedEvents.out.push({\r\n\t\t\t\t\t\ttype: \"out\",\r\n\t\t\t\t\t\tio: io,\r\n\t\t\t\t\t\tpointer: pointer,\r\n\t\t\t\t\t\tevent: ev,\r\n\t\t\t\t\t\tkeepUntil: $time.getTime() + 500\r\n\t\t\t\t\t});\r\n\t\t\t\t\tio.hasDelayedOut = true;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\telse if (behavior == \"delay\" && this.getHoverOption(io, \"touchOutDelay\")) {\r\n\t\t\t\t\tthis._delayedEvents.out.push({\r\n\t\t\t\t\t\ttype: \"out\",\r\n\t\t\t\t\t\tio: io,\r\n\t\t\t\t\t\tpointer: pointer,\r\n\t\t\t\t\t\tevent: ev,\r\n\t\t\t\t\t\tkeepUntil: $time.getTime() + 500,\r\n\t\t\t\t\t\ttimeout: this.setTimeout(() => {\r\n\t\t\t\t\t\t\tthis.handleOut(io, pointer, ev, true);\r\n\t\t\t\t\t\t}, this.getHoverOption(io, \"touchOutDelay\"))\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// Nothing for \"remove\" - that's how it works \"out-of-the-box\"\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Set element as not hovered\r\n\t\t\tio.isHover = false;\r\n\t\t\tthis.overObjects.removeValue(io);\r\n\r\n\t\t\t// Invoke event\r\n\t\t\tif (io.events.isEnabled(\"out\") && !system.isPaused) {\r\n\t\t\t\tlet imev: AMEvent<InteractionObject, IInteractionObjectEvents>[\"out\"] = {\r\n\t\t\t\t\ttype: \"out\",\r\n\t\t\t\t\ttarget: io,\r\n\t\t\t\t\tevent: ev,\r\n\t\t\t\t\tpointer: pointer,\r\n\t\t\t\t\ttouch: pointer.touch\r\n\t\t\t\t};\r\n\t\t\t\tio.events.dispatchImmediately(\"out\", imev);\r\n\t\t\t}\r\n\r\n\t\t\t// Reset object from lefover delayed outs, pointers\r\n\t\t\tio.overPointers.clear();\r\n\t\t\tio.hasDelayedOut = false;\r\n\t\t\t// @todo (clean delayed)\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Processes dalyed events, such as \"out\" event that was initiated for\r\n\t * elements by touch.\r\n\t */\r\n\tprivate processDelayed(): void {\r\n\t\tlet delayedEvent;\r\n\r\n\t\twhile (true) {\r\n\t\t\tdelayedEvent = this._delayedEvents.out.pop();\r\n\r\n\t\t\tif (!delayedEvent) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (delayedEvent.timeout) {\r\n\t\t\t\tdelayedEvent.timeout.dispose();\r\n\t\t\t}\r\n\r\n\t\t\tthis.handleOut(delayedEvent.io, delayedEvent.pointer, delayedEvent.event, false, true);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Performs tasks on pointer down.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param pointer Pointer\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic handleDown(io: InteractionObject, pointer: IPointer, ev: MouseEvent | TouchEvent | undefined): void {\r\n\r\n\t\t// Need to prevent default event from happening on transformable objects\r\n\t\tthis.maybePreventDefault(io, ev, pointer);\r\n\r\n\t\t// Stop inertia animations if they're currently being played out\r\n\t\tif (io.inert) {\r\n\t\t\tthis.stopInertia(io);\r\n\t\t}\r\n\r\n\t\t// Trigger hover because some touch devices won't trigger over events\r\n\t\t// on their own\r\n\t\tthis.handleOver(io, pointer, ev, true);\r\n\r\n\t\t// Add pointer to list\r\n\t\tio.downPointers.moveValue(pointer);\r\n\r\n\t\t// Apply styles if necessary\r\n\t\tthis.applyCursorDownStyle(io, pointer);\r\n\r\n\t\t// Check if object is already down\r\n\t\tif (!io.isDown) {\r\n\r\n\t\t\t// Lose focus if needed\r\n\t\t\tif (io.focusable !== false && this.getHitOption(io, \"noFocus\") && this.focusedObject) {\r\n\t\t\t\t$dom.blur();\r\n\t\t\t}\r\n\r\n\t\t\t// Set object as hovered\r\n\t\t\tio.isDown = true;\r\n\t\t\tthis.downObjects.moveValue(io);\r\n\r\n\t\t\t// Prep object for dragging and/or resizing\r\n\t\t\tif (io.draggable) {\r\n\t\t\t\tthis.processDragStart(io, pointer, ev);\r\n\t\t\t}\r\n\t\t\tif (io.resizable) {\r\n\t\t\t\tthis.processResizeStart(io, pointer, ev);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// Dispatch \"down\" event\r\n\t\tif (io.events.isEnabled(\"down\") && !system.isPaused) {\r\n\t\t\tlet imev: AMEvent<InteractionObject, IInteractionObjectEvents>[\"down\"] = {\r\n\t\t\t\ttype: \"down\",\r\n\t\t\t\ttarget: io,\r\n\t\t\t\tevent: ev,\r\n\t\t\t\tpointer: pointer,\r\n\t\t\t\ttouch: pointer.touch\r\n\t\t\t};\r\n\t\t\tio.events.dispatchImmediately(\"down\", imev);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Performs tasks on pointer up.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param pointer Pointer\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic handleGlobalUp(pointer: IPointer, ev: MouseEvent | TouchEvent | undefined, cancelled: boolean = false): void {\r\n\r\n\t\t// Process all down objects\r\n\t\t$iter.each(this.downObjects.backwards().iterator(), (io) => {\r\n\r\n\t\t\t// Check if this particular pointer is pressing down\r\n\t\t\t// on object\r\n\t\t\tif (io && io.downPointers.contains(pointer)) {\r\n\t\t\t\tthis.handleUp(io, pointer, ev, cancelled);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Handles when [[InteractionObject]] is no longer hovered.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Interaction object\r\n\t * @param pointer Pointer\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic handleUp(io: InteractionObject, pointer: IPointer, ev: MouseEvent | TouchEvent, cancelled: boolean = false): void {\r\n\r\n\t\t// Restore cursor style\r\n\t\tthis.restoreCursorDownStyle(io, pointer);\r\n\r\n\t\t// Remove pointer from the list\r\n\t\tio.downPointers.removeValue(pointer);\r\n\r\n\t\t// Trigger out because some touch devices won't trigger out events\r\n\t\t// on their own\r\n\t\tif (pointer.touch || this._useTouchEventsOnly) {\r\n\t\t\tthis.handleOut(io, pointer, ev, true);\r\n\t\t}\r\n\r\n\t\t// Check if object still down\r\n\t\tif (io.isDown) {\r\n\r\n\t\t\t// Check if there are no other pointers hovering this element\r\n\t\t\tif (io.downPointers.length == 0) {\r\n\t\t\t\t// Set element as no longer down\r\n\t\t\t\tio.isDown = false;\r\n\t\t\t\tthis.downObjects.removeValue(io);\r\n\t\t\t}\r\n\r\n\t\t\t// Dispatch \"up\" event\r\n\t\t\tif (io.events.isEnabled(\"up\") && !system.isPaused) {\r\n\t\t\t\tlet imev: AMEvent<InteractionObject, IInteractionObjectEvents>[\"up\"] = {\r\n\t\t\t\t\ttype: \"up\",\r\n\t\t\t\t\ttarget: io,\r\n\t\t\t\t\tevent: ev,\r\n\t\t\t\t\tpointer: pointer,\r\n\t\t\t\t\ttouch: pointer.touch\r\n\t\t\t\t};\r\n\t\t\t\tio.events.dispatchImmediately(\"up\", imev);\r\n\t\t\t}\r\n\r\n\t\t\t// Check if this was not a cancelled event.\r\n\t\t\t// If event was canelled (which might happen if gesture resulted in\r\n\t\t\t// navigation or page scroll) there's no point in triggering hit and\r\n\t\t\t// other actions.\r\n\t\t\tif (!cancelled) {\r\n\r\n\t\t\t\t// Handle swiping-related stuff\r\n\t\t\t\tif (io.swipeable && this.swiped(io, pointer)) {\r\n\t\t\t\t\t// Swiped - nothing else should happen\r\n\t\t\t\t\tthis.handleSwipe(io, pointer, ev);\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// Check if it maybe a click\r\n\t\t\t\t\tif (io.clickable && !this.moved(pointer, this.getHitOption(io, \"hitTolerance\"))) {\r\n\t\t\t\t\t\tthis.handleHit(io, pointer, ev);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Handle inertia\r\n\t\t\t\t\tif (io.inert && this.moved(pointer, this.getHitOption(io, \"hitTolerance\"))) {\r\n\t\t\t\t\t\tthis.handleInertia(io, pointer);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (io.draggable) {\r\n\t\t\t\t\t\tthis.processDragStop(io, pointer, ev);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (io.resizable) {\r\n\t\t\t\t\t\tthis.processResizeStop(io, pointer, ev);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if event needs to be prevented on draggable and such items, so that\r\n\t * touch gestures like navigation and scroll do not kick in.\r\n\t *\r\n\t * @param io Object\r\n\t * @param ev Event\r\n\t */\r\n\tprivate maybePreventDefault(io: InteractionObject, ev: MouseEvent | TouchEvent | undefined, pointer?: IPointer): void {\r\n\t\tif (\r\n\t\t\t$type.hasValue(ev)\r\n\t\t\t&& (io.draggable || io.swipeable || io.trackable || io.resizable)\r\n\t\t\t&& !this.isGlobalElement(io)\r\n\t\t\t&& ev.cancelable !== false\r\n\t\t\t&& (!io.isTouchProtected || !pointer || !pointer.touch)\r\n\t\t) {\r\n\t\t\tev.preventDefault();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles pointer move.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param pointer Pointer\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic handleGlobalMove(pointer: IPointer, ev: MouseEvent | TouchEvent): void {\r\n\r\n\t\t// Process hovered elements\r\n\t\t// We check if the element became unhovered without reporting the mouseout\r\n\t\t// event. (it happens in some cases)\r\n\t\tif (!pointer.touch) {\r\n\t\t\tconst target = <HTMLElement>$dom.eventTarget(<Event>pointer.lastEvent);\r\n\r\n\t\t\t$iter.each(this.overObjects.backwards().iterator(), (io) => {\r\n\t\t\t\t// Is this pointer relevant to element?\r\n\t\t\t\tif (io && io.overPointers.contains(pointer) && io.hoverable) {\r\n\t\t\t\t\t// Check if the element is still hovered\r\n\t\t\t\t\tlet reset = false;\r\n\t\t\t\t\tif (io.element && pointer.lastEvent) {\r\n\t\t\t\t\t\tif (!$dom.contains(io.element, target)) {\r\n\t\t\t\t\t\t\treset = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\treset = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (reset) {\r\n\t\t\t\t\t\tthis.handleOut(io, pointer, ev, true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\r\n\t\t// Process down elements\r\n\t\t$iter.each(this.transformedObjects.backwards().iterator(), (io) => {\r\n\t\t\t// Is this pointer relevant to element?\r\n\t\t\tif (io.downPointers.contains(pointer) &&\r\n\t\t\t\t// Swipe still happening?\r\n\t\t\t\t!(io.swipeable && this.swiping(io, pointer)) &&\r\n\t\t\t\t(io.draggable || io.resizable)) {\r\n\t\t\t\tthis.handleTransform(io, ev);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Process tracked elements\r\n\t\t$iter.each(this.trackedObjects.backwards().iterator(), (io) => {\r\n\t\t\t// Is this pointer relevant to element?\r\n\t\t\tif (!io.overPointers.contains(pointer)) {\r\n\t\t\t\tthis.handleTrack(io, pointer, ev);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Handles reporting of pointer movement.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param pointer Pointer\r\n\t * @param ev Original event\r\n\t * @param skipCheck Sould we skip check if cursor actually moved\r\n\t */\r\n\tpublic handleTrack(io: InteractionObject, pointer: IPointer, ev: MouseEvent | TouchEvent, skipCheck = false): void {\r\n\r\n\t\t// Do nothing if the cursor did not actually move\r\n\t\tif (!skipCheck && !this.moved(pointer, 0)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Initiate TRACK event\r\n\t\tif (io.events.isEnabled(\"track\") && !system.isPaused) {\r\n\t\t\tlet imev: AMEvent<InteractionObject, IInteractionObjectEvents>[\"track\"] = {\r\n\t\t\t\ttype: \"track\",\r\n\t\t\t\ttarget: io,\r\n\t\t\t\tevent: ev,\r\n\t\t\t\tpoint: pointer.point,\r\n\t\t\t\tpointer: pointer,\r\n\t\t\t\ttouch: pointer.touch\r\n\t\t\t};\r\n\t\t\tio.events.dispatchImmediately(\"track\", imev);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles swipe action.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param pointer Pointer\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic handleSwipe(io: InteractionObject, pointer: IPointer, ev: MouseEvent | TouchEvent): void {\r\n\r\n\t\t// We pass in InteractionEvent with shift in mouse coordinates\r\n\t\t// between when the drag started and ended\r\n\t\tif (io.events.isEnabled(\"swipe\") && !system.isPaused) {\r\n\t\t\tlet imev: AMEvent<InteractionObject, IInteractionObjectEvents>[\"swipe\"] = {\r\n\t\t\t\ttype: \"swipe\",\r\n\t\t\t\ttarget: io,\r\n\t\t\t\tevent: ev,\r\n\t\t\t\ttouch: pointer.touch\r\n\t\t\t};\r\n\t\t\tio.events.dispatchImmediately(\"swipe\", imev);\r\n\t\t}\r\n\r\n\t\tif (pointer.startPoint.x < pointer.point.x) {\r\n\t\t\tif (io.events.isEnabled(\"swiperight\") && !system.isPaused) {\r\n\t\t\t\tlet imev: AMEvent<InteractionObject, IInteractionObjectEvents>[\"swiperight\"] = {\r\n\t\t\t\t\ttype: \"swiperight\",\r\n\t\t\t\t\ttarget: io,\r\n\t\t\t\t\tevent: ev,\r\n\t\t\t\t\ttouch: pointer.touch\r\n\t\t\t\t};\r\n\t\t\t\tio.events.dispatchImmediately(\"swiperight\", imev);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (io.events.isEnabled(\"swipeleft\") && !system.isPaused) {\r\n\t\t\t\tlet imev: AMEvent<InteractionObject, IInteractionObjectEvents>[\"swipeleft\"] = {\r\n\t\t\t\t\ttype: \"swipeleft\",\r\n\t\t\t\t\ttarget: io,\r\n\t\t\t\t\tevent: ev,\r\n\t\t\t\t\ttouch: pointer.touch\r\n\t\t\t\t};\r\n\t\t\t\tio.events.dispatchImmediately(\"swipeleft\", imev);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Handles event triggering for wheel rotation.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param pointer Pointer\r\n\t * @param deltaX Horizontal shift\r\n\t * @param deltaY Vertical shift\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic handleWheel(io: InteractionObject, pointer: IPointer, deltaX: number, deltaY: number, ev: WheelEvent): void {\r\n\t\tconst shift: IPoint = {\r\n\t\t\tx: deltaX,\r\n\t\t\ty: deltaY\r\n\t\t};\r\n\r\n\t\t// Trigger generic WHEEL event\r\n\t\tif (io.events.isEnabled(\"wheel\") && !system.isPaused) {\r\n\t\t\tio.events.dispatchImmediately(\"wheel\", {\r\n\t\t\t\ttype: \"wheel\",\r\n\t\t\t\ttarget: io,\r\n\t\t\t\tevent: ev,\r\n\t\t\t\tpoint: pointer.point,\r\n\t\t\t\tshift: shift\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Trigger direction-specific events\r\n\r\n\t\t// Horizontal\r\n\t\tif (deltaX < 0) {\r\n\t\t\tif (io.events.isEnabled(\"wheelleft\") && !system.isPaused) {\r\n\t\t\t\tio.events.dispatchImmediately(\"wheelleft\", {\r\n\t\t\t\t\ttype: \"wheelleft\",\r\n\t\t\t\t\ttarget: io,\r\n\t\t\t\t\tevent: ev,\r\n\t\t\t\t\tpoint: pointer.point,\r\n\t\t\t\t\tshift: shift\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t} else if (deltaX > 0) {\r\n\t\t\tif (io.events.isEnabled(\"swiperight\") && !system.isPaused) {\r\n\t\t\t\tio.events.dispatchImmediately(\"wheelright\", {\r\n\t\t\t\t\ttype: \"wheelright\",\r\n\t\t\t\t\ttarget: io,\r\n\t\t\t\t\tevent: ev,\r\n\t\t\t\t\tpoint: pointer.point,\r\n\t\t\t\t\tshift: shift\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Vertical\r\n\t\t} else if (deltaY < 0) {\r\n\t\t\tif (io.events.isEnabled(\"wheelup\") && !system.isPaused) {\r\n\t\t\t\tio.events.dispatchImmediately(\"wheelup\", {\r\n\t\t\t\t\ttype: \"wheelup\",\r\n\t\t\t\t\ttarget: io,\r\n\t\t\t\t\tevent: ev,\r\n\t\t\t\t\tpoint: pointer.point,\r\n\t\t\t\t\tshift: shift\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t} else if (deltaY > 0) {\r\n\t\t\tif (io.events.isEnabled(\"wheeldown\") && !system.isPaused) {\r\n\t\t\t\tio.events.dispatchImmediately(\"wheeldown\", {\r\n\t\t\t\t\ttype: \"wheeldown\",\r\n\t\t\t\t\ttarget: io,\r\n\t\t\t\t\tevent: ev,\r\n\t\t\t\t\tpoint: pointer.point,\r\n\t\t\t\t\tshift: shift\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Initiates inertia checking sub-routines for different movement types:\r\n\t * drag, resize.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param sprite\r\n\t * @param pointer\r\n\t */\r\n\tpublic handleInertia(io: InteractionObject, pointer: IPointer): void {\r\n\r\n\t\tif (io.draggable && io.downPointers.length === 0) {\r\n\t\t\tthis.handleMoveInertia(io, pointer);\r\n\t\t}\r\n\r\n\t\tif (io.resizable && io.downPointers.length > 1) {\r\n\t\t\tthis.handleResizeInertia(io, pointer);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Continues moving the element to simulate the effect of inertia. Happens\r\n\t * when `inert` and `draggable` object is dragged and then released.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param pointer Pointer\r\n\t */\r\n\tpublic handleMoveInertia(io: InteractionObject, pointer: IPointer): void {\r\n\t\tlet interaction = io;\r\n\t\tlet type: \"move\" = \"move\";\r\n\t\tlet point = {\r\n\t\t\t\"x\": pointer.point.x,\r\n\t\t\t\"y\": pointer.point.y\r\n\t\t};\r\n\t\tlet startPoint = {\r\n\t\t\t\"x\": pointer.startPoint.x,\r\n\t\t\t\"y\": pointer.startPoint.y\r\n\t\t};\r\n\r\n\t\t// Init inertia object\r\n\t\tlet inertia = new Inertia(interaction, type, point, startPoint);\r\n\r\n\t\t// Get inertia data\r\n\t\tlet ref = this.getTrailPoint(pointer, $time.getTime() - this.getInertiaOption(io, \"move\", \"time\"));\r\n\t\tif (typeof ref === \"undefined\") {\r\n\t\t\tthis.processDragStop(io, pointer, pointer.lastUpEvent);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Init animation options\r\n\t\tlet factor = this.getInertiaOption(io, \"move\", \"factor\");\r\n\t\tlet animationOptions = [{\r\n\t\t\t\"to\": pointer.point.x + (pointer.point.x - ref.point.x) * factor,\r\n\t\t\t\"property\": \"x\"\r\n\t\t}, {\r\n\t\t\t\"to\": pointer.point.y + (pointer.point.y - ref.point.y) * factor,\r\n\t\t\t\"property\": \"y\"\r\n\t\t}];\r\n\r\n\t\t// Start animation\r\n\t\tlet animation: Animation = new Animation(\r\n\t\t\tinertia,\r\n\t\t\tanimationOptions,\r\n\t\t\tthis.getInertiaOption(io, \"move\", \"duration\"),\r\n\t\t\tthis.getInertiaOption(io, \"move\", \"easing\")\r\n\t\t).start();\r\n\t\tthis._disposers.push(animation.events.on(\"animationended\", (ev) => {\r\n\t\t\tinertia.done();\r\n\t\t}));\r\n\r\n\t\t// Add inertia object\r\n\t\tio.inertias.setKey(\"move\", inertia);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Continues resizing of a `resizable` element after it is resized and\r\n\t * released.\r\n\t *\r\n\t * **NOTE:** this is is just a placeholder function. No actual fucntionality\r\n\t * is implemented, yet.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param pointer Pointer\r\n\t */\r\n\tpublic handleResizeInertia(io: InteractionObject, pointer: IPointer): void {\r\n\r\n\t\t// Some day, folks. Some day...\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Recalculates element's position and size based on position of\r\n\t * all its related pointers.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic handleTransform(io: InteractionObject, ev: MouseEvent | TouchEvent): void {\r\n\r\n\r\n\t\t// Get primary pointer and its respective points\r\n\t\tlet pointer1: $type.Optional<IPointer> = io.downPointers.getIndex(0);\r\n\t\tlet point1: IPoint = null;\r\n\t\tlet startPoint1: IPoint = null;\r\n\r\n\t\tif (pointer1) {\r\n\t\t\tpoint1 = pointer1.point;\r\n\t\t\tstartPoint1 = pointer1.startPoint;\r\n\t\t}\r\n\r\n\t\t// Init secondary pointer\r\n\t\tlet pointer2: $type.Optional<IPointer>;\r\n\t\tlet point2: IPoint;\r\n\t\tlet startPoint2: IPoint;\r\n\r\n\t\t// Use center of the sprite to simulate \"second\" point of touch\r\n\t\tpoint2 = {\r\n\t\t\t\"x\": io.originalPosition.x,\r\n\t\t\t\"y\": io.originalPosition.y\r\n\t\t};\r\n\t\tstartPoint2 = point2;\r\n\r\n\t\t// Determine if it's a sinngle pointer or multi\r\n\t\tlet singlePoint: boolean = true;\r\n\t\tfor (let i = 1; i < io.downPointers.length; i++) {\r\n\r\n\t\t\t// Get pointer\r\n\t\t\tlet nextPointer = io.downPointers.getIndex(i);\r\n\r\n\t\t\t// Doublecheck if it's not the same pointer by comparing original position\r\n\t\t\tif (startPoint1.x != nextPointer.startPoint.x && startPoint1.y != nextPointer.startPoint.y) {\r\n\r\n\t\t\t\t// Several pointers down\r\n\t\t\t\tsinglePoint = false;\r\n\r\n\t\t\t\t// Get second pointer\r\n\t\t\t\tpointer2 = nextPointer;\r\n\t\t\t\tpoint2 = pointer2.point;\r\n\t\t\t\tstartPoint2 = pointer2.startPoint;\r\n\r\n\t\t\t\t// Stop looking\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Primary touch point moved?\r\n\t\tlet pointer1Moved = pointer1 && this.moved(pointer1, 0);\r\n\r\n\t\t// Report DRAG_START if necessary\r\n\t\tif (io.draggable && pointer1 && pointer1.dragStartEvents && pointer1.dragStartEvents.length && pointer1Moved) {\r\n\t\t\tif (io.events.isEnabled(\"dragstart\") && !system.isPaused) {\r\n\t\t\t\tio.events.dispatchImmediately(\"dragstart\", pointer1.dragStartEvents.shift());\r\n\t\t\t}\r\n\t\t\t//delete pointer1.dragStartEvents;\r\n\t\t}\r\n\r\n\t\t// Determine what we do in order of superiority\r\n\t\tif (singlePoint && io.draggable) {\r\n\r\n\t\t\t// We have only one pointer and the Sprite is draggable\r\n\t\t\t// There's nothing else to be done - just move it\r\n\t\t\tthis.handleTransformMove(io, point1, startPoint1, ev, pointer1Moved, pointer1.touch);\r\n\r\n\t\t}\r\n\t\telse {\r\n\r\n\t\t\t// Check if second touch point moved\r\n\t\t\tlet pointer2Moved = pointer2 && this.moved(pointer2, 0);\r\n\r\n\t\t\tif (io.draggable && io.resizable) {\r\n\t\t\t\t//this.handleTransformAll(io, point1, startPoint1, point2, startPoint2, ev, pointer1Moved && pointer2Moved);\r\n\t\t\t\tthis.handleTransformMove(io, point1, startPoint1, ev, pointer1Moved && pointer2Moved, pointer1.touch);\r\n\t\t\t\tthis.handleTransformResize(io, point1, startPoint1, point2, startPoint2, ev, pointer1Moved && pointer2Moved, pointer1.touch);\r\n\t\t\t}\r\n\t\t\telse {\r\n\r\n\t\t\t\tif (io.draggable) {\r\n\t\t\t\t\tthis.handleTransformMove(io, point1, startPoint1, ev, pointer1Moved, pointer1.touch);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (io.resizable && (!singlePoint || ev.ctrlKey)) {\r\n\t\t\t\t\tthis.handleTransformResize(io, point1, startPoint1, point2, startPoint2, ev, pointer1Moved && pointer2Moved, pointer1.touch);\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Handles movement of the dragged element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param point Current point of the pointer\r\n\t * @param startPoint Starting point of the pointer\r\n\t * @param ev Original event\r\n\t * @param pointerMoved Did pointer move?\r\n\t */\r\n\tpublic handleTransformMove(io: InteractionObject, point: IPoint, startPoint: IPoint, ev: MouseEvent | TouchEvent | KeyboardEvent, pointerMoved: boolean, touch: boolean): void {\r\n\r\n\t\tif (pointerMoved) {\r\n\t\t\tif (io.events.isEnabled(\"drag\") && !system.isPaused && (!io.isTouchProtected || !touch)) {\r\n\t\t\t\tlet imev: AMEvent<InteractionObject, IInteractionObjectEvents>[\"drag\"] = {\r\n\t\t\t\t\ttype: \"drag\",\r\n\t\t\t\t\ttarget: io,\r\n\t\t\t\t\tevent: ev,\r\n\t\t\t\t\tshift: {\r\n\t\t\t\t\t\t\"x\": point.x - startPoint.x,\r\n\t\t\t\t\t\t\"y\": point.y - startPoint.y\r\n\t\t\t\t\t},\r\n\t\t\t\t\tstartPoint: startPoint,\r\n\t\t\t\t\tpoint: point,\r\n\t\t\t\t\ttouch: touch\r\n\t\t\t\t};\r\n\t\t\t\tio.events.dispatchImmediately(\"drag\", imev);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Handles resizing of the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param point1 Current position of reference point #1\r\n\t * @param startPoint1 Original position of reference point #1\r\n\t * @param point2 Current position of reference point #2\r\n\t * @param startPoint2 Original position of reference point #2\r\n\t * @param ev Original event\r\n\t * @param pointerMoved Did pointer move?\r\n\t */\r\n\tpublic handleTransformResize(io: InteractionObject, point1: IPoint, startPoint1: IPoint, point2: IPoint, startPoint2: IPoint, ev: MouseEvent | TouchEvent, pointerMoved: boolean, touch: boolean): void {\r\n\t\tif (io.events.isEnabled(\"resize\") && !system.isPaused && (!io.isTouchProtected || !touch)) {\r\n\t\t\tlet imev: AMEvent<InteractionObject, IInteractionObjectEvents>[\"resize\"] = {\r\n\t\t\t\ttype: \"resize\",\r\n\t\t\t\ttarget: io,\r\n\t\t\t\tevent: ev,\r\n\t\t\t\tscale: $math.getScale(point1, startPoint1, point2, startPoint2),\r\n\t\t\t\tstartPoint1: startPoint1,\r\n\t\t\t\tpoint1: point1,\r\n\t\t\t\tstartPoint2: startPoint2,\r\n\t\t\t\tpoint2: point2,\r\n\t\t\t\ttouch: touch\r\n\t\t\t};\r\n\t\t\tio.events.dispatchImmediately(\"resize\", imev);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Handles all the preparations of the element when it starts to be dragged.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param pointer Pointer\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic processDragStart(io: InteractionObject, pointer?: IPointer, ev?: MouseEvent | TouchEvent): void {\r\n\r\n\t\t// Add to draggedObjects\r\n\t\tthis.transformedObjects.moveValue(io);\r\n\r\n\t\t// Report \"dragstart\"\r\n\t\tlet imev: AMEvent<InteractionObject, IInteractionObjectEvents>[\"dragstart\"] = {\r\n\t\t\ttype: \"dragstart\",\r\n\t\t\ttarget: io,\r\n\t\t\tevent: ev,\r\n\t\t\ttouch: pointer ? pointer.touch : false\r\n\t\t};\r\n\r\n\t\t// Log object that we are starting to drag, so we can check against and\r\n\t\t// avoid hovers on other objects that might be in the path of movement.\r\n\t\tif (pointer) {\r\n\t\t\tpointer.dragTarget = io;\r\n\t\t\t//pointer.startPoint = pointer.point;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * If pointer is set we will not fire the event until the pointer has\r\n\t\t * actually moved. If it's not set we don't have to wait for anything, so we\r\n\t\t * just fire off the event right away.\r\n\t\t */\r\n\t\tif (pointer && pointer.dragStartEvents) {\r\n\t\t\tpointer.dragStartEvents.push(imev);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (!system.isPaused) {\r\n\t\t\t\tio.dispatchImmediately(\"dragstart\", imev);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Finishes up element drag operation.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param pointer Pointer\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic processDragStop(io: InteractionObject, pointer?: IPointer, ev?: MouseEvent | TouchEvent): void {\r\n\r\n\t\t// Pointer set?\r\n\t\tif (!pointer) {\r\n\t\t\tpointer = this.getDragPointer(io);\r\n\t\t}\r\n\r\n\t\t// Unset drag object\r\n\t\tif (pointer) {\r\n\t\t\tpointer.dragTarget = undefined;\r\n\t\t}\r\n\r\n\t\t// Removed from transformedObjects\r\n\t\tthis.transformedObjects.removeValue(io);\r\n\r\n\t\t// Unlock document\r\n\t\t//this.unlockDocument();\r\n\r\n\t\t// Report dragstop\r\n\t\tif (!pointer || this.moved(pointer, 0)) {\r\n\t\t\tif (io.events.isEnabled(\"dragstop\") && !system.isPaused) {\r\n\t\t\t\tlet imev: AMEvent<InteractionObject, IInteractionObjectEvents>[\"dragstop\"] = {\r\n\t\t\t\t\ttype: \"dragstop\",\r\n\t\t\t\t\ttarget: io,\r\n\t\t\t\t\ttouch: pointer ? pointer.touch : false\r\n\t\t\t\t};\r\n\t\t\t\tio.events.dispatchImmediately(\"dragstop\", imev);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles all the preparations of the element when it starts to be resized.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param pointer Pointer\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic processResizeStart(io: InteractionObject, pointer?: IPointer, ev?: MouseEvent | TouchEvent): void {\r\n\r\n\t\t// Add to draggedObjects\r\n\t\tthis.transformedObjects.moveValue(io);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Finishes up element drag operation.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param pointer Pointer\r\n\t * @param ev Original event\r\n\t */\r\n\tpublic processResizeStop(io: InteractionObject, pointer?: IPointer, ev?: MouseEvent | TouchEvent): void {\r\n\r\n\t\t// Removed from transformedObjects\r\n\t\tthis.transformedObjects.removeValue(io);\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * Controls for InteractionObjects initiating directly\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Manually triggers drag start on the element. Could be useful in cases\r\n\t * where tracking or dragging one element can also influence dragging another\r\n\t * element.\r\n\t *\r\n\t * Passing in `pointer` reference is advisable. If not passed in it will try\r\n\t * to determine which pointer to attach to. However, it's better to specify\r\n\t * it explicitly.\r\n\t *\r\n\t * @param io Element\r\n\t * @param pointer Pointer\r\n\t */\r\n\tpublic dragStart(io: InteractionObject, pointer?: IPointer): void {\r\n\t\tif (!pointer) {\r\n\t\t\tpointer = this.getDragPointer(io);\r\n\t\t}\r\n\r\n\t\tif (pointer) {\r\n\t\t\tthis.handleDown(io, pointer, pointer.lastDownEvent);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Manually ends drag on the element.\r\n\t *\r\n\t * @param io Element\r\n\t * @param pointer Pointer\r\n\t */\r\n\tpublic dragStop(io: InteractionObject, pointer?: IPointer): void {\r\n\t\tif (!pointer) {\r\n\t\t\tpointer = this.getDragPointer(io);\r\n\t\t}\r\n\r\n\t\tif (pointer) {\r\n\t\t\tthis.handleGlobalUp(pointer, pointer.lastUpEvent);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * This method uses a fuzzy logic to find the pointer to be used for dragging.\r\n\t * Beware that this is not a rock-solid solution. If there are a few objects\r\n\t * being dragged at the same time, you may get unexepected results.\r\n\t *\r\n\t * @param io InteractionObject to get pointers from\r\n\t * @return Pointer currently being used for dragging\r\n\t */\r\n\tpublic getDragPointer(io?: InteractionObject): $type.Optional<IPointer> {\r\n\t\tif (io) {\r\n\t\t\t// InteractionObject is supplied\r\n\t\t\t// Use it's first down pointer\r\n\t\t\treturn io.downPointers.getIndex(0);\r\n\t\t}\r\n\t\telse if (this.transformedObjects.length) {\r\n\t\t\t// Use first dragged object\r\n\t\t\treturn this.getDragPointer(this.transformedObjects.getIndex(0));\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * Utils\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Returns pointer id for the given event object.\r\n\t *\r\n\t * @param ev Event\r\n\t * @return Pointer ID\r\n\t */\r\n\tprotected getPointerId(ev: any): string {\r\n\t\tlet id = \"\";\r\n\t\tif ($type.hasValue(ev.identifier)) {\r\n\t\t\tid = \"\" + <string>ev.identifier;\r\n\t\t} else if ($type.hasValue(ev.pointerId)) {\r\n\t\t\tid = \"\" + <string>ev.pointerId;\r\n\t\t} else {\r\n\t\t\tid = \"m\";\r\n\t\t}\r\n\t\treturn id.replace(\"-\", \"\");\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a cursor position of the event.\r\n\t *\r\n\t * @param ev Original event\r\n\t * @return Event point\r\n\t */\r\n\tprotected getPointerPoint(ev: MouseEvent | Touch): IPoint {\r\n\t\treturn {\r\n\t\t\t\"x\": ev.clientX,\r\n\t\t\t\"y\": ev.clientY\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Returns [[Pointer]] object that is associated with the Event.\r\n\t *\r\n\t * If no such [[Pointer]] object exists, it is created.\r\n\t *\r\n\t * @param ev Event\r\n\t * @return Pointer\r\n\t */\r\n\tprotected getPointer(ev: MouseEvent | Touch): IPointer {\r\n\r\n\t\t// Get pointer id\r\n\t\tlet id = this.getPointerId(ev);\r\n\r\n\t\t// Get current coordinates\r\n\t\tlet point = this.getPointerPoint(ev);\r\n\r\n\t\t// Look for the pointer in the Dictionary if it maybe already exists\r\n\t\tlet pointer: IPointer;\r\n\t\tif (this.pointers.hasKey(id)) {\r\n\r\n\t\t\t// We already have such pointer\r\n\t\t\tpointer = this.pointers.getKey(id)!;\r\n\r\n\t\t\t// We need this, because Edge reuses pointer ids across touch and mouse\r\n\t\t\tpointer.touch = this.isPointerTouch(ev);\r\n\r\n\t\t\t// Reset pointer\r\n\t\t\t//pointer.point = point;\r\n\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// Init pointer\r\n\t\t\tpointer = {\r\n\t\t\t\t\"id\": id,\r\n\t\t\t\t//\"touch\": !(ev instanceof MouseEvent) || ((<any>ev).pointerType && (<any>ev).pointerType != \"pointer\"),\r\n\t\t\t\t//\"touch\": !(ev instanceof MouseEvent) || ((<any>ev).pointerType && (<any>ev).pointerType != \"mouse\"),\r\n\t\t\t\t\"touch\": this.isPointerTouch(ev),\r\n\t\t\t\t\"startPoint\": point,\r\n\t\t\t\t\"startTime\": $time.getTime(),\r\n\t\t\t\t\"point\": point,\r\n\t\t\t\t\"track\": [],\r\n\t\t\t\t\"swipeCanceled\": false,\r\n\t\t\t\t\"dragStartEvents\": []\r\n\t\t\t};\r\n\r\n\t\t\t// Add first breadcrumb\r\n\t\t\tthis.addBreadCrumb(pointer, point);\r\n\r\n\t\t\t// Add for re-use later\r\n\t\t\tthis.pointers.setKey(id, pointer);\r\n\t\t}\r\n\r\n\t\t// Log last event\r\n\t\tpointer.lastEvent = ev;\r\n\r\n\t\treturn pointer;\r\n\t}\r\n\r\n\t/**\r\n\t * Determines if pointer event originated from a touch pointer or mouse.\r\n\t *\r\n\t * @param ev Original event\r\n\t * @return Touch pointer?\r\n\t */\r\n\tprotected isPointerTouch(ev: MouseEvent | Touch): boolean {\r\n\t\tif (typeof Touch !== \"undefined\" && ev instanceof Touch) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse if (typeof PointerEvent !== \"undefined\" && ev instanceof PointerEvent && $type.hasValue((<any>ev).pointerType)) {\r\n\t\t\tswitch ((<any>ev).pointerType) {\r\n\t\t\t\tcase \"touch\":\r\n\t\t\t\tcase \"pen\":\r\n\t\t\t\tcase 2:\r\n\t\t\t\t\treturn true;\r\n\t\t\t\tcase \"mouse\":\r\n\t\t\t\tcase 4:\r\n\t\t\t\t\treturn false;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn !(ev instanceof MouseEvent);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if ($type.hasValue((<any>ev).type)) {\r\n\t\t\tif ((<any>ev).type.match(/^mouse/)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Resets the poiner to original state, i.e. cleans movement information,\r\n\t * starting point, etc.\r\n\t *\r\n\t * @param pointer Pointer\r\n\t */\r\n\tprotected resetPointer(pointer: IPointer, ev: MouseEvent | PointerEvent | Touch): void {\r\n\t\t// Get current coordinates\r\n\t\tlet point = this.getPointerPoint(ev);;\r\n\t\tpointer.startTime = $time.getTime();\r\n\t\tpointer.startPoint = { x: point.x, y: point.y };\r\n\t\tpointer.point = { x: point.x, y: point.y };\r\n\t\tpointer.track = [];\r\n\t\tpointer.swipeCanceled = false;\r\n\t\t//clearTimeout(pointer.swipeTimeout);\r\n\t\t//clearTimeout(pointer.holdTimeout);\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a \"breadcrumb\" point to the [[Pointer]] to log its movement path.\r\n\t *\r\n\t * @param pointer Pointer\r\n\t * @param point Point coordinates\r\n\t */\r\n\tprotected addBreadCrumb(pointer: IPointer, point: IPoint): void {\r\n\t\tpointer.track.push({\r\n\t\t\t\"timestamp\": $time.getTime(),\r\n\t\t\t\"point\": point\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Prepares the document for various touch-related operations.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic lockDocument(): void {\r\n\t\tthis.prepElement(this.body);\r\n\t}\r\n\r\n\t/**\r\n\t * Restores document functionality.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic unlockDocument(): void {\r\n\t\tif (this.transformedObjects.length == 0) {\r\n\t\t\tthis.restoreAllStyles(this.body);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Lock element (disable all touch)\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic lockElement(io: InteractionObject): void {\r\n\t\tthis.prepElement(io);\r\n\t}\r\n\r\n\t/**\r\n\t * Restores element's functionality.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic unlockElement(io: InteractionObject): void {\r\n\t\tthis.restoreAllStyles(io);\r\n\t}\r\n\r\n\t/**\r\n\t * Locks document's wheel scroll.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic lockWheel(): void {\r\n\t\twindow.addEventListener(\r\n\t\t\tthis._pointerEvents.wheel,\r\n\t\t\tthis.wheelLockEvent,\r\n\t\t\tthis._passiveSupported ? { passive: false } : false\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Unlocks document's wheel scroll.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic unlockWheel(): void {\r\n\t\twindow.removeEventListener(\r\n\t\t\tthis._pointerEvents.wheel,\r\n\t\t\tthis.wheelLockEvent\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if top element at pointer's position belongs to the SVG.\r\n\t *\r\n\t * @ignore Exlude from docs\r\n\t * @param pointer Pointer\r\n\t * @param svg The <svg> element\r\n\t * @param id A unique identifier of the object that is checking for locality\r\n\t * @return Belongs to SVG\r\n\t */\r\n\tpublic isLocalElement(pointer: IPointer, svg: SVGSVGElement, id: string): boolean {\r\n\t\tlet cached = this.getCache(\"local_pointer_\" + pointer.id);\r\n\t\tif ($type.hasValue(cached)) {\r\n\t\t\treturn cached;\r\n\t\t}\r\n\t\tlet target = ($dom.getRoot(svg) || document).elementFromPoint(pointer.point.x, pointer.point.y);\r\n\t\tlet local = target && $dom.contains(svg, <HTMLElement>target);\r\n\t\tthis.setCache(\"local_pointer_\" + pointer.id + \"_\" + id, local, 100);\r\n\t\treturn local;\r\n\t}\r\n\r\n\t/**\r\n\t * A function that cancels mouse wheel scroll.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param ev Event object\r\n\t * @return Returns `false` to cancel\r\n\t */\r\n\tprotected wheelLockEvent(ev: Event): boolean {\r\n\t\tev.preventDefault();\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Applies a set of styles to an element. Stores the original styles so they\r\n\t * can be restored later.\r\n\t *\r\n\t * @ignore\r\n\t * @param io Element\r\n\t */\r\n\tpublic prepElement(io: InteractionObject): void {\r\n\r\n\t\tlet el = io.element;\r\n\r\n\t\tif (el) {\r\n\r\n\t\t\t// Define possible props\r\n\t\t\tlet props = [\r\n\t\t\t\t\"touchAction\", \"webkitTouchAction\", \"MozTouchAction\", \"MSTouchAction\", \"msTouchAction\", \"oTouchAction\",\r\n\t\t\t\t\"userSelect\", \"webkitUserSelect\", \"MozUserSelect\", \"MSUserSelect\", \"msUserSelect\", \"oUserSelect\",\r\n\t\t\t\t\"touchSelect\", \"webkitTouchSelect\", \"MozTouchSelect\", \"MSTouchSelect\", \"msTouchSelect\", \"oTouchSelect\",\r\n\t\t\t\t\"touchCallout\", \"webkitTouchCallout\", \"MozTouchCallout\", \"MSTouchCallout\", \"msTouchCallout\", \"oTouchCallout\",\r\n\t\t\t\t\"contentZooming\", \"webkitContentZooming\", \"MozContentZooming\", \"MSContentZooming\", \"msContentZooming\", \"oContentZooming\",\r\n\t\t\t\t\"userDrag\", \"webkitUserDrag\", \"MozUserDrag\", \"MSUserDrag\", \"msUserDrag\", \"oUserDrag\"\r\n\t\t\t];\r\n\t\t\tfor (let i = 0; i < props.length; i++) {\r\n\t\t\t\tif (props[i] in el.style) {\r\n\t\t\t\t\tthis.setTemporaryStyle(io, props[i], \"none\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Remove iOS-specific selection;\r\n\t\t\tthis.setTemporaryStyle(io, \"tapHighlightColor\", \"rgba(0, 0, 0, 0)\");\r\n\t\t\t//this.setTemporaryStyle(io, \"webkitOverflowScrolling\", \"none\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Restores replaced styles\r\n\t *\r\n\t * @ignore\r\n\t * @param io Element\r\n\t */\r\n\tpublic unprepElement(io: InteractionObject): void {\r\n\r\n\t\tlet el = io.element;\r\n\r\n\t\tif (el) {\r\n\r\n\t\t\t// Define possible props\r\n\t\t\tlet props = [\r\n\t\t\t\t\"touchAction\", \"webkitTouchAction\", \"MozTouchAction\", \"MSTouchAction\", \"msTouchAction\", \"oTouchAction\",\r\n\t\t\t\t\"userSelect\", \"webkitUserSelect\", \"MozUserSelect\", \"MSUserSelect\", \"msUserSelect\", \"oUserSelect\",\r\n\t\t\t\t\"touchSelect\", \"webkitTouchSelect\", \"MozTouchSelect\", \"MSTouchSelect\", \"msTouchSelect\", \"oTouchSelect\",\r\n\t\t\t\t\"touchCallout\", \"webkitTouchCallout\", \"MozTouchCallout\", \"MSTouchCallout\", \"msTouchCallout\", \"oTouchCallout\",\r\n\t\t\t\t\"contentZooming\", \"webkitContentZooming\", \"MozContentZooming\", \"MSContentZooming\", \"msContentZooming\", \"oContentZooming\",\r\n\t\t\t\t\"userDrag\", \"webkitUserDrag\", \"MozUserDrag\", \"MSUserDrag\", \"msUserDrag\", \"oUserDrag\"\r\n\t\t\t];\r\n\t\t\tfor (let i = 0; i < props.length; i++) {\r\n\t\t\t\tif (props[i] in el.style) {\r\n\t\t\t\t\tthis.restoreStyle(io, props[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Remove iOS-specific selection;\r\n\t\t\tthis.restoreStyle(io, \"tapHighlightColor\");\r\n\t\t\t//this.restoreStyle(io, \"webkitOverflowScrolling\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an option associated with hit events.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param option Option key\r\n\t * @return Option value\r\n\t */\r\n\tpublic getHitOption(io: InteractionObject, option: keyof IHitOptions): any {\r\n\t\tlet res = io.hitOptions[option];\r\n\t\tif (typeof res === \"undefined\") {\r\n\t\t\tres = this.hitOptions[option];\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an option associated with hover events.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param option Option key\r\n\t * @return Option value\r\n\t */\r\n\tpublic getHoverOption(io: InteractionObject, option: keyof IHoverOptions): any {\r\n\t\tlet res = io.hoverOptions[option];\r\n\t\tif (typeof res === \"undefined\") {\r\n\t\t\tres = this.hoverOptions[option];\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an option associated with swipe events.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param option Option key\r\n\t * @return Option value\r\n\t */\r\n\tpublic getSwipeOption(io: InteractionObject, option: keyof ISwipeOptions): any {\r\n\t\tlet res = io.swipeOptions[option];\r\n\t\tif (typeof res === \"undefined\") {\r\n\t\t\tres = this.swipeOptions[option];\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an option for keyboard.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param option Option key\r\n\t * @return Option value\r\n\t */\r\n\tpublic getKeyboardOption(io: InteractionObject, option: keyof IKeyboardOptions): any {\r\n\t\tlet res = io.keyboardOptions[option];\r\n\t\tif (typeof res === \"undefined\") {\r\n\t\t\tres = this.keyboardOptions[option];\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an option for mouse.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param option Option key\r\n\t * @return Option value\r\n\t */\r\n\tpublic getMouseOption(io: InteractionObject, option: keyof IMouseOptions): any {\r\n\t\tlet res = io.mouseOptions[option];\r\n\t\tif (typeof res === \"undefined\") {\r\n\t\t\tres = this.mouseOptions[option];\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an option associated with inertia.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param type Inertia type\r\n\t * @param option Option key\r\n\t * @return Option value\r\n\t */\r\n\tpublic getInertiaOption(io: InteractionObject, type: InertiaTypes, option: keyof IInertiaOptions): any {\r\n\t\tlet options: any = io.inertiaOptions.getKey(type);\r\n\t\tlet res: IInertiaOptions;\r\n\t\tif (options && $type.hasValue(options[option])) {\r\n\t\t\tres = options[option];\r\n\t\t}\r\n\t\telse {\r\n\t\t\tres = (<any>this.inertiaOptions.getKey(type))[option];\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Stops currently going on inertia. Useful if inertia is currently being\r\n\t * animated and the object is being interacted with.\r\n\t *\r\n\t * @param io Element\r\n\t */\r\n\tprotected stopInertia(io: InteractionObject): void {\r\n\t\tlet x: InertiaTypes;\r\n\t\tlet inertias: Array<InertiaTypes> = [\"move\", \"resize\"];\r\n\t\tfor (let i = 0; i < inertias.length; i++) {\r\n\t\t\tx = inertias[i];\r\n\t\t\tif (io.inertias.hasKey(x)) {\r\n\t\t\t\tlet inertia: $type.Optional<Inertia> = io.inertias.getKey(x);\r\n\t\t\t\tif (inertia) {\r\n\t\t\t\t\tinertia.dispose();\r\n\t\t\t\t\t//io.inertiaAnimations.removeKey(x);\r\n\t\t\t\t\t//this.processDragStop(io);\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Check if swiping is currently being performed on an object.\r\n\t *\r\n\t * @param io Element\r\n\t * @param pointer Pointer to check\r\n\t * @return `true` if swiping\r\n\t */\r\n\tpublic swiping(io: InteractionObject, pointer: IPointer): boolean {\r\n\t\tlet now = $time.getTime();\r\n\r\n\t\tif (pointer.swipeCanceled || !io.swipeable) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse if (\r\n\t\t\t(Math.abs(pointer.startPoint.y - pointer.point.y) < this.getSwipeOption(io, \"verticalThreshold\")) &&\r\n\t\t\t(pointer.startTime > (now - this.getSwipeOption(io, \"time\")))\r\n\t\t) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if a successfull swipe action was performed on an element.\r\n\t *\r\n\t * @param io Element\r\n\t * @param pointer Pointer\r\n\t * @return Swiped?\r\n\t */\r\n\tpublic swiped(io: InteractionObject, pointer: IPointer): boolean {\r\n\t\tlet now = $time.getTime();\r\n\t\tif (pointer.swipeCanceled) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse if (\r\n\t\t\t(Math.abs(pointer.startPoint.x - pointer.point.x) > this.getSwipeOption(io, \"horizontalThreshold\")) &&\r\n\t\t\t(Math.abs(pointer.startPoint.y - pointer.point.y) < this.getSwipeOption(io, \"verticalThreshold\")) &&\r\n\t\t\t(pointer.startTime > (now - this.getSwipeOption(io, \"time\")))\r\n\t\t) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Applies style to mouse cursor based on its stage in relation to\r\n\t * [[InteractionObject]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param Element\r\n\t */\r\n\tpublic applyCursorOverStyle(io: InteractionObject): void {\r\n\r\n\t\t// Get sprite's cursor ooptions\r\n\t\tlet options = io.cursorOptions;\r\n\r\n\t\tif (!$type.hasValue(options.overStyle)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Apply cursor down styles\r\n\t\tfor (let i = 0; i < options.overStyle.length; i++) {\r\n\t\t\t$dom.setStyle(io.element, options.overStyle[i].property, options.overStyle[i].value);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Applies style to mouse cursor based on its stage in relation to\r\n\t * [[InteractionObject]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param pointer Pointer\r\n\t */\r\n\tpublic applyCursorDownStyle(io: InteractionObject, pointer: IPointer): void {\r\n\r\n\t\t// Not applicable for touch pointers since they don't display a cursor\r\n\t\tif (pointer.touch) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst downStyle = io.cursorOptions.downStyle;\r\n\t\t// Is down?\r\n\t\tif (io.downPointers.contains(pointer) && $type.hasValue(downStyle)) {\r\n\t\t\t// Apply cursor down styles\r\n\t\t\tfor (let i = 0; i < downStyle.length; i++) {\r\n\t\t\t\tthis.setTemporaryStyle(this.body, downStyle[i].property, downStyle[i].value);\r\n\t\t\t\tthis.setTemporaryStyle(io, downStyle[i].property, downStyle[i].value);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Restores original cursor style for the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param io Element\r\n\t * @param pointer Pointer\r\n\t */\r\n\tpublic restoreCursorDownStyle(io: InteractionObject, pointer: IPointer): void {\r\n\r\n\t\t// Not applicable for touch pointers since they don't display a cursor\r\n\t\tif (pointer.touch) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst downStyle = io.cursorOptions.downStyle;\r\n\r\n\t\t// Is down?\r\n\t\tif (io.downPointers.contains(pointer) && $type.hasValue(downStyle)) {\r\n\t\t\t// Apply cursor down styles\r\n\t\t\tfor (let i = 0; i < downStyle.length; i++) {\r\n\t\t\t\tthis.restoreStyle(this.body, downStyle[i].property);\r\n\t\t\t\tthis.restoreStyle(io, downStyle[i].property);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets style on the body of the document.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param style Style definitions\r\n\t */\r\n\tpublic setGlobalStyle(style: Array<IStyleProperty> | IStyleProperty): void {\r\n\t\tlet body = getInteraction().body;\r\n\t\tlet styles = <Array<IStyleProperty>>($type.isArray(style) ? style : [style]);\r\n\t\tfor (let i = 0; i < styles.length; i++) {\r\n\t\t\tthis.setTemporaryStyle(body, styles[i].property, styles[i].value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Restores style on the body of the document.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param style Style definitions\r\n\t */\r\n\tpublic restoreGlobalStyle(style: Array<IStyleProperty> | IStyleProperty): void {\r\n\t\tlet body = getInteraction().body;\r\n\t\tlet styles = <Array<IStyleProperty>>($type.isArray(style) ? style : [style]);\r\n\t\tfor (let i = 0; i < styles.length; i++) {\r\n\t\t\tthis.restoreStyle(body, styles[i].property);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if element is a non-cahrt element.\r\n\t *\r\n\t * @param io InteractionObject\r\n\t * @return Global element?\r\n\t */\r\n\tprotected isGlobalElement(io: InteractionObject): boolean {\r\n\t\treturn document.body === io.element;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if pointer has moved since it was created.\r\n\t *\r\n\t * @param pointer Pointer\r\n\t * @param tolerance Tolerance in pixels\r\n\t * @param minTime Minimum time required for the pointer to be down to be considered moved\r\n\t * @return `true` if the pointer has moved\r\n\t */\r\n\tpublic moved(pointer: IPointer, tolerance: number, minTime: number = 300): boolean {\r\n\r\n\t\t/*// If there was more time, we don't care if cursor actually moved\r\n\t\tlet duration = $time.getTime() - pointer.startTime;\r\n\t\tif ($type.hasValue(minTime) && (minTime > duration)) {\r\n\t\t\treturn false;\r\n\t\t}*/\r\n\r\n\t\t// That was quick measure shift\r\n\t\tlet shift = this.getShift(pointer);\r\n\r\n\t\treturn (Math.abs(shift.x) > tolerance) || (Math.abs(shift.y) > tolerance);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns if pointer is \"old\", meaning it has been pressing for more than\r\n\t * X milliseconds.\r\n\t *\r\n\t * @ignore\r\n\t * @param pointer Pointer\r\n\t * @param minTime Minimum time to consider pointer old\r\n\t * @return {boolean}\r\n\t */\r\n\tpublic old(pointer: IPointer, minTime: number = 300): boolean {\r\n\t\treturn $time.getTime() - pointer.startTime > minTime;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns total a shift in pointers coordinates between its original\r\n\t * position and now.\r\n\t *\r\n\t * @param pointer Pointer\r\n\t * @return Shift in coordinates (x/y)\r\n\t */\r\n\tpublic getShift(pointer: IPointer): IPoint {\r\n\t\treturn {\r\n\t\t\t\"x\": pointer.startPoint.x - pointer.point.x,\r\n\t\t\t\"y\": pointer.startPoint.y - pointer.point.y\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a point from [[Pointer]]'s move history at a certain timetamp.\r\n\t *\r\n\t * @param pointer Pointer\r\n\t * @param timestamp Timestamp\r\n\t * @return Point\r\n\t */\r\n\tpublic getTrailPoint(pointer: IPointer, timestamp: number): $type.Optional<IBreadcrumb> {\r\n\t\tlet res: $type.Optional<IBreadcrumb>;\r\n\t\tfor (let i = 0; i < pointer.track.length; i++) {\r\n\t\t\tif (pointer.track[i].timestamp >= timestamp) {\r\n\t\t\t\tres = pointer.track[i];\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if same pointer already exists in the list.\r\n\t *\r\n\t * @param list List to check agains\r\n\t * @param pointer Pointer\r\n\t * @return Exists?\r\n\t */\r\n\tprotected pointerExists(list: List<IPointer>, pointer: IPointer): boolean {\r\n\t\tlet exists = false;\r\n\t\tlist.each((item) => {\r\n\t\t\tif (item == pointer) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\texists = item.point.x == pointer.point.x && item.point.y == pointer.point.y;\r\n\t\t});\r\n\t\treturn exists;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an [[InteractionObject]] representation of a DOM element.\r\n\t *\r\n\t * You can use this on any HTML or SVG element, to add interactive features\r\n\t * to it.\r\n\t *\r\n\t * @param element Element\r\n\t * @return InteractionObject\r\n\t */\r\n\tpublic getInteraction(element: HTMLElement | SVGSVGElement): InteractionObject {\r\n\t\treturn new InteractionObject(element);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a style property on an element. Stores original value to be restored\r\n\t * later with [[restoreStyle]].\r\n\t *\r\n\t * @see {@link restoreStyle}\r\n\t * @param io Element\r\n\t * @param property Property\r\n\t * @param value Value\r\n\t */\r\n\tpublic setTemporaryStyle(io: InteractionObject, property: string, value: string): void {\r\n\r\n\t\t// Get element\r\n\t\t//let el = io.element.tagName == \"g\" ? <SVGSVGElement>io.element.parentNode : io.element;\r\n\t\tlet el = io.element;\r\n\r\n\t\t// Save original property if it is set and hasn't been saved before already\r\n\t\tif ($type.hasValue((<any>el.style)[property]) && !io.replacedStyles.hasKey(property)) {\r\n\t\t\tio.replacedStyles.setKey(property, (<any>el.style)[property]);\r\n\t\t}\r\n\r\n\t\t// Replace with the new one\r\n\t\t$dom.setStyle(el, property, value);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Restores specific style on an element.\r\n\t *\r\n\t * @param io Element\r\n\t * @param property Style property\r\n\t */\r\n\tpublic restoreStyle(io: InteractionObject, property: string): void {\r\n\r\n\t\t// Reset style\r\n\t\tif (io.replacedStyles.hasKey(property)) {\r\n\t\t\t(<any>io.element.style)[property] = io.replacedStyles.getKey(property);\r\n\t\t\tio.replacedStyles.removeKey(property);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdelete (<any>io.element.style)[property];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Restore temporarily reset styles on an element.\r\n\t *\r\n\t * @param io Element\r\n\t */\r\n\tpublic restoreAllStyles(io: InteractionObject): void {\r\n\t\t$iter.each(io.replacedStyles.iterator(), (a) => {\r\n\t\t\tconst key = a[0];\r\n\t\t\tconst value = a[1];\r\n\t\t\t(<any>io.element.style)[key] = value;\r\n\t\t\tio.replacedStyles.removeKey(key);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Disposes this object and cleans up after itself.\r\n\t */\r\n\tpublic dispose(): void {\r\n\t\tif (!this.isDisposed()) {\r\n\t\t\tsuper.dispose();\r\n\t\t\tthis.restoreAllStyles(this.body);\r\n\t\t\tthis.unlockWheel();\r\n\t\t}\r\n\t}\r\n\r\n\t// @ts-ignore Used for debugging\r\n\tprivate log(text: string, ev: MouseEvent | TouchEvent | PointerEvent, io?: InteractionObject): void {\r\n\t\tlet show = true;\r\n\t\tif (show) {\r\n\t\t\t// Touchlist?\r\n\t\t\tif ((<any>ev).changedTouches) {\r\n\t\t\t\tfor (let i = 0; i < (<any>ev).changedTouches.length; i++) {\r\n\t\t\t\t\tthis.logTouch(text, ev.type, (<any>ev).changedTouches[i])\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Get type\r\n\t\t\tlet type = \"\";\r\n\t\t\tif ((<any>ev).pointerType) {\r\n\t\t\t\tswitch ((<any>ev).pointerType) {\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\ttype = \"touch\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 4:\r\n\t\t\t\t\t\ttype = \"mouse\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\ttype = (<any>ev).pointerType;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (typeof TouchEvent != \"undefined\" && ev instanceof TouchEvent) {\r\n\t\t\t\ttype = \"touch\";\r\n\t\t\t}\r\n\t\t\telse if (ev.type.match(/^mouse/)) {\r\n\t\t\t\ttype = \"mouse\";\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\ttype = \"???\";\r\n\t\t\t}\r\n\r\n\t\t\t// Get ID\r\n\t\t\tlet id = \"\";\r\n\t\t\tif ($type.hasValue((<any>ev).identifier)) {\r\n\t\t\t\tid = <string>(<any>ev).identifier;\r\n\t\t\t} else if ($type.hasValue((<any>ev).pointerId)) {\r\n\t\t\t\tid = <string>(<any>ev).pointerId;\r\n\t\t\t} else {\r\n\t\t\t\tid = \"???\";\r\n\t\t\t}\r\n\r\n\t\t\tif (io) {\r\n\t\t\t\tconsole.log(text + \" (\" + io.uid + \") \" + ev.type + \" \" + type + \" \" + id);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tconsole.log(text + \" \" + ev.type + \" \" + type + \" \" + id);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate logTouch(text: string, type: string, ev: Touch): void {\r\n\t\tconsole.log(text + \" \" + type + \" \" + \"touch\" + \" \" + ev.identifier);\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if passive mode options is supported by this browser.\r\n\t */\r\n\tprivate static _passiveSupported: boolean;\r\n\r\n\t/**\r\n\t * Indicates if passive mode options is supported by this browser.\r\n\t */\r\n\tstatic get passiveSupported () {\r\n\r\n\t\tif (this._passiveSupported == null) {\r\n\r\n\t\t\t// Check for passive mode support\r\n\t\t\ttry {\r\n\t\t\t\tlet options = Object.defineProperty({}, \"passive\", {\r\n\t\t\t\t\tget: () => {\r\n\t\t\t\t\t\tthis._passiveSupported = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\twindow.addEventListener(\"test\", options, options);\r\n\t\t\t\twindow.removeEventListener(\"test\", options, options);\r\n\t\t\t} catch (err) {\r\n\t\t\t\tthis._passiveSupported = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this._passiveSupported;\r\n\t}\r\n\r\n}\r\n\r\n\r\nlet interaction: Interaction | null = null;\r\n\r\n/**\r\n * Returns a single unified global instance of [[Interaction]].\r\n *\r\n * All code should use this function, rather than create their own instances\r\n * of [[Interaction]].\r\n */\r\nexport function getInteraction(): Interaction {\r\n\tif (interaction == null) {\r\n\t\tinteraction = new Interaction();\r\n\t}\r\n\r\n\treturn interaction;\r\n}\r\n","/**\r\n * Functionality related simulating of dragging of elements using keyboard.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { getInteraction } from \"./Interaction\";\r\nimport { InteractionObject } from \"./InteractionObject\";\r\nimport { IAnimationObject } from \"../utils/Animation\";\r\nimport { system } from \"../System\";\r\nimport { IPoint } from \"../defs/IPoint\";\r\nimport { IDisposer } from \"../utils/Disposer\";\r\nimport * as $array from \"../utils/Array\";\r\n\r\n/**\r\n * [[InteractionKeyboardObject]] is used to simulate dragging of the `draggable`\r\n * element using keyboard arrows.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport class InteractionKeyboardObject implements IAnimationObject, IDisposer {\r\n\r\n\t/**\r\n\t * A [[InteractionObject]] representation of an element we're performing\r\n\t * animation on.\r\n\t */\r\n\tpublic interaction: InteractionObject;\r\n\r\n\t/**\r\n\t * Indicates if this object has already been deleted. Any\r\n\t * destruction/disposal code should take this into account when deciding\r\n\t * wheter to run potentially costly disposal operations if they already have\r\n\t * been run.\r\n\t */\r\n\tprotected _disposed: boolean = false;\r\n\r\n\t/**\r\n\t * Timestamp on when animation started.\r\n\t */\r\n\tprivate _startedOn: number;\r\n\r\n\t/**\r\n\t * Indicates direction of current horizontal movement.\r\n\t *\r\n\t * 0 - not moving horizontally\r\n\t * 1 - moving right\r\n\t * -1 - moving left\r\n\t */\r\n\tpublic directionX: 0 | 1 | -1 = 0;\r\n\r\n\t/**\r\n\t * Indicates direction of current vertical movement.\r\n\t *\r\n\t * 0 - not moving vertically\r\n\t * 1 - moving down\r\n\t * -1 - moving up\r\n\t */\r\n\tpublic directionY: 0 | 1 | -1 = 0;\r\n\r\n\t/**\r\n\t * Holds reference to original keyboard event.\r\n\t */\r\n\tpublic keyboardEvent: KeyboardEvent;\r\n\r\n\t/**\r\n\t * Constructor.\r\n\t *\r\n\t * @param io An InteractionObject\r\n\t */\r\n\tconstructor(io: InteractionObject, ev: KeyboardEvent) {\r\n\t\tthis.interaction = io;\r\n\t\tthis.keyboardEvent = ev;\r\n\t\tthis._startedOn = new Date().getTime();\r\n\t\tgetInteraction().processDragStart(io);\r\n\t\tsystem.animations.push(this);\r\n\t\tthis.update();\r\n\t}\r\n\r\n\t/**\r\n\t * It's an update method which is called by the system if\r\n\t * [[InteractionObject]] is used as animation.\r\n\t *\r\n\t * This will update coordinates of the element based on the movement\r\n\t * directions.\r\n\t */\r\n\tpublic update(): void {\r\n\r\n\t\t// Init and get settings\r\n\t\tlet io = this.interaction;\r\n\t\tlet speed = getInteraction().getKeyboardOption(io, \"speed\"),\r\n\t\t\taccelleration = getInteraction().getKeyboardOption(io, \"accelleration\"),\r\n\t\t\taccellerationDelay = getInteraction().getKeyboardOption(io, \"accellerationDelay\"),\r\n\t\t\tshift: IPoint = {\r\n\t\t\t\tx: 0,\r\n\t\t\t\ty: 0\r\n\t\t\t};\r\n\r\n\t\t// If SHIFT key is pressed we slash speed by half and disable accelleration\r\n\t\tif (this.keyboardEvent.shiftKey) {\r\n\t\t\tspeed *= 0.5;\r\n\t\t\taccelleration = 1;\r\n\t\t}\r\n\t\t// If CTRL is pressed we increase speed by x2\r\n\t\telse if (this.keyboardEvent.ctrlKey) {\r\n\t\t\tspeed *= 2;\r\n\t\t}\r\n\r\n\t\t// Get elapsed time\r\n\t\tlet ms = new Date().getTime() - this._startedOn;\r\n\t\tlet accelleratedMs = ms - accellerationDelay;\r\n\r\n\t\t// Add accellerated movement\r\n\t\tif ((accelleration > 0) && (accelleratedMs > 0)) {\r\n\t\t\tlet accellerationFactor = ms / accellerationDelay;\r\n\t\t\tms = accellerationDelay;\r\n\t\t\tshift.x += this.directionX * (speed * accelleration * accellerationFactor * accelleratedMs);\r\n\t\t\tshift.y += this.directionY * (speed * accelleration * accellerationFactor * accelleratedMs);\r\n\t\t}\r\n\r\n\t\t// Calculate position\r\n\t\tshift.x += this.directionX * (speed * ms);\r\n\t\tshift.y += this.directionY * (speed * ms);\r\n\r\n\t\t// Simulate move on Interaction\r\n\t\tgetInteraction().handleTransformMove(io, shift, { x: 0, y: 0 }, this.keyboardEvent, true, false);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns if this object has been already been disposed.\r\n\t *\r\n\t * @return Is disposed?\r\n\t */\r\n\tpublic isDisposed(): boolean {\r\n\t\treturn this._disposed;\r\n\t}\r\n\r\n\t/**\r\n\t * Disposes this object. Removes from system animations.\r\n\t */\r\n\tpublic dispose(): void {\r\n\t\tif (!this._disposed) {\r\n\t\t\tgetInteraction().processDragStop(this.interaction);\r\n\t\t\t$array.remove(system.animations, this);\r\n\t\t}\r\n\t}\r\n\r\n}\r\n","/**\r\n * Interaction Object module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { IInteractionObjectEvents, InteractionObjectEventDispatcher } from \"./InteractionObjectEvents\";\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { List } from \"../utils/List\";\r\nimport { Dictionary, DictionaryDisposer } from \"../utils/Dictionary\";\r\nimport { AMEvent } from \"../utils/EventDispatcher\";\r\nimport { IPoint } from \"../defs/IPoint\";\r\nimport { IPointer } from \"./Pointer\";\r\nimport { IInertiaOptions, ISwipeOptions, IHitOptions, IHoverOptions, ICursorOptions, IKeyboardOptions, IMouseOptions } from \"./InteractionOptions\";\r\nimport { getInteraction } from \"./Interaction\";\r\nimport { Inertia, InertiaTypes } from \"./Inertia\";\r\nimport { IDisposer } from \"../utils/Disposer\";\r\nimport { Optional } from \"../utils/Type\";\r\nimport * as $type from \"../utils/Type\";\r\n\r\n\r\n/**\r\n * Re-exports\r\n */\r\nexport { IInteractionObjectEvents, InteractionObjectEventDispatcher };\r\n\r\n/**\r\n * Interaction object represents an object that is subject for any kind of\r\n * interaction with it with any input devices: mouse, touch or keyboard.\r\n *\r\n * Any DOM element can be wrapped into an Internaction object which in turn\r\n * enables attaching various interaction events to it, such as: hit, drag,\r\n * swipe, etc.\r\n *\r\n * To create an [[InteractionObject]] out of a [[Sprite]], use:\r\n * `interaction.getInteractionFromSprite(sprite: Sprite)`\r\n *\r\n * To create an [[InteractionObject]] out of a a regular element:\r\n * `interaction.getInteraction(element: HTMLElement)`\r\n */\r\nexport class InteractionObject extends BaseObjectEvents {\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IInteractionObjectEvents;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t * An [[EventDispatcher]] instance which holds events for this object\r\n\t */\r\n\tpublic _eventDispatcher: InteractionObjectEventDispatcher<AMEvent<this, this[\"_events\"]>> = new InteractionObjectEventDispatcher(this);;\r\n\r\n\t/**\r\n\t * An [[EventDispatcher]] instance which holds events for this object\r\n\t */\r\n\tpublic get events(): InteractionObjectEventDispatcher<AMEvent<this, this[\"_events\"]>> {\r\n\t\treturn this._eventDispatcher;\r\n\t}\r\n\r\n\t/**\r\n\t * A related [[Sprite]] if any.\r\n\t */\r\n\tpublic sprite!: Sprite;\r\n\r\n\t/**\r\n\t * Collection of Disposers for various events. (so that those get disposed\r\n\t * when the whole InteractionObject is disposed)\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic eventDisposers: Dictionary<string, IDisposer> = new Dictionary<string, IDisposer>();\r\n\r\n\t/**\r\n\t * A [[Dictionary]] that holds temporarily replaced original style values for\r\n\t * HTML element, so that they can be restored when the functionality that\r\n\t * replaced them is done.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic replacedStyles: Dictionary<string, string> = new Dictionary<string, string>();\r\n\r\n\tprotected _clickable: boolean = false;\r\n\tprotected _contextMenuDisabled: boolean = false;\r\n\tprotected _hoverable: boolean = false;\r\n\tprotected _trackable: boolean = false;\r\n\tprotected _draggable: boolean = false;\r\n\tprotected _swipeable: boolean = false;\r\n\tprotected _resizable: boolean = false;\r\n\tprotected _wheelable: boolean = false;\r\n\tprotected _inert: boolean = false;\r\n\tprotected _focusable: $type.Optional<boolean>;\r\n\tprotected _tabindex: Optional<number>;\r\n\r\n\t/**\r\n\t * Element to attach events to.\r\n\t */\r\n\tprivate _element: HTMLElement | SVGSVGElement;\r\n\r\n\t/**\r\n\t * Original coordinates for the [[InteractionObject]]. (before application\r\n\t * of the drag)\r\n\t */\r\n\tpublic _originalPosition: Optional<IPoint>;\r\n\r\n\t/**\r\n\t * Original angle for the [[InteractionObject]]. (before rotation started)\r\n\t */\r\n\tpublic _originalAngle: $type.Optional<number>;\r\n\r\n\t/**\r\n\t * Original scale of the [[InteractionObject]]. (before resizing started)\r\n\t */\r\n\tpublic _originalScale: $type.Optional<number>;\r\n\r\n\t/**\r\n\t * List of pointers current over element.\r\n\t */\r\n\tprotected _overPointers: $type.Optional<List<IPointer>>;\r\n\r\n\t/**\r\n\t * List of pointer currently pressing down on element.\r\n\t */\r\n\tprotected _downPointers: $type.Optional<List<IPointer>>;\r\n\r\n\t/**\r\n\t * Is element currently hovered?\r\n\t */\r\n\tprotected _isHover: boolean = false;\r\n\r\n\t/**\r\n\t * Is the element hovered by touch pointer?\r\n\t */\r\n\tprotected _isHoverByTouch: boolean = false;\r\n\r\n\t/**\r\n\t * Has element got any pointers currently pressing down on it?\r\n\t */\r\n\tprotected _isDown: boolean = false;\r\n\r\n\t/**\r\n\t * Does element have focus?\r\n\t */\r\n\tprotected _isFocused: boolean = false;\r\n\r\n\t/**\r\n\t * Is element currently protected from touch interactions?\r\n\t */\r\n\tprotected _isTouchProtected: boolean = false;\r\n\r\n\t/**\r\n\t * A timestamp of the last hit.\r\n\t *\r\n\t * Used to calculate double-hit.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic lastHit: $type.Optional<number>;\r\n\r\n\t/**\r\n\t * A pointer element that was used for the last hit.\r\n\t *\r\n\t * We need to keep this since only the same pointer can generate doublehit.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo still needed?\r\n\t */\r\n\tpublic lastHitPointer: $type.Optional<IPointer>;\r\n\r\n\t/**\r\n\t * Indicates whether object has delayed events initiated by touch.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic hasDelayedOut?: boolean;\r\n\r\n\t/**\r\n\t * Options used for inertia functionality.\r\n\t */\r\n\tprivate _inertiaOptions: Dictionary<InertiaTypes, IInertiaOptions> = new Dictionary<InertiaTypes, IInertiaOptions>();\r\n\r\n\t/**\r\n\t * A collection of different inertia types, currently playing out.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic inertias: Dictionary<InertiaTypes, Inertia> = new Dictionary<InertiaTypes, Inertia>();\r\n\r\n\t/**\r\n\t * Click/tap options.\r\n\t */\r\n\tprivate _hitOptions: IHitOptions = {};\r\n\r\n\t/**\r\n\t * Hover options.\r\n\t */\r\n\tprivate _hoverOptions: IHoverOptions = {};\r\n\r\n\t/**\r\n\t * Swipe gesture options.\r\n\t */\r\n\tprivate _swipeOptions: ISwipeOptions = {};\r\n\r\n\t/**\r\n\t * Keyboard options.\r\n\t */\r\n\tprivate _keyboardOptions: IKeyboardOptions = {};\r\n\r\n\t/**\r\n\t * Mouse options.\r\n\t */\r\n\tprivate _mouseOptions: IMouseOptions = {};\r\n\r\n\t/**\r\n\t * Cursor options.\r\n\t */\r\n\tprivate _cursorOptions: ICursorOptions = {\r\n\t\t\"defaultStyle\": [{\r\n\t\t\t\"property\": \"cursor\",\r\n\t\t\t\"value\": \"default\"\r\n\t\t}]\r\n\t};\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor(element: HTMLElement | SVGSVGElement) {\r\n\t\tsuper();\r\n\t\t\r\n\t\tthis._disposers.push(this._eventDispatcher);\r\n\r\n\t\tthis._element = element;\r\n\t\tthis.className = \"InteractionObject\";\r\n\t\tthis._disposers.push(new DictionaryDisposer(this.inertias));\r\n\t\tthis._disposers.push(new DictionaryDisposer(this.eventDisposers));\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if this element is currently hovered.\r\n\t *\r\n\t * @param value Hovered?\r\n\t */\r\n\tpublic set isHover(value: boolean) {\r\n\t\tif (this.isHover != value) {\r\n\t\t\tthis._isHover = value;\r\n\t\t\tif (value) {\r\n\t\t\t\tgetInteraction().overObjects.moveValue(this);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tgetInteraction().overObjects.removeValue(this);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Hovered?\r\n\t */\r\n\tpublic get isHover(): boolean {\r\n\t\treturn this._isHover;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if this element is currently hovered.\r\n\t *\r\n\t * @param value Hovered?\r\n\t */\r\n\tpublic set isHoverByTouch(value: boolean) {\r\n\t\tif (this.isHoverByTouch != value) {\r\n\t\t\tthis._isHoverByTouch = value;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Hovered?\r\n\t */\r\n\tpublic get isHoverByTouch(): boolean {\r\n\t\treturn this._isHoverByTouch;\r\n\t}\r\n\r\n\t/**\r\n\t * A list of pointers currently over the element.\r\n\t *\r\n\t * @see {@link Pointer}\r\n\t * @return List if pointers currently hovering the element\r\n\t */\r\n\tpublic get overPointers(): List<IPointer> {\r\n\t\tif (!this._overPointers) {\r\n\t\t\tthis._overPointers = new List<IPointer>();\r\n\t\t}\r\n\t\treturn this._overPointers;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if this element has currently any pointers pressing on it.\r\n\t *\r\n\t * @param value Has down pointers?\r\n\t */\r\n\tpublic set isDown(value: boolean) {\r\n\t\tif (this.isDown != value) {\r\n\t\t\tthis._isDown = value;\r\n\t\t\tif (value) {\r\n\t\t\t\tgetInteraction().downObjects.moveValue(this);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tgetInteraction().downObjects.removeValue(this);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Has down pointers?\r\n\t */\r\n\tpublic get isDown(): boolean {\r\n\t\treturn this._isDown;\r\n\t}\r\n\r\n\t/**\r\n\t * A list of pointers currently pressing down on this element.\r\n\t *\r\n\t * @see {@link Pointer}\r\n\t * @return List of down pointers\r\n\t */\r\n\tpublic get downPointers(): List<IPointer> {\r\n\t\tif (!this._downPointers) {\r\n\t\t\tthis._downPointers = new List<IPointer>();\r\n\t\t}\r\n\t\treturn this._downPointers;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if this element is currently focused.\r\n\t *\r\n\t * @param value Focused?\r\n\t */\r\n\tpublic set isFocused(value: boolean) {\r\n\t\tif (this.isFocused != value) {\r\n\t\t\tthis._isFocused = value;\r\n\t\t\tif (value) {\r\n\t\t\t\tgetInteraction().focusedObject = this;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tgetInteraction().focusedObject = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Focused?\r\n\t */\r\n\tpublic get isFocused(): boolean {\r\n\t\treturn this._isFocused;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if this element is currently being protected from touch actions.\r\n\t *\r\n\t * @ignore\r\n\t * @param value Touch protected?\r\n\t */\r\n\tpublic set isTouchProtected(value: boolean) {\r\n\t\tif (this._isTouchProtected != value) {\r\n\t\t\tthis._isTouchProtected = value;\r\n\t\t\tif (value) {\r\n\t\t\t\tgetInteraction().unprepElement(this);\r\n\t\t\t}\r\n\t\t\telse if (this.draggable || this.swipeable || this.trackable || this.resizable) {\r\n\t\t\t\tgetInteraction().prepElement(this);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t * @return Touch protected?\r\n\t */\r\n\tpublic get isTouchProtected(): boolean {\r\n\t\treturn this._isTouchProtected;\r\n\t}\r\n\r\n\t/**\r\n\t * Is element clickable? Clickable elements will generate \"hit\" events when\r\n\t * clicked or tapped.\r\n\t *\r\n\t * @param value Clickable?\r\n\t */\r\n\tpublic set clickable(value: boolean) {\r\n\t\tif (this._clickable !== value) {\r\n\t\t\tthis._clickable = value;\r\n\t\t\tgetInteraction().processClickable(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Clickable?\r\n\t */\r\n\tpublic get clickable(): boolean {\r\n\t\treturn this._clickable;\r\n\t}\r\n\r\n\t/**\r\n\t * Should element prevent context menu to be displayed, e.g. when\r\n\t * right-clicked?\r\n\t *\r\n\t * @default false\r\n\t * @param value Context menu disabled?\r\n\t */\r\n\tpublic set contextMenuDisabled(value: boolean) {\r\n\t\tif (this._contextMenuDisabled !== value) {\r\n\t\t\tthis._contextMenuDisabled = value;\r\n\t\t\tgetInteraction().processContextMenu(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Context menu disabled?\r\n\t */\r\n\tpublic get contextMenuDisabled(): boolean {\r\n\t\treturn this._contextMenuDisabled;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if element should generate hover events.\r\n\t *\r\n\t * @param value Hoverable?\r\n\t */\r\n\tpublic set hoverable(value: boolean) {\r\n\t\tif (this._hoverable !== value) {\r\n\t\t\tthis._hoverable = value;\r\n\t\t\tgetInteraction().processHoverable(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Hoverable?\r\n\t */\r\n\tpublic get hoverable(): boolean {\r\n\t\treturn this._hoverable;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if pointer movement over element should be tracked.\r\n\t *\r\n\t * @param value Track pointer?\r\n\t */\r\n\tpublic set trackable(value: boolean) {\r\n\t\tif (this._trackable !== value) {\r\n\t\t\tthis._trackable = value;\r\n\t\t\tgetInteraction().processTrackable(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Track pointer?\r\n\t */\r\n\tpublic get trackable(): boolean {\r\n\t\treturn this._trackable;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if element can be dragged. (moved)\r\n\t *\r\n\t * @param value Draggable?\r\n\t */\r\n\tpublic set draggable(value: boolean) {\r\n\t\tif (this._draggable !== value) {\r\n\t\t\tthis._draggable = value;\r\n\t\t\tgetInteraction().processDraggable(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Draggable?\r\n\t */\r\n\tpublic get draggable(): boolean {\r\n\t\treturn this._draggable;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether element should react to swipe gesture.\r\n\t *\r\n\t * @param value Track swipe?\r\n\t */\r\n\tpublic set swipeable(value: boolean) {\r\n\t\tif (this._swipeable !== value) {\r\n\t\t\tthis._swipeable = value;\r\n\t\t\tgetInteraction().processSwipeable(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Track swipe?\r\n\t */\r\n\tpublic get swipeable(): boolean {\r\n\t\treturn this._swipeable;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if element can be resized.\r\n\t *\r\n\t * @param value Resizeable?\r\n\t */\r\n\tpublic set resizable(value: boolean) {\r\n\t\tif (this._resizable !== value) {\r\n\t\t\tthis._resizable = value;\r\n\t\t\tgetInteraction().processResizable(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Resizeble?\r\n\t */\r\n\tpublic get resizable(): boolean {\r\n\t\treturn this._resizable;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether track moouse wheel rotation over element.\r\n\t *\r\n\t * @param value Track wheel?\r\n\t */\r\n\tpublic set wheelable(value: boolean) {\r\n\t\tif (this._wheelable !== value) {\r\n\t\t\tthis._wheelable = value;\r\n\t\t\tgetInteraction().processWheelable(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Track wheel?\r\n\t */\r\n\tpublic get wheelable(): boolean {\r\n\t\treturn this._wheelable;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if element is inert, i.e. if it should carry movement momentum\r\n\t * after it is dragged and released.\r\n\t *\r\n\t * @param value Inert?\r\n\t */\r\n\tpublic set inert(value: boolean) {\r\n\t\tif (this._inert !== value) {\r\n\t\t\tthis._inert = value;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Inert?\r\n\t */\r\n\tpublic get inert(): boolean {\r\n\t\treturn this._inert;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if element can gain focus.\r\n\t *\r\n\t * @param value Focusable?\r\n\t */\r\n\tpublic set focusable(value: $type.Optional<boolean>) {\r\n\t\tif (this._focusable !== value) {\r\n\t\t\tthis._focusable = value;\r\n\t\t\tif (this._focusable && this.tabindex == -1) {\r\n\t\t\t\tthis._tabindex = 1;\r\n\t\t\t}\r\n\t\t\tgetInteraction().processFocusable(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Focusable?\r\n\t */\r\n\tpublic get focusable(): $type.Optional<boolean> {\r\n\t\treturn this._focusable;\r\n\t}\r\n\r\n\t/**\r\n\t * Element's tab index.\r\n\t *\r\n\t * @param value Tab index\r\n\t */\r\n\tpublic set tabindex(value: number) {\r\n\t\tif (this._tabindex !== value) {\r\n\t\t\tthis._tabindex = value;\r\n\t\t\tif (value > -1) {\r\n\t\t\t\tthis.focusable = true;\r\n\t\t\t}\r\n\t\t\tgetInteraction().processFocusable(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Tab index\r\n\t */\r\n\tpublic get tabindex(): number {\r\n\t\treturn $type.getValueDefault(this._tabindex, -1 as number);\r\n\t}\r\n\r\n\t/**\r\n\t * A DOM element associated with this element.\r\n\t *\r\n\t * @param element Element\r\n\t */\r\n\tpublic set element(element: HTMLElement | SVGSVGElement) {\r\n\t\tthis._element = element;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Element\r\n\t */\r\n\tpublic get element(): HTMLElement | SVGSVGElement {\r\n\t\treturn this._element;\r\n\t}\r\n\r\n\t/**\r\n\t * Element's original position.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Position\r\n\t */\r\n\tpublic set originalPosition(value: Optional<IPoint>) {\r\n\t\tthis._originalPosition = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Position.\r\n\t */\r\n\tpublic get originalPosition(): Optional<IPoint> {\r\n\t\treturn this._originalPosition || { x: 0, y: 0 };\r\n\t}\r\n\r\n\t/**\r\n\t * Element's original scale.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Scale\r\n\t */\r\n\tpublic set originalScale(value: number) {\r\n\t\tif (this._originalScale !== value) {\r\n\t\t\tthis._originalScale = value;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Scale\r\n\t */\r\n\tpublic get originalScale(): number {\r\n\t\treturn $type.getValueDefault(this._originalScale, 1 as number);\r\n\t}\r\n\r\n\t/**\r\n\t * Element's original angle.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Angle\r\n\t */\r\n\tpublic set originalAngle(value: number) {\r\n\t\tif (this._originalAngle !== value) {\r\n\t\t\tthis._originalAngle = value;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Angle\r\n\t */\r\n\tpublic get originalAngle(): number {\r\n\t\treturn $type.getValueDefault(this._originalAngle, 0 as number);\r\n\t}\r\n\r\n\t/**\r\n\t * Inertia options.\r\n\t *\r\n\t * @param value Options\r\n\t */\r\n\tpublic set inertiaOptions(value: Dictionary<InertiaTypes, IInertiaOptions>) {\r\n\t\tthis._inertiaOptions = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Options\r\n\t */\r\n\tpublic get inertiaOptions(): Dictionary<InertiaTypes, IInertiaOptions> {\r\n\t\tif (this.sprite && this.sprite._adapterO) {\r\n\t\t\treturn this.sprite._adapterO.apply(\"inertiaOptions\", this._inertiaOptions);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._inertiaOptions;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Hit options.\r\n\t *\r\n\t * @param value Options\r\n\t */\r\n\tpublic set hitOptions(value: IHitOptions) {\r\n\t\tthis._hitOptions = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Options\r\n\t */\r\n\tpublic get hitOptions(): IHitOptions {\r\n\t\tif (this.sprite && this.sprite._adapterO) {\r\n\t\t\treturn this.sprite._adapterO.apply(\"hitOptions\", this._hitOptions);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._hitOptions;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Hover options.\r\n\t *\r\n\t * @param value Options\r\n\t */\r\n\tpublic set hoverOptions(value: IHoverOptions) {\r\n\t\tthis._hoverOptions = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Options\r\n\t */\r\n\tpublic get hoverOptions(): IHoverOptions {\r\n\t\tif (this.sprite && this.sprite._adapterO) {\r\n\t\t\treturn this.sprite._adapterO.apply(\"hoverOptions\", this._hoverOptions);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._hoverOptions;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Swipe options.\r\n\t *\r\n\t * @param value Options\r\n\t */\r\n\tpublic set swipeOptions(value: ISwipeOptions) {\r\n\t\tthis._swipeOptions = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Options\r\n\t */\r\n\tpublic get swipeOptions(): ISwipeOptions {\r\n\t\tif (this.sprite && this.sprite._adapterO) {\r\n\t\t\treturn this.sprite._adapterO.apply(\"swipeOptions\", this._swipeOptions);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._swipeOptions;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Keyboard options.\r\n\t *\r\n\t * @param value Options\r\n\t */\r\n\tpublic set keyboardOptions(value: IKeyboardOptions) {\r\n\t\tthis._keyboardOptions = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Options\r\n\t */\r\n\tpublic get keyboardOptions(): IKeyboardOptions {\r\n\t\tif (this.sprite && this.sprite._adapterO) {\r\n\t\t\treturn this.sprite._adapterO.apply(\"keyboardOptions\", this._keyboardOptions);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._keyboardOptions;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Mouse options.\r\n\t *\r\n\t * Enables controlling options related to the mouse, for example sensitivity\r\n\t * of its mouse wheel.\r\n\t *\r\n\t * E.g. the below will reduce chart's wheel-zoom speed to half its default\r\n\t * speed:\r\n\t *\r\n\t * ```TypeScript\r\n\t * chart.plotContainer.mouseOptions.sensitivity = 0.5;\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * chart.plotContainer.mouseOptions.sensitivity = 0.5;\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"plotContainer\": {\r\n\t * \"mouseOptions\": {\r\n\t * \"sensitivity\": 0.5\r\n\t * }\r\n\t * }\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @since 4.5.14\r\n\t * @param value Options\r\n\t */\r\n\tpublic set mouseOptions(value: IMouseOptions) {\r\n\t\tthis._mouseOptions = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Options\r\n\t */\r\n\tpublic get mouseOptions(): IMouseOptions {\r\n\t\tif (this.sprite && this.sprite._adapterO) {\r\n\t\t\treturn this.sprite._adapterO.apply(\"mouseOptions\", this._mouseOptions);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._mouseOptions;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Cursor options.\r\n\t *\r\n\t * @param value Options\r\n\t */\r\n\tpublic set cursorOptions(value: ICursorOptions) {\r\n\t\tthis._cursorOptions = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Options\r\n\t */\r\n\tpublic get cursorOptions(): ICursorOptions {\r\n\t\tif (this.sprite && this.sprite._adapterO) {\r\n\t\t\treturn this.sprite._adapterO.apply(\"cursorOptions\", this._cursorOptions);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._cursorOptions;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all properties and related assets from another object of the same\r\n\t * type.\r\n\t *\r\n\t * @param source Source object\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\tsuper.copyFrom(source);\r\n\t\tthis.inertiaOptions = source.inertiaOptions;\r\n\t\tthis.hitOptions = source.hitOptions;\r\n\t\tthis.hoverOptions = source.hoverOptions;\r\n\t\tthis.swipeOptions = source.swipeOptions;\r\n\t\tthis.keyboardOptions = source.keyboardOptions;\r\n\t\tthis.cursorOptions = source.cursorOptions;\r\n\t\tthis.contextMenuDisabled = source.contextMenuDisabled;\r\n\t\tgetInteraction().applyCursorOverStyle(this);\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic setEventDisposer(key: string, value: boolean, f: () => IDisposer): void {\r\n\t\tconst disposer = this.eventDisposers.getKey(key);\r\n\r\n\t\tif (value) {\r\n\t\t\tif (disposer == null) {\r\n\t\t\t\tthis.eventDisposers.setKey(key, f());\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tif (disposer != null) {\r\n\t\t\t\tdisposer.dispose();\r\n\t\t\t\tthis.eventDisposers.removeKey(key);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Disposes object.\r\n\t */\r\n\tpublic dispose(): void {\r\n\t\tsuper.dispose();\r\n\r\n\t\t// Remove from all interaction registries\r\n\t\tconst interaction = getInteraction();\r\n\t\tinteraction.overObjects.removeValue(this);\r\n\t\tinteraction.downObjects.removeValue(this);\r\n\t\tinteraction.trackedObjects.removeValue(this);\r\n\t\tinteraction.transformedObjects.removeValue(this);\r\n\r\n\t\t// Unlock document wheel\r\n\t\tif (this.isHover && this.wheelable) {\r\n\t\t\tinteraction.unlockWheel();\r\n\t\t}\r\n\r\n\t\tif (interaction.focusedObject === this) {\r\n\t\t\tinteraction.focusedObject = undefined;\r\n\t\t}\r\n\t}\r\n}\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { IBaseObjectEvents } from \"../Base\";\r\nimport { IPoint } from \"../defs/IPoint\";\r\nimport { IPointer } from \"../interaction/Pointer\";\r\nimport { InteractionObject } from \"../interaction/InteractionObject\";\r\nimport { EventListener, TargetedEventDispatcher, AMEvent } from \"../utils/EventDispatcher\";\r\nimport { MultiDisposer, IDisposer, CounterDisposer } from \"../utils/Disposer\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a type of event that has a single point of reference.\r\n */\r\nexport type PointerTypeEvent = {\r\n\r\n\t/**\r\n\t * Is event originated by touch pointer?\r\n\t */\r\n\ttouch: boolean;\r\n\r\n};\r\n\r\n/**\r\n * Defines a type of event that has a single point of reference.\r\n */\r\nexport type PointEvent = {\r\n\r\n\t/**\r\n\t * Event point in global (document) coordinates.\r\n\t */\r\n\tpoint: IPoint;\r\n\r\n};\r\n\r\n/**\r\n * Defines a type of event that has a related Pointer.\r\n */\r\nexport type PointerEvent = {\r\n\r\n\t/**\r\n\t * Coordinates of the primary cursor position.\r\n\t */\r\n\tpointer: IPointer;\r\n\r\n};\r\n\r\n/**\r\n * Defines a type of event that represents some kind of shift in coordinates,\r\n * like draging an element.\r\n */\r\nexport type ShiftEvent = {\r\n\r\n\t/**\r\n\t * Shift in coordinates after dragging.\r\n\t */\r\n\tshift: IPoint;\r\n\r\n};\r\n\r\n/**\r\n * Defines a type of event that represents change in angle, like rotation.\r\n */\r\nexport type AngleEvent = {\r\n\r\n\t/**\r\n\t * Angle to apply to the element.\r\n\t */\r\n\tangle: number;\r\n};\r\n\r\n\r\n/**\r\n * Defines a type of event that represents change in element's scale, like\r\n * resize.\r\n */\r\nexport type ScaleEvent = {\r\n\r\n\t/**\r\n\t * Scale to apply to the element.\r\n\t */\r\n\tscale: number;\r\n\r\n};\r\n\r\n/**\r\n * Defines an event that contains event center coordindates.\r\n */\r\nexport type CenterEvent = {\r\n\r\n\t/**\r\n\t * A center point for specific operation.\r\n\t */\r\n\tcenter?: IPoint;\r\n\r\n};\r\n\r\n/**\r\n * Defines an event that can be triggered either by touch device or mouse.\r\n */\r\nexport type MouseTouchEvent = {\r\n\r\n\t/**\r\n\t * An original mouse or touch event.\r\n\t */\r\n\tevent: MouseEvent | TouchEvent;\r\n\r\n};\r\n\r\n/**\r\n * Defines an event that was not generated by keyboard directly, but rather\r\n * was simulated to trigger require keyboard-related handlers.\r\n */\r\nexport type SimulatedKeyboardEvent = {\r\n\r\n\t/**\r\n\t * A keyboard event.\r\n\t */\r\n\tevent: KeyboardEvent;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[InteractionObject]].\r\n */\r\nexport interface IInteractionObjectEvents extends IBaseObjectEvents {\r\n\r\n\t/**\r\n\t * Invoked when object is clicked or touched.\r\n\t */\r\n\thit: PointerTypeEvent & PointEvent & MouseTouchEvent;\r\n\r\n\t/**\r\n\t * Invoked when object is clicked or touched twice in rapid succession.\r\n\t *\r\n\t * Check [[IHitOptions]] for settings about double hit.\r\n\t */\r\n\tdoublehit: PointerTypeEvent & PointEvent & MouseTouchEvent;\r\n\r\n\t/**\r\n\t * Invoked when right mouse button is clicked on the object.\r\n\t */\r\n\trightclick: MouseTouchEvent;\r\n\r\n\t/**\r\n\t * Invoked when mouse or touch pointer is held down over object for some time.\r\n\t */\r\n\thold: PointerTypeEvent & PointerEvent & MouseTouchEvent;\r\n\r\n\t/**\r\n\t * Invoked when the mouse button is pressed or touch starts.\r\n\t */\r\n\tdown: PointerTypeEvent & PointerEvent & MouseTouchEvent;\r\n\r\n\t/**\r\n\t * Invoked when the mouse button is released or touch ends.\r\n\t */\r\n\tup: PointerTypeEvent & PointerEvent & MouseTouchEvent;\r\n\r\n\t/**\r\n\t * Invoked when `draggable` object is being dragged. (using mouse, touch or\r\n\t * keyboard)\r\n\t */\r\n\tdrag: PointerTypeEvent & ShiftEvent & PointEvent & {\r\n\r\n\t\t/**\r\n\t\t * Original coordinates of the pointer's position when the dragging started.\r\n\t\t */\r\n\t\tstartPoint: IPoint,\r\n\r\n\t\t/**\r\n\t\t * An original JavaScript event that triggered dragging.\r\n\t\t */\r\n\t\tevent?: MouseEvent | TouchEvent | KeyboardEvent\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when `draggable` object dragging starts. This event is not\r\n\t * invoked immediatelly after `down`, but only if there's a movement of the\r\n\t * pointer.\r\n\t */\r\n\tdragstart: PointerTypeEvent & {\r\n\r\n\t\t/**\r\n\t\t * An original JavaScript event that triggered dragging.\r\n\t\t */\r\n\t\tevent?: MouseEvent | TouchEvent | KeyboardEvent\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Invoked when `draggable` object is released. This event will not fire if\r\n\t * position of the object did not change.\r\n\t */\r\n\tdragstop: PointerTypeEvent & {\r\n\r\n\t\t/**\r\n\t\t * An original JavaScript event that triggered dragging.\r\n\t\t */\r\n\t\tevent?: MouseTouchEvent | KeyboardEvent\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when pointer (mouse cursor or touch point) moves over `trackable`\r\n\t * object.\r\n\t */\r\n\ttrack: PointerTypeEvent & PointEvent & PointerEvent & MouseTouchEvent;\r\n\r\n\t/**\r\n\t * Invoked when `resizable` object is being resized either by mouse or touch\r\n\t * pinch gesture.\r\n\t */\r\n\tresize: PointerTypeEvent & ScaleEvent & MouseTouchEvent & {\r\n\r\n\t\t/**\r\n\t\t * The starting coordinates of the first reference point.\r\n\t\t */\r\n\t\tstartPoint1: IPoint,\r\n\r\n\t\t/**\r\n\t\t * Current coordinates of the first reference point.\r\n\t\t */\r\n\t\tpoint1: IPoint,\r\n\r\n\t\t/**\r\n\t\t * The starting coordinates of the second reference point.\r\n\t\t */\r\n\t\tstartPoint2: IPoint,\r\n\r\n\t\t/**\r\n\t\t * Current coordinates of the second reference point.\r\n\t\t */\r\n\t\tpoint2: IPoint\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when user performs \"swiping\" gesture (quick horizontal movement)\r\n\t * on the object, either using mouse or touch.\r\n\t */\r\n\tswipe: PointerTypeEvent & MouseTouchEvent;\r\n\r\n\t/**\r\n\t * Invoked when user performs \"swiping\" gesture towards left.\r\n\t */\r\n\tswipeleft: PointerTypeEvent & MouseTouchEvent;\r\n\r\n\t/**\r\n\t * Invoked when user performs \"swiping\" gesture towards right.\r\n\t */\r\n\tswiperight: PointerTypeEvent & MouseTouchEvent;\r\n\r\n\t/**\r\n\t * Invoked when user turns mouse wheel while over the object.\r\n\t */\r\n\twheel: PointEvent & ShiftEvent & {\r\n\r\n\t\t/**\r\n\t\t * Original JavaScript event.\r\n\t\t */\r\n\t\tevent: WheelEvent\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when user turns mouse wheel upwards while over the object.\r\n\t */\r\n\twheelup: PointEvent & ShiftEvent & {\r\n\r\n\t\t/**\r\n\t\t * Original JavaScript event.\r\n\t\t */\r\n\t\tevent: WheelEvent\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when user turns mouse wheel downwards while over the object.\r\n\t */\r\n\twheeldown: PointEvent & ShiftEvent & {\r\n\r\n\t\t/**\r\n\t\t * Original JavaScript event.\r\n\t\t */\r\n\t\tevent: WheelEvent\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when user turns mouse wheel leftwards while over the object.\r\n\t */\r\n\twheelleft: PointEvent & ShiftEvent & {\r\n\r\n\t\t/**\r\n\t\t * Original JavaScript event.\r\n\t\t */\r\n\t\tevent: WheelEvent\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when user turns mouse wheel rightwards while over the object.\r\n\t */\r\n\twheelright: PointEvent & ShiftEvent & {\r\n\r\n\t\t/**\r\n\t\t * Original JavaScript event.\r\n\t\t */\r\n\t\tevent: WheelEvent\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when mouse cursor moves over `hoverable` object or it is touched.\r\n\t */\r\n\tover: PointerTypeEvent & MouseTouchEvent & PointerEvent;\r\n\r\n\t/**\r\n\t * Invoked when mouse cursor moves out of `hoverable` object or it is no\r\n\t * longer touched.\r\n\t */\r\n\tout: PointerTypeEvent & MouseTouchEvent & PointerEvent;\r\n\r\n\t/**\r\n\t * Invoked when `focusable` object gains focus, e.g. by using TAB button.\r\n\t */\r\n\tfocus: {\r\n\r\n\t\t/**\r\n\t\t * Original JavaScript `FocusEvent`.\r\n\t\t */\r\n\t\tevent: FocusEvent\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when `focusable` object loses focus, e.g. by clicking outside\r\n\t * it or pressing TAB button to focus on the next focusable object.\r\n\t */\r\n\tblur: {\r\n\r\n\t\t/**\r\n\t\t * Original JavaScript `FocusEvent`.\r\n\t\t */\r\n\t\tevent: FocusEvent\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when the key is pressed on the keyboard.\r\n\t */\r\n\tkeydown: {\r\n\r\n\t\t/**\r\n\t\t * Orginal JavaScript `KeyboardEvent`.\r\n\t\t */\r\n\t\tevent: KeyboardEvent\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when the key is released on the keyboard.\r\n\t */\r\n\tkeyup: {\r\n\r\n\t\t/**\r\n\t\t * Orginal JavaScript `KeyboardEvent`.\r\n\t\t */\r\n\t\tevent: KeyboardEvent\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when the key generates a \"press\", e.g. pressing and holding a\r\n\t * letter key will generate repeated \"keypress\" events.\r\n\t */\r\n\tkeypress: {\r\n\r\n\t\t/**\r\n\t\t * Orginal JavaScript `KeyboardEvent`.\r\n\t\t */\r\n\t\tevent: KeyboardEvent\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked whenever information changes in the textual input elements, like\r\n\t * `<input>`, `<textarea>`, etc.\r\n\t */\r\n\tinput: {\r\n\r\n\t\t/**\r\n\t\t * Orginal JavaScript `KeyboardEvent`.\r\n\t\t */\r\n\t\tevent: KeyboardEvent\r\n\r\n\t};\r\n}\r\n\r\n/**\r\n * Represents an Event Dispatcher for [[InteractionObject]].\r\n *\r\n * Besides regular [[EventDispatcher]] functionality it adds new events with\r\n * direct application to DOM nodes. Primarily used to handle keyboard events,\r\n * but can turn into something else moving forward.\r\n */\r\nexport class InteractionObjectEventDispatcher<T extends AMEvent<InteractionObject, IInteractionObjectEvents>> extends TargetedEventDispatcher<InteractionObject, T> {\r\n\r\n\t/**\r\n\t * Holds a list of Disposers for DOM events added.\r\n\t */\r\n\tprivate _domEvents: { [key: string]: CounterDisposer } = {};\r\n\r\n\t/**\r\n\t * Adds a DOM event and returns Disposer.\r\n\t *\r\n\t * @return Disposer\r\n\t */\r\n\tprivate _addDOMEvent<E extends Event, Key extends keyof IInteractionObjectEvents, C>(\r\n\t\ttype: string,\r\n\t\tkey: Key,\r\n\t\tlistener: (this: C, key: Key, evt: E) => void,\r\n\t\tcontext: C\r\n\t): IDisposer {\r\n\t\tif (!this._domEvents[type]) {\r\n\t\t\tconst callback = function (e: Event): void {\r\n\t\t\t\tlistener.call(context, key, e as any);\r\n\t\t\t};\r\n\r\n\t\t\tthis.target.element.addEventListener(type, callback, false);\r\n\r\n\t\t\tthis._domEvents[type] = new CounterDisposer(() => {\r\n\t\t\t\tdelete this._domEvents[type];\r\n\r\n\t\t\t\tthis.target.element.removeEventListener(type, callback, false);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn this._domEvents[type].increment();\r\n\t}\r\n\r\n\tprivate _dispatchKeyboardEvent<Key extends \"keydown\" | \"keyup\" | \"keypress\" | \"input\">(key: Key, ev: KeyboardEvent): void {\r\n\t\t// TODO use this.dispatchImmediately ?\r\n\t\tif (this.target.events.isEnabled(key)) {\r\n\t\t\tthis.target.events.dispatchImmediately(key, {\r\n\t\t\t\ttype: key as any,\r\n\t\t\t\ttarget: this.target,\r\n\t\t\t\tevent: ev\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _on<A, B, Key extends keyof T>(once: boolean, type: Key | null, callback: A, context: B, shouldClone: boolean, dispatch: (type: Key, event: T[Key]) => void): EventListener<T> {\r\n\t\tconst info = super._on(once, type, callback, context, shouldClone, dispatch);\r\n\r\n\t\tconst disposers = [info.disposer];\r\n\r\n\t\tswitch (type) {\r\n\t\t\tcase \"hit\":\r\n\t\t\tcase \"doublehit\":\r\n\t\t\tcase \"rightclick\":\r\n\t\t\tcase \"down\":\r\n\t\t\tcase \"up\":\r\n\t\t\t\tthis.target.clickable = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"drag\":\r\n\t\t\tcase \"dragstart\":\r\n\t\t\tcase \"dragstop\":\r\n\t\t\t\tthis.target.draggable = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"track\":\r\n\t\t\t\tthis.target.trackable = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"resize\":\r\n\t\t\t\tthis.target.resizable = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"swipe\":\r\n\t\t\tcase \"swipeleft\":\r\n\t\t\tcase \"swiperight\":\r\n\t\t\t\tthis.target.swipeable = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"wheel\":\r\n\t\t\tcase \"wheelup\":\r\n\t\t\tcase \"wheeldown\":\r\n\t\t\tcase \"wheelleft\":\r\n\t\t\tcase \"wheelright\":\r\n\t\t\t\tthis.target.wheelable = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"over\":\r\n\t\t\tcase \"out\":\r\n\t\t\t\tthis.target.hoverable = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"focus\":\r\n\t\t\tcase \"blur\":\r\n\t\t\tcase \"focusin\":\r\n\t\t\tcase \"focusout\":\r\n\t\t\t\tthis.target.focusable = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"keydown\":\r\n\t\t\t\tdisposers.push(this._addDOMEvent<KeyboardEvent, \"keydown\", this>(<any>type, <any>type, this._dispatchKeyboardEvent, this));\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"keyup\":\r\n\t\t\t\tdisposers.push(this._addDOMEvent<KeyboardEvent, \"keyup\", this>(<any>type, <any>type, this._dispatchKeyboardEvent, this));\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"keypress\":\r\n\t\t\t\tdisposers.push(this._addDOMEvent<KeyboardEvent, \"keypress\", this>(<any>type, <any>type, this._dispatchKeyboardEvent, this));\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"input\":\r\n\t\t\t\tdisposers.push(this._addDOMEvent<KeyboardEvent, \"input\", this>(<any>type, <any>type, this._dispatchKeyboardEvent, this));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tinfo.disposer = new MultiDisposer(disposers);\r\n\r\n\t\treturn info;\r\n\t}\r\n\r\n}\r\n","/**\r\n * Mouse-related functionality\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { IStyleProperty } from \"../defs/IStyleProperty\";\r\n\r\n/**\r\n * Defines static methods that hold style list for various mouse cursor styles,\r\n * maintaining browser compatibility.\r\n */\r\nexport class MouseCursorStyle {\r\n\r\n\t/**\r\n\t * Styles for \"grab\" mouse cursor.\r\n\t */\r\n\tstatic grab: Array<IStyleProperty> = [{\r\n\t\t\"property\": \"cursor\",\r\n\t\t\"value\": \"move\"\r\n\t}, {\r\n\t\t\"property\": \"cursor\",\r\n\t\t\"value\": \"grab\"\r\n\t}, {\r\n\t\t\"property\": \"cursor\",\r\n\t\t\"value\": \"-webkit-grab\"\r\n\t}];\r\n\r\n\t/**\r\n\t * Styles for \"grabbing\" mouse cursor.\r\n\t */\r\n\tstatic grabbing: Array<IStyleProperty> = [{\r\n\t\t\"property\": \"cursor\",\r\n\t\t\"value\": \"move\"\r\n\t}, {\r\n\t\t\"property\": \"cursor\",\r\n\t\t\"value\": \"grabbing\"\r\n\t}, {\r\n\t\t\"property\": \"cursor\",\r\n\t\t\"value\": \"-webkit-grabbing\"\r\n\t}];\r\n\r\n\t/**\r\n\t * Styles for \"pointer\" mouse cursor. (usually used for links)\r\n\t */\r\n\tstatic pointer: Array<IStyleProperty> = [{\r\n\t\t\"property\": \"cursor\",\r\n\t\t\"value\": \"pointer\"\r\n\t}];\r\n\r\n\t/**\r\n\t * Styles for default mouse cursor. (browser determines style)\r\n\t */\r\n\tstatic default: Array<IStyleProperty> = [{\r\n\t\t\"property\": \"cursor\",\r\n\t\t\"value\": \"default\"\r\n\t}];\r\n\r\n\t/**\r\n\t * Styles for horizontal bi-directional resize mouse cursor.\r\n\t */\r\n\tstatic horizontalResize: Array<IStyleProperty> = [{\r\n\t\t\"property\": \"cursor\",\r\n\t\t\"value\": \"ew-resize\"\r\n\t}];\r\n\r\n\t/**\r\n\t * Styles for vertical bi-directional mouse cursor.\r\n\t */\r\n\tstatic verticalResize: Array<IStyleProperty> = [{\r\n\t\t\"property\": \"cursor\",\r\n\t\t\"value\": \"ns-resize\"\r\n\t}];\r\n\r\n\t/**\r\n\t * Styles for \"no-allowed\" cursor.\r\n\t * @since 4.7.15\r\n\t */\r\n\tstatic notAllowed: Array<IStyleProperty> = [{\r\n\t\t\"property\": \"cursor\",\r\n\t\t\"value\": \"not-allowed\"\r\n\t}];\r\n\r\n}\r\n","/**\r\n * [[AMElement]] represents any SVG element and related functionality.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { IRectangle } from \"../defs/IRectangle\";\r\nimport { IDisposer } from \"../utils/Disposer\";\r\nimport { IPoint } from \"../defs/IPoint\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $object from \"../utils/Object\";\r\nimport * as $type from \"../utils/Type\";\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines available SVG attributes.\r\n */\r\nexport type SVGAttribute =\r\n\t\"accent-height\" | \"accumulate\" | \"additive\" | \"alignment-baseline\" | \"allowReorder\" | \"alphabetic\" | \"amplitude\" | \"arabic-form\" | \"aria-checked\" | \"aria-describedby\" | \"aria-hidden\" | \"aria-label\" | \"aria-labelledby\" | \"aria-live\" | \"aria-controls\" | \"aria-orientation\" | \"aria-valuemax\" | \"aria-valuemin\" | \"aria-valuenow\" | \"aria-valuetext\" | \"ascent\" | \"attributeName\" | \"attributeType\" | \"autoReverse\" | \"azimuth\" | \"baseFrequency\" | \"baseline-shift\" | \"baseProfile\" | \"bbox\" | \"begin\" | \"bias\" | \"by\" | \"calcMode\" | \"cap-height\" | \"class\" | \"clip\" | \"clipPathUnits\" | \"clip-path\" | \"clip-rule\" | \"color\" | \"color-interpolation\" | \"color-interpolation-filters\" | \"color-profile\" | \"color-rendering\" | \"contentScriptType\" | \"contentStyleType\" | \"cursor\" | \"cx\" | \"cy\" | \"d\" | \"decelerate\" | \"descent\" | \"diffuseConstant\" | \"direction\" | \"display\" | \"divisor\" | \"dominant-baseline\" | \"dur\" | \"dx\" | \"dy\" | \"edgeMode\" | \"elevation\" | \"enable-background\" | \"end\" | \"exponent\" | \"externalResourcesRequired\" | \"fill\" | \"fill-opacity\" | \"fill-rule\" | \"filter\" | \"filterRes\" | \"filterUnits\" | \"flood-color\" | \"flood-opacity\" | \"focusable\" | \"font-family\" | \"font-size\" | \"font-size-adjust\" | \"font-stretch\" | \"font-style\" | \"font-variant\" | \"font-weight\" | \"format\" | \"from\" | \"fx\" | \"fy\" | \"g1\" | \"g2\" | \"glyph-name\" | \"glyph-orientation-horizontal\" | \"glyph-orientation-vertical\" | \"glyphRef\" | \"gradientTransform\" | \"gradientUnits\" | \"hanging\" | \"height\" | \"href\" | \"horiz-adv-x\" | \"horiz-origin-x\" | \"id\" | \"ideographic\" | \"image-rendering\" | \"in\" | \"in2\" | \"intercept\" | \"k\" | \"k1\" | \"k2\" | \"k3\" | \"k4\" | \"kernelMatrix\" | \"kernelUnitLength\" | \"kerning\" | \"keyPoints\" | \"keySplines\" | \"keyTimes\" | \"lang\" | \"lengthAdjust\" | \"letter-spacing\" | \"lighting-color\" | \"limitingConeAngle\" | \"local\" | \"marker-end\" | \"marker-mid\" | \"marker-start\" | \"markerHeight\" | \"markerUnits\" | \"markerWidth\" | \"mask\" | \"maskContentUnits\" | \"maskUnits\" | \"mathematical\" | \"max\" | \"media\" | \"method\" | \"min\" | \"mode\" | \"name\" | \"numOctaves\" | \"offset\" | \"onabort\" | \"onactivate\" | \"onbegin\" | \"onclick\" | \"onend\" | \"onerror\" | \"onfocusin\" | \"onfocusout\" | \"onload\" | \"onmousedown\" | \"onmousemove\" | \"onmouseout\" | \"onmouseover\" | \"onmouseup\" | \"onrepeat\" | \"onresize\" | \"onscroll\" | \"onunload\" | \"onzoom\" | \"opacity\" | \"operator\" | \"order\" | \"orient\" | \"orientation\" | \"origin\" | \"overflow\" | \"overline-position\" | \"overline-thickness\" | \"panose-1\" | \"paint-order\" | \"pathLength\" | \"patternContentUnits\" | \"patternTransform\" | \"patternUnits\" | \"pointer-events\" | \"points\" | \"pointsAtX\" | \"pointsAtY\" | \"pointsAtZ\" | \"preserveAlpha\" | \"preserveAspectRatio\" | \"primitiveUnits\" | \"r\" | \"radius\" | \"refX\" | \"refY\" | \"rendering-intent\" | \"repeatCount\" | \"repeatDur\" | \"requiredExtensions\" | \"requiredFeatures\" | \"restart\" | \"result\" | \"role\" | \"rotate\" | \"rx\" | \"ry\" | \"scale\" | \"seed\" | \"shape-rendering\" | \"slope\" | \"spacing\" | \"specularConstant\" | \"specularExponent\" | \"speed\" | \"spreadMethod\" | \"startOffset\" | \"stdDeviation\" | \"stemh\" | \"stemv\" | \"stitchTiles\" | \"stop-color\" | \"stop-opacity\" | \"strikethrough-position\" | \"strikethrough-thickness\" | \"string\" | \"stroke\" | \"stroke-dasharray\" | \"stroke-dashoffset\" | \"stroke-linecap\" | \"stroke-linejoin\" | \"stroke-miterlimit\" | \"stroke-opacity\" | \"stroke-width\" | \"style\" | \"surfaceScale\" | \"systemLanguage\" | \"tabindex\" | \"tableValues\" | \"target\" | \"targetX\" | \"targetY\" | \"text-anchor\" | \"text-decoration\" | \"text-rendering\" | \"textLength\" | \"to\" | \"transform\" | \"type\" | \"u1\" | \"u2\" | \"underline-position\" | \"underline-thickness\" | \"unicode\" | \"unicode-bidi\" | \"unicode-range\" | \"units-per-em\" | \"v-alphabetic\" | \"v-hanging\" | \"v-ideographic\" | \"v-mathematical\" | \"values\" | \"version\" | \"vert-adv-y\" | \"vert-origin-x\" | \"vert-origin-y\" | \"viewBox\" | \"viewTarget\" | \"visibility\" | \"width\" | \"widths\" | \"word-spacing\" | \"writing-mode\" | \"x\" | \"x-height\" | \"x1\" | \"x2\" | \"xChannelSelector\" | \"xlink:actuate\" | \"xlink:arcrole\" | \"xlink:href\" | \"xlink:role\" | \"xlink:show\" | \"xlink:title\" | \"xlink:type\" | \"xml:base\" | \"xml:lang\" | \"xml:space\" | \"y\" | \"y1\" | \"y2\" | \"yChannelSelector\" | \"z\" | \"zoomAndPan\";\r\n\r\n/**\r\n * Represents an interface for SVG attributes.\r\n *\r\n * This is a collection of all properties that an SVG element can have.\r\n */\r\nexport interface ISVGAttribute {\r\n\t\"accent-height\"?: any;\r\n\t\"accumulate\"?: any;\r\n\t\"additive\"?: any;\r\n\t\"alignment-baseline\"?: any;\r\n\t\"allowReorder\"?: any;\r\n\t\"alphabetic\"?: any;\r\n\t\"amplitude\"?: any;\r\n\t\"arabic-form\"?: any;\r\n\t\"aria-checked\"?: any;\r\n\t\"aria-describedby\"?: any;\r\n\t\"aria-hidden\"?: any;\r\n\t\"aria-label\"?: any;\r\n\t\"aria-labelledby\"?: any;\r\n\t\"aria-live\"?: any;\r\n\t\"aria-controls\"?: any;\r\n\t\"aria-orientation\"?: any;\r\n\t\"aria-valuemax\"?: any;\r\n\t\"aria-valuemin\"?: any;\r\n\t\"aria-valuenow\"?: any;\r\n\t\"aria-valuetext\"?: any;\r\n\t\"ascent\"?: any;\r\n\t\"attributeName\"?: any;\r\n\t\"attributeType\"?: any;\r\n\t\"autoReverse\"?: any;\r\n\t\"azimuth\"?: any;\r\n\t\"baseFrequency\"?: any;\r\n\t\"baseline-shift\"?: any;\r\n\t\"baseProfile\"?: any;\r\n\t\"bbox\"?: any;\r\n\t\"begin\"?: any;\r\n\t\"bias\"?: any;\r\n\t\"by\"?: any;\r\n\t\"calcMode\"?: any;\r\n\t\"cap-height\"?: any;\r\n\t\"class\"?: any;\r\n\t\"clip\"?: any;\r\n\t\"clipPathUnits\"?: any;\r\n\t\"clip-path\"?: any;\r\n\t\"clip-rule\"?: any;\r\n\t\"color\"?: any;\r\n\t\"color-interpolation\"?: any;\r\n\t\"color-interpolation-filters\"?: any;\r\n\t\"color-profile\"?: any;\r\n\t\"color-rendering\"?: any;\r\n\t\"contentScriptType\"?: any;\r\n\t\"contentStyleType\"?: any;\r\n\t\"cursor\"?: any;\r\n\t\"cx\"?: any;\r\n\t\"cy\"?: any;\r\n\t\"d\"?: any;\r\n\t\"decelerate\"?: any;\r\n\t\"descent\"?: any;\r\n\t\"diffuseConstant\"?: any;\r\n\t\"direction\"?: any;\r\n\t\"display\"?: any;\r\n\t\"divisor\"?: any;\r\n\t\"dominant-baseline\"?: any;\r\n\t\"dur\"?: any;\r\n\t\"dx\"?: any;\r\n\t\"dy\"?: any;\r\n\t\"edgeMode\"?: any;\r\n\t\"elevation\"?: any;\r\n\t\"enable-background\"?: any;\r\n\t\"end\"?: any;\r\n\t\"exponent\"?: any;\r\n\t\"externalResourcesRequired\"?: any;\r\n\t\"fill\"?: any;\r\n\t\"fill-opacity\"?: any;\r\n\t\"fill-rule\"?: any;\r\n\t\"filter\"?: any;\r\n\t\"filterRes\"?: any;\r\n\t\"filterUnits\"?: any;\r\n\t\"flood-color\"?: any;\r\n\t\"flood-opacity\"?: any;\r\n\t\"focusable\"?: any;\r\n\t\"font-family\"?: any;\r\n\t\"font-size\"?: any;\r\n\t\"font-size-adjust\"?: any;\r\n\t\"font-stretch\"?: any;\r\n\t\"font-style\"?: any;\r\n\t\"font-variant\"?: any;\r\n\t\"font-weight\"?: any;\r\n\t\"format\"?: any;\r\n\t\"from\"?: any;\r\n\t\"fx\"?: any;\r\n\t\"fy\"?: any;\r\n\t\"g1\"?: any;\r\n\t\"g2\"?: any;\r\n\t\"glyph-name\"?: any;\r\n\t\"glyph-orientation-horizontal\"?: any;\r\n\t\"glyph-orientation-vertical\"?: any;\r\n\t\"glyphRef\"?: any;\r\n\t\"gradientTransform\"?: any;\r\n\t\"gradientUnits\"?: any;\r\n\t\"hanging\"?: any;\r\n\t\"height\"?: any;\r\n\t\"href\"?: any;\r\n\t\"horiz-adv-x\"?: any;\r\n\t\"horiz-origin-x\"?: any;\r\n\t\"id\"?: any;\r\n\t\"ideographic\"?: any;\r\n\t\"image-rendering\"?: any;\r\n\t\"in\"?: any;\r\n\t\"in2\"?: any;\r\n\t\"intercept\"?: any;\r\n\t\"k\"?: any;\r\n\t\"k1\"?: any;\r\n\t\"k2\"?: any;\r\n\t\"k3\"?: any;\r\n\t\"k4\"?: any;\r\n\t\"kernelMatrix\"?: any;\r\n\t\"kernelUnitLength\"?: any;\r\n\t\"kerning\"?: any;\r\n\t\"keyPoints\"?: any;\r\n\t\"keySplines\"?: any;\r\n\t\"keyTimes\"?: any;\r\n\t\"lang\"?: any;\r\n\t\"lengthAdjust\"?: any;\r\n\t\"letter-spacing\"?: any;\r\n\t\"lighting-color\"?: any;\r\n\t\"limitingConeAngle\"?: any;\r\n\t\"local\"?: any;\r\n\t\"marker-end\"?: any;\r\n\t\"marker-mid\"?: any;\r\n\t\"marker-start\"?: any;\r\n\t\"markerHeight\"?: any;\r\n\t\"markerUnits\"?: any;\r\n\t\"markerWidth\"?: any;\r\n\t\"mask\"?: any;\r\n\t\"maskContentUnits\"?: any;\r\n\t\"maskUnits\"?: any;\r\n\t\"mathematical\"?: any;\r\n\t\"max\"?: any;\r\n\t\"media\"?: any;\r\n\t\"method\"?: any;\r\n\t\"min\"?: any;\r\n\t\"mode\"?: any;\r\n\t\"name\"?: any;\r\n\t\"numOctaves\"?: any;\r\n\t\"offset\"?: any;\r\n\t\"onabort\"?: any;\r\n\t\"onactivate\"?: any;\r\n\t\"onbegin\"?: any;\r\n\t\"onclick\"?: any;\r\n\t\"onend\"?: any;\r\n\t\"onerror\"?: any;\r\n\t\"onfocusin\"?: any;\r\n\t\"onfocusout\"?: any;\r\n\t\"onload\"?: any;\r\n\t\"onmousedown\"?: any;\r\n\t\"onmousemove\"?: any;\r\n\t\"onmouseout\"?: any;\r\n\t\"onmouseover\"?: any;\r\n\t\"onmouseup\"?: any;\r\n\t\"onrepeat\"?: any;\r\n\t\"onresize\"?: any;\r\n\t\"onscroll\"?: any;\r\n\t\"onunload\"?: any;\r\n\t\"onzoom\"?: any;\r\n\t\"opacity\"?: any;\r\n\t\"operator\"?: any;\r\n\t\"order\"?: any;\r\n\t\"orient\"?: any;\r\n\t\"orientation\"?: any;\r\n\t\"origin\"?: any;\r\n\t\"overflow\"?: any;\r\n\t\"overline-position\"?: any;\r\n\t\"overline-thickness\"?: any;\r\n\t\"panose-1\"?: any;\r\n\t\"paint-order\"?: any;\r\n\t\"path\"?: any;\r\n\t\"pathLength\"?: any;\r\n\t\"patternContentUnits\"?: any;\r\n\t\"patternTransform\"?: any;\r\n\t\"patternUnits\"?: any;\r\n\t\"pointer-events\"?: any;\r\n\t\"points\"?: any;\r\n\t\"pointsAtX\"?: any;\r\n\t\"pointsAtY\"?: any;\r\n\t\"pointsAtZ\"?: any;\r\n\t\"preserveAlpha\"?: any;\r\n\t\"preserveAspectRatio\"?: any;\r\n\t\"primitiveUnits\"?: any;\r\n\t\"r\"?: any;\r\n\t\"radius\"?: any;\r\n\t\"refX\"?: any;\r\n\t\"refY\"?: any;\r\n\t\"rendering-intent\"?: any;\r\n\t\"repeatCount\"?: any;\r\n\t\"repeatDur\"?: any;\r\n\t\"requiredExtensions\"?: any;\r\n\t\"requiredFeatures\"?: any;\r\n\t\"restart\"?: any;\r\n\t\"result\"?: any;\r\n\t\"role\"?: any;\r\n\t\"rotate\"?: any;\r\n\t\"rx\"?: any;\r\n\t\"ry\"?: any;\r\n\t\"scale\"?: any;\r\n\t\"seed\"?: any;\r\n\t\"shape-rendering\"?: any;\r\n\t\"slope\"?: any;\r\n\t\"spacing\"?: any;\r\n\t\"specularConstant\"?: any;\r\n\t\"specularExponent\"?: any;\r\n\t\"speed\"?: any;\r\n\t\"spreadMethod\"?: any;\r\n\t\"startOffset\"?: any;\r\n\t\"stdDeviation\"?: any;\r\n\t\"stemh\"?: any;\r\n\t\"stemv\"?: any;\r\n\t\"stitchTiles\"?: any;\r\n\t\"stop-color\"?: any;\r\n\t\"stop-opacity\"?: any;\r\n\t\"strikethrough-position\"?: any;\r\n\t\"strikethrough-thickness\"?: any;\r\n\t\"string\"?: any;\r\n\t\"stroke\"?: any;\r\n\t\"stroke-dasharray\"?: any;\r\n\t\"stroke-dashoffset\"?: any;\r\n\t\"stroke-linecap\"?: any;\r\n\t\"stroke-linejoin\"?: any;\r\n\t\"stroke-miterlimit\"?: any;\r\n\t\"stroke-opacity\"?: any;\r\n\t\"stroke-width\"?: any;\r\n\t\"style\"?: any;\r\n\t\"surfaceScale\"?: any;\r\n\t\"systemLanguage\"?: any;\r\n\t\"tabindex\"?: any;\r\n\t\"tableValues\"?: any;\r\n\t\"target\"?: any;\r\n\t\"targetX\"?: any;\r\n\t\"targetY\"?: any;\r\n\t\"text-anchor\"?: any;\r\n\t\"text-decoration\"?: any;\r\n\t\"text-rendering\"?: any;\r\n\t\"textLength\"?: any;\r\n\t\"to\"?: any;\r\n\t\"transform\"?: any;\r\n\t\"type\"?: any;\r\n\t\"u1\"?: any;\r\n\t\"u2\"?: any;\r\n\t\"underline-position\"?: any;\r\n\t\"underline-thickness\"?: any;\r\n\t\"unicode\"?: any;\r\n\t\"unicode-bidi\"?: any;\r\n\t\"unicode-range\"?: any;\r\n\t\"units-per-em\"?: any;\r\n\t\"v-alphabetic\"?: any;\r\n\t\"v-hanging\"?: any;\r\n\t\"v-ideographic\"?: any;\r\n\t\"v-mathematical\"?: any;\r\n\t\"values\"?: any;\r\n\t\"version\"?: any;\r\n\t\"vert-adv-y\"?: any;\r\n\t\"vert-origin-x\"?: any;\r\n\t\"vert-origin-y\"?: any;\r\n\t\"viewBox\"?: any;\r\n\t\"viewTarget\"?: any;\r\n\t\"visibility\"?: any;\r\n\t\"width\"?: any;\r\n\t\"widths\"?: any;\r\n\t\"word-spacing\"?: any;\r\n\t\"writing-mode\"?: any;\r\n\t\"x\"?: any;\r\n\t\"x-height\"?: any;\r\n\t\"x1\"?: any;\r\n\t\"x2\"?: any;\r\n\t\"xChannelSelector\"?: any;\r\n\t\"xlink:actuate\"?: any;\r\n\t\"xlink:arcrole\"?: any;\r\n\t\"xlink:href\"?: any;\r\n\t\"xlink:role\"?: any;\r\n\t\"xlink:show\"?: any;\r\n\t\"xlink:title\"?: any;\r\n\t\"xlink:type\"?: any;\r\n\t\"xml:base\"?: any;\r\n\t\"xml:lang\"?: any;\r\n\t\"xml:space\"?: any;\r\n\t\"y\"?: any;\r\n\t\"y1\"?: any;\r\n\t\"y2\"?: any;\r\n\t\"yChannelSelector\"?: any;\r\n\t\"z\"?: any;\r\n\t\"zoomAndPan\"?: any;\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A base class for all SVG elements. Provides low-level DOM functionality.\r\n *\r\n * All visual elements extend this class.\r\n */\r\nexport class AMElement implements IDisposer {\r\n\r\n\t/**\r\n\t * Indicates if the element was already disposed.\r\n\t */\r\n\tprotected _isDisposed: boolean = false;\r\n\r\n\t/**\r\n\t * An SVG node of the element.\r\n\t */\r\n\tpublic node: SVGSVGElement;\r\n\r\n\t/**\r\n\t * Current X coordinate.\r\n\t */\r\n\tprivate _x: number = 0;\r\n\r\n\t/**\r\n\t * Current Y coordinate.\r\n\t */\r\n\tprivate _y: number = 0;\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate _rotationY: number = 0;\t\r\n\r\n\t/**\r\n\t * \r\n\t */\r\n\tprivate _rotationX: number = 0;\t\t\r\n\r\n\t/**\r\n\t * Current rotation.\r\n\t */\r\n\tprivate _rotation: number = 0;\r\n\r\n\t/**\r\n\t * Current scale.\r\n\t */\r\n\tprivate _scale: number = 1;\r\n\r\n\t/**\r\n\t * current value of transfrom string\r\n\t */\r\n\tprivate _transformString:string;\r\n\r\n\t/**\r\n\t * Constructor creates a new element or uses the one that was passed in.\r\n\t *\r\n\t * @param element Element reference node type\r\n\t */\r\n\tconstructor(element: string | SVGSVGElement) {\r\n\t\tif (typeof element === \"string\") {\r\n\t\t\tthis.node = <SVGSVGElement>document.createElementNS($dom.SVGNS, element);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.node = element;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Removes element's node from DOM.\r\n\t */\r\n\tpublic removeNode(): void {\r\n\t\tif (this.node) {\r\n\t\t\tif (this.node.parentNode) {\r\n\t\t\t\tthis.node.parentNode.removeChild(this.node);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `transform` attribute of the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Transform attribute value\r\n\t */\r\n\tpublic get transformString(): $type.Optional<string> {\r\n\t\tif (this.node) {\r\n\r\n\t\t\treturn this._transformString;\r\n\t\t\t/*\r\n\t\t\tconst value = this.node.getAttribute(\"transform\");\r\n\r\n\t\t\tif (value !== null) {\r\n\t\t\t\treturn value;\r\n\t\t\t}*/\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Appply position, rotation and scale properties via elemen's `transform`\r\n\t * property\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic transform(): void {\r\n\r\n\t\tlet transfromString = \"translate(\" + this._x + \",\" + this._y + \")\";\r\n\r\n\t\tif (this._scale != 1) {\r\n\t\t\ttransfromString += ((transfromString ? \" \" : \"\") + \"scale(\" + this._scale + \")\");\r\n\t\t}\r\n\r\n\t\tif (this._rotation != 0) {\r\n\t\t\tlet rotateString = \"rotate(\" + this._rotation + \")\";\r\n\r\n\t\t\tif(this._rotationX && this._rotationY){\r\n\t\t\t\trotateString = \"rotate(\" + this._rotation + \" \" + this._rotationX + \" \" + this._rotationY + \")\";\r\n\t\t\t}\r\n\r\n\t\t\ttransfromString += ((transfromString ? \" \" : \"\") + rotateString);\r\n\t\t}\r\n\r\n\t\tthis._transformString = transfromString;\r\n\r\n\t\tthis.node.setAttribute(\"transform\", transfromString);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns bounding box of the element.\r\n\t *\r\n\t * ATTENTION: Bounding box calculations are extremely costly so should be\r\n\t * used sparingly and cached whenever possible.\r\n\t *\r\n\t * @return Bounding rectangle\r\n\t */\r\n\tpublic getBBox(): IRectangle {\r\n\t\tlet bbox: IRectangle = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0,\r\n\t\t\tx: 0,\r\n\t\t\ty: 0\r\n\t\t};\r\n\r\n\t\t// FF would fail if getBBox() is called without node added to parent\r\n\t\tif (this.node && this.node.parentNode) {\r\n\t\t\t\r\n\t\t\ttry { // again for ff. TODO: check if this doesn't slow down\r\n\t\t\t\tlet svgbbox = this.node.getBBox();\r\n\t\t\t\tbbox.x = svgbbox.x;\r\n\t\t\t\tbbox.y = svgbbox.y;\r\n\t\t\t\tbbox.width = svgbbox.width;\r\n\t\t\t\tbbox.height = svgbbox.height;\r\n\t\t\t} catch (err) { }\r\n\t\t}\r\n\r\n\t\treturn bbox;\r\n\t}\r\n\r\n\t/**\r\n\t * Moves the element to new coordinates.\r\n\t *\r\n\t * @param x Target X\r\n\t * @param y Target Y\r\n\t */\r\n\tpublic moveTo(point: IPoint): void {\r\n\t\tif (point) {\r\n\t\t\tlet x: number = point.x;\r\n\t\t\tlet y: number = point.y;\r\n\t\t\tif (this._x != x || this._y != y) {\r\n\t\t\t\tthis._x = x;\r\n\t\t\t\tthis._y = y;\r\n\t\t\t\tthis.transform();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Element's SVG contents.\r\n\t *\r\n\t * @param value Contents\r\n\t */\r\n\tpublic set content(value: string) {\r\n\t\t// @todo Do not use `innerHTML` as this is not reliable and will not work on all browsers\r\n\t\tthis.node.innerHTML = value;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns element's contents as SVG markup.\r\n\t *\r\n\t * @return Contents\r\n\t */\r\n\tpublic get content(): string {\r\n\t\t// @todo Do not use `innerHTML` as this is not reliable and will not work on all browsers\r\n\t\treturn this.node.innerHTML || \"\";\r\n\t}\r\n\r\n\t/**\r\n\t * Text contents of the SVG element.\r\n\t *\r\n\t * @param value Text contents\r\n\t */\r\n\tpublic set textContent(value: string) {\r\n\t\tthis.node.textContent = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Text contents\r\n\t */\r\n\tpublic get textContent(): string {\r\n\t\treturn this.node.textContent || \"\";\r\n\t}\r\n\r\n\t/**\r\n\t * Element's X position in pixels.\r\n\t *\r\n\t * @param value X coordinate (px)\r\n\t */\r\n\tpublic set x(value: number) {\r\n\t\tif (this._x != value) {\r\n\t\t\tthis._x = value;\r\n\t\t\tthis.transform();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return X coordinate (px)\r\n\t */\r\n\tpublic get x(): number {\r\n\t\treturn this._x;\r\n\t}\r\n\r\n\t/**\r\n\t * Element's Y position in pixels.\r\n\t *\r\n\t * @param value Y coordinate (px)\r\n\t */\r\n\tpublic set y(value: number) {\r\n\t\tif (this._y != value) {\r\n\t\t\tthis._y = value;\r\n\t\t\tthis.transform();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Y coordinate (px)\r\n\t */\r\n\tpublic get y(): number {\r\n\t\treturn this._y;\r\n\t}\r\n\r\n\t/**\r\n\t * Element's rotation in degrees.\r\n\t *\r\n\t * @param value Rotation\r\n\t */\r\n\tpublic set rotation(angle: number) {\r\n\t\tif (this._rotation != angle) {\r\n\t\t\tthis._rotation = angle;\r\n\t\t\tthis.transform();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Rotation\r\n\t */\r\n\tpublic get rotation(): number {\r\n\t\treturn this._rotation;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic set rotationX(x: number) {\r\n\t\tif (this._rotationX != x) {\r\n\t\t\tthis._rotationX = x;\r\n\t\t\tthis.transform();\r\n\t\t}\r\n\t}\t\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic get rotationX():number{\r\n\t\treturn this._rotationX;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic set rotationY(y: number) {\r\n\t\tif (this._rotationY != y) {\r\n\t\t\tthis._rotationY = y;\r\n\t\t\tthis.transform();\r\n\t\t}\r\n\t}\t\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic get rotationY():number{\r\n\t\treturn this._rotationY;\r\n\t}\t\r\n\r\n\t/**\r\n\t * Element's scale where 1 is original size.\r\n\t *\r\n\t * Setting to 0.5 will reduce element's size by 50%, 2 will make element\r\n\t * twice as large, etc.\r\n\t *\r\n\t * @param value Scale\r\n\t */\r\n\tpublic set scale(value: number) {\r\n\t\tif (this._scale != value) {\r\n\t\t\tthis._scale = value;\r\n\t\t\tthis.transform();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Scale\r\n\t */\r\n\tpublic get scale(): number {\r\n\t\treturn this._scale;\r\n\t}\r\n\r\n\t/**\r\n\t * Removes an attribute from element.\r\n\t *\r\n\t * @param attribute Attribute to remove\r\n\t */\r\n\tpublic removeAttr(attribute: string): void {\r\n\t\tthis.node.removeAttribute(attribute);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a set of attributes on a element.\r\n\t *\r\n\t * @param attributes An object with attribute names (key) and values\r\n\t * @return The same element\r\n\t */\r\n\tpublic attr(attributes: ISVGAttribute): AMElement {\r\n\t\t$object.each(attributes, (attributeName, attributeValue) => {\r\n\t\t\tif (!$type.hasValue(attributeValue)) {\r\n\t\t\t\tthis.node.removeAttribute(attributeName);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// this is for performance testing\r\n\t\t\t\t//if(attributeValue == this.node.getAttribute(attributeName)){\r\n\t\t\t\t//\tconsole.log(attributeName, attributeValue)\r\n\t\t\t\t//}\r\n\t\t\t\tthis.node.setAttribute(attributeName, attributeValue);\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a value of a node attribute.\r\n\t *\r\n\t * @param attribute Attribute name\r\n\t * @return Attribute value\r\n\t */\r\n\tpublic getAttr(attribute: string): string | null {\r\n\t\treturn this.node.getAttribute(attribute);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a single attribute of the element's node using namesspace.\r\n\t *\r\n\t * @param ns Namespace\r\n\t * @param attribute Attribute\r\n\t * @param value Value\r\n\t * @return The same element\r\n\t */\r\n\tpublic attrNS(ns: string, attribute: string, value: string): AMElement {\r\n\t\tthis.node.setAttributeNS(ns, attribute, value);\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a namespaced attribute value from node.\r\n\t *\r\n\t * @param ns Namespace\r\n\t * @param attribute Attribute\r\n\t * @return Attribute value\r\n\t */\r\n\tpublic getAttrNS(ns: string, attribute: string): string {\r\n\t\treturn this.node.getAttributeNS(ns, attribute);\r\n\t}\r\n\r\n\t/**\r\n\t * Removes `style` attribute from node.\r\n\t *\r\n\t * @param attribute Attribute to remove\r\n\t */\r\n\tpublic removeStyle(attribute: string): void {\r\n\t\t// @todo Review because it's a bit messy and maybe not needed (pratically not used)\r\n\t\tdelete (<any>this.node.style)[attribute];\r\n\t}\r\n\r\n\t/**\r\n\t * Returns style attribute value.\r\n\t *\r\n\t * @param attribute Style attribute value\r\n\t * @return Attribute value\r\n\t */\r\n\tpublic getStyle(attribute: string): string {\r\n\t\t// @todo Review because it's a bit messy and maybe not needed (pratically not used)\r\n\t\treturn (<any>this.node.style)[attribute];\r\n\t}\r\n\r\n\t/**\r\n\t * Adds style attributes to element's node.\r\n\t *\r\n\t * @param attributes Object containing attribute: value pairs\r\n\t * @return The same element\r\n\t */\r\n\tpublic addStyle(attributes: Object): AMElement {\r\n\t\t// @todo Review because it's a bit messy and maybe not needed (pratically not used)\r\n\t\t$object.each(attributes, (attributeName, attributeValue) => {\r\n\t\t\tif (!$type.hasValue(attributeValue)) {\r\n\t\t\t\tthis.removeStyle(attributeName);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t(<any>this.node.style)[attributeName] = attributeValue;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a class to element.\r\n\t *\r\n\t * @param name Class name\r\n\t */\r\n\tpublic addClass(name: string): void {\r\n\t\t$dom.addClass(this.node, name);\r\n\t}\r\n\r\n\t/**\r\n\t * Removes a class from element.\r\n\t *\r\n\t * @param name Class name\r\n\t */\r\n\tpublic removeClass(name: string): void {\r\n\t\t$dom.removeClass(this.node, name);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a class name on element.\r\n\t *\r\n\t * @param name Class name\r\n\t */\r\n\tpublic setClass(name: string): void {\r\n\t\tthis.node.setAttribute(\"class\", name);\r\n\t}\r\n\r\n\t/**\r\n\t * Removes all element's child nodes, basically leaving it empty.\r\n\t */\r\n\tpublic removeChildNodes(): void {\r\n\t\t// remove all children\r\n\t\twhile (this.node.childNodes.length > 0) {\r\n\t\t\tthis.node.removeChild(this.node.firstChild!);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Was this element already been disposed?\r\n\t *\r\n\t * @return Disposed?\r\n\t */\r\n\tpublic isDisposed(): boolean {\r\n\t\treturn this._isDisposed;\r\n\t}\r\n\r\n\t/**\r\n\t * Disposes element.\r\n\t */\r\n\tpublic dispose(): void {\r\n\t\tthis.removeNode();\r\n\t}\r\n\r\n}\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AMElement } from \"./AMElement\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates an SVG `<g>` element.\r\n *\r\n * SVG groups are used for elements that need more elements just one.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Element/g} About `<g>` element\r\n */\r\nexport class Group extends AMElement {\r\n\r\n\t/**\r\n\t * Constructor.\r\n\t *\r\n\t * @param elementName Element type (should be \"g\")\r\n\t */\r\n\tconstructor(elementName: string) {\r\n\t\tsuper(elementName);\r\n\t}\r\n\r\n\t/**\r\n\t * Adds an element to group.\r\n\t *\r\n\t * This will manipulate DOM. `element` will be physically moved into group.\r\n\t *\r\n\t * @param element Element\r\n\t */\r\n\tpublic add(element: AMElement): void {\r\n\t\tif (element) {\r\n\t\t\tthis.node.appendChild(element.node);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Adds an element to group.\r\n\t *\r\n\t * This will manipulate DOM. `element` will be physically moved into group.\r\n\t *\r\n\t * @param element Element\r\n\t */\r\n\tpublic addToBack(element: AMElement): void {\r\n\t\tif (element) {\r\n\t\t\tlet first = this.node.childNodes[0];\r\n\t\t\tif (first) {\r\n\t\t\t\tif (first != element.node) {\r\n\t\t\t\t\tthis.node.insertBefore(element.node, first);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.node.appendChild(element.node);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Removes the `element` from group.\r\n\t *\r\n\t * Please note that this will not dispose the element itself, it will just\r\n\t * remove it from the group.\r\n\t *\r\n\t * @param element Element\r\n\t */\r\n\tpublic removeElement(element: AMElement): void {\r\n\t\t// todo: not sure about the speed, need to investigate, maybe it's faster to check if node is a child\r\n\t\tif (element) {\r\n\t\t\ttry {\r\n\t\t\t\tif (element.node && element.node.parentNode == this.node) {\r\n\t\t\t\t\tthis.node.removeChild(element.node);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tcatch (err) {\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Checks if this group already has the child element added\r\n\t *\r\n\t * @param element\r\n\t * @return {boolean}\r\n\t */\r\n\tpublic hasChild(element:AMElement):boolean {\r\n\t\tfor(let i = 0; i < this.node.childNodes.length; i++){\r\n\t\t\tif(this.node.childNodes[i] == element.node){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Content of the group element.\r\n\t *\r\n\t * Can be used to add a lot of proprietary SVG markup into group.\r\n\t *\r\n\t * @param value SVG markup\r\n\t */\r\n\tpublic set content(value: string) {\r\n\t\tthis.node.innerHTML = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return SVG markup\r\n\t */\r\n\tpublic get content(): string {\r\n\t\treturn this.node.innerHTML;\r\n\t}\r\n\r\n\t/**\r\n\t * Removes all children from the group.\r\n\t */\r\n\tpublic removeChildren(): void {\r\n\t\tif (this.node.childNodes) {\r\n\t\t\twhile (this.node.childNodes.length > 0) {\r\n\t\t\t\tlet childNode = this.node.firstChild;\r\n\t\t\t\tif (childNode && childNode.parentNode) {\r\n\t\t\t\t\tchildNode.parentNode.removeChild(childNode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","/**\r\n * Paper class just like the white sheet of pressed fiber it draws its name\r\n * inspiration from is used as a starting point to start a drawing.\r\n *\r\n * Before we can start adding elements (drawing) we need to take out a new sheet\r\n * of paper, or in this instance create a blank SVG element.\r\n *\r\n * This class creates such element, as well as implements methods needed to\r\n * start adding elements to it.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AMElement } from \"./AMElement\";\r\nimport { Group } from \"./Group\";\r\nimport { SVGContainer } from \"./SVGContainer\";\r\nimport * as $dom from \"../utils/DOM\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Represents available SVG elements that can be added to paper.\r\n *\r\n * @todo Review if we can remove commented out methods\r\n */\r\nexport type SVGElementNames = \"a\" | \"altGlyph\" | \"altGlyphDef\" | \"altGlyphItem\" | \"animate\" | \"animateColor\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"color-profile\" | \"cursor\" | \"defs\" | \"desc\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"feConvolveMatrix\" | \"filter\" | \"font\" | \"font-face\" | \"font-face-format\" | \"font-face-name\" | \"font-face-src\" | \"font-face-uri\" | \"foreignObject\" | \"g\" | \"glyph\" | \"glyphRef\" | \"hkern\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"missing-glyph\" | \"mpath\" | \"path\" | \"pattern\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"script\" | \"set\" | \"stop\" | \"style\" | \"svg\" | \"switch\" | \"symbol\" | \"text\" | \"textPath\" | \"title\" | \"tref\" | \"tspan\" | \"use\" | \"view\" | \"vkern\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Paper class which when instantiated will create an SVG element as well as\r\n * some of the sub-elements like `<desc>`, `<defs>`.\r\n *\r\n * Use its methods like `addGroup` and `append` to add elements to the paper.\r\n */\r\nexport class Paper {\r\n\r\n\t/**\r\n\t * A reference `<svg>` element.\r\n\t */\r\n\tpublic svg: SVGSVGElement;\r\n\r\n\t/**\r\n\t * A reference to the HTML container the `<svg>` element is placed in.\r\n\t */\r\n\tpublic container: HTMLElement;\r\n\r\n\t/**\r\n\t * A reference to the `<defs>` element.\r\n\t */\r\n\tpublic defs: SVGDefsElement;\r\n\r\n\t/**\r\n\t * An id of the element.\r\n\t */\r\n\tpublic id: string;\r\n\r\n\t/**\r\n\t * Creates main `<svg>` container and related elements.\r\n\t *\r\n\t * @param container A reference to HTML element to create `<svg>` in\r\n\t */\r\n\tconstructor(container: HTMLElement, id: string) {\r\n\r\n\t\t// Store container reference\r\n\t\tthis.container = container;\r\n\t\tthis.id = id;\r\n\r\n\t\t// Create SVG element\r\n\t\tlet svg = <SVGSVGElement>document.createElementNS($dom.SVGNS, \"svg\");\r\n\t\tsvg.setAttribute(\"version\", \"1.1\");\r\n\t\tsvg.setAttributeNS($dom.XMLNS, \"xmlns\", $dom.SVGNS);\r\n\t\tsvg.setAttributeNS($dom.XMLNS, \"xmlns:xlink\", $dom.XLINK);\r\n\t\tsvg.setAttribute(\"role\", \"group\");\r\n\t\tthis.container.appendChild(svg);\r\n\r\n\t\t// Add description\r\n\t\tlet desc: SVGElement = <SVGElement>document.createElementNS($dom.SVGNS, \"desc\");\r\n\t\tdesc.appendChild(document.createTextNode(\"JavaScript chart by amCharts\"));\r\n\t\tsvg.appendChild(desc);\r\n\r\n\t\t// Add defs\r\n\t\tthis.defs = <SVGDefsElement>document.createElementNS($dom.SVGNS, \"defs\");\r\n\t\tsvg.appendChild(this.defs);\r\n\r\n\t\t// Set width and height to fit container\r\n\t\tsvg.style.width = \"100%\";\r\n\t\tsvg.style.height = \"100%\";\r\n\t\tsvg.style.overflow = \"visible\";\r\n\r\n\t\t// Store variable\r\n\t\tthis.svg = svg;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a new element. Does not attach it to Paper yet.\r\n\t *\r\n\t * @param elementName Element name\r\n\t * @return New element\r\n\t */\r\n\tpublic add(elementName: SVGElementNames): AMElement {\r\n\t\treturn new AMElement(elementName);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a new Group element. Does not attach it to Paper.\r\n\t *\r\n\t * @param groupName Element name\r\n\t * @return New Group\r\n\t */\r\n\tpublic addGroup(groupName: SVGElementNames): Group {\r\n\t\treturn new Group(groupName);\r\n\t}\r\n\r\n\t/**\r\n\t * Appends an element to Paper.\r\n\t *\r\n\t * @param element Element to append\r\n\t */\r\n\tpublic append(element: AMElement): void {\r\n\t\tif (element) {\r\n\t\t\tthis.svg.appendChild(element.node);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Appends an element to `<defs>` block of the Paper.\r\n\t *\r\n\t * @param element Element\r\n\t */\r\n\tpublic appendDef(element: AMElement): void {\r\n\t\tif (element) {\r\n\t\t\tthis.defs.appendChild(element.node);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns new `<foreignObject>` element. Does not append it to\r\n\t * Paper.\r\n\t *\r\n\t * @return A foreignObject element\r\n\t */\r\n\tpublic foreignObject(): AMElement {\r\n\t\tlet element = new AMElement(\"foreignObject\");\r\n\t\t//this.append(element);\r\n\t\treturn element;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if browser supports `<foreignObject>` elements.\r\n\t *\r\n\t * @return Supports `foreignObject`?\r\n\t */\r\n\tpublic supportsForeignObject(): boolean {\r\n\t\treturn document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#Extensibility\", \"1.1\");\r\n\t}\r\n\r\n}\r\n\r\n\r\nlet ghostPaper: Paper | null = null;\r\n\r\n/**\r\n * A [[Paper]] instance to create elements, that are not yet ready to be\r\n * placed in visible DOM.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport function getGhostPaper(): Paper {\r\n\tif (ghostPaper === null) {\r\n\t\t// ghost is used to draw elements while real paper is not yet created or Sprite doesn't know parent yet\r\n\t\tlet ghostDiv: HTMLDivElement = document.createElement(\"div\");\r\n\t\tghostDiv.hidden = true;\r\n\t\tdocument.body.appendChild(ghostDiv);\r\n\t\tlet ghostSvgContainer = new SVGContainer(ghostDiv, true);\r\n\t\tghostPaper = new Paper(ghostSvgContainer.SVGContainer, \"ghost\");\r\n\r\n\t}\r\n\r\n\treturn ghostPaper;\r\n}\r\n","/**\r\n * A collection of functions that deals with path calculations.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { IPoint } from \"../defs/IPoint\";\r\nimport { IRectangle } from \"../defs/IRectangle\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $type from \"../utils/Type\";\r\nimport { getGhostPaper } from \"../rendering/Paper\";\r\nimport { options } from \"../Options\";\r\n\r\n/**\r\n * ============================================================================\r\n * PATH FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Returns an SVG path from a number of points.\r\n *\r\n * @ignore Exclude from docs\r\n * @param points An array of line elbow points\r\n * @return SVG path\r\n */\r\nexport function polyline(points: IPoint[]): string {\r\n\tlet path = lineTo(points[0]);\r\n\tlet prevPoint = { x: 0, y: 0 };\r\n\r\n\tlet minStep = options.minPolylineStep;\r\n\tif (!$type.isNumber(minStep)) {\r\n\t\tminStep = 0.5;\r\n\t}\r\n\r\n\tfor (let i = 0, len = points.length; i < len; i++) {\r\n\t\tlet point = points[i];\r\n\t\tif ($math.getDistance(point, prevPoint) > minStep) {\r\n\t\t\tpath += lineTo(point);\r\n\t\t\tprevPoint = point;\r\n\t\t}\r\n\t}\r\n\treturn path;\r\n}\r\n\r\n\r\n/**\r\n * Returns a starting point of an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Starting point\r\n * @return SVG path\r\n */\r\nexport function moveTo(point: IPoint): string {\r\n\treturn \" M\" + $math.round(point.x, 4) + \",\" + $math.round(point.y, 4) + \" \";\r\n}\r\n\r\n/**\r\n * Returns a line part of SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point SVG path\r\n * @return SVG path\r\n */\r\nexport function lineTo(point: IPoint): string {\r\n\treturn \" L\" + $math.round(point.x, 4) + \",\" + $math.round(point.y, 4) + \" \";\r\n}\r\n\r\n/**\r\n * Returns a quadratic curve part of an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point End point of the curve\r\n * @param controlPoint Control point\r\n * @return SVG path\r\n */\r\nexport function quadraticCurveTo(point: IPoint, controlPoint: IPoint): string {\r\n\treturn \" Q\" + $math.round(controlPoint.x, 4)\r\n\t\t+ \",\" + $math.round(controlPoint.y, 4) + \" \" + $math.round(point.x, 4)\r\n\t\t+ \",\" + $math.round(point.y, 4);\r\n}\r\n\r\n/**\r\n * Returns a cubic curve part of an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point End point of the curve\r\n * @param controlPointA Control point A\r\n * @param controlPointB Control point B\r\n * @return SVG path\r\n */\r\nexport function cubicCurveTo(point: IPoint, controlPointA: IPoint, controlPointB: IPoint): string {\r\n\treturn \" C\" + $math.round(controlPointA.x, 4)\r\n\t\t+ \",\" + $math.round(controlPointA.y, 4) + \" \" + $math.round(controlPointB.x, 4)\r\n\t\t+ \",\" + $math.round(controlPointB.y, 4) + \" \" + $math.round(point.x, 4)\r\n\t\t+ \",\" + $math.round(point.y, 4);\r\n}\r\n\r\n/**\r\n * Returns a terminator for an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @return SVG path\r\n */\r\nexport function closePath(): string {\r\n\treturn \" Z\";\r\n}\r\n\r\n/**\r\n * Returns an arc part of an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Better parameter descriptions\r\n * @param startAngle Starting angle\r\n * @param arc Arc\r\n * @param radius Radius\r\n * @param radiusY Vertical radius\r\n * @return SVG path\r\n */\r\nexport function arcTo(startAngle: number, arc: number, radius: number, radiusY?: number): string {\r\n\r\n\tif (arc == 0) {\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tif (!$type.isNumber(radiusY)) {\r\n\t\tradiusY = radius;\r\n\t}\r\n\r\n\tlet path = \"\";\r\n\tlet c = \",\";\r\n\tlet segments = Math.ceil(Math.abs(arc) / 180);\r\n\tlet l = 1;\r\n\r\n\tif (arc < 0) {\r\n\t\tl = 0;\r\n\t}\r\n\r\n\t// previous, as we use a not A\r\n\tlet pax: number = 0;\r\n\tlet pay: number = 0;\r\n\r\n\t// center\r\n\tlet cx: number = -$math.cos(startAngle) * radius;\r\n\tlet cy: number = -$math.sin(startAngle) * radiusY;\r\n\r\n\t// foir very short angles and big radius, solves artefacts\r\n\tif (arc < 0.5 && radius > 3000) {\r\n\t\tlet endAngle = startAngle + arc\r\n\t\tlet ax = $math.round($math.cos(endAngle) * radius, 4);\r\n\t\tlet ay = $math.round($math.sin(endAngle) * radiusY, 4);\r\n\t\treturn lineTo({ x: ax, y: ay })\r\n\t}\r\n\r\n\tfor (let i = 0; i < segments; i++) {\r\n\t\tlet endAngle = startAngle + arc / segments * (i + 1);\r\n\r\n\t\tlet ax = $math.round($math.cos(endAngle) * radius + cx - pax, 4);\r\n\t\tlet ay = $math.round($math.sin(endAngle) * radiusY + cy - pay, 4);\r\n\r\n\t\tpath += \" a\" + radius + c + radiusY + c + 0 + c + 0 + c + l + c + ax + c + ay;\r\n\r\n\t\tpax = ax;\r\n\t\tpay = ay;\r\n\t}\r\n\treturn path;\r\n}\r\n\r\n/**\r\n * Creates an arc path.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startAngle [description]\r\n * @param arc [description]\r\n * @param radius [description]\r\n * @param innerRadius [description]\r\n * @param radiusY [description]\r\n * @param cornerRadius [description]\r\n * @param innerCornerRadius [description]\r\n * @return SVG path\r\n */\r\nexport function arc(startAngle: number, arc: number, radius: number, innerRadius?: number, radiusY?: number, cornerRadius?: number, innerCornerRadius?: number): string {\r\n\tif (arc == 0) {\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tif (!$type.isNumber(innerRadius)) {\r\n\t\tinnerRadius = 0;\r\n\t}\r\n\r\n\tif (radius == 0 && innerRadius <= 0) {\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tif (radius < innerRadius) {\r\n\t\tlet temp = radius;\r\n\t\tradius = innerRadius;\r\n\t\tinnerRadius = temp;\r\n\r\n\t\tif ($type.isNumber(radiusY)) {\r\n\t\t\tradiusY = radiusY / innerRadius * radius;\r\n\t\t}\r\n\t}\r\n\r\n\tarc = $math.min(arc, 360);\r\n\r\n\tif (arc == 360) {\r\n\t\tcornerRadius = 0;\r\n\t\tinnerCornerRadius = 0;\r\n\t}\r\n\r\n\tlet endAngle = startAngle + arc;\r\n\tlet crSin = $math.sin($math.min(arc, 45) / 2);\r\n\r\n\tradiusY = $type.isNumber(radiusY) ? radiusY : radius;\r\n\tcornerRadius = cornerRadius || 0;\r\n\tinnerCornerRadius = $type.isNumber(innerCornerRadius) ? innerCornerRadius : cornerRadius;\r\n\r\n\tlet innerRadiusY = (radiusY / radius) * innerRadius;\r\n\r\n\tlet cornerRadiusY = (radiusY / radius) * cornerRadius;\r\n\tlet innerCornerRadiusY = (radiusY / radius) * innerCornerRadius;\r\n\r\n\tcornerRadius = $math.fitToRange(cornerRadius, 0, (radius - innerRadius) / 2);\r\n\tcornerRadiusY = $math.fitToRange(cornerRadiusY, 0, (radiusY - innerRadiusY) / 2);\r\n\r\n\tinnerCornerRadius = $math.fitToRange(innerCornerRadius, 0, (radius - innerRadius) / 2);\r\n\tinnerCornerRadiusY = $math.fitToRange(innerCornerRadiusY, 0, (radiusY - innerRadiusY) / 2);\r\n\r\n\tcornerRadius = $math.round($math.fitToRange(cornerRadius, 0, radius * crSin), 4);\r\n\tcornerRadiusY = $math.round($math.fitToRange(cornerRadiusY, 0, radiusY * crSin), 4);\r\n\r\n\tinnerCornerRadius = $math.round($math.fitToRange(innerCornerRadius, 0, innerRadius * crSin), 4);\r\n\tinnerCornerRadiusY = $math.round($math.fitToRange(innerCornerRadiusY, 0, innerRadiusY * crSin), 4);\r\n\r\n\tlet crAngle: number = Math.asin(cornerRadius / radius / 2) * $math.DEGREES * 2;\r\n\tlet crAngleY: number = Math.asin(cornerRadiusY / radiusY / 2) * $math.DEGREES * 2;\r\n\r\n\tif (innerRadius < innerCornerRadius) {\r\n\t\tinnerRadius = innerCornerRadius;\r\n\t}\r\n\r\n\tif (innerRadiusY < innerCornerRadiusY) {\r\n\t\tinnerRadiusY = innerCornerRadiusY;\r\n\t}\r\n\r\n\tlet crInnerAngle: number = Math.asin(innerCornerRadius / innerRadius / 2) * $math.DEGREES * 2;\r\n\tlet crInnerAngleY: number = Math.asin(innerCornerRadiusY / innerRadiusY / 2) * $math.DEGREES * 2;\r\n\r\n\tif (!$type.isNumber(crInnerAngle)) {\r\n\t\tcrInnerAngle = 0;\r\n\t}\r\n\tif (!$type.isNumber(crInnerAngleY)) {\r\n\t\tcrInnerAngleY = 0;\r\n\t}\r\n\r\n\tlet middleAngle = startAngle + arc / 2;\r\n\tlet mPoint = { x: $math.round($math.cos(middleAngle) * innerRadius, 4), y: $math.sin(middleAngle) * innerRadiusY };\r\n\r\n\tlet a0 = { x: $math.cos(startAngle) * (innerRadius + innerCornerRadius), y: $math.sin(startAngle) * (innerRadiusY + innerCornerRadiusY) };\r\n\tlet b0 = { x: $math.cos(startAngle) * (radius - cornerRadius), y: $math.sin(startAngle) * (radiusY - cornerRadiusY) };\r\n\tlet c0 = { x: $math.cos(endAngle) * (radius - cornerRadius), y: $math.sin(endAngle) * (radiusY - cornerRadiusY) };\r\n\tlet d0 = { x: $math.cos(endAngle) * (innerRadius + innerCornerRadius), y: $math.sin(endAngle) * (innerRadiusY + innerCornerRadiusY) };\r\n\r\n\tlet b1 = { x: $math.cos(startAngle + crAngle) * radius, y: $math.sin(startAngle + crAngleY) * radiusY };\r\n\tlet d1 = { x: $math.cos(endAngle - crInnerAngle) * innerRadius, y: $math.sin(endAngle - crInnerAngleY) * innerRadiusY };\r\n\r\n\t// some magic math\r\n\tinnerCornerRadius += innerCornerRadius * $math.sin(crInnerAngle / 2);\r\n\tinnerCornerRadiusY += innerCornerRadiusY * $math.sin(crInnerAngleY / 2);\r\n\r\n\tif (crInnerAngle > (endAngle - startAngle) / 2) {\r\n\t\td1 = mPoint;\r\n\t}\r\n\r\n\tlet path: string = \"\";\r\n\t// start from b if this is full circle\r\n\tif (arc == 360) {\r\n\t\tpath = moveTo(b0);\r\n\t}\r\n\t// otherwise start from a\r\n\telse {\r\n\t\tpath = moveTo(a0);\r\n\t\tpath += lineTo(b0);\r\n\t\tpath += arcToPoint(b1, cornerRadius, cornerRadiusY, true);\r\n\t}\r\n\r\n\t// draw arc\r\n\tpath += arcTo(startAngle + crAngle, arc - 2 * crAngle, radius, radiusY);\r\n\r\n\t// draw inner arc\r\n\tif ($type.isNumber(innerRadius) && innerRadius != 0) {\r\n\r\n\t\t// move to B if this is full circle\r\n\t\tif (arc == 360 && cornerRadius == 0) {\r\n\t\t\tpath += moveTo(d0);\r\n\t\t}\r\n\t\t// draw line otherwise\r\n\t\telse {\r\n\t\t\tpath += arcToPoint(c0, cornerRadius, cornerRadiusY, true);\r\n\t\t\tpath += lineTo(d0);\r\n\t\t\tpath += arcToPoint(d1, innerCornerRadius, innerCornerRadiusY, true);\r\n\t\t}\r\n\r\n\t\tpath += arcTo(endAngle - crInnerAngle, -(arc - 2 * crInnerAngle), innerRadius, innerRadiusY);\r\n\t\tif (arc < 360 || cornerRadius > 0) {\r\n\t\t\tpath += arcToPoint(a0, innerCornerRadius, innerCornerRadiusY, true);\r\n\t\t}\r\n\t\tpath += lineTo(a0);\r\n\t}\r\n\telse {\r\n\t\tpath += arcToPoint(c0, cornerRadius, cornerRadiusY, true);\r\n\t\tif (arc < 360) {\r\n\t\t\tpath += lineTo(a0);\r\n\t\t}\r\n\t}\r\n\r\n\treturn path;\r\n}\r\n\r\n/**\r\n * Creates a path for an arc to specific coordinate.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param point Reference point\r\n * @param radius Radius\r\n * @param radiusY Vertical radius (for skewed arcs)\r\n * @param sweepFlag [description]\r\n * @param largeArcFlag [description]\r\n * @param xAxisRotation [description]\r\n * @return Arc path\r\n */\r\nexport function arcToPoint(point: IPoint, radius: number, radiusY?: number, sweepFlag?: boolean, largeArcFlag?: boolean, xAxisRotation?: number): string {\r\n\tif (radius == 0) {\r\n\t\treturn \"\";\r\n\t}\r\n\txAxisRotation = xAxisRotation || 0;\r\n\tlargeArcFlag = Boolean(largeArcFlag);\r\n\tsweepFlag = Boolean(sweepFlag);\r\n\r\n\tlet c = \",\";\r\n\tlet sweepFlagValue: number = +sweepFlag; // converts to 1 or 0\r\n\tlet largeArcFlagValue: number = +largeArcFlag; // converts to 1 or 0\r\n\r\n\treturn \" A\" + radius + c + radiusY + c + xAxisRotation + c + largeArcFlagValue + c + sweepFlagValue + c + $math.round(point.x, 4) + c + $math.round(point.y, 4);\r\n}\r\n\r\n/**\r\n * Creates a new rectangle.\r\n *\r\n * @ignore Exclude from docs\r\n * @param width Width (px)\r\n * @param height Height (px)\r\n * @param x X position\r\n * @param y Y position\r\n * @return Rectangle\r\n */\r\nexport function rectangle(width: number, height: number, x?: number, y?: number): string {\r\n\tif (!$type.isNumber(x)) {\r\n\t\tx = 0;\r\n\t}\r\n\tif (!$type.isNumber(y)) {\r\n\t\ty = 0;\r\n\t}\r\n\treturn moveTo({ x: x, y: y }) + lineTo({ x: x + width, y: y }) + lineTo({ x: x + width, y: y + height }) + lineTo({ x: x, y: y + height }) + closePath();\r\n}\r\n\r\n/**\r\n * Converts a rectangle to an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param rect Rectangle\r\n * @param ccw Counter-clockwise?\r\n * @return SVG path\r\n */\r\nexport function rectToPath(rect: IRectangle, ccw?: boolean): string {\r\n\tlet c = \",\";\r\n\tlet L = \" L\";\r\n\tif (ccw) {\r\n\t\treturn \"M\" + rect.x\r\n\t\t\t+ c + rect.y + L + rect.x\r\n\t\t\t+ c + (rect.y + rect.height) + L + (rect.x + rect.width)\r\n\t\t\t+ c + (rect.y + rect.height) + L + (rect.x + rect.width)\r\n\t\t\t+ c + rect.y + L + rect.x\r\n\t\t\t+ c + rect.y;\r\n\t}\r\n\telse {\r\n\t\treturn \"M\" + rect.x\r\n\t\t\t+ c + rect.y + L + (rect.x + rect.width)\r\n\t\t\t+ c + rect.y + L + (rect.x + rect.width)\r\n\t\t\t+ c + (rect.y + rect.height) + L + rect.x\r\n\t\t\t+ c + (rect.y + rect.height) + L + rect.x\r\n\t\t\t+ c + rect.y;\r\n\t}\r\n}\r\n\r\n/**\r\n * Converts SVG path to array of points.\r\n *\r\n * Note, this is experimental feature based on method which is deprecated\r\n * on some browsers and some browsers do not support it at all.\r\n *\r\n * You can save the output of this function, but not rely on it completely.\r\n */\r\nexport function pathToPoints(path: string, pointCount: number): IPoint[] {\r\n\r\n\tlet paper = getGhostPaper();\r\n\tlet svgPath: SVGPathElement = <any>paper.add(\"path\").node;\r\n\tsvgPath.setAttribute(\"d\", path);\r\n\r\n\tif (svgPath.getPointAtLength && svgPath.getTotalLength) {\r\n\t\tlet length = svgPath.getTotalLength();\r\n\r\n\t\tlet toPoints = []\r\n\t\tfor (let i = 0; i < pointCount; i++) {\r\n\t\t\tlet point = svgPath.getPointAtLength(i / pointCount * length);\r\n\t\t\ttoPoints.push({ x: point.x, y: point.y });\r\n\t\t}\r\n\r\n\t\treturn toPoints;\r\n\t}\r\n\r\n\tsvgPath.remove();\r\n}\r\n\r\n\r\nexport function spiralPoints(cx: number, cy: number, radius: number, radiusY: number, innerRadius: number, step: number, radiusStep: number, startAngle?: number, endAngle?: number): IPoint[] {\r\n\r\n\tif (!$type.isNumber(startAngle)) {\r\n\t\tstartAngle = 0;\r\n\t}\r\n\r\n\tif (!$type.isNumber(startAngle)) {\r\n\t\tendAngle = startAngle;\r\n\t}\r\n\r\n\tlet r = innerRadius + 0.01;\r\n\tlet angle = startAngle * $math.RADIANS;\r\n\tlet points = [];\r\n\r\n\twhile (r < radius + radiusStep) {\r\n\r\n\t\tlet stepSize = step;\r\n\t\tif (stepSize / 2 > r) {\r\n\t\t\tstepSize = 2 * r;\r\n\t\t}\r\n\r\n\t\tangle += 2 * Math.asin(stepSize / 2 / r);\t\t\r\n\r\n\t\tif (angle * $math.DEGREES > endAngle + ((radius - innerRadius) / radiusStep) * 360) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tlet degrees = angle * $math.DEGREES;\r\n\r\n\t\tlet point = { x: cx + r * Math.cos(angle), y: cy + r * radiusY / radius * Math.sin(angle) };\r\n\t\tpoints.push(point);\r\n\r\n\t\tr = innerRadius + degrees / 360 * radiusStep;\r\n\r\n\t}\r\n\r\n\tpoints.shift();\r\n\r\n\treturn points;\r\n}\r\n\r\nexport function pointsToPath(points: IPoint[]) {\r\n\tif (!points || points.length == 0) {\r\n\t\treturn \"\";\r\n\t}\r\n\tlet path = moveTo(points[0]);\r\n\tif (points && points.length > 0) {\r\n\t\tfor (let i = 1; i < points.length; i++) {\r\n\t\t\tpath += lineTo(points[i]);\r\n\t\t}\r\n\t}\r\n\treturn path;\r\n}\r\n","/**\r\n * This functionality is related to the HTML wrapper that houses `<svg>` tag.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../Container\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { IDisposer, Disposer } from \"../utils/Disposer\";\r\nimport { Popup } from \"../elements/Popup\";\r\nimport { Modal } from \"../elements/Modal\";\r\nimport { ListTemplate, ListDisposer } from \"../utils/List\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $type from \"../utils/Type\";\r\nimport ResizeSensor from \"css-element-queries/src/ResizeSensor\";\r\n\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n\r\n/**\r\n * A array of all SVG Containers (one SVG container per chart instance).\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport const svgContainers: Array<SVGContainer> = [];\r\n\r\n/**\r\n * A class used to create an HTML wrapper for the SVG contents.\r\n */\r\nexport class SVGContainer implements IDisposer {\r\n\r\n\t/**\r\n\t * Indicates if this object has already been deleted. Any\r\n\t * destruction/disposal code should take this into account when deciding\r\n\t * wheter to run potentially costly disposal operations if they already have\r\n\t * been run.\r\n\t */\r\n\tprotected _disposed: boolean = false;\r\n\r\n\t/**\r\n\t * Width of HTML element.\r\n\t */\r\n\tpublic width: $type.Optional<number>;\r\n\r\n\t/**\r\n\t * Height of HTML element.\r\n\t */\r\n\tpublic height: $type.Optional<number>;\r\n\r\n\t/**\r\n\t * A [[Container]] element which is placed into container.\r\n\t */\r\n\tprotected _container: $type.Optional<Container>;\r\n\r\n\t/**\r\n\t * A parent HTML container that SVG wrapper element is placed in.\r\n\t */\r\n\tpublic htmlElement: HTMLElement;\r\n\r\n\t/**\r\n\t * If this component is in a separate HTML container, `autoResize` means the\r\n\t * module will constantly measure container's size and adopt contents to it.\r\n\t */\r\n\tpublic autoResize: Boolean = true;\r\n\r\n\t/**\r\n\t * A `<div>` element which acts as a wrapper/holder for the SVG element.\r\n\t */\r\n\tpublic SVGContainer: HTMLDivElement;\r\n\r\n\t/**\r\n\t * A reference to ResizeSensor object which monitors changes of div size.\r\n\t *\r\n\t * @ignore\r\n\t */\r\n\tpublic resizeSensor: ResizeSensor;\r\n\r\n\t/**\r\n\t * Holds list of references to [[Sprite]] objects that should not be exported\r\n\t * when exporting chart to an image.\r\n\t *\r\n\t * @ignore\r\n\t */\r\n\tpublic nonExportableSprites: Sprite[] = [];\r\n\r\n\t/**\r\n\t * Holds [[Modal]] object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _modal: $type.Optional<Modal>;\r\n\r\n\t/**\r\n\t * Holds [[Popup]] objects.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _popups: $type.Optional<ListTemplate<Popup>>;\r\n\r\n\t/**\r\n\t * List of objects that need to be disposed when this one is disposed.\r\n\t */\r\n\tprotected _disposers: Array<IDisposer> = [];\r\n\r\n\tpublic cssScale: number = 1;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t *\r\n\t * * Creates an HTML wrapper for SVG\r\n\t */\r\n\tconstructor(htmlElement: HTMLElement, ghost?: boolean) {\r\n\r\n\t\t// Log parent HTML element\r\n\t\tthis.htmlElement = htmlElement;\r\n\r\n\t\tif (!ghost) {\r\n\t\t\tconst callback = () => {\r\n\t\t\t\tif (this.autoResize) {\r\n\t\t\t\t\tthis.measure();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tthis.resizeSensor = new ResizeSensor(htmlElement, callback);\r\n\r\n\t\t\tthis._disposers.push(new Disposer(() => {\r\n\t\t\t\tthis.resizeSensor.detach(callback);\r\n\t\t\t}));\r\n\t\t}\r\n\r\n\t\t// Adds to containers array\r\n\t\tsvgContainers.push(this);\r\n\r\n\t\t/**\r\n\t\t * Create child div for the container - it will have svg node\r\n\t\t * It might seem that this container is not necessay, however having it solves\r\n\t\t * a problems with mouse position detection and some other.\r\n\t\t */\r\n\t\tlet svgContainer = document.createElement(\"div\");\r\n\t\tlet style = svgContainer.style;\r\n\t\tstyle.width = \"100%\";\r\n\t\tstyle.height = \"100%\";\r\n\t\tstyle.position = \"relative\";\r\n\t\thtmlElement.appendChild(svgContainer);\r\n\r\n\t\tthis.SVGContainer = svgContainer;\r\n\t}\r\n\r\n\t/**\r\n\t * Measures size of parent HTML element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic measure(): void {\r\n\t\tlet width: number = $utils.width(this.htmlElement);\r\n\t\tlet height: number = $utils.height(this.htmlElement);\r\n\t\tlet container = this.container;\r\n\t\tif (container) {\r\n\t\t\tif (this.width != width || this.height != height) {\r\n\t\t\t\tthis.width = width;\r\n\t\t\t\tthis.height = height;\r\n\r\n\t\t\t\tif (width > 0) {\r\n\t\t\t\t\tcontainer.maxWidth = width;\r\n\t\t\t\t}\r\n\t\t\t\tif (height > 0) {\r\n\t\t\t\t\tcontainer.maxHeight = height;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$dom.fixPixelPerfect(this.SVGContainer);\r\n\t\t\t}\r\n\r\n\t\t\tif (!container.maxWidth) {\r\n\t\t\t\tcontainer.maxWidth = 0;\r\n\t\t\t}\r\n\t\t\tif (!container.maxHeight) {\r\n\t\t\t\tcontainer.maxHeight = 0;\r\n\t\t\t}\r\n\t\t\tthis.cssScale = 1;\r\n\t\t\tthis.checkTransform(this.htmlElement);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A [[Container]] element which is placed into container.\r\n\t *\r\n\t * @param container Container\r\n\t */\r\n\tpublic set container(container: $type.Optional<Container>) {\r\n\t\tthis._container = container;\r\n\t\tthis.measure();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Container\r\n\t */\r\n\tpublic get container(): $type.Optional<Container> {\r\n\t\treturn this._container;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns if this object has been already been disposed.\r\n\t *\r\n\t * @return Is disposed?\r\n\t */\r\n\tpublic isDisposed(): boolean {\r\n\t\treturn this._disposed;\r\n\t}\r\n\r\n\t/**\r\n\t * Removes this container from SVG container list in system, which\r\n\t * effectively disables size change monitoring for it.\r\n\t */\r\n\tpublic dispose(): void {\r\n\t\tif (!this._disposed) {\r\n\t\t\t$array.remove(svgContainers, this);\r\n\t\t}\r\n\r\n\t\t$array.each(this._disposers, (item) => {\r\n\t\t\titem.dispose();\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if chart container should have its style set\r\n\t * to `overflow: hidden`.\r\n\t *\r\n\t * Normally, we don't want that, so that certain elements, such as tooltips,\r\n\t * would be able to go outside chart area.\r\n\t *\r\n\t * There is one issue though. Some browsers ignore SVG masks and would\r\n\t * display scrollbars if chart elements, that go outside chart area extend\r\n\t * outside window.\r\n\t *\r\n\t * This is especially true for [[MapChart]], which can have its elements\r\n\t * extend very widely when zoomed in. Even if those parts are not visible\r\n\t * because of SVG masks, some browsers might still display window scrollbars.\r\n\t *\r\n\t * This is why we set this setting to `true` in [[MapChart]].\r\n\t *\r\n\t * Other charts use default of `false`.\r\n\t */\r\n\tpublic set hideOverflow(value: boolean) {\r\n\t\tif (value) {\r\n\t\t\tthis.SVGContainer.style.overflow = \"hidden\";\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.SVGContainer.style.overflow = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * ==========================================================================\r\n\t * MODAL/POPUP RELATED STUFF\r\n\t * ==========================================================================\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * Returns a [[Modal]] instance, associated with this chart.\r\n\t * (elements top parent)\r\n\t *\r\n\t * Accessing modal does not make it appear. To make a modal appear, use\r\n\t * `showModal()` method.\r\n\t *\r\n\t * @see {@link Modal} for more information about using Modal windows\r\n\t * @return Modal instance\r\n\t */\r\n\tpublic get modal(): Modal {\r\n\r\n\t\tif (!$type.hasValue(this._modal)) {\r\n\r\n\t\t\t// Create new modal\r\n\t\t\tthis._modal = new Modal();\r\n\t\t\tthis._modal.container = this.SVGContainer;\r\n\r\n\t\t\t// Add to disposers\r\n\t\t\tthis._disposers.push(this._modal);\r\n\t\t}\r\n\t\treturn this._modal;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Opens a modal window with specific content (`text` parameter) and,\r\n\t * optionally, `title`.\r\n\t *\r\n\t * The `text` parameter can contain HTML content.\r\n\t *\r\n\t * @see {@link Modal} for more information about using Modal windows\r\n\t * @param text Modal contents\r\n\t * @param title Title for the modal window\r\n\t */\r\n\tpublic openModal(text: string, title?: string): Modal {\r\n\r\n\t\t// Hide previous modal\r\n\t\tthis.closeModal();\r\n\r\n\t\t// Create modal\r\n\t\tlet modal = this.modal;\r\n\t\tmodal.content = text;\r\n\t\tmodal.readerTitle = title;\r\n\t\tmodal.open();\r\n\r\n\t\treturn modal;\r\n\t}\r\n\r\n\t/**\r\n\t * Hides modal window if there is one currently open.\r\n\t */\r\n\tpublic closeModal(): void {\r\n\t\tif (this._modal) {\r\n\t\t\tthis.modal.close();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A list of popups for this chart.\r\n\t *\r\n\t * @return Popups\r\n\t */\r\n\tpublic get popups(): ListTemplate<Popup> {\r\n\r\n\t\tif (!$type.hasValue(this._popups)) {\r\n\r\n\t\t\t// Create popup template\r\n\t\t\tlet popupTemplate = new Popup();\r\n\t\t\tpopupTemplate.container = this.SVGContainer;\r\n\r\n\t\t\t// Create the list\r\n\t\t\tthis._popups = new ListTemplate(popupTemplate);\r\n\r\n\t\t\t// Add to disposers\r\n\t\t\tthis._disposers.push(new ListDisposer(this._popups));\r\n\t\t\tthis._disposers.push(this._popups.template);\r\n\t\t}\r\n\t\treturn this._popups;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Creates, opens, and returns a new [[Popup]] window.\r\n\t *\r\n\t * `text` can be any valid HTML.\r\n\t *\r\n\t * `title` is currently not supported.\r\n\t *\r\n\t * @param text Popup contents\r\n\t * @param title Popup title\r\n\t * @return Popup instance\r\n\t */\r\n\tpublic openPopup(text: string, title?: string): Popup {\r\n\t\tlet popup = this.popups.create();\r\n\t\tpopup.content = text;\r\n\t\tif ($type.hasValue(title)) {\r\n\t\t\tpopup.title = title;\r\n\t\t}\r\n\t\tpopup.open();\r\n\t\treturn popup;\r\n\t}\r\n\r\n\t/**\r\n\t * Closes all currently open popup windows\r\n\t */\r\n\tpublic closeAllPopups(): void {\r\n\t\tthis.popups.each((popup) => {\r\n\t\t\tpopup.close();\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tprotected checkTransform(div: HTMLElement) {\r\n\t\tif (window.getComputedStyle) {\r\n\t\t\tif (div && div.style) {\r\n\t\t\t\tlet style = window.getComputedStyle(div, null);\r\n\t\t\t\tif (style) {\r\n\t\t\t\t\tlet matrix = style.getPropertyValue(\"-webkit-transform\") ||\r\n\t\t\t\t\t\tstyle.getPropertyValue(\"-moz-transform\") ||\r\n\t\t\t\t\t\tstyle.getPropertyValue(\"-ms-transform\") ||\r\n\t\t\t\t\t\tstyle.getPropertyValue(\"-o-transform\") ||\r\n\t\t\t\t\t\tstyle.getPropertyValue(\"transform\");\r\n\r\n\t\t\t\t\tif (matrix && matrix !== \"none\") {\r\n\t\t\t\t\t\tlet values = matrix.split('(')[1].split(')')[0].split(',');\r\n\t\t\t\t\t\tlet a = Number(values[0]);\r\n\t\t\t\t\t\tlet b = Number(values[1]);\r\n\r\n\t\t\t\t\t\tlet scale = Math.sqrt(a * a + b * b);\r\n\r\n\t\t\t\t\t\tif (!isNaN(scale)) {\r\n\t\t\t\t\t\t\tthis.cssScale *= scale;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (div.parentNode && div.parentNode instanceof HTMLElement) {\r\n\t\t\t\tthis.checkTransform(div.parentNode);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","/**\n * ============================================================================\n * IMPORTS\n * ============================================================================\n * @hidden\n */\nimport { registry } from \"../Registry\";\nimport * as $path from \"./Path\";\nimport * as $array from \"../utils/Array\";\nimport * as $utils from \"../utils/Utils\";\nimport * as $math from \"../utils/Math\";\nimport { IPoint } from \"../defs/IPoint\";\n\n\n/**\n * ============================================================================\n * PATH FUNCTIONS\n * ============================================================================\n * @hidden\n */\n\n/**\n * @ignore Exclude from docs\n * @todo Description\n */\nexport interface ISmoothing {\n\tsmooth(points: Array<IPoint>): string;\n}\n\n/**\n * @ignore Exclude from docs\n * @todo Description\n */\nexport class Tension implements ISmoothing {\n\n\t/**\n\t * [_tensionX description]\n\t *\n\t * @todo Description\n\t */\n\tprivate _tensionX: number;\n\n\t/**\n\t * [_tensionY description]\n\t *\n\t * @todo Description\n\t */\n\tprivate _tensionY: number;\n\n\t/**\n\t * Constructor.\n\t *\n\t * @param tensionX [description]\n\t * @param tensionY [description]\n\t */\n\tconstructor(tensionX: number, tensionY: number) {\n\t\tthis._tensionX = tensionX;\n\t\tthis._tensionY = tensionY;\n\t}\n\n\t/**\n\t * [smooth description]\n\t *\n\t * @ignore Exclude from docs\n\t * @todo Description\n\t * @param points [description]\n\t * @return [description]\n\t */\n\tpublic smooth(points: Array<IPoint>): string {\n\t\tlet tensionX = this._tensionX;\n\t\tlet tensionY = this._tensionY;\n\n\t\tif (points.length < 3 || (tensionX >= 1 && tensionY >= 1)) {\n\t\t\treturn $path.polyline(points);\n\t\t}\n\n\t\tlet first: IPoint = points[0];\n\t\tlet last: IPoint = points[points.length - 1];\n\n\t\tlet closed: boolean = false;\n\n\t\tif ($math.round(first.x, 3) == $math.round(last.x) && $math.round(first.y) == $math.round(last.y)) {\n\t\t\tclosed = true;\n\t\t}\n\n\t\t// Can't moveTo here, as it wont be possible to have fill then.\n\t\tlet path: string = \"\";\n\n\t\tfor (let i = 0, len = points.length - 1; i < len; i++) {\n\t\t\tlet p0: IPoint = points[i - 1];\n\n\t\t\tlet p1: IPoint = points[i];\n\n\t\t\tlet p2: IPoint = points[i + 1];\n\n\t\t\tlet p3: IPoint = points[i + 2];\n\n\t\t\tif (i === 0) {\n\t\t\t\tif (closed) {\n\t\t\t\t\tp0 = points[points.length - 2];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tp0 = points[i];\n\t\t\t\t}\n\t\t\t} else if (i == points.length - 2) {\n\t\t\t\tif (closed) {\n\t\t\t\t\tp3 = points[1];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tp3 = points[i + 1];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet controlPointA: IPoint = $math.getCubicControlPointA(p0, p1, p2, p3, tensionX, tensionY);\n\t\t\tlet controlPointB: IPoint = $math.getCubicControlPointB(p0, p1, p2, p3, tensionX, tensionY);\n\n\t\t\tpath += $path.cubicCurveTo(p2, controlPointA, controlPointB);\n\t\t}\n\n\t\treturn path;\n\t}\n}\n\n\n/**\n * Returns a waved line SVG path between two points.\n *\n * @ignore Exclude from docs\n * @param point1 Starting point\n * @param point2 Ending point\n * @param waveLength Wave length\n * @param waveHeight Wave height\n * @param adjustWaveLength Adjust wave length based on the actual line length\n * @return SVG path\n */\nexport function wavedLine(point1: IPoint, point2: IPoint, waveLength: number, waveHeight: number, tension: number, adjustWaveLength?: boolean): string {\n\n\tlet x1: number = point1.x;\n\tlet y1: number = point1.y;\n\n\tlet x2: number = point2.x;\n\tlet y2: number = point2.y;\n\n\tlet distance: number = $math.getDistance(point1, point2);\n\n\tif (adjustWaveLength) {\n\t\twaveLength = distance / Math.round(distance / waveLength);\n\t}\n\n\tlet d: string = registry.getCache($utils.stringify([\"wavedLine\", point1.x, point2.x, point1.y, point2.y, waveLength, waveHeight]));\n\tif (!d) {\n\t\tif (distance > 0) {\n\t\t\tlet angle: number = Math.atan2(y2 - y1, x2 - x1);\n\n\t\t\tlet cos: number = Math.cos(angle);\n\t\t\tlet sin: number = Math.sin(angle);\n\n\t\t\tlet waveLengthX: number = waveLength * cos;\n\t\t\tlet waveLengthY: number = waveLength * sin;\n\n\t\t\tif (waveLength <= 1 || waveHeight <= 1) {\n\t\t\t\td = $path.lineTo(point2);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet halfWaveCount: number = Math.round(2 * distance / waveLength);\n\n\t\t\t\tlet points: IPoint[] = [];\n\t\t\t\tlet sign: number = 1;\n\n\t\t\t\tif (x2 < x1) {\n\t\t\t\t\tsign *= -1;\n\t\t\t\t}\n\n\t\t\t\tif (y2 < y1) {\n\t\t\t\t\tsign *= -1;\n\t\t\t\t}\n\n\t\t\t\tfor (let i: number = 0; i <= halfWaveCount; i++) {\n\t\t\t\t\tsign *= -1;\n\t\t\t\t\tlet x: number = x1 + i * waveLengthX / 2 + sign * waveHeight / 2 * sin;\n\t\t\t\t\tlet y: number = y1 + i * waveLengthY / 2 - sign * waveHeight / 2 * cos;\n\t\t\t\t\tpoints.push({ x: x, y: y });\n\t\t\t\t}\n\n\t\t\t\td = new Tension(tension, tension).smooth(points);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\td = \"\";\n\t\t}\n\n\t\tregistry.setCache($utils.stringify([\"wavedLine\", point1.x, point2.x, point1.y, point2.y, waveLength, waveHeight]), d);\n\t}\n\n\treturn d;\n}\n\n\n/**\n * @ignore Exclude from docs\n * @todo Description\n */\nexport class Basis implements ISmoothing {\n\n\t/**\n\t * [_closed description]\n\t *\n\t * @ignore Exclude from docs\n\t * @todo Description\n\t */\n\tprivate _closed: boolean;\n\n\t/**\n\t * Constructor.\n\t *\n\t * @param info [description]\n\t */\n\tconstructor(info: { closed: boolean }) {\n\t\tthis._closed = info.closed;\n\t}\n\n\t/**\n\t * [smooth description]\n\t *\n\t * @ignore Exclude from docs\n\t * @todo Description\n\t * @param points [description]\n\t * @return [description]\n\t */\n\tpublic smooth(points: Array<IPoint>): string {\n\t\tlet x0: number = NaN;\n\t\tlet x1: number = NaN;\n\t\tlet x2: number = NaN;\n\t\tlet x3: number = NaN;\n\t\tlet x4: number = NaN;\n\t\tlet y0: number = NaN;\n\t\tlet y1: number = NaN;\n\t\tlet y2: number = NaN;\n\t\tlet y3: number = NaN;\n\t\tlet y4: number = NaN;\n\t\tlet point: number = 0;\n\n\t\tlet output = \"\";\n\n\t\tconst pushCurve = (x: number, y: number): void => {\n\t\t\toutput += $path.cubicCurveTo(\n\t\t\t\t{\n\t\t\t\t\tx: (x0 + 4 * x1 + x) / 6\n\t\t\t\t\t, y: (y0 + 4 * y1 + y) / 6\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tx: (2 * x0 + x1) / 3\n\t\t\t\t\t, y: (2 * y0 + y1) / 3\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tx: (x0 + 2 * x1) / 3\n\t\t\t\t\t, y: (y0 + 2 * y1) / 3\n\t\t\t\t}\n\t\t\t);\n\t\t};\n\n\t\tconst pushPoint = ({ x, y }: IPoint): void => {\n\t\t\tswitch (point) {\n\t\t\t\tcase 0:\n\t\t\t\t\tpoint = 1;\n\n\t\t\t\t\tif (this._closed) {\n\t\t\t\t\t\tx2 = x;\n\t\t\t\t\t\ty2 = y;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutput += $path.lineTo({ x, y });\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 1:\n\t\t\t\t\tpoint = 2;\n\n\t\t\t\t\tif (this._closed) {\n\t\t\t\t\t\tx3 = x;\n\t\t\t\t\t\ty3 = y;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\t\t\t\t\tpoint = 3;\n\n\t\t\t\t\tif (this._closed) {\n\t\t\t\t\t\tx4 = x;\n\t\t\t\t\t\ty4 = y;\n\t\t\t\t\t\toutput += $path.moveTo({ x: (x0 + 4 * x1 + x) / 6, y: (y0 + 4 * y1 + y) / 6 });\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutput += $path.lineTo({ x: (5 * x0 + x1) / 6, y: (5 * y0 + y1) / 6 });\n\t\t\t\t\t\t// fall-through\n\t\t\t\t\t}\n\n\t\t\t\tdefault:\n\t\t\t\t\tpushCurve(x, y);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tx0 = x1;\n\t\t\tx1 = x;\n\t\t\ty0 = y1;\n\t\t\ty1 = y;\n\t\t};\n\n\t\t$array.each(points, pushPoint);\n\n\t\tif (this._closed) {\n\t\t\tswitch (point) {\n\t\t\t\tcase 1:\n\t\t\t\t\toutput += $path.moveTo({ x: x2, y: y2 });\n\t\t\t\t\toutput += $path.closePath();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\toutput += $path.moveTo({ x: (x2 + 2 * x3) / 3, y: (y2 + 2 * y3) / 3 });\n\t\t\t\t\toutput += $path.lineTo({ x: (x3 + 2 * x2) / 3, y: (y3 + 2 * y2) / 3 });\n\t\t\t\t\toutput += $path.closePath();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tpushPoint({ x: x2, y: y2 });\n\t\t\t\t\tpushPoint({ x: x3, y: y3 });\n\t\t\t\t\tpushPoint({ x: x4, y: y4 });\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t} else {\n\t\t\tswitch (point) {\n\t\t\t\tcase 3:\n\t\t\t\t\tpushCurve(x1, y1);\n\t\t\t\t// fall-through\n\t\t\t\tcase 2:\n\t\t\t\t\toutput += $path.lineTo({ x: x1, y: y1 });\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\toutput += $path.closePath();\n\t\t}\n\n\t\treturn output;\n\t}\n\n}\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../../Base\";\r\nimport { LinearGradient } from \"./LinearGradient\";\r\nimport { RadialGradient } from \"./RadialGradient\";\r\nimport { Color } from \"../../utils/Color\";\r\nimport { registry } from \"../../Registry\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A base class for color modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport class ColorModifier extends BaseObject {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"ColorModifier\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Modifies color value.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Original color\r\n\t * @return Modified\r\n\t */\r\n\tpublic modify(value: Color): Color | LinearGradient | RadialGradient {\r\n\t\treturn value;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ColorModifier\"] = ColorModifier;\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ColorModifier } from \"./ColorModifier\";\r\nimport { LinearGradient } from \"./LinearGradient\";\r\nimport { RadialGradient } from \"./RadialGradient\";\r\nimport { Color } from \"../../utils/Color\";\r\nimport { registry } from \"../../Registry\";\r\nimport * as $math from \"../../utils/Math\";\r\nimport * as $type from \"../../utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * This class can be used to modify linear gradient steps, changing visual\r\n * properties like lightness, brightness, opacity of each set.\r\n *\r\n * It can also set offsets for each gradient step.\r\n *\r\n * E.g. if I want to fill a columns in a column series to be a solid fill from\r\n * top to 80% of height, then gradually fades out, I can use the following\r\n * gradient modifier as a `fillModifier`:\r\n *\r\n * ```TypeScript\r\n * let fillModifier = new am4core.GradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JavaScript\r\n * var fillModifier = new am4core.GradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JSON\r\n * \"series\": [{\r\n * \"type\": \"ColumnSeries\",\r\n * \"columns\": {\r\n * \"fillModifier\": {\r\n * \"type\": \"GradientModifier\",\r\n * \"opacities\": [1, 1, 0],\r\n * \"offsets\": [0, 0.8, 1]\r\n * }\r\n * }\r\n * }]\r\n * ```\r\n */\r\nexport class GradientModifier extends ColorModifier {\r\n\r\n\t/**\r\n\t * A reference to the gradient instance that this modifier is used for.\r\n\t */\r\n\tpublic gradient: LinearGradient | RadialGradient;\r\n\r\n\t/**\r\n\t * An array of lightness values for each step.\r\n\t */\r\n\tprotected _lightnesses!: number[];\r\n\r\n\t/**\r\n\t * An array of brightness values for each step.\r\n\t */\r\n\tprotected _brightnesses!: number[];\r\n\r\n\t/**\r\n\t * An array of opacity values for each step.\r\n\t */\r\n\tprotected _opacities!: number[];\r\n\r\n\t/**\r\n\t * An array of relative position (0-1) for each step.\r\n\t *\r\n\t * If not set, all steps will be of equal relative length.\r\n\t */\r\n\tprotected _offsets!: number[];\r\n\r\n\t/**\r\n\t * Constructor.\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.lightnesses = [];\r\n\t\tthis.brightnesses = [];\r\n\t\tthis.opacities = [];\r\n\t\tthis.offsets = [];\r\n\t\tthis.className = \"GradientModifier\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * An array of lightness values for each step.\r\n\t *\r\n\t * @param value Lightness values\r\n\t */\r\n\tpublic set lightnesses(value: number[]) {\r\n\t\tthis._lightnesses = value;\r\n\t\tthis._brightnesses = [];\r\n\t}\r\n\r\n\t/**\r\n\t * @return Lightness values\r\n\t */\r\n\tpublic get lightnesses(): number[] {\r\n\t\treturn this._lightnesses;\r\n\t}\r\n\r\n\t/**\r\n\t * An array of brightness values for each step.\r\n\t *\r\n\t * @param value Brightness values\r\n\t */\r\n\tpublic set brightnesses(value: number[]) {\r\n\t\tthis._brightnesses = value;\r\n\t\tthis._lightnesses = [];\r\n\t}\r\n\r\n\t/**\r\n\t * @return Brightness values\r\n\t */\r\n\tpublic get brightnesses(): number[] {\r\n\t\treturn this._brightnesses;\r\n\t}\r\n\r\n\t/**\r\n\t * An array of opacity values for each step.\r\n\t *\r\n\t * @param value Opacity values\r\n\t */\r\n\tpublic set opacities(value: number[]) {\r\n\t\tthis._opacities = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Opacity values\r\n\t */\r\n\tpublic get opacities(): number[] {\r\n\t\treturn this._opacities;\r\n\t}\r\n\r\n\t/**\r\n\t * An array of relative position (0-1) for each step.\r\n\t *\r\n\t * If not set, all steps will be of equal relative length.\r\n\t *\r\n\t * @param value Offsets\r\n\t */\r\n\tpublic set offsets(value: number[]) {\r\n\t\tthis._offsets = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Offsets\r\n\t */\r\n\tpublic get offsets(): number[] {\r\n\t\treturn this._offsets;\r\n\t}\r\n\r\n\t/**\r\n\t * Modifies the color based on step setting.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Source color\r\n\t * @return A gradient that matches set modification rules\r\n\t */\r\n\tpublic modify(value: Color): Color | LinearGradient | RadialGradient {\r\n\r\n\t\t// Clear current gradient\r\n\t\tthis.gradient.clear();\r\n\r\n\t\t// Get step count\r\n\t\tlet count: number = 0;\r\n\t\tif (this.opacities) {\r\n\t\t\tcount = $math.max(count, this.opacities.length);\r\n\t\t}\r\n\t\tif (this.lightnesses) {\r\n\t\t\tcount = $math.max(count, this.lightnesses.length);\r\n\t\t}\r\n\t\tif (this.brightnesses) {\r\n\t\t\tcount = $math.max(count, this.brightnesses.length);\r\n\t\t}\r\n\r\n\t\t// Init step values\r\n\t\tlet opacity: number = 1,\r\n\t\t\tlightness: $type.Optional<number>,\r\n\t\t\tbrightness: $type.Optional<number>;\r\n\r\n\t\t// Apply steps\r\n\t\tfor (let i = 0; i < count; i++) {\r\n\r\n\t\t\t// Take base color\r\n\t\t\tlet color = value;\r\n\r\n\t\t\t// Check if there are any parameters for this step\r\n\t\t\tif (this.opacities && $type.isNumber(this.opacities[i])) {\r\n\t\t\t\topacity = this.opacities[i];\r\n\t\t\t}\r\n\t\t\tif (this.lightnesses && $type.isNumber(this.lightnesses[i])) {\r\n\t\t\t\tlightness = this.lightnesses[i];\r\n\t\t\t\tbrightness = undefined;\r\n\t\t\t}\r\n\t\t\tif (this.brightnesses && $type.isNumber(this.brightnesses[i])) {\r\n\t\t\t\tbrightness = this.brightnesses[i];\r\n\t\t\t\tlightness = undefined;\r\n\t\t\t}\r\n\r\n\t\t\t// Check if we need to brighten/lighten color\r\n\t\t\tif ($type.isNumber(brightness)) {\r\n\t\t\t\tcolor = value.brighten(this.brightnesses[i]);\r\n\t\t\t}\r\n\t\t\telse if ($type.isNumber(lightness)) {\r\n\t\t\t\tcolor = value.lighten(this.lightnesses[i]);\r\n\t\t\t}\r\n\r\n\t\t\t// Get offset (it's OK if it's undefined)\r\n\t\t\tlet offset: number = this.offsets[i];\r\n\r\n\t\t\t// Apply step\r\n\t\t\tthis.gradient.addColor(color, opacity, offset);\r\n\t\t}\r\n\t\treturn this.gradient;\r\n\t}\r\n\r\n\tpublic copyFrom(source: this) {\r\n\t\tsuper.copyFrom(source);\r\n\r\n\t\tthis._offsets = source.offsets;\r\n\t\tthis._brightnesses = source.brightnesses;\r\n\t\tthis._lightnesses = source.lightnesses;\r\n\t\tthis._opacities = source.opacities;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"GradientModifier\"] = GradientModifier;\r\n","/**\r\n * Contains code and logic for generating linear gradients.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../../Base\";\r\nimport { List } from \"../../utils/List\";\r\nimport { Group } from \"../Group\";\r\nimport { AMElement } from \"../AMElement\";\r\nimport { Paper, getGhostPaper } from \"../Paper\";\r\nimport { Color } from \"../../utils/Color\";\r\nimport { registry } from \"../../Registry\";\r\nimport * as $iter from \"../../utils/Iterator\";\r\nimport * as $math from \"../../utils/Math\";\r\nimport * as $type from \"../../utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Represents an object describing color switching point in a gradiend.\r\n */\r\nexport interface IGradientStop {\r\n\r\n\t/**\r\n\t * Color.\r\n\t */\r\n\tcolor: Color;\r\n\r\n\t/**\r\n\t * Offset defines where in the gradient the color should kick in. Values\r\n\t * from 0 to 1 are possible with 0 meaning start, 0.5 half-way through the\r\n\t * gradient, etc.\r\n\t */\r\n\toffset?: number;\r\n\r\n\t/**\r\n\t * Transparency of the color. 0 - completely transparent, 1 - fully opaque.\r\n\t */\r\n\topacity?: number;\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Linear gradient class.\r\n */\r\nexport class LinearGradient extends BaseObject {\r\n\r\n\t/**\r\n\t * List of colors switch definitions in a gradient.\r\n\t */\r\n\tprotected _stops: List<IGradientStop> = new List<IGradientStop>();\r\n\r\n\t/**\r\n\t * An SVG `<group>` element used to draw gradient.\r\n\t */\r\n\tpublic element: Group;\r\n\r\n\t/**\r\n\t * Reference to Paper to add element to.\r\n\t */\r\n\tprotected _paper: $type.Optional<Paper>;\r\n\r\n\t/**\r\n\t * Gradient direction.\r\n\t */\r\n\tprotected _rotation: number = 0;\r\n\r\n\t/**\r\n\t * Constructor.\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"LinearGradient\";\r\n\r\n\t\tthis._stops.events.on(\"setIndex\", this.validate, this);\r\n\t\tthis._stops.events.on(\"inserted\", this.validate, this);\r\n\t\t// Create element\r\n\t\tthis.element = this.paper.addGroup(\"linearGradient\");\r\n\t\tthis.id = \"gradient-\" + registry.getUniqueId();\r\n\t\tthis.element.attr({ \"id\": this.id });\r\n\t\tthis._disposers.push(this.element);\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Draws gradient.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate(): void {\r\n\r\n\t\tlet rotation = (this._rotation + 90) * $math.RADIANS;\r\n\r\n\t\tlet x1: string = Math.round(50 + Math.sin(rotation + Math.PI) * 50) + '%';\r\n\t\tlet y1: string = Math.round(50 + Math.cos(rotation) * 50) + '%';\r\n\r\n\t\tlet x2: string = Math.round(50 + Math.sin(rotation) * 50) + '%';\r\n\t\tlet y2: string = Math.round(50 + Math.cos(rotation + Math.PI) * 50) + '%';\r\n\r\n\r\n\t\tlet gradientElement: Group = this.element;\r\n\t\tgradientElement.removeChildNodes();\r\n\t\tgradientElement.attr({\"x1\": x1, \"x2\":x2, \"y1\": y1, \"y2\":y2});\r\n\r\n\t\t$iter.each($iter.indexed(this._stops.iterator()), (a) => {\r\n\t\t\tlet i = a[0];\r\n\t\t\tlet stop = a[1];\r\n\t\t\tlet offset: $type.Optional<number> = stop.offset;\r\n\r\n\t\t\tif (!$type.isNumber(offset)) {\r\n\t\t\t\toffset = i / (this._stops.length - 1)\r\n\t\t\t}\r\n\r\n\t\t\tlet gradientStop: AMElement = this.paper.add(\"stop\");\r\n\t\t\tif ($type.hasValue(stop.color)) {\r\n\t\t\t\tgradientStop.attr({ \"stop-color\": stop.color.toString() });\r\n\t\t\t}\r\n\t\t\tif ($type.isNumber(stop.opacity)) {\r\n\t\t\t\tgradientStop.attr({ \"stop-opacity\": stop.opacity });\r\n\t\t\t}\r\n\r\n\t\t\tif ($type.isNumber(offset)) {\r\n\t\t\t\tgradientStop.attr({ \"offset\": offset });\r\n\t\t\t}\r\n\r\n\t\t\tgradientElement.add(gradientStop);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Clears the gradient.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic clear(): void {\r\n\t\tthis._stops.clear();\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a color step to the gradient.\r\n\t *\r\n\t * @param color Color (hex code or named color)\r\n\t * @param opacity Opacity (value from 0 to 1; 0 completely transaprent, 1 fully opaque)\r\n\t * @param offset Position of color in the gradient (value 0 to 1; 0 meaning start of the gradient and 1 end)\r\n\t */\r\n\tpublic addColor(color: Color, opacity?: number, offset?: number): void {\r\n\t\tthis._stops.push({ color: color, opacity: opacity, offset: offset });\r\n\t}\r\n\r\n\t/**\r\n\t * A list of color stops in the gradient.\r\n\t *\r\n\t * @return Stops\r\n\t */\r\n\tpublic get stops(): List<IGradientStop> {\r\n\t\treturn this._stops;\r\n\t}\r\n\r\n\t/**\r\n\t * [[Paper]] instace to use for the gradient.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param paper Paper\r\n\t */\r\n\tpublic set paper(paper: Paper) {\r\n\t\tif (this._paper != paper) {\r\n\t\t\tthis._paper = paper;\r\n\t\t\tthis.validate();\r\n\t\t\tpaper.appendDef(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Paper\r\n\t */\r\n\tpublic get paper(): Paper {\r\n\t\tif (this._paper) {\r\n\t\t\treturn this._paper;\r\n\t\t}\r\n\t\treturn getGhostPaper();\r\n\t}\r\n\r\n\t/**\r\n\t * Rotation (direction) of the gradient in degrees.\r\n\t *\r\n\t * @param value Rotation\r\n\t */\r\n\tpublic set rotation(value: number) {\r\n\t\t//this.element.attr({ \"gradientTransform\": \"rotate(\" + value + \" 10 100)\" });\r\n\t\tthis._rotation = value;\r\n\t\tthis.validate();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Rotation\r\n\t */\r\n\tpublic get rotation(): number {\r\n\t\treturn this._rotation;\r\n\t}\r\n\r\n\r\n\tpublic copyFrom(source:this){\r\n\t\tsuper.copyFrom(source);\r\n\r\n\t\tthis.stops.copyFrom(source.stops);\r\n\r\n\t\tthis._rotation = source.rotation;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LinearGradient\"] = LinearGradient;\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { LinearGradient } from \"./LinearGradient\";\r\nimport { GradientModifier } from \"./GradientModifier\";\r\nimport { registry } from \"../../Registry\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * This class can be used to modify linear gradient steps, changing visual\r\n * properties like lightness, brightness, opacity of each set.\r\n *\r\n * It can also set offsets for each gradient step.\r\n *\r\n * E.g. if I want to fill a columns in a column series to be a solid fill from\r\n * top to 80% of height, then gradually fades out, I can use the following\r\n * gradient modifier as a `fillModifier`:\r\n *\r\n * ```TypeScript\r\n * let fillModifier = new am4core.LinearGradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JavaScript\r\n * var fillModifier = new am4core.LinearGradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JSON\r\n * \"series\": [{\r\n * \"type\": \"ColumnSeries\",\r\n * \"columns\": {\r\n * \"fillModifier\": {\r\n * \"type\": \"LinearGradientModifier\",\r\n * \"opacities\": [1, 1, 0],\r\n * \"offsets\": [0, 0.8, 1]\r\n * }\r\n * }\r\n * }]\r\n * ```\r\n */\r\nexport class LinearGradientModifier extends GradientModifier {\r\n\r\n\t/**\r\n\t * A reference to the gradient instance that this modifier is used for.\r\n\t */\r\n\tpublic gradient: LinearGradient;\r\n\r\n\r\n\t/**\r\n\t * Constructor.\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"LinearGradientModifier\";\r\n\t\tthis.gradient = new LinearGradient();\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\tpublic copyFrom(source: this) {\r\n\t\tsuper.copyFrom(source);\r\n\t\tthis.gradient = source.gradient.clone();\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LinearGradientModifier\"] = LinearGradientModifier;\r\n","/**\r\n * Pattern module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../../Base\";\r\nimport { Group } from \"../Group\";\r\nimport { AMElement } from \"../AMElement\";\r\nimport { Paper, getGhostPaper } from \"../Paper\";\r\nimport { ShapeRendering } from \"../../defs/ShapeRendering\";\r\nimport { List, ListDisposer } from \"../../utils/List\";\r\nimport { Animation, IAnimatable, IAnimationOptions, AnimationDisposer } from \"../../utils/Animation\";\r\nimport { registry } from \"../../Registry\";\r\nimport { Color } from \"../../utils/Color\";\r\nimport { InterfaceColorSet } from \"../../utils/InterfaceColorSet\";\r\nimport * as $iter from \"../../utils/Iterator\";\r\nimport * as $object from \"../../utils/Object\";\r\nimport * as $type from \"../../utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines available units to measure patterns.\r\n */\r\nexport type PatternUnits = \"userSpaceOnUse\" | \"objectBoundingBox\";\r\n\r\n/**\r\n * Defines properties for [[Pattern]].\r\n */\r\nexport interface PatternProperties {\r\n\tx: number;\r\n\ty: number;\r\n\twidth: number;\r\n\theight: number;\r\n\tbackgroundOpacity: number;\r\n\tbackgroundFill: Color;\r\n\tfillOpacity: number;\r\n\tfill: Color;\r\n\tstroke: Color;\r\n\tstrokeOpacity: number;\r\n\tstrokeWidth: number;\r\n\tshapeRendering: ShapeRendering;\r\n\trotation: number;\r\n\trotationX: number;\r\n\trotationY: number;\r\n\tpatternUnits: PatternUnits;\r\n\tstrokeDashArray:string;\r\n};\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Base class to define patterns.\r\n */\r\nexport class Pattern extends BaseObject implements IAnimatable {\r\n\r\n\t/**\r\n\t * List of available animations currently running on a pattern.\r\n\t */\r\n\tprotected _animations: $type.Optional<Array<Animation>>;\r\n\r\n\t/**\r\n\t * An SVG `<group>` element to put sub-elements into.\r\n\t */\r\n\tpublic element: Group;\r\n\r\n\t/**\r\n\t * Reference to [[Paper]] instance.\r\n\t */\r\n\tprotected _paper: $type.Optional<Paper>;\r\n\r\n\t/**\r\n\t * List of elements the pattern consists of.\r\n\t */\r\n\tprotected _elements: List<AMElement> = new List<AMElement>();\r\n\r\n\t/**\r\n\t * Defines property types.\r\n\t */\r\n\tpublic _properties!: PatternProperties;\r\n\r\n\t/**\r\n\t * A storage for Filter property/value pairs.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @see {@link PatternProperties}\r\n\t */\r\n\tpublic properties: this[\"_properties\"] = <any>{};\r\n\t//public propertyValues = new Dictionary<PatternProperties, any>();\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"Pattern\";\r\n\r\n\t\t// Set defaults\r\n\t\tthis.width = 10;\r\n\t\tthis.height = 10;\r\n\t\tthis.x = 0;\r\n\t\tthis.y = 0;\r\n\t\tthis.patternUnits = \"userSpaceOnUse\";\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\r\n\t\tthis.backgroundFill = interfaceColors.getFor(\"background\");\r\n\t\tthis.backgroundOpacity = 0;\r\n\r\n\t\tthis.fillOpacity = 1;\r\n\t\tthis.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n\t\tthis.stroke = interfaceColors.getFor(\"alternativeBackground\");\r\n\t\tthis.strokeOpacity = 1;\r\n\t\tthis.strokeWidth = 1;\r\n\t\tthis.shapeRendering = \"crispEdges\";\r\n\t\tthis.rotation = 0;\r\n\r\n\t\t// Create main group to store pattern elements inelements\r\n\t\tthis.element = this.paper.addGroup(\"pattern\");\r\n\t\tthis.id = \"pattern-\" + registry.getUniqueId();\r\n\t\tthis.element.attr({ \"id\": this.id });\r\n\t\tthis._disposers.push(this.element);\r\n\r\n\t\t// Make elements disposable\r\n\t\tthis._disposers.push(new ListDisposer(this._elements));\r\n\r\n\t\t// Request again to trigger getter/setter code\r\n\t\tthis.patternUnits = this.patternUnits;\r\n\t\tthis.width = this.width;\r\n\t\tthis.height = this.height;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the pattern.\r\n\t */\r\n\tprotected draw(): void {\r\n\r\n\t\tlet patternElement: Group = this.element;\r\n\t\tif (patternElement) {\r\n\r\n\t\t\tpatternElement.removeChildNodes();\r\n\r\n\t\t\tlet background = this.paper.add(\"rect\");\r\n\t\t\tbackground.attr({ \"width\": this.width, \"height\": this.height, \"shape-rendering\": \"crispEdges\", \"fill\": this.backgroundFill.hex, \"fill-opacity\": this.backgroundOpacity, \"stroke\": this.backgroundFill.hex, \"stroke-opacity\": this.backgroundOpacity });\r\n\t\t\tpatternElement.add(background);\r\n\r\n\t\t\tpatternElement.attr({ \"x\": this.x, \"y\": this.y, \"width\": this.width, \"height\": this.height, \"stroke\": this.stroke.hex, \"fill\": this.fill.hex, \"fill-opacity\": this.fillOpacity, \"stroke-opacity\": this.strokeOpacity, \"stroke-width\": this.strokeWidth, \"shape-rendering\": this.shapeRendering, \"patternUnits\": this.patternUnits, \"stroke-dasharray\":this.strokeDasharray });\r\n\r\n\t\t\t$iter.each(this._elements.iterator(), (element) => {\r\n\t\t\t\telement.rotation = this.rotation;\r\n\t\t\t\telement.rotationX = this.properties[\"rotationX\"];\r\n\t\t\t\telement.rotationY = this.properties[\"rotationY\"];\r\n\t\t\t\tthis.element.add(element);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Animate pattern properties.\r\n\t *\r\n\t * @see {@link Animation}\r\n\t * @param animationOptions Animation options\r\n\t * @param duration Duration (ms)\r\n\t * @param easing Easing function\r\n\t * @return Animation instance\r\n\t */\r\n\tpublic animate(animationOptions: IAnimationOptions[] | IAnimationOptions, duration: number, easing?: (value: number) => number): Animation {\r\n\t\treturn new Animation(this, animationOptions, duration, easing).start();\r\n\t}\r\n\r\n\t/**\r\n\t * Adds an element to the pattern.\r\n\t *\r\n\t * @param element Element\r\n\t */\r\n\tpublic addElement(element: AMElement): void {\r\n\t\tthis._elements.push(element);\r\n\t\tthis._disposers.push(element);\r\n\t}\r\n\r\n\t/**\r\n\t * Remove an element from the pattern.\r\n\t *\r\n\t * @param element Element\r\n\t */\r\n\tpublic removeElement(element: AMElement): void {\r\n\t\tthis._elements.removeValue(element);\r\n\t\tthis.removeDispose(element);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the list of SVG elements comprising the pattern.\r\n\t *\r\n\t * @return Pattern elements\r\n\t */\r\n\tpublic get elements(): List<AMElement> {\r\n\t\treturn this._elements;\r\n\t}\r\n\r\n\t/**\r\n\t * Pattern fill opacity. (0-1)\r\n\t *\r\n\t * @param value Opacity (0-1)\r\n\t */\r\n\tpublic set fillOpacity(value: number) {\r\n\t\tthis.properties[\"fillOpacity\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Opacity (0-1)\r\n\t */\r\n\tpublic get fillOpacity(): number {\r\n\t\treturn this.properties[\"fillOpacity\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Fill color of the pattern.\r\n\t *\r\n\t * @param value Fill color\r\n\t */\r\n\tpublic set fill(value: Color) {\r\n\t\tthis.properties[\"fill\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Fill color\r\n\t */\r\n\tpublic get fill(): Color {\r\n\t\treturn this.properties[\"fill\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Pattern background fill color.\r\n\t *\r\n\t * @param value Background color\r\n\t */\r\n\tpublic set backgroundFill(value: Color) {\r\n\t\tthis.properties[\"backgroundFill\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Background color\r\n\t */\r\n\tpublic get backgroundFill(): Color {\r\n\t\treturn this.properties[\"backgroundFill\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Pattern backgorund opacity. (0-1)\r\n\t *\r\n\t * @param value Background opacity (0-1)\r\n\t */\r\n\tpublic set backgroundOpacity(value: number) {\r\n\t\tthis.properties[\"backgroundOpacity\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Background opacity (0-1)\r\n\t */\r\n\tpublic get backgroundOpacity(): number {\r\n\t\treturn this.properties[\"backgroundOpacity\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Pattern stroke (border) color.\r\n\t *\r\n\t * @param value Color\r\n\t */\r\n\tpublic set stroke(value: Color) {\r\n\t\tthis.properties[\"stroke\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Color\r\n\t */\r\n\tpublic get stroke(): Color {\r\n\t\treturn this.properties[\"stroke\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Pattern stroke opacity. (0-1)\r\n\t *\r\n\t * @param value Opacity (0-1)\r\n\t */\r\n\tpublic set strokeOpacity(value: number) {\r\n\t\tthis.properties[\"strokeOpacity\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Opacity (0-1)\r\n\t */\r\n\tpublic get strokeOpacity(): number {\r\n\t\treturn this.properties[\"strokeOpacity\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Pattern stroke thickness in pixels.\r\n\t *\r\n\t * @param value Stroke thickness (px)\r\n\t */\r\n\tpublic set strokeWidth(value: number) {\r\n\t\tthis.properties[\"strokeWidth\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Stroke thickness (px)\r\n\t */\r\n\tpublic get strokeWidth(): number {\r\n\t\treturn this.properties[\"strokeWidth\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Shape rendering\r\n\t * @param value [description]\r\n\t */\r\n\tpublic set shapeRendering(value: ShapeRendering) {\r\n\t\tthis.properties[\"shapeRendering\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\tpublic get shapeRendering(): ShapeRendering {\r\n\t\treturn this.properties[\"shapeRendering\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Pattern rotation in degrees.\r\n\t *\r\n\t * @param value Rotation\r\n\t */\r\n\tpublic set rotation(value: number) {\r\n\t\tthis.properties[\"rotation\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Rotation\r\n\t */\r\n\tpublic get rotation(): number {\r\n\t\treturn this.properties[\"rotation\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Pattern measuring units.\r\n\t *\r\n\t * Available options: \"userSpaceOnUse\" | \"objectBoundingBox\".\r\n\t *\r\n\t * @param value Units\r\n\t */\r\n\tpublic set patternUnits(value: \"userSpaceOnUse\" | \"objectBoundingBox\") {\r\n\t\tthis.properties[\"patternUnits\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Units\r\n\t */\r\n\tpublic get patternUnits(): \"userSpaceOnUse\" | \"objectBoundingBox\" {\r\n\t\treturn this.properties[\"patternUnits\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Pattern width in pixels.\r\n\t *\r\n\t * @param value Width (px)\r\n\t */\r\n\tpublic set width(value: number) {\r\n\t\tthis.properties[\"width\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Width (px)\r\n\t */\r\n\tpublic get width(): number {\r\n\t\treturn this.properties[\"width\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Pattern height in pixels.\r\n\t *\r\n\t * @param value Height (px)\r\n\t */\r\n\tpublic set height(value: number) {\r\n\t\tthis.properties[\"height\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Height (px)\r\n\t */\r\n\tpublic get height(): number {\r\n\t\treturn this.properties[\"height\"];\r\n\t}\r\n\r\n\t/**\r\n\t * X position. (pixels)\r\n\t *\r\n\t * @param value X (px)\r\n\t */\r\n\tpublic set x(value: number) {\r\n\t\tthis.properties[\"x\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * @return X (px)\r\n\t */\r\n\tpublic get x(): number {\r\n\t\treturn this.properties[\"x\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Y position (px).\r\n\t *\r\n\t * @param value Y (px)\r\n\t */\r\n\tpublic set y(value: number) {\r\n\t\tthis.properties[\"y\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Y (px)\r\n\t */\r\n\tpublic get y(): number {\r\n\t\treturn this.properties[\"y\"];\r\n\t}\r\n\r\n\t/**\r\n\t * [[Paper]] instance to draw pattern in.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param paper Paper\r\n\t */\r\n\tpublic set paper(paper: Paper) {\r\n\t\tif (this._paper != paper) {\r\n\t\t\tthis._paper = paper;\r\n\t\t\tthis.draw();\r\n\t\t\tpaper.appendDef(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Paper\r\n\t */\r\n\tpublic get paper(): Paper {\r\n\t\tif (this._paper) {\r\n\t\t\treturn this._paper;\r\n\t\t}\r\n\t\treturn getGhostPaper();\r\n\t}\r\n\r\n\t/**\r\n\t * Copies properties from another Pattern instance.\r\n\t *\r\n\t * @param source Source pattern\r\n\t */\r\n\tpublic copyFrom(source: this) {\r\n\t\tsuper.copyFrom(source);\r\n\t\t$object.each(source.properties, (key, value) => {\r\n\t\t\t(<any>this)[key] = value;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * A list of animations currently running on the patter.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Animation list\r\n\t */\r\n\tpublic get animations(): Array<Animation> {\r\n\t\tif (!this._animations) {\r\n\t\t\tthis._animations = [];\r\n\t\t\tthis._disposers.push(new AnimationDisposer(this._animations));\r\n\t\t}\r\n\t\treturn this._animations;\r\n\t}\r\n\r\n\t/**\r\n\t * A `stroke-dasharray` for the stroke (outline).\r\n\t *\r\n\t * \"Dasharray\" allows setting rules to make lines dashed, dotted, etc.\r\n\t *\r\n\t * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray} for more info on `stroke-dasharray`\r\n\t * @param value `stroke-dasharray`\r\n\t */\r\n\tpublic set strokeDasharray(value: string) {\r\n\t\tthis.properties[\"strokeDashArray\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * @return `stroke-dasharray`\r\n\t */\r\n\tpublic get strokeDasharray(): string {\r\n\t\treturn this.properties[\"strokeDashArray\"];\r\n\t}\t\t\r\n\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tif (config) {\r\n\r\n\t\t\t// Set up series\r\n\t\t\tif ($type.hasValue(config.elements) && $type.isArray(config.elements)) {\r\n\t\t\t\tfor (let i = 0, len = config.elements.length; i < len; i++) {\r\n\t\t\t\t\tlet element = config.elements[i];\r\n\t\t\t\t\tif ($type.hasValue(element[\"type\"])) {\r\n\t\t\t\t\t\tlet sprite = this.createEntryInstance(element);\r\n\t\t\t\t\t\tif (sprite instanceof BaseObject) {\r\n\t\t\t\t\t\t\tsprite.config = element;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.addElement(\r\n\t\t\t\t\t\t\t$type.hasValue(element[\"typeProperty\"])\r\n\t\t\t\t\t\t\t? sprite[element[\"typeProperty\"]]\r\n\t\t\t\t\t\t\t: sprite.element\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tsuper.processConfig(config);\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Pattern\"] = Pattern;\r\n","/**\r\n * Contains code and logic for generating radial gradients.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../../Base\";\r\nimport { List } from \"../../utils/List\";\r\nimport { Group } from \"../Group\";\r\nimport { AMElement } from \"../AMElement\";\r\nimport { Paper, getGhostPaper } from \"../Paper\";\r\nimport { registry } from \"../../Registry\";\r\nimport { IGradientStop } from \"./LinearGradient\";\r\nimport { Color } from \"../../utils/Color\";\r\nimport * as $iter from \"../../utils/Iterator\";\r\nimport * as $type from \"../../utils/Type\";\r\nimport { Percent } from \"../../utils/Percent\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Radial gradient class.\r\n */\r\nexport class RadialGradient extends BaseObject {\r\n\r\n\t/**\r\n\t * List of colors switch definitions in a gradient.\r\n\t */\r\n\tprotected _stops: List<IGradientStop> = new List<IGradientStop>();\r\n\r\n\t/**\r\n\t * An SVG `<group>` element used to draw gradient.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic element: Group;\r\n\r\n\t/**\r\n\t * Reference to Paper to add element to.\r\n\t */\r\n\tprotected _paper: $type.Optional<Paper>;\r\n\r\n\t/**\r\n\t * A center x coordinate for the radial gradient, can be set in pixels or as Percent\r\n\t */\r\n\tprotected _cx: $type.Optional<number | Percent>;\r\n\r\n\t/**\r\n\t * A center y coordinate for the radial gradient, can be set in pixels or as Percent\r\n\t */\r\n\tprotected _cy: $type.Optional<number | Percent>;\r\n\r\n\t/**\r\n\t * A y coordinate of the focal point of a gradient, can be set in pixels or as Percent\r\n\t */\r\n\tprotected _fx: $type.Optional<number | Percent>;\r\n\r\n\t/**\r\n\t * A y coordinate of the focal point of a gradient, can be set in pixels or as Percent\r\n\t */\r\n\tprotected _fy: $type.Optional<number | Percent>;\r\n\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.element = this.paper.addGroup(\"radialGradient\");\r\n\t\tthis.id = \"gradient-\" + registry.getUniqueId();\r\n\t\tthis.element.attr({ \"id\": this.id });\r\n\t\tthis._disposers.push(this.element);\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Draws gradient.\r\n\t */\r\n\tprotected draw(): void {\r\n\r\n\t\tlet gradientElement = this.element;\r\n\r\n\t\tif ($type.isNumber(this.cx)) {\r\n\t\t\tlet value:any = this.cx;\r\n\t\t\tif(value instanceof Percent){\r\n\t\t\t\tvalue = value.percent + \"%\";\r\n\t\t\t}\r\n\t\t\tgradientElement.attr({ \"cx\": value });\r\n\t\t}\r\n\r\n\t\tif ($type.isNumber(this.cy)) {\r\n\t\t\tlet value:any = this.cy;\r\n\t\t\tif(value instanceof Percent){\r\n\t\t\t\tvalue = value.percent + \"%\";\r\n\t\t\t}\r\n\t\t\tgradientElement.attr({ \"cy\": value });\r\n\t\t}\r\n\r\n\t\tif (this.fx) {\r\n\t\t\tlet value:any = this.fx;\r\n\t\t\tif(value instanceof Percent){\r\n\t\t\t\tvalue = value.percent + \"%\";\r\n\t\t\t}\r\n\t\t\tgradientElement.attr({ \"fx\": value});\r\n\t\t}\r\n\r\n\t\tif (this.fy) {\r\n\t\t\tlet value:any = this.fy;\r\n\t\t\tif(value instanceof Percent){\r\n\t\t\t\tvalue = value.percent + \"%\";\r\n\t\t\t}\r\n\t\t\tgradientElement.attr({ \"fy\": value});\r\n\t\t}\r\n\r\n\t\tgradientElement.removeChildNodes();\r\n\r\n\t\t$iter.each($iter.indexed(this._stops.iterator()), (a) => {\r\n\t\t\tlet i = a[0];\r\n\t\t\tlet stop = a[1];\r\n\t\t\tlet offset: $type.Optional<number> = stop.offset;\r\n\r\n\t\t\tif (!$type.isNumber(offset)) {\r\n\t\t\t\toffset = i / (this._stops.length - 1)\r\n\t\t\t}\r\n\r\n\t\t\tlet gradientStop: AMElement = this.paper.add(\"stop\");\r\n\t\t\tif ($type.hasValue(stop.color)) {\r\n\t\t\t\tgradientStop.attr({ \"stop-color\": stop.color.toString() });\r\n\t\t\t}\r\n\t\t\tif ($type.isNumber(stop.opacity)) {\r\n\t\t\t\tgradientStop.attr({ \"stop-opacity\": stop.opacity });\r\n\t\t\t}\r\n\r\n\t\t\tif ($type.isNumber(offset)) {\r\n\t\t\t\tgradientStop.attr({ \"offset\": offset });\r\n\t\t\t}\r\n\r\n\t\t\tgradientElement.add(gradientStop);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a color step to the gradient.\r\n\t *\r\n\t * @param color Color (hex code or named color)\r\n\t * @param opacity Opacity (value from 0 to 1; 0 completely transaprent, 1 fully opaque)\r\n\t * @param offset Position of color in the gradient (value 0 to 1; 0 meaning start of the gradient and 1 end)\r\n\t */\r\n\tpublic addColor(color: Color, opacity?: number, offset?: number): void {\r\n\t\tthis._stops.push({ color: color, opacity: opacity, offset: offset });\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * A [[Paper]] instace to use for the gradient.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param paper Paper\r\n\t */\r\n\tpublic set paper(paper: Paper) {\r\n\t\tif (this._paper != paper) {\r\n\t\t\tthis._paper = paper;\r\n\t\t\tthis.draw();\r\n\t\t\tpaper.appendDef(this.element);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Paper\r\n\t */\r\n\tpublic get paper(): Paper {\r\n\t\tif (this._paper) {\r\n\t\t\treturn this._paper;\r\n\t\t}\r\n\t\treturn getGhostPaper();\r\n\t}\r\n\r\n\t/**\r\n\t * Center x coordinate of the gradient, can be set as number or Percent\r\n\t *\r\n\t * @param point Center point\r\n\t */\r\n\tpublic set cx(value: $type.Optional<number | Percent>) {\r\n\t\tthis._cx = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\tpublic get cx(): $type.Optional<number | Percent> {\r\n\t\treturn this._cx;\r\n\t}\r\n\r\n\t/**\r\n\t * Center y coordinate of the gradient, can be set as number or Percent\r\n\t *\r\n\t * @param point Center point\r\n\t */\r\n\tpublic set cy(value: $type.Optional<number | Percent>) {\r\n\t\tthis._cy = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\tpublic get cy(): $type.Optional<number | Percent> {\r\n\t\treturn this._cy;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * y coordinate of the focal point of a gradient, can be set in pixels or as Percent\r\n\t *\r\n\t * @param point Center point\r\n\t */\r\n\tpublic set fx(value: $type.Optional<number | Percent>) {\r\n\t\tthis._fx = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\tpublic get fx(): $type.Optional<number | Percent> {\r\n\t\treturn this._fx;\r\n\t}\r\n\r\n\t/**\r\n\t * y coordinate of the focal point of a gradient, can be set in pixels or as Percent\r\n\t *\r\n\t * @param point Center point\r\n\t */\r\n\tpublic set fy(value: $type.Optional<number | Percent>) {\r\n\t\tthis._fy = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\tpublic get fy(): $type.Optional<number | Percent> {\r\n\t\treturn this._fy;\r\n\t}\r\n\r\n\r\n\r\n\tpublic copyFrom(source:this){\r\n\t\tsuper.copyFrom(source);\r\n\r\n\t\tthis.stops.copyFrom(source.stops);\r\n\r\n\t\tthis.cx = source.cx;\r\n\t\tthis.cy = source.cy;\r\n\r\n\t\tthis.fx = source.fx;\r\n\t\tthis.fy = source.fy;\r\n\t}\r\n\r\n\t/**\r\n\t * A list of color stops in the gradient.\r\n\t *\r\n\t * @return Stops\r\n\t */\r\n\tpublic get stops(): List<IGradientStop> {\r\n\t\treturn this._stops;\r\n\t}\r\n\r\n\t/**\r\n\t * Clears the gradient.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic clear(): void {\r\n\t\tthis._stops.clear();\r\n\t}\r\n\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadialGradient\"] = RadialGradient;\r\n","/**\r\n * Module for \"Desaturate\" filter.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Filter, FilterProperties } from \"./Filter\";\r\nimport { AMElement } from \"../AMElement\";\r\nimport { registry } from \"../../Registry\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines additional properties relative to the \"Desaturate\" filter\r\n */\r\nexport interface DesaturateFilterProperties extends FilterProperties {\r\n\r\n\t/**\r\n\t * Saturation. (0-1)\r\n\t */\r\n\tsaturation: number;\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creats a \"Desaturate\" filter\r\n */\r\nexport class DesaturateFilter extends Filter {\r\n\r\n\t/**\r\n\t * Defines property types.\r\n\t */\r\n\tpublic _properties!: DesaturateFilterProperties;\r\n\r\n\t/**\r\n\t * A storage for Filter property/value pairs.\r\n\t * @see [@link DesaturateFilterProperties]\r\n\t */\r\n\t//public propertyValues: Dictionary<DesaturateFilterProperties, any>;\r\n\r\n\t/**\r\n\t * Reference to the `<feColorMatrix>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic feColorMatrix: AMElement;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"DesaturateFilter\";\r\n\r\n\t\t// Create elements\r\n\t\t// NOTE: we do not need to add each individual element to `_disposers`\r\n\t\t// because `filterPrimitives` has an event handler which automatically adds\r\n\t\t// anything added to it to `_disposers`\r\n\t\tthis.feColorMatrix = this.paper.add(\"feColorMatrix\");\r\n\t\tthis.feColorMatrix.attr({ \"type\": \"saturate\" });\r\n\t\tthis.filterPrimitives.push(this.feColorMatrix);\r\n\r\n\t\t// Set default properties\r\n\t\tthis.width = 120;\r\n\t\tthis.height = 120;\r\n\r\n\t\tthis.saturation = 0;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Saturation.\r\n\t *\r\n\t * 0 - completely desaturated.\r\n\t * 1 - fully saturated (gray).\r\n\t *\r\n\t * @param value Saturation (0-1)\r\n\t */\r\n\tpublic set saturation(value: number) {\r\n\t\tthis.properties[\"saturation\"] = value;\r\n\t\tthis.feColorMatrix.attr({ \"values\": value.toString() });\r\n\t}\r\n\r\n\t/**\r\n\t * @return Saturation (0-1)\r\n\t */\r\n\tpublic get saturation(): number {\r\n\t\treturn this.properties[\"saturation\"];\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DesaturateFilter\"] = DesaturateFilter;\r\n","/**\r\n * Module for \"Drop Shadow\" filter.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Filter, FilterProperties } from \"./Filter\";\r\nimport { AMElement } from \"../AMElement\";\r\nimport { Group } from \"../Group\";\r\nimport { Color, color } from \"../../utils/Color\";\r\nimport { registry } from \"../../Registry\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines additional properties relative to the \"Drop Shadow\" filter\r\n */\r\nexport interface DropShadowFilterProperties extends FilterProperties {\r\n\r\n\t/**\r\n\t * Horizontal offset in pixels.\r\n\t */\r\n\tdx: number;\r\n\r\n\t/**\r\n\t * Vertical offset in pixels.\r\n\t */\r\n\tdy: number;\r\n\r\n\t/**\r\n\t * Blur.\r\n\t */\r\n\tblur: number;\r\n\r\n\t/**\r\n\t * Shadow opacity. (0-1)\r\n\t */\r\n\topacity: number;\r\n\r\n\t/**\r\n\t * Shadow color.\r\n\t */\r\n\tcolor: Color;\r\n\r\n};\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creats a \"Drop Shadow\" filter.\r\n */\r\nexport class DropShadowFilter extends Filter {\r\n\r\n\t/**\r\n\t * Defines property types.\r\n\t */\r\n\tpublic _properties!: DropShadowFilterProperties;\r\n\r\n\t/**\r\n\t * A storage for Filter property/value pairs.\r\n\t *\r\n\t * @see [@link DropShadowFilterProperties]\r\n\t */\r\n\t//public propertyValues: Dictionary<DropShadowFilterProperties, any>;\r\n\r\n\r\n\t/**\r\n\t * Reference to the `<feGaussianBlur>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic feGaussianBlur: AMElement;\r\n\r\n\t/**\r\n\t * Reference to the `<feOffset>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic feOffset: AMElement;\r\n\r\n\t/**\r\n\t * Reference to the `<feFlood>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic feFlood: AMElement;\r\n\r\n\t/**\r\n\t * Reference to the `<feFlood>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic feComposite: AMElement;\r\n\r\n\t/**\r\n\t * Reference to the `<feMerge>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic feMerge: Group;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.className = \"DropShadowFilter\";\r\n\r\n\t\t// Create elements\r\n\t\t// NOTE: we do not need to add each individual element to `_disposers`\r\n\t\t// because `filterPrimitives` has an event handler which automatically adds\r\n\t\t// anything added to it to `_disposers`\r\n\r\n\t\tthis.color = color(\"#000\");\r\n\r\n\t\tthis.feGaussianBlur = this.paper.add(\"feGaussianBlur\");\r\n\t\tthis.feGaussianBlur.attr({ \"result\": \"blurOut\", \"in\": \"SourceGraphic\" });\r\n\t\tthis.filterPrimitives.push(this.feGaussianBlur);\r\n\r\n\t\tthis.feOffset = this.paper.add(\"feOffset\");\r\n\t\tthis.feOffset.attr({ \"result\": \"offsetBlur\" });\r\n\t\tthis.filterPrimitives.push(this.feOffset);\r\n\r\n\t\tthis.feFlood = this.paper.add(\"feFlood\");\r\n\t\tthis.feFlood.attr({ \"flood-color\": this.color });\r\n\t\tthis.filterPrimitives.push(this.feFlood);\r\n\r\n\t\tthis.feComposite = this.paper.add(\"feComposite\");\r\n\t\tthis.feComposite.attr({ \"in2\": \"offsetBlur\", operator: \"in\" });\r\n\t\tthis.filterPrimitives.push(this.feComposite);\r\n\r\n\t\tthis.feMerge = this.paper.addGroup(\"feMerge\");\r\n\t\tthis.feMerge.add(this.paper.add(\"feMergeNode\"));\r\n\t\tthis.feMerge.add(this.paper.add(\"feMergeNode\").attr({ \"in\": \"SourceGraphic\" }));\r\n\t\tthis.filterPrimitives.push(this.feMerge);\r\n\r\n\t\t// Set default properties\r\n\t\tthis.width = 200;\r\n\t\tthis.height = 200;\r\n\t\tthis.blur = 1.5;\r\n\t\tthis.dx = 3;\r\n\t\tthis.dy = 3;\r\n\t\tthis.opacity = 0.5;\r\n\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Shadow color.\r\n\t *\r\n\t * @param value Color\r\n\t */\r\n\tpublic set color(value: Color) {\r\n\t\tthis.properties.color = value;\r\n\t\tif(this.feFlood){\r\n\t\t\tthis.feFlood.attr({ \"flood-color\": value });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Color\r\n\t */\r\n\tpublic get color(): Color {\r\n\t\treturn this.properties.color;\r\n\t}\r\n\r\n\t/**\r\n\t * Opacity of the shadow. (0-1)\r\n\t *\r\n\t * @param value Opacity (0-1)\r\n\t */\r\n\tpublic set opacity(value: number) {\r\n\t\tthis.properties.opacity = value;\r\n\t\tthis.feFlood.attr({ \"flood-opacity\": value });\r\n\t}\r\n\r\n\t/**\r\n\t * @return Opacity (0-1)\r\n\t */\r\n\tpublic get opacity(): number {\r\n\t\treturn this.properties.opacity;\r\n\t}\r\n\r\n\t/**\r\n\t * Horizontal offset in pixels.\r\n\t *\r\n\t * @param value Horizontal offset (px)\r\n\t */\r\n\tpublic set dx(value: number) {\r\n\t\tthis.properties.dx = value;\r\n\t\tthis.feOffset.attr({ \"dx\": value / this.scale });\r\n\t}\r\n\r\n\t/**\r\n\t * @return Horizontal offset (px)\r\n\t */\r\n\tpublic get dx(): number {\r\n\t\treturn this.properties.dx;\r\n\t}\r\n\r\n\t/**\r\n\t * Vertical offset in pixels.\r\n\t *\r\n\t * @param value Vertical offset (px)\r\n\t */\r\n\tpublic set dy(value: number) {\r\n\t\tthis.properties.dy = value;\r\n\t\tthis.feOffset.attr({ \"dy\": value / this.scale });\r\n\t}\r\n\r\n\t/**\r\n\t * @return Vertical offset (px)\r\n\t */\r\n\tpublic get dy(): number {\r\n\t\treturn this.properties.dy;\r\n\t}\r\n\r\n\t/**\r\n\t * Blur.\r\n\t *\r\n\t * @param value Blur\r\n\t */\r\n\tpublic set blur(value: number) {\r\n\t\tthis.properties.blur = value;\r\n\t\tthis.feGaussianBlur.attr({ \"stdDeviation\": value / this.scale });\r\n\t}\r\n\r\n\t/**\r\n\t * @return Blur\r\n\t */\r\n\tpublic get blur(): number {\r\n\t\treturn this.properties.blur;\r\n\t}\r\n\r\n\t/**\r\n\t * [updateScale description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected updateScale() {\r\n\t\tthis.dx = this.dx;\r\n\t\tthis.dy = this.dy;\r\n\t\tthis.blur = this.blur;\r\n\t}\r\n\r\n}\r\n\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DropShadowFilter\"] = DropShadowFilter;\r\n","/**\r\n * This module contains a base class for an SVG filter.\r\n *\r\n * Filters can be used to decorate, change and transform just about any DOM\r\n * element.\r\n *\r\n * A Filter works by applying one or more effects (primitives) to SVG element.\r\n *\r\n * For more information on how SVG filters work, refer to\r\n * [this MDN tutorial](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/SVG_Filters_Tutorial).\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../../Base\";\r\nimport { Paper, getGhostPaper } from \"../Paper\";\r\nimport { Group } from \"../Group\";\r\nimport { AMElement } from \"../AMElement\";\r\nimport { Animation, IAnimatable, IAnimationOptions, AnimationDisposer } from \"../../utils/Animation\";\r\nimport { List } from \"../../utils/List\";\r\nimport { Sprite } from \"../../Sprite\";\r\nimport * as $object from \"../../utils/Object\";\r\nimport * as $iter from \"../../utils/Iterator\";\r\nimport * as $type from \"../../utils/Type\";\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for a base filter\r\n */\r\nexport interface FilterProperties {\r\n\r\n\t/**\r\n\t * Width of the filter in percent.\r\n\t *\r\n\t * @default 120\r\n\t */\r\n\twidth: number;\r\n\r\n\t/**\r\n\t * Height of the filter in percent.\r\n\t *\r\n\t * @default 120\r\n\t */\r\n\theight: number;\r\n\r\n};\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Base filter class.\r\n *\r\n * This class while can be instantiated will not do anything. It is just a base\r\n * functionality for any other \"real\" filters to extend.\r\n *\r\n * Filters can be used to decorate, change and transform just about any DOM\r\n * element.\r\n *\r\n * A Filter works by applying one or more effects (primitives) to SVG element.\r\n *\r\n * For more information on how SVG filters work, refer to\r\n * [this MDN tutorial](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/SVG_Filters_Tutorial).\r\n *\r\n * @todo Example\r\n */\r\nexport class Filter extends BaseObject implements IAnimatable {\r\n\r\n\t/**\r\n\t * List of animations currently running for the filter.\r\n\t */\r\n\tprotected _animations: $type.Optional<Array<Animation>>;\r\n\r\n\t/**\r\n\t * Contains a list of filter primitives (effects) applied by the filter.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic filterPrimitives: List<AMElement>;\r\n\r\n\t/**\r\n\t * Defines property types.\r\n\t */\r\n\tpublic _properties!: FilterProperties;\r\n\r\n\t/**\r\n\t * A storage for Filter property/value pairs.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @see {@link FilterProperties}\r\n\t */\r\n\tpublic properties: this[\"_properties\"] = <any>{};\r\n\t//public propertyValues = new Dictionary<FilterProperties, any>();\r\n\r\n\t/**\r\n\t * An SVG `<group>` element hold primitive (effect) definitions.\r\n\t */\r\n\tpublic filterElement: $type.Optional<Group>;\r\n\r\n\t/**\r\n\t * Identifies if this object is a \"template\" and should not be treated as\r\n\t * real object that is drawn or actually used in the chart.\r\n\t */\r\n\tpublic isTemplate: boolean = false;\r\n\r\n\t/**\r\n\t * A Paper instance to add element to.\r\n\t */\r\n\tprotected _paper: $type.Optional<Paper>;\r\n\r\n\t/**\r\n\t * [_scale description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _scale: number = 1;\r\n\r\n\t/**\r\n\t * [_nonScaling description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _nonScaling: boolean = true;\r\n\r\n\t/**\r\n\t * A target element this filter is currently attached to.\r\n\t *\r\n\t * We need to keep track of it because one filter can be used for just one\r\n\t * element, so we have to remove it from the old \"parent\" when attaching to\r\n\t * the new one.\r\n\t */\r\n\tprotected _sprite: $type.Optional<Sprite>;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"Filter\";\r\n\r\n\t\t// Create a list to hold primitives (effect elements)\r\n\t\tthis.filterPrimitives = new List<any>();\r\n\r\n\t\t// Automatically add added primitives to `_disposers` so they are discarded\r\n\t\t// when Filter object is destroyed (disposed)\r\n\t\tthis.filterPrimitives.events.on(\"inserted\", (ev) => {\r\n\t\t\tthis._disposers.push(ev.newValue);\r\n\t\t});\r\n\r\n\t\t// Set default dimensions\r\n\t\tthis.width = 120;\r\n\t\tthis.height = 120;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Appends actual filter elements to the filter group.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param filterElement An SVG `<group>` element to add filter element to\r\n\t */\r\n\tpublic appendPrimitives(filterElement: Group): void {\r\n\t\t$iter.each(this.filterPrimitives.iterator(), (filterPrimitive) => {\r\n\t\t\tfilterElement.add(filterPrimitive);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Uses Transitions filter's values from current to target. This is used to\r\n\t * smoothly appear filter, rather than it pop into effect.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param animationOptions Animation options\r\n\t * @param duration Duration in milliseconds\r\n\t * @param easing Easing function\r\n\t * @return Animation instance\r\n\t */\r\n\tpublic animate(animationOptions: IAnimationOptions[] | IAnimationOptions, duration: number, easing?: (value: number) => number): Animation {\r\n\t\tlet animation: Animation = new Animation(this, animationOptions, duration, easing).start();\r\n\t\treturn animation;\r\n\t}\r\n\r\n\t/**\r\n\t * Width of the filter element in percent.\r\n\t *\r\n\t * If the filter is designed to \"bleed out\" of the original target element,\r\n\t * like for example a shadow, you need this bigger than 100, or the\r\n\t * non-fitting parts will be clipped.\r\n\t *\r\n\t * @default 120\r\n\t * @param value Width (px)\r\n\t */\r\n\tpublic set width(value: number) {\r\n\t\tthis.properties[\"width\"] = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Width (%)\r\n\t */\r\n\tpublic get width(): number {\r\n\t\treturn this.properties[\"width\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Height of the filter element in percent.\r\n\t *\r\n\t * If the filter is designed to \"bleed out\" of the original target element,\r\n\t * like for example a shadow, you need this bigger than 100, or the\r\n\t * non-fitting parts will be clipped.\r\n\t *\r\n\t * @default 120\r\n\t * @param value Height (%)\r\n\t */\r\n\tpublic set height(value: number) {\r\n\t\tthis.properties[\"height\"] = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Height\r\n\t */\r\n\tpublic get height(): number {\r\n\t\treturn this.properties[\"height\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Copies properties from another [[Filter]] object.\r\n\t *\r\n\t * @param filter Source [[Filter]] object\r\n\t */\r\n\tpublic copyFrom(filter: this): void {\r\n\t\tsuper.copyFrom(filter);\r\n\t\t$object.each(filter.properties, (key, value) => {\r\n\t\t\t(<any>this)[key] = value;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets [[Paper]] instance to create filter's elements in.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param paper Paper\r\n\t */\r\n\tpublic set paper(paper: Paper) {\r\n\t\tif (this._paper != paper) {\r\n\t\t\tthis._paper = paper;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Paper\r\n\t */\r\n\tpublic get paper(): Paper {\r\n\t\tif (this._paper) {\r\n\t\t\treturn this._paper;\r\n\t\t}\r\n\t\treturn getGhostPaper();\r\n\t}\r\n\r\n\t/**\r\n\t * All animations currently in play.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return List of animations\r\n\t */\r\n\tpublic get animations(): Array<Animation> {\r\n\t\tif (!this._animations) {\r\n\t\t\tthis._animations = [];\r\n\t\t\tthis._disposers.push(new AnimationDisposer(this._animations));\r\n\t\t}\r\n\t\treturn this._animations;\r\n\t}\r\n\r\n\t/**\r\n\t * [[Sprite]] uses this method to inform filter about it's scale.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic set scale(value: number) {\r\n\t\tthis._scale = value;\r\n\t\tthis.updateScale();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic get scale(): number {\r\n\t\treturn this._scale;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates filter properties which depend on scale.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected updateScale() {\r\n\t\t// Dummy method for extending classes to override.\r\n\t}\r\n\r\n\t/**\r\n\t * If a filter is non scaling, it will look the same even if the sprite is\r\n\t * scaled, otherwise filter will scale together with a [[Sprite]].\r\n\t *\r\n\t * @default false\r\n\t * @param value Non scaling?\r\n\t */\r\n\tpublic set nonScaling(value: boolean) {\r\n\t\tthis._nonScaling = value;\r\n\t\tif (!value) {\r\n\t\t\tthis._scale = 1;\r\n\t\t}\r\n\t\tthis.updateScale();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Non scaling?\r\n\t */\r\n\tpublic get nonScaling(): boolean {\r\n\t\treturn this._nonScaling;\r\n\t}\r\n\r\n\t/**\r\n\t * A target element this filter is currently attached to.\r\n\t *\r\n\t * We need to keep track of it because one filter can be used for just one\r\n\t * element, so we have to remove it from the old \"parent\" when attaching to\r\n\t * the new one.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Target element\r\n\t */\r\n\tpublic set sprite(value: Sprite) {\r\n\t\tthis.setSprite(value);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets filter's target element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Element filter is being attached to\r\n\t */\r\n\tprotected setSprite(value: Sprite): void {\r\n\t\tif (this._sprite && this._sprite != value) {\r\n\t\t\tthis._sprite.filters.removeValue(this);\r\n\t\t}\r\n\t\tthis._sprite = value;\r\n\t}\r\n}\r\n","/**\r\n * Module for \"Lighten\" filter.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Filter, FilterProperties } from \"./Filter\";\r\nimport { AMElement } from \"../AMElement\";\r\nimport { registry } from \"../../Registry\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines additional properties relative to the \"Lighten\" filter\r\n */\r\nexport interface LightenFilterProperties extends FilterProperties {\r\n\r\n\t/**\r\n\t * Lightness.\r\n\t */\r\n\tlightness: number;\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates a \"Lighten\" filter.\r\n */\r\nexport class LightenFilter extends Filter {\r\n\r\n\t/**\r\n\t * Defines property types.\r\n\t */\r\n\tpublic _properties!: LightenFilterProperties;\r\n\r\n\t/**\r\n\t * A storage for Filter property/value pairs.\r\n\t * @see [@link LightenFilterProperties]\r\n\t */\r\n\t//public propertyValues: Dictionary<LightenFilterProperties, any>;\r\n\r\n\t/**\r\n\t * Reference to the `<feColorMatrix>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic feColorMatrix: AMElement;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"LightenFilter\";\r\n\r\n\t\t// Create elements\r\n\t\t// NOTE: we do not need to add each individual element to `_disposers`\r\n\t\t// because `filterPrimitives` has an event handler which automatically adds\r\n\t\t// anything added to it to `_disposers`\r\n\t\tthis.feColorMatrix = this.paper.add(\"feColorMatrix\");\r\n\t\tthis.feColorMatrix.attr({ \"type\": \"matrix\" });\r\n\t\tthis.filterPrimitives.push(this.feColorMatrix);\r\n\r\n\t\t// Set default properties\r\n\t\tthis.lightness = 0;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Lightness of the target colors.\r\n\t *\r\n\t * If `lightness` is a positive number, the filter will make all colors\r\n\t * lighter.\r\n\t *\r\n\t * If `lightness` is negative, colors will be darkened.\r\n\t *\r\n\t * @param value Lightness\r\n\t */\r\n\tpublic set lightness(value: number) {\r\n\t\tthis.properties[\"lightness\"] = value;\r\n\t\tlet v = value + 1;\r\n\t\tthis.feColorMatrix.attr({ \"values\": v + \" 0 0 0 0 0 \" + v + \" 0 0 0 0 0 \" + v + \" 0 0 0 0 0 1 0\" });\r\n\t}\r\n\r\n\t/**\r\n\t * @return Lightness\r\n\t */\r\n\tpublic get lightness(): number {\r\n\t\treturn this.properties[\"lightness\"];\r\n\t}\r\n\r\n}\r\n\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LightenFilter\"] = LightenFilter;\r\n","/**\r\n * An Adapter can be used to apply chained synchronous transformations to any\r\n * value at runtime.\r\n *\r\n * Each type class using Adapters must have `adapters` property and adapter\r\n * interface defined.\r\n *\r\n * Adapters can be used to allow external code to apply transformations to any\r\n * value at any time.\r\n *\r\n * For example we have a Weather class which has a method `now()` which returns\r\n * current temperature.\r\n *\r\n * ```\r\n * function now() {\r\n * // ... calculate temperature\r\n * let temp = \"Temperature now is \" + degrees + \"F\";\r\n * return temp;\r\n * }\r\n * ```\r\n *\r\n * Now, supposed we want to let other classes to modify the output of the\r\n * `now()`? We just apply an adapter to the `temp` before it is returned:\r\n *\r\n * ```\r\n * temp = this.adapters.apply(\"now\", {\r\n * temp: temp,\r\n * degrees: degrees\r\n * }).temp;\r\n * ```\r\n *\r\n * Some other class might tap onto it by defining an Adapter that calculates\r\n * the temperature in Celsius:\r\n *\r\n * weather.adapters.add(\"now\", (arg) => {\r\n * arg.temp += \"(\" + farenheitToCelsius(arg.degrees) + \"C)\";\r\n * return arh;\r\n * });\r\n *\r\n * Furthermore some time-related class could add time:\r\n *\r\n * weather.adapters.add(\"now\", (arg) => {\r\n * arg.temp += \"; the time now is \" + (new Date().toLocaleString());\r\n * return arh;\r\n * });\r\n *\r\n * So without adapters we would get output like this:\r\n *\r\n * ```\r\n * Temperature now is 90F\r\n * ```\r\n *\r\n * With adapters applied we now have:\r\n *\r\n * ```\r\n * Temperature now is 90F (32C); the time now is 12/11/2012, 7:00:00 PM\r\n * ```\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { SortedList } from \"./SortedList\";\r\nimport { EventDispatcher } from \"./EventDispatcher\";\r\nimport * as $number from \"./Number\";\r\nimport * as $order from \"./Order\";\r\nimport * as $iter from \"../utils/Iterator\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $type from \"../utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Adapter interface.\r\n */\r\ninterface IAdapterCallback<Target, T> {\r\n\tid: number;\r\n\tkey: any;\r\n\tcallback: any;\r\n\tscope: any;\r\n\tpriority: number;\r\n}\r\n\r\n/**\r\n * Defines an interface for a global adapter.\r\n */\r\ninterface IGlobalAdapterCallback {\r\n\tid: number;\r\n\tkey: string;\r\n\tcallback: <T, Target, Key extends keyof T, C>(this: C, value: T[Key], target: Target, key?: keyof T) => T[Key];\r\n\tscope: any;\r\n\tpriority: number;\r\n\ttype: { new(): any };\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * GLOBAL ADAPTER\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A global adapter is an adpater that is attached to a class type rather than\r\n * specific object instance.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport class GlobalAdapter {\r\n\r\n\t/**\r\n\t * Callback id iterator.\r\n\t */\r\n\tprivate _callbackId: number = 0;\r\n\r\n\t/**\r\n\t * A list of if callbacks (adapters).\r\n\t */\r\n\tprivate _callbacks = new SortedList<IGlobalAdapterCallback>((left, right) => {\r\n\t\treturn $order.or($number.order(left.priority, right.priority),\r\n\t\t\t$number.order(left.id, right.id));\r\n\t});\r\n\r\n\tpublic addAll<T, Target, Key extends keyof T>(\r\n\t\ttype: { new(): Target },\r\n\t\tkey: Key,\r\n\t\tcallback: (value: T[Key], target: Target, key: keyof T) => T[Key],\r\n\t\tpriority?: number\r\n\t): void;\r\n\r\n\tpublic addAll<T, Target, Key extends keyof T, C>(\r\n\t\ttype: { new(): Target },\r\n\t\tkey: Key,\r\n\t\tcallback: (this: C, value: T[Key], target: Target, key: keyof T) => T[Key],\r\n\t\tpriority?: number,\r\n\t\tscope?: C\r\n\t): void;\r\n\r\n\t/**\r\n\t * Adds a global callback which is not specific to any particular object.\r\n\t * Whenever an adapter in any object of the specific class type is invoked\r\n\t * global adapters will kick in.\r\n\t *\r\n\t * @param type Class type\r\n\t * @param key Adapter key\r\n\t * @param callback Callback function\r\n\t * @param priority Priority (higher priority meaning adapter will be applied later)\r\n\t * @param scope Callback function scaope\r\n\t */\r\n\tpublic addAll(type: any, key: any, callback: any, priority: number = 0, scope?: any): void {\r\n\t\tthis._callbacks.insert({\r\n\t\t\tid: ++this._callbackId,\r\n\t\t\tkey: key,\r\n\t\t\tcallback: callback,\r\n\t\t\tpriority: priority,\r\n\t\t\tscope: scope,\r\n\t\t\ttype: type\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Returns if there are adapters for specific type available.\r\n\t *\r\n\t * @param type Adapter type\r\n\t * @param key Adapter key\r\n\t * @return {boolean}\r\n\t */\r\n\tpublic isEnabled<T, Target, Key extends keyof T>(type: Target, key: Key): boolean {\r\n\t\treturn $array.any(this._callbacks.values, (x) => x.key === key && type instanceof x.type);\r\n\t}\r\n\r\n\t/**\r\n\t * Applies global adapters for the object of the specific type.\r\n\t *\r\n\t * @param type Class type\r\n\t * @param key Adapter key\r\n\t * @param value Value\r\n\t */\r\n\tpublic applyAll<T, Target, Key extends keyof T = keyof T>(type: Target, key: Key, value: T[Key]): T[Key] {\r\n\t\t// This is needed to improve the performance and reduce garbage collection\r\n\t\tconst callbacks = this._callbacks.values;\r\n\t\tconst length = callbacks.length;\r\n\r\n\t\tif (length == 0) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\t// Cycle through all callbacks and find the ones we need to use\r\n\t\tfor (let i = 0; i < length; ++i) {\r\n\t\t\tconst item = callbacks[i];\r\n\r\n\t\t\tif (item.key === key && type instanceof item.type) {\r\n\t\t\t\tvalue = (<any>item).callback.call(item.scope, value, type, key);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * A global Adapter for plugins that want to add specific\r\n * functionality for any chart, not just specific instance.\r\n *\r\n * If you want to add an adapter which applies to all instances of the same\r\n * object type, like, for instance all slices in PieSeries, you can use\r\n * global adapter.\r\n *\r\n * Global adapter is a system-wide instance, accessible via `globalAdapter`.\r\n *\r\n * ```TypeScript\r\n * am4core.globalAdapter.addAll<am4charts.IPieSeriesAdapters, am4charts.PieSeries, \"fill\">(am4charts.PieSeries, \"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * am4core.globalAdapter.addAll(am4charts.PieSeries, \"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n *\r\n * @todo Description (improve)\r\n */\r\nexport let globalAdapter: GlobalAdapter = new GlobalAdapter();\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REGULAR ADAPTER\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Adapter allows adding ordered callback functions and associating them with a\r\n * string-based key. An Adapter user can then easily invoke those callbacks to\r\n * apply custom functions on its input, output or intermediate values.\r\n *\r\n * Custom code and plugins can add their own callbacks to modify and enhance\r\n * core functionality.\r\n *\r\n * See the description of `add()` for an example.\r\n *\r\n * Almost any object in amCharts4 has own adapter, accessible with `adapter`\r\n * property.\r\n *\r\n * Any adapters added to it will be applied to that object only.\r\n *\r\n * ### Global Adapters\r\n *\r\n * If you want to add an adapter which applies to all instances of the same\r\n * object type, like, for instance all slices in PieSeries, you can use\r\n * global adapter.\r\n *\r\n * Global adapter is a system-wide instance, accessible via `globalAdapter`.\r\n *\r\n * ```TypeScript\r\n * am4core.globalAdapter.addAll<am4charts.IPieSeriesAdapters, am4charts.PieSeries, \"fill\">(am4charts.PieSeries. \"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * am4core.globalAdapter.addAll(am4charts.PieSeries. \"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n *\r\n * {@link https://www.amcharts.com/docs/v4/reference/adapter_module/#globalAdapter_property More info}.\r\n *\r\n * @important\r\n */\r\nexport class Adapter<Target, T> {\r\n\r\n\t/**\r\n\t * Internal counter for callback ids.\r\n\t */\r\n\tprivate _callbackId: number = 0;\r\n\r\n\t/**\r\n\t * A list of adapter callbacks.\r\n\t *\r\n\t * @param $number.order(left.priority, right.priority) [description]\r\n\t * @param $number.order(left.id, right.id));\t} [description]\r\n\t */\r\n\tprivate _callbacks = new SortedList<IAdapterCallback<Target, T>>((left, right) => {\r\n\t\treturn $order.or($number.order(left.priority, right.priority),\r\n\t\t\t$number.order(left.id, right.id));\r\n\t});\r\n\r\n\tprotected _disabled: { [key in keyof T]?: number } = {};\r\n\r\n\t/**\r\n\t * Holds an object reference this Adapter is for.\r\n\t */\r\n\tpublic object: Target;\r\n\r\n\t/**\r\n\t * Event dispatcher.\r\n\t */\r\n\tpublic events: EventDispatcher<{\r\n\t\tinserted: {};\r\n\t\tremoved: {};\r\n\t}>;\r\n\r\n\t/**\r\n\t * Constructor, sets the object referece this Adapter should be used for.\r\n\t *\r\n\t * @param c Object\r\n\t */\r\n\tconstructor(c: Target) {\r\n\t\tthis.object = c;\r\n\r\n\t\t// TODO this exposes the internal events\r\n\t\tthis.events = this._callbacks.events;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a callback for a specific key.\r\n\t *\r\n\t * ```TypeScript\r\n\t * // Override fill color value and make all slices green\r\n\t * chart.series.template.adapter.add(\"fill\", (value, target, key) => {\r\n\t * return am4core.color(\"#005500\");\r\n\t * });\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * // Override fill color value and make all slices green\r\n\t * chart.series.template.adapter.add(\"fill\", function(value, target, key) {\r\n\t * return am4core.color(\"#005500\");\r\n\t * });\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"series\": [{\r\n\t * // ...\r\n\t * \"adapter\": {\r\n\t * \t// Override fill color value and make all slices green\r\n\t * \t\"fill\": function(value, target, key) {\r\n\t * \t return am4core.color(\"#005500\");\r\n\t * \t}\r\n\t * }\r\n\t * }]\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * The above will call user-defined function (adapter) whenever `fill` value\r\n\t * is requested from the Pie series, allowing it to override the default\r\n\t * using custom code and any fuzzy logic.\r\n\t *\r\n\t * There can be any number of adapters set on one property key.\r\n\t *\r\n\t * In this case adapters will be applied in daisy-chain fashion. The first\r\n\t * adapter in queue will make its transformation. The next one will have\r\n\t * the output of the first adapter as a starting value, etc.\r\n\t *\r\n\t * The order of the adapters are determined either by the order they were\r\n\t * added in, or their `priority` value.\r\n\t *\r\n\t * The heigher the `priority`, the later in the game adapter will be applied.\r\n\t *\r\n\t * @param key Key\r\n\t * @param callback A callback function\r\n\t * @param priority The higher priority, the more chance the adapter will be applied last\r\n\t * @param scope Scope for the callback function\r\n\t */\r\n\tpublic add<Key extends keyof T, C>(key: Key, callback: (this: C, value: T[Key], target: Target, key: Key) => T[Key], priority: number = 0, scope?: C): void {\r\n\t\tthis._callbacks.insert({\r\n\t\t\tid: ++this._callbackId,\r\n\t\t\tkey: key,\r\n\t\t\tcallback: callback,\r\n\t\t\tpriority: priority,\r\n\t\t\tscope: scope\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Checks whether specific adapter is already set.\r\n\t *\r\n\t * @param key Key\r\n\t * @param callback A callback function\r\n\t * @param priority The higher priority, the more chance the adapter will be applied last\r\n\t * @param scope Scope for the callback function\r\n\t * @returns Adapter set?\r\n\t */\r\n\tpublic has<Key extends keyof T, C>(key: Key, callback: (this: C, value: T[Key], target: Target, key: Key) => T[Key], priority: number = 0, scope?: C): boolean {\r\n\t\treturn $iter.contains(this._callbacks.iterator(), (item) => {\r\n\t\t\treturn item.key === key && item.callback === callback && item.priority === priority && item.scope === scope;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Removes adapter callbacks for the specific `key`.\r\n\t *\r\n\t * If `priority` is specified, only callbacks for that priority are removed.\r\n\t *\r\n\t * @param key Key\r\n\t * @param priority Priority\r\n\t * @todo Implement\r\n\t */\r\n\tpublic remove(key: string, priority?: number): void {\r\n\t\t// It has to make a copy because it removes the elements while iterating\r\n\t\t// TODO inefficient\r\n\t\t// TODO should this re-enable the key ?\r\n\t\t$array.each($iter.toArray(this._callbacks.iterator()), (item) => {\r\n\t\t\t// TODO test this\r\n\t\t\tif (item.key === key && (!$type.isNumber(priority) || priority === item.priority)) {\r\n\t\t\t\tthis._callbacks.remove(item);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Enable applying adapters for a certain key, if it was disabled before by\r\n\t * `disableKey()`.\r\n\t *\r\n\t * @param key Key\r\n\t */\r\n\tpublic enableKey<Key extends keyof T>(key: Key): void {\r\n\t\tdelete this._disabled[key];\r\n\t}\r\n\r\n\t/**\r\n\t * Disable applying adapters for a certain key.\r\n\t *\r\n\t * Optionally, can set how many applies to skip before automatically\r\n\t * re-enabling the applying.\r\n\t *\r\n\t * @param key Key\r\n\t * @param amount Number of applies to skip\r\n\t */\r\n\tpublic disableKey<Key extends keyof T>(key: Key, amount: number = Infinity): void {\r\n\t\tthis._disabled[key] = amount;\r\n\t}\r\n\r\n\tprotected _hasListenersByType<Key extends keyof T>(key: Key): boolean {\r\n\t\treturn $array.any(this._callbacks.values, (x) => x.key === key);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns if there are any enabled adapters set for the specific `key`.\r\n\t *\r\n\t * @returns Are there any adapters for the key?\r\n\t */\r\n\tpublic isEnabled<Key extends keyof T>(key: Key): boolean {\r\n\t\treturn this._disabled[key] == null && (this._hasListenersByType(key) || globalAdapter.isEnabled<T, Target, Key>(this.object, key));\r\n\t}\r\n\r\n\tprotected _shouldDispatch<Key extends keyof T>(key: Key): boolean {\r\n\t\tconst count = this._disabled[key];\r\n\r\n\t\tif (!$type.isNumber(count)) {\r\n\t\t\treturn true;\r\n\r\n\t\t} else {\r\n\t\t\tif (count <= 1) {\r\n\t\t\t\tdelete this._disabled[key];\r\n\r\n\t\t\t} else {\r\n\t\t\t\t--this._disabled[key];\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Passes the input value through all the callbacks for the defined `key`.\r\n\t *\r\n\t * @param key Key\r\n\t * @param value Input value\r\n\t * @param ...rest Rest of the parameters to be passed into callback\r\n\t * @return Output value\r\n\t */\r\n\tpublic apply<Key extends keyof T>(key: Key, value: T[Key]): T[Key] {\r\n\t\tif (this._shouldDispatch(key)) {\r\n\t\t\t// This is needed to improve the performance and reduce garbage collection\r\n\t\t\tconst callbacks = this._callbacks.values;\r\n\t\t\tconst length = callbacks.length;\r\n\r\n\t\t\tif (length > 0) {\r\n\t\t\t\tfor (let i = 0; i < length; ++i) {\r\n\t\t\t\t\tconst item = callbacks[i];\r\n\r\n\t\t\t\t\tif (item.key === key) {\r\n\t\t\t\t\t\tvalue = item.callback.call(item.scope, value, this.object, key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Apply global adapters\r\n\t\t\tvalue = globalAdapter.applyAll<T, Target, Key>(this.object, key, value);\r\n\r\n\t\t\treturn value;\r\n\r\n\t\t} else {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns all adapter keys which are in this adapter.\r\n\t *\r\n\t * @return Adapter keys\r\n\t */\r\n\tpublic keys(): Array<string> {\r\n\t\t// TODO inefficient\r\n\t\treturn $iter.toArray($iter.map(this._callbacks.iterator(), (x) => x.key));\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Copies all the adapter callbacks from `source`.\r\n\t *\r\n\t * @param source An Adapter to copy items from\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\t$iter.each(source._callbacks.iterator(), (x) => {\r\n\t\t\tthis.add(x.key, x.callback, x.priority, x.scope);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Clears all callbacks from this Adapter.\r\n\t */\r\n\tpublic clear(): void {\r\n\t\t// TODO should this also re-enable all the keys ?\r\n\t\tthis._callbacks.clear();\r\n\t}\r\n\r\n}\r\n","/**\r\n * Animation module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObjectEvents, IBaseObjectEvents } from \"../Base\";\r\nimport { AMEvent } from \"../utils/EventDispatcher\";\r\nimport { SVGDefaults } from \"../defs/SVGDefaults\";\r\nimport { Disposer, IDisposer } from \"../utils/Disposer\";\r\nimport { Color } from \"../utils/Color\";\r\nimport { Percent, percent } from \"../utils/Percent\";\r\nimport * as $async from \"../utils/AsyncPending\";\r\nimport * as $ease from \"../utils/Ease\";\r\nimport * as $colors from \"../utils/Colors\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $type from \"../utils/Type\";\r\nimport { system } from \"../System\";\r\n\r\n\r\n/**\r\n * Defines interface for animation objects.\r\n *\r\n * Should at least contain `update()` method.\r\n */\r\nexport interface IAnimationObject {\r\n\tupdate: () => void\r\n}\r\n\r\n/**\r\n * Defines interface for objects that can be animated\r\n */\r\nexport interface IAnimatable {\r\n\tanimations: Array<Animation>;\r\n}\r\n\r\n\r\nexport type IAnimationOption = Color | Percent | number | string | boolean;\r\n\r\n/**\r\n * Defines interface for animation options.\r\n */\r\nexport interface IAnimationOptions {\r\n\r\n\t/**\r\n\t * An initial value to animate from.\r\n\t *\r\n\t * If omitted, the source value will be current value.\r\n\t */\r\n\tfrom?: IAnimationOption;\r\n\r\n\t/**\r\n\t * A target value to animate from.\r\n\t */\r\n\tto: IAnimationOption;\r\n\r\n\t/**\r\n\t * Property name to animate.\r\n\t */\r\n\tproperty?: any;\r\n\r\n\t/**\r\n\t * If current values should be taken from different object than the target\r\n\t * element of the animation, this property should be set to that object.\r\n\t */\r\n\tchildObject?: { [index: string]: any };\r\n\r\n\t/**\r\n\t * A method/function reference that will be called to for updating the\r\n\t * property value.\r\n\t */\r\n\tupdateMethod?(progress: number, from: IAnimationOption, to: IAnimationOption): IAnimationOption;\r\n\r\n\r\n\t/**\r\n\t * sometimes we need to pass some dummy data in animationOptions\r\n\t */\r\n\tdummyData?: any;\r\n\r\n}\r\n\r\n/**\r\n * An interface for an object defining [[Percent]] animation.\r\n */\r\nexport interface IPercentAnimationOptions extends IAnimationOptions {\r\n\r\n\t/**\r\n\t * Initial value.\r\n\t */\r\n\tfrom?: Percent;\r\n\r\n\t/**\r\n\t * Target value.\r\n\t */\r\n\tto: Percent;\r\n\r\n}\r\n\r\n/**\r\n * An interface for an object defining [[Color]] animation.\r\n */\r\nexport interface IColorAnimationOptions extends IAnimationOptions {\r\n\r\n\t/**\r\n\t * Initial value.\r\n\t */\r\n\tfrom?: Color;\r\n\r\n\t/**\r\n\t * Target value.\r\n\t */\r\n\tto: Color;\r\n\r\n}\r\n\r\n\r\n/**\r\n * Calls a `callback` function for the `duration` of milliseconds.\r\n *\r\n * @todo Needed?\r\n * @deprecated Not used anywhere\r\n * @ignore Exclude from docs\r\n * @param duration Duration (ms)\r\n * @param callback Callback function\r\n * @return Disposer\r\n */\r\nexport function animate(duration: number, callback: (time: number) => void): IDisposer {\r\n\tlet disposed = false;\r\n\r\n\t// TODO use performance.now() ?\r\n\tconst startTime = Date.now();\r\n\r\n\tfunction loop(now: number): void {\r\n\t\tif (!disposed) {\r\n\t\t\tconst diff = now - startTime;\r\n\r\n\t\t\tif (diff >= duration) {\r\n\t\t\t\tcallback(1);\r\n\r\n\t\t\t} else {\r\n\t\t\t\t$async.nextFrame(loop);\r\n\t\t\t\tcallback(diff / duration);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t$async.nextFrame(loop);\r\n\r\n\treturn new Disposer(() => {\r\n\t\tdisposed = true;\r\n\t});\r\n}\r\n\r\n\r\n/**\r\n * Defines events for [[Animation]].\r\n */\r\nexport interface IAnimationEvents extends IBaseObjectEvents {\r\n\r\n\t/**\r\n\t * Invoked when animation starts playing.\r\n\t */\r\n\tanimationstarted: {\r\n\t\tprogress: number;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when animation finishes playing.\r\n\t */\r\n\tanimationended: {\r\n\t\tprogress: number;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when animation makes progress.\r\n\t */\r\n\tanimationprogress: {\r\n\t\tprogress: number;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when animation is stopped by some other process, before it had\r\n\t * a chance to finish.\r\n\t */\r\n\tanimationstopped: {\r\n\t\tprogress: number;\r\n\t};\r\n\r\n}\r\n\r\n\r\n/**\r\n * Returns numeric value accoring to progress between start and end values.\r\n *\r\n * @param progress Progress (0-1)\r\n * @param from\r\n * @param to\r\n * @return Value according to progress\r\n */\r\nfunction getProgressNumber(progress: number, from: number, to: number): number {\r\n\treturn from + ((to - from) * progress);\r\n}\r\n\r\n/**\r\n * Returns [[Percent]] value accoring to progress between start and end\r\n * values.\r\n *\r\n * @param progress Progress (0-1)\r\n * @param from\r\n * @param to\r\n * @return Value according to progress\r\n */\r\nfunction getProgressPercent(progress: number, from: Percent, to: Percent): Percent {\r\n\treturn new Percent(getProgressNumber(progress, from.percent, to.percent));\r\n}\r\n\r\n/**\r\n * Returns color value accoring to progress between start and end values.\r\n *\r\n * @param progress Progress (0-1)\r\n * @param from\r\n * @param to\r\n * @return Color according to progress\r\n */\r\nfunction getProgressColor(progress: number, from: Color, to: Color): Color {\r\n\tconst color = new Color($colors.interpolate(from.rgb, to.rgb, progress));\r\n\tif (from.alpha != to.alpha) {\r\n\t\tcolor.alpha = from.alpha + (to.alpha - from.alpha) * progress;\r\n\t}\r\n\treturn color;\r\n}\r\n\r\n/**\r\n * [getHybridProperty description]\r\n *\r\n * @todo Description\r\n * @param property [description]\r\n * @param type [description]\r\n * @return [description]\r\n */\r\nfunction getHybridProperty(property: string, type: \"pixel\" | \"relative\"): string {\r\n\treturn type + property.charAt(0).toUpperCase() + property.substr(1);\r\n}\r\n\r\n\r\nexport class AnimationDisposer implements IDisposer {\r\n\tprivate _disposer: Disposer;\r\n\r\n\tconstructor(array: Array<Animation>) {\r\n\t\tthis._disposer = new Disposer(() => {\r\n\t\t\twhile (array.length !== 0) {\r\n\t\t\t\tarray[0].dispose();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tisDisposed(): boolean {\r\n\t\treturn this._disposer.isDisposed();\r\n\t}\r\n\r\n\tdispose(): void {\r\n\t\tthis._disposer.dispose();\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * Animation can be used to transition certain properties on an object that\r\n * implements [[IAnimatable]] interface.\r\n *\r\n * @see {@link IAnimationEvents} for a list of available events\r\n */\r\nexport class Animation extends BaseObjectEvents implements IAnimationObject {\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IAnimationEvents;\r\n\r\n\t/**\r\n\t * An animation target object. [[Animation]] will update properties of\r\n\t * this object.\r\n\t */\r\n\tpublic object: IAnimatable;\r\n\r\n\t/**\r\n\t * An array of animation option objects. Each animation object represent\r\n\t * one property. Animation can animate any number of properties\r\n\t * simultaneously.\r\n\t */\r\n\tpublic animationOptions: IAnimationOptions[];\r\n\r\n\t/**\r\n\t * Duration of the animation in milliseconds.\r\n\t */\r\n\tpublic duration: number = 0;\r\n\r\n\t/**\r\n\t * Easing function to use.\r\n\t *\r\n\t * @see {@link Ease}\r\n\t */\r\n\tpublic easing: (value: number) => number = $ease.linear;\r\n\r\n\t/**\r\n\t * Contains progress of the current animation: 0 (start) to 1 (end).\r\n\t */\r\n\tpublic progress: number = 0;\r\n\r\n\t/**\r\n\t * A list of options that cannot be animated. Those will be applied when\r\n\t * Animation ends.\r\n\t */\r\n\tprotected staticOptions!: IAnimationOptions[];\r\n\r\n\t/**\r\n\t * Indicated how many times animation should loop.\r\n\t */\r\n\tprotected _loop: number = 0;\r\n\r\n\t/**\r\n\t * Animation is paused.\r\n\t */\r\n\tprotected _pause: boolean = false;\r\n\r\n\t/**\r\n\t * Holds reference to timeout for delayed play.\r\n\t */\r\n\tprotected _delayTimeout: IDisposer | null = null;\r\n\r\n\t/**\r\n\t * A timestamp of when animation started playing.\r\n\t */\r\n\tprotected _startTime: $type.Optional<number>;\r\n\r\n\t/**\r\n\t * Elapsed time in currently playing animation.\r\n\t */\r\n\tprotected _time: number = 0;\r\n\r\n\t// TODO verify that this is correct\r\n\tprotected debug(): void { }\r\n\r\n\tprotected _isFinished: boolean = false;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t *\r\n\t * @param object An object animation should run on\r\n\t * @param animationOptions One or several (array) of animation options\r\n\t * @param duration Duration (ms)\r\n\t * @param easing Easing function\r\n\t */\r\n\tconstructor(object: IAnimatable, animationOptions: IAnimationOptions[] | IAnimationOptions, duration: number, easing?: (value: number) => number) {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"Animation\";\r\n\r\n\t\t// Set parameters\r\n\t\tthis.object = object;\r\n\t\tthis.animationOptions = $array.toArray(animationOptions);\r\n\t\tthis.duration = duration;\r\n\t\tif (easing) {\r\n\t\t\tthis.easing = easing;\r\n\t\t}\r\n\r\n\t\t// Run check if there are already animations playing on the same properties\r\n\t\t// and stop them - the last animation takes precedence\r\n\t\t//this.stopSameAnimations();\r\n\r\n\t\t/*if ($type.hasValue(callback)) {\r\n\t\t\t// TODO don't use .call\r\n\t\t\tthis.events.on(\"animationended\", callback, object);\r\n\t\t}*/\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Disposes this object, clears up after itself.\r\n\t */\r\n\tpublic dispose(): void {\r\n\t\tsuper.dispose();\r\n\t\tthis.pause();\r\n\t}\r\n\r\n\t/**\r\n\t * Delays animation start by X milliseconds.\r\n\t *\r\n\t * @param delay Delay (ms)\r\n\t * @return Animation\r\n\t */\r\n\tpublic delay(delay: number): Animation {\r\n\t\t//@todo Maybe not use `bind()`\r\n\t\tif (delay > 0) {\r\n\t\t\tthis.pause();\r\n\r\n\t\t\t// This is so that it will get disposed if `this.object` is disposed\r\n\t\t\t// TODO hacky, figure out a better way\r\n\t\t\t$array.move(this.object.animations, this);\r\n\r\n\t\t\tlet id = setTimeout(() => {\r\n\t\t\t\tthis._delayTimeout = null;\r\n\t\t\t\tthis.start();\r\n\t\t\t}, delay);\r\n\r\n\t\t\tthis._delayTimeout = new Disposer(() => {\r\n\t\t\t\tclearTimeout(id);\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n\r\n\tprivate _start() {\r\n\t\tthis._isFinished = false;\r\n\t\t// Clear delay timeout if there was one\r\n\t\tif (this._delayTimeout) {\r\n\t\t\tthis.removeDispose(this._delayTimeout);\r\n\t\t\tthis._delayTimeout = null;\r\n\t\t}\r\n\r\n\t\t// Run check if there are already animations playing on the same properties\r\n\t\t// and stop them - the last animation takes precedence\r\n\t\tthis.stopSameAnimations();\r\n\r\n\t\t// Reset counters\r\n\t\tthis._pause = false;\r\n\r\n\t\t// Register animation\r\n\t\t$array.move(system.animations, this);\r\n\r\n\t\t// Register this animation in object's `animations` list\r\n\t\t$array.move(this.object.animations, this);\r\n\r\n\t\tsystem.requestFrame();\r\n\t}\r\n\r\n\t/**\r\n\t * Starts animation.\r\n\t *\r\n\t * @return Animation\r\n\t */\r\n\tpublic start(): Animation {\r\n\t\tthis._start();\r\n\t\tthis._startTime = Date.now();\r\n\t\tthis._time = 0;\r\n\t\tthis.staticOptions = [];\r\n\r\n\t\t// Process initial property values\r\n\t\tfor (let i: number = this.animationOptions.length - 1; i >= 0; i--) {\r\n\t\t\tlet options: IAnimationOptions = this.animationOptions[i];\r\n\t\t\tif (!$type.hasValue(options.from)) {\r\n\t\t\t\tif (options.childObject) {\r\n\t\t\t\t\toptions.from = options.childObject[options.property];\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\toptions.from = (<any>this.object)[options.property];\r\n\r\n\t\t\t\t\tif (!$type.hasValue(options.from)) {\r\n\t\t\t\t\t\toptions.from = (<any>SVGDefaults)[options.property];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*if (!$type.hasValue(options.from)) {\r\n\t\t\t\t\tthrow Error(\"Could not get initial transition value.\");\r\n\t\t\t\t}*/\r\n\t\t\t}\r\n\r\n\t\t\tif (options.from == options.to) { // || options.to == (<any>this.object)[options.property]){ this is not good, as dataItem.value is set to final at once, and we animate workingValue\r\n\t\t\t\t$array.remove(this.animationOptions, options);\r\n\t\t\t}\r\n\t\t\telse if (!$type.hasValue(options.from) || (!(options.from instanceof Percent) && (options.to instanceof Percent)) || ((options.from instanceof Percent) && !(options.to instanceof Percent))) {\r\n\t\t\t\t// Initial value is undefined, treat it as static\r\n\t\t\t\tthis.staticOptions.push(options);\r\n\t\t\t\t$array.remove(this.animationOptions, options);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Use different update methods for different value types\r\n\t\t\t\tif ($type.isNumber(<number>options.to)) {\r\n\r\n\t\t\t\t\t// Numeric value\r\n\t\t\t\t\toptions.updateMethod = getProgressNumber;\r\n\r\n\t\t\t\t\t// Check if initial value is not Percent\r\n\t\t\t\t\tif (options.from instanceof Percent) {\r\n\t\t\t\t\t\t// It is. Let's convert it to pixel value\r\n\t\t\t\t\t\t// @todo Check if we can do this in a less hacky way\r\n\t\t\t\t\t\tlet convertedFrom: number = (<any>this.object)[getHybridProperty(options.property, \"pixel\")];\r\n\t\t\t\t\t\tif (!isNaN(convertedFrom)) {\r\n\t\t\t\t\t\t\toptions.from = convertedFrom;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tthis.staticOptions.push(options);\r\n\t\t\t\t\t\t\t$array.remove(this.animationOptions, options);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (isNaN(<number>options.from)) {\r\n\t\t\t\t\t\t// Static value\r\n\t\t\t\t\t\tthis.staticOptions.push(options);\r\n\t\t\t\t\t\t$array.remove(this.animationOptions, options);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// Check if maybe we have a color or percent value\r\n\t\t\t\t\tif (options.to instanceof Color) {\r\n\t\t\t\t\t\t// Yup - set resolved named color\r\n\t\t\t\t\t\t//options.from = $colors.stringToColor(<string>options.from);\r\n\t\t\t\t\t\tif (options.from) {\r\n\t\t\t\t\t\t\toptions.updateMethod = getProgressColor;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t// Static value\r\n\t\t\t\t\t\t\tthis.staticOptions.push(options);\r\n\t\t\t\t\t\t\t$array.remove(this.animationOptions, options);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (options.to instanceof Percent) {\r\n\t\t\t\t\t\t// Percent\r\n\t\t\t\t\t\toptions.updateMethod = getProgressPercent;\r\n\r\n\t\t\t\t\t\t// Check if the initial value is maybe in pixels\r\n\t\t\t\t\t\tif (!isNaN(<number>options.from)) {\r\n\t\t\t\t\t\t\t// It is. Let's convert it\r\n\t\t\t\t\t\t\t// @todo Check if we can do this in a less hacky way\r\n\t\t\t\t\t\t\tlet convertedFrom: number = (<any>this.object)[getHybridProperty(options.property, \"relative\")];\r\n\t\t\t\t\t\t\tif (!isNaN(convertedFrom)) {\r\n\t\t\t\t\t\t\t\toptions.from = percent(convertedFrom * 100);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t// Static value\r\n\t\t\t\t\t\tthis.staticOptions.push(options);\r\n\t\t\t\t\t\t$array.remove(this.animationOptions, options);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Apply static options (just in case they were reset by previous\r\n\t\t// animation loop)\r\n\t\tthis.applyStaticOptions();\r\n\r\n\t\tif (this.events.isEnabled(\"animationstarted\")) {\r\n\t\t\tconst event: AMEvent<this, IAnimationEvents>[\"animationstarted\"] = {\r\n\t\t\t\ttype: \"animationstarted\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\tprogress: this.progress\r\n\t\t\t};\r\n\t\t\tthis.events.dispatchImmediately(\"animationstarted\", event);\r\n\t\t}\r\n\r\n\t\tthis.update();\r\n\r\n\t\t// If duration is 0, just end animation\r\n\t\tif (this.duration === 0) {\r\n\t\t\tthis.end();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets loop count for the animation. If parameter is not a valid number the\r\n\t * animation will keep on looping indefinitely.\r\n\t *\r\n\t * @param count Number of times to loop animation\r\n\t * @return Animation\r\n\t */\r\n\tpublic loop(count?: number): Animation {\r\n\t\tif (!$type.isNumber(count)) {\r\n\t\t\tcount = Infinity;\r\n\t\t}\r\n\t\tthis._loop = count;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Pauses animation.\r\n\t *\r\n\t * @return Animation\r\n\t */\r\n\tpublic pause(): Animation {\r\n\t\tthis._pause = true;\r\n\r\n\t\tif (this._delayTimeout) {\r\n\t\t\tthis.removeDispose(this._delayTimeout);\r\n\t\t\tthis._delayTimeout = null;\r\n\t\t}\r\n\r\n\t\t$array.remove(system.animations, this);\r\n\t\t$array.remove(this.object.animations, this);\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Resumes paused animation.\r\n\t *\r\n\t * @return Animation\r\n\t */\r\n\tpublic resume(): Animation {\r\n\t\tthis._start();\r\n\t\tthis._startTime = Date.now() - this._time;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Jumps to animation end. If animation is set to loop, this will start\r\n\t * another round of animation from start.\r\n\t *\r\n\t * @return Animation\r\n\t */\r\n\tpublic end(): Animation {\r\n\r\n\t\t// Pause and complete the progress\r\n\t\tif (this._loop == 0) {\r\n\t\t\tthis.pause();\r\n\t\t}\r\n\t\tthis.setProgress(1);\r\n\r\n\t\t// Apply static options\r\n\t\tthis.applyStaticOptions();\r\n\r\n\t\tif (this.events.isEnabled(\"animationended\")) {\r\n\t\t\tconst event: AMEvent<this, IAnimationEvents>[\"animationended\"] = {\r\n\t\t\t\ttype: \"animationended\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\tprogress: this.progress\r\n\t\t\t};\r\n\t\t\tthis.events.dispatchImmediately(\"animationended\", event);\r\n\t\t}\r\n\r\n\t\t// Check if we should loop\r\n\t\tif (this._loop > 0) {\r\n\t\t\tthis._loop--;\r\n\t\t\tthis.start();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.stop();\r\n\t\t\tthis._isFinished = true;\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Stops animation immediately leaving properties in their current values.\r\n\t */\r\n\tpublic kill() {\r\n\t\tthis.pause();\r\n\t\tthis._isFinished = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns indicator if this animation is finished or not\r\n\t *\r\n\t * @return Is finished?\r\n\t */\r\n\tpublic isFinished(): boolean {\r\n\t\treturn this._isFinished;\r\n\t}\r\n\r\n\t/**\r\n\t * Applies static options that can't be animated.\r\n\t */\r\n\tprotected applyStaticOptions(): void {\r\n\t\t$array.each(this.staticOptions, (options) => {\r\n\t\t\tif (options.childObject) {\r\n\t\t\t\toptions.childObject[options.property] = this.progress == 1 ? options.to : options.from;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t(<any>this.object)[options.property] = this.progress == 1 ? options.to : options.from;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Stops animation.\r\n\t *\r\n\t * When animation is stopped, the properties of the target object will remain\r\n\t * where they were at the moment when `stop()` was called.\r\n\t *\r\n\t * @param skipEvent Do not trigger `animationstopped` event\r\n\t * @return Animation\r\n\t */\r\n\tpublic stop(skipEvent?: boolean): Animation {\r\n\t\tthis.pause();\r\n\t\tif (!skipEvent) {\r\n\t\t\tif (this.events.isEnabled(\"animationstopped\")) {\r\n\t\t\t\tconst event: AMEvent<this, IAnimationEvents>[\"animationstopped\"] = {\r\n\t\t\t\t\ttype: \"animationstopped\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tprogress: this.progress\r\n\t\t\t\t};\r\n\t\t\t\tthis.events.dispatchImmediately(\"animationstopped\", event);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets current progress and updates object's numeric and color values.\r\n\t *\r\n\t * @param progress Progress (0-1)\r\n\t */\r\n\tpublic setProgress(progress: number): void {\r\n\t\tthis._time = this.duration * progress; // just in case we call this from outside\r\n\t\t$array.each(this.animationOptions, (options) => {\r\n\t\t\tif (options.updateMethod && $type.hasValue(options.from)) {\r\n\t\t\t\tlet value = options.updateMethod(progress, options.from, options.to);\r\n\r\n\t\t\t\tif (options.childObject) {\r\n\t\t\t\t\toptions.childObject[options.property] = value;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t(<any>this.object)[options.property] = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.progress = progress;\r\n\t\tif (this.events.isEnabled(\"animationprogress\")) {\r\n\t\t\tconst event: AMEvent<this, IAnimationEvents>[\"animationprogress\"] = {\r\n\t\t\t\ttype: \"animationprogress\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\tprogress: this.progress\r\n\t\t\t};\r\n\t\t\tthis.events.dispatchImmediately(\"animationprogress\", event);\r\n\t\t}\r\n\r\n\t\tsystem.requestFrame();\r\n\t}\r\n\r\n\t/**\r\n\t * Tracks and sets progress according to time or frames.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Animation\r\n\t */\r\n\tpublic update(): Animation {\r\n\t\tif (!this._pause) {\r\n\r\n\t\t\tlet progress;\r\n\t\t\tthis._time = $math.fitToRange(Date.now() - this._startTime!, 0, this.duration);\r\n\t\t\tlet timeProgress = this._time / this.duration;\r\n\t\t\tprogress = this.easing(timeProgress);\r\n\t\t\tif (this.duration == 0 || !$type.isNumber(progress) || timeProgress >= 1) {\r\n\t\t\t\tprogress = 1;\r\n\t\t\t}\r\n\r\n\t\t\tthis.setProgress(progress);\r\n\r\n\t\t\tif ($math.round(this._time / this.duration, 6) == 1) {\r\n\t\t\t\tthis.end();\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if this animation is delayed.\r\n\t *\r\n\t * @readonly\r\n\t * @return [description]\r\n\t */\r\n\tpublic get delayed(): boolean {\r\n\t\treturn this._delayTimeout ? true : false;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks other animations currently running on the same object and removes\r\n\t * overlapping options from those other animations that are contained in\r\n\t * this animation.\r\n\t *\r\n\t * This is needed to ensure that no two confurent animations step on each\r\n\t * other's toes by trying to animate the same property.\r\n\t */\r\n\tprivate stopSameAnimations(): void {\r\n\t\t// stop animation of the same property\r\n\t\t// TODO make this more efficient\r\n\t\t// TODO don't copy the array\r\n\t\t$array.each($array.copy(this.object.animations), (animation) => {\r\n\t\t\tif (animation !== this && !animation.delayed) {\r\n\t\t\t\tconst killed: Array<IAnimationOptions> = [];\r\n\r\n\t\t\t\t$array.each(this.animationOptions, (newOptions) => {\r\n\t\t\t\t\t$array.each(animation.animationOptions, (oldOptions) => {\r\n\t\t\t\t\t\tif (newOptions.property == oldOptions.property && newOptions.childObject == oldOptions.childObject) {\r\n\t\t\t\t\t\t\tkilled.push(oldOptions);\r\n\r\n\t\t\t\t\t\t\tif (animation.animationOptions.length == 0) {\r\n\t\t\t\t\t\t\t\tanimation.kill();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$array.each(killed, (oldOptions) => {\r\n\t\t\t\t\t$array.remove(animation.animationOptions, oldOptions);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Adds easing functions to \"function\" fields.\r\n\t *\r\n\t * @param field Field name\r\n\t * @return Assign as function?\r\n\t */\r\n\tprotected asFunction(field: string): boolean {\r\n\t\treturn field == \"easing\" || super.asIs(field);\r\n\t}\r\n\r\n}","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Ordering } from \"./Order\";\r\nimport { Optional } from \"./Type\";\r\nimport * as $math from \"./Math\";\r\nimport * as $type from \"./Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * UTILITY FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Searches `array` for `value`.\r\n *\r\n * Returns -1 if not found.\r\n *\r\n * @param array Source array\r\n * @param value Value to search\r\n * @returns Index\r\n */\r\nexport function indexOf<A>(array: ArrayLike<A>, value: A): number {\r\n\tconst length = array.length;\r\n\r\n\tfor (let i = 0; i < length; ++i) {\r\n\t\t// TODO handle NaN\r\n\t\tif (array[i] === value) {\r\n\t\t\treturn i;\r\n\t\t}\r\n\t}\r\n\r\n\treturn -1;\r\n}\r\n\r\n/**\r\n * Calls `test` for each element in `array`.\r\n *\r\n * If `test` returns `true` then it immediately returns `true`.\r\n *\r\n * If `test` returns `false` for all of the elements in `array` then it returns `false`.\r\n *\r\n * @param array Source array\r\n * @param test Function which is called on each element\r\n * @returns Whether `test` returned true or not\r\n */\r\nexport function any<A>(array: ArrayLike<A>, test: (value: A) => boolean): boolean {\r\n\tconst length = array.length;\r\n\r\n\tfor (let i = 0; i < length; ++i) {\r\n\t\tif (test(array[i])) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\treturn false;\r\n}\r\n\r\n/**\r\n * Calls `fn` function for every member of array and returns a new array out\r\n * of all outputs.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n * @returns New array\r\n */\r\nexport function map<A, B>(array: ArrayLike<A>, fn: (value: A, index: number) => B): Array<B> {\r\n\tconst length = array.length;\r\n\tconst output = new Array(length);\r\n\r\n\tfor (let i = 0; i < length; ++i) {\r\n\t\toutput[i] = fn(array[i], i);\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function each<A>(array: ArrayLike<A>, fn: (value: A, index: number) => void): void {\r\n\tconst length = array.length;\r\n\r\n\tfor (let i = 0; i < length; ++i) {\r\n\t\tfn(array[i], i);\r\n\t}\r\n}\r\n\r\n/**\r\n * Iterates through all items in array in reverse order and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function eachReverse<A>(array: ArrayLike<A>, fn: (value: A, index: number) => void): void {\r\n\tlet i = array.length;\r\n\r\n\twhile (i--) {\r\n\t\tfn(array[i], i);\r\n\t}\r\n}\r\n\r\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * If `fn` call evaluates to `false`, further iteration is cancelled.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function eachContinue<A>(array: ArrayLike<A>, fn: (value: A, index: number) => boolean): void {\r\n\tconst length = array.length;\r\n\r\n\tfor (let i = 0; i < length; ++i) {\r\n\t\tif (!fn(array[i], i)) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Shifts an item at `index` towards beginning of the array.\r\n *\r\n * @param array Source array\r\n * @param index Target element index\r\n */\r\nexport function shiftLeft<A>(array: Array<A>, index: number): void {\r\n\tconst length = array.length;\r\n\r\n\tfor (let i = index; i < length; ++i) {\r\n\t\tarray[i - index] = array[i];\r\n\t}\r\n\r\n\tarray.length = length - index;\r\n}\r\n\r\n/**\r\n * Returns the last item of the array.\r\n *\r\n * @param array Source array\r\n * @returns Last item\r\n */\r\nexport function last<A>(array: Array<A>): Optional<A> {\r\n\tconst length = array.length;\r\n\treturn length ? array[length - 1] : undefined;\r\n}\r\n\r\n/**\r\n * Returns the first item of the array.\r\n *\r\n * @param array Source array\r\n * @returns Last item\r\n */\r\nexport function first<A>(array: Array<A>): Optional<A> {\r\n\treturn array[0];\r\n}\r\n\r\n/**\r\n * Inserts `element` into `array` at `index`.\r\n *\r\n * Caps `index` to be between `0` and `array.length`\r\n *\r\n * @param array Source array\r\n * @param element Item to insert\r\n * @param array Index to insert item at\r\n */\r\nexport function insert<A>(array: Array<A>, element: A, index: number): void {\r\n\t//if (array) {\r\n\tindex = $math.fitToRange(index, 0, array.length);\r\n\tarray.splice(index, 0, element);\r\n\t//}\r\n}\r\n\r\n/**\r\n * Removes all copies of `element` from `array` (if they exist) and then\r\n * inserts `element` at `index`.\r\n *\r\n * @param array Source array\r\n * @param element Item\r\n * @param array Index to move item to\r\n */\r\nexport function setIndex<A>(array: Array<A>, element: A, index: number): void {\r\n\tremove(array, element);\r\n\tinsert(array, element, index);\r\n}\r\n\r\n\r\n/**\r\n * Pushes all of the elements from `input` into `array`.\r\n *\r\n * @param array Output array\r\n * @param input Input array\r\n */\r\nexport function pushAll<A>(array: Array<A>, input: Array<A>) {\r\n\tconst length = input.length;\r\n\r\n\tfor (let i = 0; i < length; ++i) {\r\n\t\tarray.push(input[i]);\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * Removes `element` from `array`.\r\n *\r\n * If there are multiple copies of `element`, they are all removed.\r\n *\r\n * @param array Source array\r\n * @param element Item to remove\r\n */\r\nexport function remove<A>(array: Array<A>, element: A): boolean {\r\n\tlet found: boolean = false;\r\n\tlet index: number = array.indexOf(element);\r\n\r\n\tif (index !== -1) {\r\n\t\tfound = true;\r\n\t\tarray.splice(index, 1);\r\n\r\n\t\tlet length: number = array.length;\r\n\r\n\t\twhile (index < length) {\r\n\t\t\t// TODO handle NaN\r\n\t\t\tif (array[index] === element) {\r\n\t\t\t\tarray.splice(index, 1);\r\n\t\t\t\t--length;\r\n\r\n\t\t\t} else {\r\n\t\t\t\t++index;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn found;\r\n}\r\n\r\n/**\r\n * Adds an `element` to `array`.\r\n *\r\n * If array already contains and item like this, it is removed before adding\r\n * it again.\r\n *\r\n * Optionally `toIndex` can be specified to add element at specific index.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n * @param array Index to move item to\r\n */\r\nexport function move<A>(array: Array<A>, element: A, toIndex?: number): void {\r\n\t// @todo this implementation must be the same as the List.moveValue method\r\n\t// @todo don't do anything if the desired index is the same as the current index\r\n\tlet index = indexOf(array, element);\r\n\r\n\t// @todo remove all old values rather than only the first ?\r\n\tif (index !== -1) {\r\n\t\tremoveIndex(array, index);\r\n\t}\r\n\r\n\tif (toIndex == null) {\r\n\t\tarray.push(element);\r\n\t} else {\r\n\t\tinsertIndex(array, toIndex, element);\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * Inserts `element` into `array` at `index`.\r\n *\r\n * If `index` is not provided, it will insert `element` at the end of `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n * @param array Index to add item at\r\n */\r\nexport function add<A>(array: Array<A>, element: A, index?: number): void {\r\n\t// Append to the end if index is not set\r\n\tif (!$type.isNumber(index)) {\r\n\t\tarray.push(element);\r\n\t}\r\n\r\n\t// Add to the beginning of array if index is 0\r\n\telse if (index === 0) {\r\n\t\tarray.unshift(element);\r\n\t}\r\n\t// Add to indicated place if index is set\r\n\telse {\r\n\t\tarray.splice(index, 0, element);\r\n\t}\r\n}\r\n\r\n/**\r\n * Removes `element` from `array` (if it exists) and then inserts `element` at\r\n * `index`.\r\n *\r\n * If `index` is not provided, it will insert `element` at the end of `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to remove\r\n * @param array Index to move item to\r\n */\r\nexport function replace<A>(array: Array<A>, element: A, index?: number): void {\r\n\t// check if exists\r\n\tlet ind: number = array.indexOf(element);\r\n\r\n\t// remove if exists\r\n\tif (ind !== -1) {\r\n\t\tarray.splice(ind, 1);\r\n\t}\r\n\r\n\t// add to end if index is not set\r\n\tif (!$type.isNumber(index)) {\r\n\t\tarray.push(element);\r\n\t}\r\n\t// add to indicated place if index is set\r\n\telse {\r\n\t\tarray.splice(index, 0, element);\r\n\t}\r\n}\r\n\r\n/**\r\n * Wraps `input` in an array, if it isn't already an array.\r\n *\r\n * @param input Source value\r\n * @return An array\r\n */\r\nexport function toArray<A>(input: Array<A> | A): Array<A> {\r\n\tif (Array.isArray(input)) {\r\n\t\treturn input;\r\n\t}\r\n\telse {\r\n\t\treturn [input];\r\n\t}\r\n}\r\n\r\n/**\r\n * Returns `true` if `element` exists in `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to search for\r\n * @returns Item in array?\r\n */\r\nexport function has<A>(array: ArrayLike<A>, element: A): boolean {\r\n\treturn indexOf(array, element) !== -1;\r\n}\r\n\r\n/**\r\n * Returns a shallow copy of `array`.\r\n *\r\n * @param array Source array\r\n * @returns Copy of the array\r\n */\r\nexport function copy<A>(array: ArrayLike<A>): Array<A> {\r\n\tconst length = array.length;\r\n\r\n\t// It's faster to create the array with a pre-defined length\r\n\tconst output = new Array(length);\r\n\r\n\tfor (let i = 0; i < length; ++i) {\r\n\t\t// Because the array has a pre-defined length, we have to assign rather than push\r\n\t\t// This is also faster than pushing\r\n\t\toutput[i] = array[i];\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\n\r\n/**\r\n * Returns a copy of `array` which contains all the elements between `start`\r\n * and `end`. (including `start` and excluding `end`)\r\n *\r\n * If `end` is not provided, it defaults to `array.length`.\r\n *\r\n * @param array Source array\r\n * @param start Start index\r\n * @param end End index\r\n * @returns Part of the array\r\n */\r\nexport function slice<A>(array: ArrayLike<A>, start: number, end: number = array.length): Array<A> {\r\n\tconst output = new Array(end - start);\r\n\r\n\tfor (let i = start; i < end; ++i) {\r\n\t\toutput[i - start] = array[i];\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\n/**\r\n * Inserts a value into array at specific index.\r\n *\r\n * @param array Source array\r\n * @param index Index\r\n * @param value Value to insert\r\n */\r\nexport function insertIndex<A>(array: Array<A>, index: number, value: A): void {\r\n\tarray.splice(index, 0, value);\r\n}\r\n\r\n/**\r\n * Removes a value from array at specific index.\r\n *\r\n * @param array Source array\r\n * @param index Index\r\n */\r\nexport function removeIndex<A>(array: Array<A>, index: number): void {\r\n\tarray.splice(index, 1);\r\n}\r\n\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport interface SortResult {\r\n\tfound: boolean;\r\n\tindex: number\r\n}\r\n\r\n/**\r\n * Orders an array using specific `ordering` function and returns index of\r\n * the `value`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param array Source array\r\n * @param ordering An ordering function\r\n * @param value Value to search for\r\n * @returns Result of the search\r\n */\r\nexport function getSortedIndex<A>(array: ArrayLike<A>, ordering: (left: A, right: A) => Ordering, value: A): SortResult {\r\n\tlet start = 0;\r\n\tlet end = array.length;\r\n\tlet found = false;\r\n\r\n\twhile (start < end) {\r\n\t\t// TODO is this faster/slower than using Math.floor ?\r\n\t\tconst pivot = (start + end) >> 1;\r\n\r\n\t\tconst order = ordering(value, array[pivot]);\r\n\r\n\t\t// less\r\n\t\tif (order < 0) {\r\n\t\t\tend = pivot;\r\n\r\n\t\t// equal\r\n\t\t} else if (order === 0) {\r\n\t\t\tfound = true;\r\n\t\t\tstart = pivot + 1;\r\n\r\n\t\t// more\r\n\t\t} else {\r\n\t\t\tstart = pivot + 1;\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tfound: found,\r\n\t\tindex: (found ? start - 1 : start)\r\n\t};\r\n}\r\n\r\n/**\r\n * Searches the array using custom function and returns index of the item if\r\n * found.\r\n *\r\n * Will call `matches` function on all items of the array. If return value\r\n * evaluates to `true`, index is returned.\r\n *\r\n * Otherwise returns -1.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Index of the item if found\r\n */\r\nexport function findIndex<A>(array: ArrayLike<A>, matches: (value: A, index: number) => boolean): number {\r\n\tconst length = array.length;\r\n\r\n\tfor (let i = 0; i < length; ++i) {\r\n\t\tif (matches(array[i], i)) {\r\n\t\t\treturn i;\r\n\t\t}\r\n\t}\r\n\r\n\treturn -1;\r\n}\r\n\r\n/**\r\n * Searches the array using custom function and returns item if found.\r\n *\r\n * Will call `matches` function on all items of the array. If return value\r\n * evaluates to `true`, index is returned.\r\n *\r\n * Otherwise returns `undefined`.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Item if found\r\n */\r\nexport function find<A>(array: ArrayLike<A>, matches: (value: A, index: number) => boolean): A | undefined {\r\n\tconst index = findIndex(array, matches);\r\n\r\n\tif (index !== -1) {\r\n\t\treturn array[index];\r\n\t}\r\n}\r\n\r\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\r\nexport function shuffle<A>(array: Array<A>) {\r\n\t// https://stackoverflow.com/a/2450976/449477\r\n\tlet currentIndex = array.length,\r\n\t\ttemporaryValue,\r\n\t\trandomIndex;\r\n\r\n\t// While there remain elements to shuffle...\r\n\twhile (0 !== currentIndex) {\r\n\t\t// Pick a remaining element...\r\n\t\trandomIndex = Math.floor(Math.random() * currentIndex);\r\n\t\tcurrentIndex -= 1;\r\n\r\n\t\t// And swap it with the current element.\r\n\t\ttemporaryValue = array[currentIndex];\r\n\t\tarray[currentIndex] = array[randomIndex];\r\n\t\tarray[randomIndex] = temporaryValue;\r\n\t}\r\n}\r\n","/**\r\n * A collection of low-level async operation stuff.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $array from \"./Array\";\r\n\r\n/**\r\n * [Listener description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport type Listener = (now: number) => void;\r\n\r\nlet pendingFrame = false;\r\n\r\nconst nextQueue: Array<Listener> = [];\r\nconst readQueue: Array<Listener> = [];\r\nconst writeQueue: Array<Listener> = [];\r\nconst idleQueue: Array<Listener> = [];\r\n\r\n\r\nconst fps = 1000 / 60;\r\n\r\n/**\r\n * [raf description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport const raf =\r\n\t(typeof requestAnimationFrame === \"function\"\r\n\t\t? function(fn: () => void): void {\r\n\t\t\trequestAnimationFrame(fn);\r\n\t\t}\r\n\t\t: function(fn: () => void): void {\r\n\t\t\tsetTimeout(fn, fps);\r\n\t\t});\r\n\r\n/**\r\n * [frameLoop description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nfunction frameLoop(): void {\r\n\tconst now = Date.now();\r\n\r\n\r\n\tconst length = nextQueue.length;\r\n\r\n\tfor (let i = 0; i < length; ++i) {\r\n\t\tnextQueue[i](now);\r\n\t}\r\n\r\n\t$array.shiftLeft(nextQueue, length);\r\n\r\n\r\n\tfor (let i = 0; i < readQueue.length; ++i) {\r\n\t\treadQueue[i](now);\r\n\t}\r\n\r\n\treadQueue.length = 0;\r\n\r\n\r\n\tfor (let i = 0; i < writeQueue.length; ++i) {\r\n\t\twriteQueue[i](now);\r\n\t}\r\n\r\n\twriteQueue.length = 0;\r\n\r\n\r\n\tif (nextQueue.length === 0 && readQueue.length === 0) {\r\n\t\tpendingFrame = false;\r\n\r\n\t} else {\r\n\t\traf(frameLoop);\r\n\t}\r\n}\r\n\r\n/**\r\n * [pendFrame description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nfunction pendFrame(): void {\r\n\tif (!pendingFrame) {\r\n\t\tpendingFrame = true;\r\n\r\n\t\traf(frameLoop);\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * [nextFrame description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param fn [description]\r\n */\r\nexport function nextFrame(fn: Listener): void {\r\n\tnextQueue.push(fn);\r\n\tpendFrame();\r\n}\r\n\r\n/**\r\n * [readFrame description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param fn [description]\r\n */\r\nexport function readFrame(fn: Listener): void {\r\n\treadQueue.push(fn);\r\n\tpendFrame();\r\n}\r\n\r\n/**\r\n * [writeFrame description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param fn [description]\r\n */\r\nexport function writeFrame(fn: Listener): void {\r\n\twriteQueue.push(fn);\r\n\tpendFrame();\r\n}\r\n\r\n/**\r\n * [whenIdle description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param fn [description]\r\n */\r\nexport function whenIdle(fn: Listener): void {\r\n\tidleQueue.push(fn);\r\n}\r\n\r\n/**\r\n * [triggerIdle description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @todo Maybe don't trigger a callback which was added while in the middle of triggering?\r\n */\r\nexport function triggerIdle(): void {\r\n\tconst now = Date.now();\r\n\r\n\tconst length = idleQueue.length;\r\n\r\n\tfor (let i = 0; i < length; ++i) {\r\n\t\t(<any>idleQueue.shift())(now);\r\n\t}\r\n}\r\n","// Also detects iOS\nexport function isSafari(): boolean {\n\treturn /apple/i.test(navigator.vendor);\n}\n\nexport function isInternetExplorer(): boolean {\n\treturn /MSIE |Trident\\//.test(navigator.userAgent);\n}\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Dictionary } from \"./Dictionary\";\r\nimport * as $type from \"./Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines an interface for cache items.\r\n */\r\ninterface CacheItem<A> {\r\n\r\n\t/**\r\n\t * A timestamp of when the item was created/updated.\r\n\t */\r\n\t\"touched\": number,\r\n\r\n\t/**\r\n\t * TTL (time to live) in milliseconds.\r\n\t */\r\n\t\"ttl\"?: number,\r\n\r\n\t/**\r\n\t * Cached value.\r\n\t */\r\n\t\"value\": A,\r\n\r\n\t/**\r\n\t * Is this item expired?\r\n\t *\r\n\t * @todo a system process that would check chace element TTLs and expire them\r\n\t */\r\n\t\"expired\"?: boolean\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Represents object cache.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Better storage\r\n * @todo TTL logging\r\n * @todo Garbage collector\r\n */\r\nexport class Cache<A> {\r\n\r\n\t/**\r\n\t * Storage for cache items.\r\n\t */\r\n\tprivate _storage = new Dictionary<string, Dictionary<string, CacheItem<A>>>();\r\n\r\n\t/**\r\n\t * Default TTL in milliseconds.\r\n\t */\r\n\tpublic ttl: number = 1000;\r\n\r\n\t/**\r\n\t * Caches or updates cached value, resets TTL.\r\n\t *\r\n\t * If `ttl` is set to zero, item will never expire.\r\n\t *\r\n\t * @param owner An id of the object that owns this cache\r\n\t * @param key Index key\r\n\t * @param value Value\r\n\t * @param ttl TTL of the cache to live in milliseconds\r\n\t */\r\n\tpublic set(owner: string, key: string, value: A, ttl?: number): void {\r\n\r\n\t\t// Create if storage does not exist for this owner\r\n\t\tlet ownerStorage = this._storage.insertKeyIfEmpty(owner, () => new Dictionary<string, CacheItem<A>>());\r\n\r\n\t\t// Create cache item\r\n\t\tlet item: CacheItem<A> = {\r\n\t\t\t\"touched\": new Date().getTime(),\r\n\t\t\t\"ttl\": $type.isNumber(ttl) ? ttl : this.ttl,\r\n\t\t\t\"value\": value\r\n\t\t};\r\n\r\n\t\t// Set\r\n\t\townerStorage.setKey(key, item);\r\n\t}\r\n\r\n\t/**\r\n\t * Rerturns cached item, respecting TTL.\r\n\t *\r\n\t * @param owner An id of the object that owns this cache\r\n\t * @param key Index key\r\n\t * @param value Value to return if cache not available\r\n\t * @return Value, or `undefined` if not set\r\n\t */\r\n\tpublic get(owner: string, key: string, value: any = undefined): $type.Optional<A> {\r\n\t\t// \t\t || ypeof this._storage[owner][key] === \"undefined\" || this._storage[owner][key].expired === true) {\r\n\t\tif (this._storage.hasKey(owner)) {\r\n\t\t\tlet ownerStorage = <Dictionary<string, CacheItem<A>>>this._storage.getKey(owner);\r\n\r\n\t\t\tif (ownerStorage.hasKey(key)) {\r\n\t\t\t\tlet cacheItem: CacheItem<A> = <CacheItem<A>>ownerStorage.getKey(key);\r\n\t\t\t\tif (cacheItem.ttl && ((cacheItem.touched + cacheItem.ttl) < new Date().getTime())) {\r\n\t\t\t\t\tcacheItem.expired = true;\r\n\t\t\t\t}\r\n\t\t\t\tif (cacheItem.expired) {\r\n\t\t\t\t\townerStorage.removeKey(key);\r\n\t\t\t\t\treturn value;\r\n\t\t\t\t}\r\n\t\t\t\treturn cacheItem.value;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Clears cache for specific owner or everything.\r\n\t *\r\n\t * @param owner Owner to clear cache for\r\n\t */\r\n\tpublic clear(owner?: string): void {\r\n\t\tif (owner) {\r\n\t\t\tthis._storage.removeKey(owner);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._storage.clear();\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * ============================================================================\r\n * GLOBAL INSTANCE\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A global instance of cache. Use this instance to cache any values.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport let cache: Cache<any> = new Cache();\r\n","/**\r\n * This module contains Color object definition\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { iRGB, iHSV, iHSL } from \"./Colors\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $colors from \"./Colors\";\r\nimport * as $type from \"./Type\";\r\n\r\n// Re-export\r\nexport { iRGB, iHSV, iHSL };\r\n\r\n/**\r\n * Represents a color.\r\n *\r\n * `Color` accepts value only in [[iRGB]] object format. To create `Color`\r\n * object by parsing it from any supported string-based formats, use helper\r\n * [[color]] function:\r\n *\r\n * ```TypeScript\r\n * am4core.color(\"#ff0000\");\r\n * am4core.color(\"#f00\");\r\n * am4core.color(\"rgb(255, 0, 0)\");\r\n * am4core.color(\"rgba(255, 0, 0, 0.5)\");\r\n * am4core.color({ r: 255, g: 0, b: 0 });\r\n * am4core.color(\"red\");\r\n * ```\r\n * ```JavaScript\r\n * am4core.color(\"#ff0000\");\r\n * am4core.color(\"#f00\");\r\n * am4core.color(\"rgb(255, 0, 0)\");\r\n * am4core.color(\"rgba(255, 0, 0, 0.5)\");\r\n * am4core.color({ r: 255, g: 0, b: 0 });\r\n * am4core.color(\"red\");\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/colors/} for color-related info\r\n */\r\nexport class Color {\r\n\r\n\t/**\r\n\t * Light color (used when light contrasting color is required).\r\n\t *\r\n\t * @param {Color}\r\n\t * @ignore\r\n\t */\r\n\tprotected _lightColor: $type.Optional<Color>;\r\n\r\n\t/**\r\n\t * Dark color (used when dark contrasting color is required).\r\n\t *\r\n\t * @param {Color}\r\n\t * @ignore\r\n\t */\r\n\tprotected _darkColor: $type.Optional<Color>;\r\n\r\n\t/**\r\n\t * Holds RGB value of the color.\r\n\t */\r\n\tprotected _value: $type.Optional<iRGB>;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t *\r\n\t * @param color Source color\r\n\t */\r\n\tconstructor(color: $type.Optional<iRGB>) {\r\n\t\tthis._value = color;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns [[iRGB]] representation of the color.\r\n\t *\r\n\t * @return RGB object\r\n\t */\r\n\tpublic get rgb(): $type.Optional<iRGB> {\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns color hex value string, e.g. \"#FF0000\".\r\n\t *\r\n\t * @return Hex color code\r\n\t */\r\n\tpublic get hex(): string {\r\n\t\treturn this._value ? $colors.rgbToHex(this._value) : \"none\";\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an `rgba()` representation of the color, e.g.:\r\n\t * `rgba(255, 0, 0, 0.5)`.\r\n\t *\r\n\t * @return rgba color string\r\n\t */\r\n\tpublic get rgba(): string {\r\n\t\treturn this._value ? $colors.rgbToRGBA(this._value) : \"none\";\r\n\t}\r\n\r\n\t/**\r\n\t * Set alpha (transparency) of the color.\r\n\t *\r\n\t * @param value Alpha (0-1)\r\n\t */\r\n\tpublic set alpha(value: number) {\r\n\t\tif (this._value) {\r\n\t\t\tthis._value.a = value;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current transparency.\r\n\t *\r\n\t * @return Alpha (0-1)\r\n\t */\r\n\tpublic get alpha(): number {\r\n\t\tif (this._value != null && this._value.a != null) {\r\n\t\t\treturn this._value.a;\r\n\r\n\t\t} else {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets \"light\" color. Used when determining contrasting color.\r\n\t *\r\n\t * @param color Color\r\n\t */\r\n\tpublic set lightColor(color: Color) {\r\n\t\tthis._lightColor = color;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current light color setting.\r\n\t *\r\n\t * @return Color\r\n\t */\r\n\tpublic get lightColor(): Color {\r\n\t\tif (!this._lightColor) {\r\n\t\t\tthis._lightColor = new Color({ r: 255, g: 255, b: 255 });\r\n\t\t}\r\n\t\treturn this._lightColor;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets \"dark\" color. Used when determining contrasting color.\r\n\t *\r\n\t * @param color Color\r\n\t */\r\n\tpublic set darkColor(color: Color) {\r\n\t\tthis._darkColor = color;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current dark color setting.\r\n\t *\r\n\t * @return Color\r\n\t */\r\n\tpublic get darkColor(): Color {\r\n\t\tif (!this._darkColor) {\r\n\t\t\tthis._darkColor = new Color({ r: 0, g: 0, b: 0 });\r\n\t\t}\r\n\t\treturn this._darkColor;\r\n\t}\r\n\r\n\t/**\r\n\t * Overrides `toString` method so that [[Color]] object can be used as\r\n\t * string.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return String represantion of color (usable in CSS)\r\n\t */\r\n\tpublic toString(): string {\r\n\t\treturn this.alpha < 1 ? this.rgba : this.hex;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new [[Color]] which is percent lighter (positive value),\r\n\t * or darker (negative value).\r\n\t *\r\n\t * Parameter is in the scale of -1 to 1.\r\n\t *\r\n\t * @param percent Increase/decrease lightness by X\r\n\t * @return New Color\r\n\t */\r\n\tpublic lighten(percent: number): Color {\r\n\t\treturn new Color($colors.lighten(this.rgb, percent));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new [[Color]] which is percent brighter (positive value),\r\n\t * or darker (negative value).\r\n\t *\r\n\t * Parameter is in the scale of -1 to 1.\r\n\t *\r\n\t * @param percent Increase/decrease brightness by X\r\n\t * @return New Color\r\n\t */\r\n\tpublic brighten(percent: number): Color {\r\n\t\treturn new Color($colors.brighten(this.rgb, percent));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new [[Color]] based on current color with specific saturation\r\n\t * applied.\r\n\t *\r\n\t * `saturation` can be in the range of 0 (fully desaturated) to 1 (fully\r\n\t * saturated).\r\n\t *\r\n\t * @param saturation Saturation (0-1)\r\n\t * @return New (saturated) color\r\n\t */\r\n\tpublic saturate(saturation: number): Color {\r\n\t\treturn new Color($colors.saturate(this.rgb, saturation));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a either light or dark color that contrasts specifically with\r\n\t * this color.\r\n\t *\r\n\t * Uses properties `darkColor` (default black) and `lightColor` (default\r\n\t * white).\r\n\t *\r\n\t * Useful when determining which color label should be on a colored\r\n\t * background, so that it stands out.\r\n\t *\r\n\t * @return Contrasting color\r\n\t */\r\n\tpublic get alternative(): Color {\r\n\t\tif (this.rgb != null) {\r\n\t\t\treturn $colors.isLight(this.rgb) ? this.darkColor : this.lightColor;\r\n\r\n\t\t} else {\r\n\t\t\tthrow new Error(\"Color does not exist\");\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Resolves an input variable to a normal [[iRGB]] color and creates [[Color]]\r\n * object for it.\r\n *\r\n * @param value Input value\r\n * @param alpha Alpha (0-1)\r\n * @return Color object\r\n */\r\nexport function color(value?: string | iRGB | Color, alpha?: number): Color {\r\n\r\n\tif (!$type.hasValue(value)) {\r\n\t\treturn new Color(undefined);\r\n\t}\r\n\r\n\tif (typeof value == \"string\") {\r\n\t\tlet cacheId = \"_color_\" + value + \"_\" + (alpha || \"1\");\r\n\t\tlet cached = registry.getCache(cacheId);\r\n\t\tif (cached) {\r\n\t\t\treturn new Color({\r\n\t\t\t\tr: cached.r,\r\n\t\t\t\tg: cached.g,\r\n\t\t\t\tb: cached.b,\r\n\t\t\t\ta: cached.a\r\n\t\t\t});\r\n\t\t}\r\n\t\tlet rgb = $colors.rgb(value, alpha);\r\n\t\tregistry.setCache(cacheId, rgb);\r\n\t\treturn new Color(rgb);\r\n\t}\r\n\r\n\t// Check if it's already a Color object\r\n\tif (value instanceof Color) {\r\n\t\tif ($type.hasValue(alpha)) {\r\n\t\t\tvalue.alpha = alpha;\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n\t// Not a string or Color instance, it's the iRGB object then\r\n\treturn new Color(value);\r\n}\r\n\r\n/**\r\n * Checks if supplied argument is instance of [[Color]].\r\n *\r\n * @param value Input value\r\n * @return Is Color?\r\n */\r\nexport function isColor(value: any): boolean {\r\n\treturn value instanceof Color;\r\n}\r\n\r\n/**\r\n * Converts any value to [[Color]].\r\n *\r\n * @param value Input value\r\n * @return Color\r\n */\r\nexport function castColor(value: any): Color {\r\n\treturn color(value);\r\n}\r\n\r\n/**\r\n * Converts any value into a [[Color]].\r\n *\r\n * @param value Source value\r\n * @return Color object\r\n */\r\nexport function toColor(value: any): Color {\r\n\tif ($type.hasValue(value) && !isColor(value)) {\r\n\t\treturn castColor(value);\r\n\t}\r\n\treturn value;\r\n}\r\n","/**\r\n * This module contains ColorSet object definition\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { Color, color, iHSL } from \"./Color\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $colors from \"./Colors\";\r\nimport * as $type from \"./Type\";\r\nimport * as $utils from \"./Utils\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines an interface for objects identifying a color step.\r\n *\r\n * A \"color step\" object is used when [[ColorSet]] is generating colors, when\r\n * it has ran out of pre-set colors.\r\n *\r\n * It takes the last available color, then applies one or several of the\r\n * properties, like hue, or saturation with each subsequent generated color.\r\n */\r\nexport interface IColorSetStepOptions {\r\n\thue: number;\r\n\tbrighten: number;\r\n\tlighten: number;\r\n\tlightness: number;\r\n\tsaturation: number;\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Represents a set of colors. Can also generate colors according to set rules.\r\n *\r\n * @important\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/colors/} for color-related info\r\n */\r\nexport class ColorSet extends BaseObject {\r\n\r\n\t/**\r\n\t * Holds the list of the colors in this set. (preset or auto-generated)\r\n\t */\r\n\tprotected _list: Color[] = [];\r\n\r\n\t/**\r\n\t * Current step in a color generator's cycle.\r\n\t */\r\n\tprotected _currentStep: number = 0;\r\n\r\n\t/**\r\n\t * If set to non-zero value, the ColorSet will start iterating colors from\r\n\t * that particular index, not the first color in the list.\r\n\t */\r\n\tprotected _startIndex: number = 0;\r\n\r\n\t/**\r\n\t * Current pass in the color generator's cycle. Normally a generator would\r\n\t * cycle through all available hue range, then repeat it, alternating other\r\n\t * color properties, to generate distinctive colors.\r\n\t */\r\n\tprotected _currentPass: number = 0;\r\n\r\n\t/**\r\n\t * A base color. If there are no colors pre-set in the color list, ColorSet\r\n\t * will use this color as a base when generating new ones, applying\r\n\t * `stepOptions` and `passOptions` to this base color.\r\n\t */\r\n\tpublic baseColor: Color = new Color({\r\n\t\tr: 103,\r\n\t\tg: 183,\r\n\t\tb: 220\r\n\t});\r\n\r\n\t/**\r\n\t * Modifications to apply with each new generated color.\r\n\t */\r\n\tpublic stepOptions: Partial<IColorSetStepOptions> = {};\r\n\r\n\t/**\r\n\t * Modifications to apply on top of `stepOptions` for each \"pass\" of the\r\n\t * color generation.\r\n\t *\r\n\t * A \"pass\" is when ColorSet generates `minColors` number of colors.\r\n\t */\r\n\tpublic passOptions: Partial<IColorSetStepOptions> = {\r\n\t\tbrighten: -0.2\r\n\t};\r\n\r\n\t/**\r\n\t * An index increment to use when iterating through color list.\r\n\t *\r\n\t * Default is 1, which means returning each and every color.\r\n\t *\r\n\t * Setting it to a bigger number will make ColorSet `next()` iterator skip\r\n\t * some colors.\r\n\t *\r\n\t * E.g. setting to 2, will return every second color in the list.\r\n\t *\r\n\t * This is useful, when the color list has colors that are too close each\r\n\t * other for contrast.\r\n\t *\r\n\t * However, having bigger number will mean that `next()` iterator will go\r\n\t * through the list quicker, and the generator will kick sooner.\r\n\t */\r\n\tpublic step: number = 1;\r\n\r\n\t/**\r\n\t * A number of colors to generate in one \"pass\".\r\n\t *\r\n\t * This setting can be automatically overridden, if ColorSet has a list of\r\n\t * pre-set colors. In such case ColorSet will generate exactly the same\r\n\t * number of colors with each pass as there were colors in original set.\r\n\t */\r\n\tpublic minColors: number = 20;\r\n\r\n\t/**\r\n\t * Do not let the \"lightness\" of generated color to fall below this\r\n\t * threshold.\r\n\t */\r\n\tpublic minLightness: number = 0.2;\r\n\r\n\t/**\r\n\t * Do not let the \"lightness\" of generated color to get above this threshold.\r\n\t */\r\n\tpublic maxLightness: number = 0.9;\r\n\r\n\t/**\r\n\t * Randomly shuffle generated colors.\r\n\t */\r\n\tpublic shuffle: boolean = false;\r\n\r\n\t/**\r\n\t * When colors are generated, based on `stepOptions`, each generated color\r\n\t * gets either lighter or darker.\r\n\t *\r\n\t * If this is set to `true`, color generator will switch to opposing spectrum\r\n\t * when reaching `minLightness` or `maxLightness`.\r\n\t *\r\n\t * E.g. if we start off with a red color, then gradually generate lighter\r\n\t * colors through rose shades, then switch back to dark red and gradually\r\n\t * increase the lightness of it until it reaches the starting red.\r\n\t *\r\n\t * If set to `false` it will stop there and cap lightness at whatever level\r\n\t * we hit `minLightness` or `maxLightness`, which may result in a number of\r\n\t * the same colors.\r\n\t */\r\n\tpublic wrap: boolean = true;\r\n\r\n\t/**\r\n\t * Re-use same colors in the pre-set list, when ColorSet runs out of colors,\r\n\t * rather than start generating new ones.\r\n\t */\r\n\tpublic reuse: boolean = false;\r\n\r\n\t/**\r\n\t * Saturation of colors. This will change saturation of all colors of color\r\n\t * set.\r\n\t *\r\n\t * It is recommended to set this in theme, as changing it at run time won't\r\n\t * make the items to redraw and change color.\r\n\t */\r\n\tpublic saturation: number = 1;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"ColorSet\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets a list of pre-defined colors to use for the iterator.\r\n\t *\r\n\t * @param value Color list\r\n\t */\r\n\tpublic set list(value: Color[]) {\r\n\t\tthis._list = value;\r\n\t\tthis.reset();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current list of colors.\r\n\t *\r\n\t * If there are none, a new list of colors is generated, based on various\r\n\t * ColorSet settings.\r\n\t *\r\n\t * @return Color list\r\n\t */\r\n\tpublic get list(): Color[] {\r\n\t\tif (!this._list) {\r\n\t\t\tthis.generate(this.minColors);\r\n\t\t}\r\n\t\treturn this._list;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets reusable color.\r\n\t * \r\n\t * @param index Index of color\r\n\t * @return Color\r\n\t */\r\n\tprotected getReusableColor(index: number): Color {\r\n\t\tif (this._list.length == 0) {\r\n\t\t\tthis.generate(1);\r\n\t\t\treturn this.list[0];\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet tmpstep = index - (Math.floor(index / this._list.length) * this.list.length);\r\n\t\t\treturn this.list[tmpstep];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns next color in the list using internal iterator counter.\r\n\t *\r\n\t * If `step` is set to something other than 1, it may return other color than\r\n\t * exact next one in the list.\r\n\t *\r\n\t * @return Color\r\n\t */\r\n\tpublic next(): Color {\r\n\t\tlet color;\r\n\t\tif (this.list.length <= this._currentStep) {\r\n\t\t\tif (this.reuse) {\r\n\t\t\t\tcolor = this.getReusableColor(this._currentStep);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.generate(this.minColors);\r\n\t\t\t\tcolor = this.list[this._currentStep];\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tcolor = this.list[this._currentStep];\r\n\t\t}\r\n\t\tthis._currentStep += this.step;\r\n\t\treturn color.saturate(this.saturation);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a color at specific index in the list.\r\n\t *\r\n\t * @param i Index\r\n\t * @return Color\r\n\t */\r\n\tpublic getIndex(i: number): Color {\r\n\t\tlet color;\r\n\t\tif (this.list.length <= i) {\r\n\t\t\tif (this.reuse) {\r\n\t\t\t\tcolor = this.getReusableColor(i);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.generate(this.minColors);\r\n\t\t\t\tcolor = this.getIndex(i);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tcolor = this.list[i];\r\n\t\t}\r\n\t\treturn color.saturate(this.saturation);\r\n\t}\r\n\r\n\t/**\r\n\t * Resets internal iterator.\r\n\t *\r\n\t * Calling `next()` after this will return the very first color in the color\r\n\t * list, even if it was already returned before.\r\n\t */\r\n\tpublic reset(): void {\r\n\t\tthis._currentStep = this._startIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets current color iteration. You can use this property to skip some\r\n\t * colors from iteration. E.g. setting it to `10` will skip first ten\r\n\t * colors.\r\n\t *\r\n\t * Please note that the number is zero-based.\r\n\t *\r\n\t * @param value Step\r\n\t */\r\n\tpublic set currentStep(value: number) {\r\n\t\tthis._currentStep = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Step\r\n\t */\r\n\tpublic get currentStep(): number {\r\n\t\treturn this._currentStep;\r\n\t}\r\n\r\n\t/**\r\n\t * If set to non-zero value, the ColorSet will start iterating colors from\r\n\t * that particular index, not the first color in the list.\r\n\t *\r\n\t * @default 0\r\n\t * @since 4.4.9\r\n\t * @param value Index\r\n\t */\r\n\tpublic set startIndex(value: number) {\r\n\t\tthis._startIndex = value;\r\n\t\tthis.reset();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Index\r\n\t */\r\n\tpublic get startIndex(): number {\r\n\t\treturn this._startIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * Generates colors based on the various ColorSet settings.\r\n\t *\r\n\t * @param count Number of colors to generate\r\n\t */\r\n\tpublic generate(count: number): void {\r\n\r\n\t\t// Init\r\n\t\tlet curColor = this.currentColor;\r\n\t\tlet hsl = $colors.rgbToHsl($type.getValue(curColor.rgb));\r\n\t\tlet hueStep = $type.hasValue(this.stepOptions.hue) ? this.stepOptions.hue : 1 / count;\r\n\t\tlet mods: IColorSetStepOptions = {\r\n\t\t\tbrighten: 0,\r\n\t\t\tlighten: 0,\r\n\t\t\thue: hsl.h,\r\n\t\t\tlightness: hsl.l,\r\n\t\t\tsaturation: hsl.s\r\n\t\t};\r\n\r\n\t\t// Generate list of hues, and shuffle them\r\n\t\tlet hues: number[] = [];\r\n\t\tconst startIndex = this.list.length == 0 ? 0 : 1;\r\n\t\tif (this.reuse) {\r\n\t\t\tfor (let i = startIndex; i <= count; i++) {\r\n\t\t\t\thues.push($colors.rgbToHsl($type.getValue(this._list[i].rgb)).h);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tfor (let i = startIndex; i <= count; i++) {\r\n\t\t\t\tlet h = hsl.h + hueStep * i;\r\n\t\t\t\tif (this.wrap && (h > 1)) {\r\n\t\t\t\t\th -= 1;\r\n\t\t\t\t}\r\n\t\t\t\thues.push(h);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Shuffle colors randomly\r\n\t\tif (this.shuffle) {\r\n\t\t\thues.sort((a: number, b: number) => {\r\n\t\t\t\treturn Math.random() - 0.5;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\r\n\t\t// Generate colors by rotating hue\r\n\t\tfor (let i = 0; i < count; i++) {\r\n\r\n\t\t\t// Update hue\r\n\t\t\tif (this.reuse) {\r\n\t\t\t\thsl = $colors.rgbToHsl($type.getValue(this._list[i].rgb));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\thsl.h = <number>hues.shift();\r\n\t\t\t}\r\n\r\n\t\t\t// Apply HSL mods\r\n\t\t\tthis.applyStepOptions(hsl, mods, i, this._currentPass);\r\n\r\n\t\t\t// Convert back to Color\r\n\t\t\tlet c = color($colors.hslToRgb(hsl));\r\n\r\n\t\t\t// Apply regular color mods\r\n\t\t\tlet brighten = (this.stepOptions.brighten || 0) * i + (this.passOptions.brighten || 0) * this._currentPass;\r\n\t\t\tif (brighten != 0) {\r\n\t\t\t\tif (this.wrap) {\r\n\t\t\t\t\tbrighten = $utils.fitNumberRelative(brighten, this.minLightness, this.maxLightness);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tbrighten = $utils.fitNumber(brighten, this.minLightness, this.maxLightness);\r\n\t\t\t\t}\r\n\t\t\t\tc = c.brighten(brighten);\r\n\t\t\t}\r\n\r\n\t\t\tlet lighten = (this.stepOptions.lighten || 0) * i + (this.passOptions.lighten || 0) * this._currentPass;\r\n\t\t\tif (lighten != 0) {\r\n\t\t\t\tif (this.wrap) {\r\n\t\t\t\t\tlighten = $utils.fitNumberRelative(lighten, this.minLightness, this.maxLightness);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tlighten = $utils.fitNumber(lighten, this.minLightness, this.maxLightness);\r\n\t\t\t\t}\r\n\t\t\t\tc = c.lighten(lighten);\r\n\t\t\t}\r\n\r\n\t\t\tthis._list.push(c);\r\n\t\t}\r\n\r\n\t\tthis._currentPass++;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current last color. It's either the last color in the list of\r\n\t * colors, or `baseColor` if list is empty.\r\n\t *\r\n\t * @return Color\r\n\t */\r\n\tprotected get currentColor(): Color {\r\n\t\tif (this._list.length == 0) {\r\n\t\t\treturn this.baseColor.saturate(this.saturation);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._list[this._list.length - 1].saturate(this.saturation);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Generates modifiers for color, based on what step and pass.\r\n\t *\r\n\t * @param hsl Curren HSL value of the color to modify\r\n\t * @param base The modifiers that were before modification to use as a base\r\n\t * @param step Current step\r\n\t * @param pass Current pass\r\n\t */\r\n\tprotected applyStepOptions(hsl: iHSL, base: IColorSetStepOptions, step: number, pass: number): void {\r\n\r\n\t\t// Process lightness\r\n\t\thsl.l = base.lightness + (this.stepOptions.lightness || 0) * step + (this.passOptions.lightness || 0) * pass;\r\n\r\n\t\tif (this.wrap) {\r\n\t\t\tif (hsl.l > 1) {\r\n\t\t\t\thsl.l = hsl.l - Math.floor(hsl.l);\r\n\t\t\t}\r\n\t\t\telse if (hsl.l < 0) {\r\n\t\t\t\thsl.l = -(hsl.l - Math.floor(hsl.l));\r\n\t\t\t}\r\n\t\t\thsl.l = $utils.fitNumberRelative(hsl.l, this.minLightness, this.maxLightness);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (hsl.l > 1) {\r\n\t\t\t\thsl.l = 1\r\n\t\t\t}\r\n\t\t\telse if (hsl.l < 0) {\r\n\t\t\t\thsl.l = 0;\r\n\t\t\t}\r\n\t\t\thsl.l = $utils.fitNumber(hsl.l, this.minLightness, this.maxLightness);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tif (config) {\r\n\r\n\t\t\t// Set up axis ranges\r\n\t\t\tif ($type.hasValue(config.list) && $type.isArray(config.list)) {\r\n\t\t\t\tfor (let i = 0, len = config.list.length; i < len; i++) {\r\n\t\t\t\t\tif (!(config.list[i] instanceof Color)) {\r\n\t\t\t\t\t\tconfig.list[i] = color(config.list[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tsuper.processConfig(config);\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ColorSet\"] = ColorSet;","/**\r\n * A collection of color-related functions\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $math from \"./Math\";\r\nimport * as $type from \"./Type\";\r\n\r\n/**\r\n * Define named colors for easy resolution to RGB.\r\n */\r\nlet namedColors = {\r\n\taliceblue: { r: 240, g: 248, b: 255 },\r\n\tantiquewhite: { r: 250, g: 235, b: 215 },\r\n\taqua: { r: 0, g: 255, b: 255 },\r\n\taquamarine: { r: 127, g: 255, b: 212 },\r\n\tazure: { r: 240, g: 255, b: 255 },\r\n\tbeige: { r: 245, g: 245, b: 220 },\r\n\tbisque: { r: 255, g: 228, b: 196 },\r\n\tblack: { r: 0, g: 0, b: 0 },\r\n\tblanchedalmond: { r: 255, g: 235, b: 205 },\r\n\tblue: { r: 0, g: 0, b: 255 },\r\n\tblueviolet: { r: 138, g: 43, b: 226 },\r\n\tbrown: { r: 165, g: 42, b: 42 },\r\n\tburlywood: { r: 222, g: 184, b: 135 },\r\n\tcadetblue: { r: 95, g: 158, b: 160 },\r\n\tchartreuse: { r: 127, g: 255, b: 0 },\r\n\tchocolate: { r: 210, g: 105, b: 30 },\r\n\tcoral: { r: 255, g: 127, b: 80 },\r\n\tcornflowerblue: { r: 100, g: 149, b: 237 },\r\n\tcornsilk: { r: 255, g: 248, b: 220 },\r\n\tcrimson: { r: 220, g: 20, b: 60 },\r\n\tcyan: { r: 0, g: 255, b: 255 },\r\n\tdarkblue: { r: 0, g: 0, b: 139 },\r\n\tdarkcyan: { r: 0, g: 139, b: 139 },\r\n\tdarkgoldenrod: { r: 184, g: 134, b: 11 },\r\n\tdarkgray: { r: 169, g: 169, b: 169 },\r\n\tdarkgrey: { r: 169, g: 169, b: 169 },\r\n\tdarkgreen: { r: 0, g: 100, b: 0 },\r\n\tdarkkhaki: { r: 189, g: 183, b: 107 },\r\n\tdarkmagenta: { r: 139, g: 0, b: 139 },\r\n\tdarkolivegreen: { r: 85, g: 107, b: 47 },\r\n\tdarkorange: { r: 255, g: 140, b: 0 },\r\n\tdarkorchid: { r: 153, g: 50, b: 204 },\r\n\tdarkred: { r: 139, g: 0, b: 0 },\r\n\tdarksalmon: { r: 233, g: 150, b: 122 },\r\n\tdarkseagreen: { r: 143, g: 188, b: 143 },\r\n\tdarkslateblue: { r: 72, g: 61, b: 139 },\r\n\tdarkslategray: { r: 47, g: 79, b: 79 },\r\n\tdarkslategrey: { r: 47, g: 79, b: 79 },\r\n\tdarkturquoise: { r: 0, g: 206, b: 209 },\r\n\tdarkviolet: { r: 148, g: 0, b: 211 },\r\n\tdeeppink: { r: 255, g: 20, b: 147 },\r\n\tdeepskyblue: { r: 0, g: 191, b: 255 },\r\n\tdimgray: { r: 105, g: 105, b: 105 },\r\n\tdimgrey: { r: 105, g: 105, b: 105 },\r\n\tdodgerblue: { r: 30, g: 144, b: 255 },\r\n\tfirebrick: { r: 178, g: 34, b: 34 },\r\n\tfloralwhite: { r: 255, g: 250, b: 240 },\r\n\tforestgreen: { r: 34, g: 139, b: 34 },\r\n\tfuchsia: { r: 255, g: 0, b: 255 },\r\n\tgainsboro: { r: 220, g: 220, b: 220 },\r\n\tghostwhite: { r: 248, g: 248, b: 255 },\r\n\tgold: { r: 255, g: 215, b: 0 },\r\n\tgoldenrod: { r: 218, g: 165, b: 32 },\r\n\tgray: { r: 128, g: 128, b: 128 },\r\n\tgrey: { r: 128, g: 128, b: 128 },\r\n\tgreen: { r: 0, g: 128, b: 0 },\r\n\tgreenyellow: { r: 173, g: 255, b: 47 },\r\n\thoneydew: { r: 240, g: 255, b: 240 },\r\n\thotpink: { r: 255, g: 105, b: 180 },\r\n\tindianred: { r: 205, g: 92, b: 92 },\r\n\tindigo: { r: 75, g: 0, b: 130 },\r\n\tivory: { r: 255, g: 255, b: 240 },\r\n\tkhaki: { r: 240, g: 230, b: 140 },\r\n\tlavender: { r: 230, g: 230, b: 250 },\r\n\tlavenderblush: { r: 255, g: 240, b: 245 },\r\n\tlawngreen: { r: 124, g: 252, b: 0 },\r\n\tlemonchiffon: { r: 255, g: 250, b: 205 },\r\n\tlightblue: { r: 173, g: 216, b: 230 },\r\n\tlightcoral: { r: 240, g: 128, b: 128 },\r\n\tlightcyan: { r: 224, g: 255, b: 255 },\r\n\tlightgoldenrodyellow: { r: 250, g: 250, b: 210 },\r\n\tlightgray: { r: 211, g: 211, b: 211 },\r\n\tlightgrey: { r: 211, g: 211, b: 211 },\r\n\tlightgreen: { r: 144, g: 238, b: 144 },\r\n\tlightpink: { r: 255, g: 182, b: 193 },\r\n\tlightsalmon: { r: 255, g: 160, b: 122 },\r\n\tlightseagreen: { r: 32, g: 178, b: 170 },\r\n\tlightskyblue: { r: 135, g: 206, b: 250 },\r\n\tlightslategray: { r: 119, g: 136, b: 153 },\r\n\tlightslategrey: { r: 119, g: 136, b: 153 },\r\n\tlightsteelblue: { r: 176, g: 196, b: 222 },\r\n\tlightyellow: { r: 255, g: 255, b: 224 },\r\n\tlime: { r: 0, g: 255, b: 0 },\r\n\tlimegreen: { r: 50, g: 205, b: 50 },\r\n\tlinen: { r: 250, g: 240, b: 230 },\r\n\tmagenta: { r: 255, g: 0, b: 255 },\r\n\tmaroon: { r: 128, g: 0, b: 0 },\r\n\tmediumaquamarine: { r: 102, g: 205, b: 170 },\r\n\tmediumblue: { r: 0, g: 0, b: 205 },\r\n\tmediumorchid: { r: 186, g: 85, b: 211 },\r\n\tmediumpurple: { r: 147, g: 112, b: 219 },\r\n\tmediumseagreen: { r: 60, g: 179, b: 113 },\r\n\tmediumslateblue: { r: 123, g: 104, b: 238 },\r\n\tmediumspringgreen: { r: 0, g: 250, b: 154 },\r\n\tmediumturquoise: { r: 72, g: 209, b: 204 },\r\n\tmediumvioletred: { r: 199, g: 21, b: 133 },\r\n\tmidnightblue: { r: 25, g: 25, b: 112 },\r\n\tmintcream: { r: 245, g: 255, b: 250 },\r\n\tmistyrose: { r: 255, g: 228, b: 225 },\r\n\tmoccasin: { r: 255, g: 228, b: 181 },\r\n\tnavajowhite: { r: 255, g: 222, b: 173 },\r\n\tnavy: { r: 0, g: 0, b: 128 },\r\n\toldlace: { r: 253, g: 245, b: 230 },\r\n\tolive: { r: 128, g: 128, b: 0 },\r\n\tolivedrab: { r: 107, g: 142, b: 35 },\r\n\torange: { r: 255, g: 165, b: 0 },\r\n\torangered: { r: 255, g: 69, b: 0 },\r\n\torchid: { r: 218, g: 112, b: 214 },\r\n\tpalegoldenrod: { r: 238, g: 232, b: 170 },\r\n\tpalegreen: { r: 152, g: 251, b: 152 },\r\n\tpaleturquoise: { r: 175, g: 238, b: 238 },\r\n\tpalevioletred: { r: 219, g: 112, b: 147 },\r\n\tpapayawhip: { r: 255, g: 239, b: 213 },\r\n\tpeachpuff: { r: 255, g: 218, b: 185 },\r\n\tperu: { r: 205, g: 133, b: 63 },\r\n\tpink: { r: 255, g: 192, b: 203 },\r\n\tplum: { r: 221, g: 160, b: 221 },\r\n\tpowderblue: { r: 176, g: 224, b: 230 },\r\n\tpurple: { r: 128, g: 0, b: 128 },\r\n\trebeccapurple: { r: 102, g: 51, b: 153 },\r\n\tred: { r: 255, g: 0, b: 0 },\r\n\trosybrown: { r: 188, g: 143, b: 143 },\r\n\troyalblue: { r: 65, g: 105, b: 225 },\r\n\tsaddlebrown: { r: 139, g: 69, b: 19 },\r\n\tsalmon: { r: 250, g: 128, b: 114 },\r\n\tsandybrown: { r: 244, g: 164, b: 96 },\r\n\tseagreen: { r: 46, g: 139, b: 87 },\r\n\tseashell: { r: 255, g: 245, b: 238 },\r\n\tsienna: { r: 160, g: 82, b: 45 },\r\n\tsilver: { r: 192, g: 192, b: 192 },\r\n\tskyblue: { r: 135, g: 206, b: 235 },\r\n\tslateblue: { r: 106, g: 90, b: 205 },\r\n\tslategray: { r: 112, g: 128, b: 144 },\r\n\tslategrey: { r: 112, g: 128, b: 144 },\r\n\tsnow: { r: 255, g: 250, b: 250 },\r\n\tspringgreen: { r: 0, g: 255, b: 127 },\r\n\tsteelblue: { r: 70, g: 130, b: 180 },\r\n\ttan: { r: 210, g: 180, b: 140 },\r\n\tteal: { r: 0, g: 128, b: 128 },\r\n\tthistle: { r: 216, g: 191, b: 216 },\r\n\ttomato: { r: 255, g: 99, b: 71 },\r\n\tturquoise: { r: 64, g: 224, b: 208 },\r\n\tviolet: { r: 238, g: 130, b: 238 },\r\n\twheat: { r: 245, g: 222, b: 179 },\r\n\twhite: { r: 255, g: 255, b: 255 },\r\n\twhitesmoke: { r: 245, g: 245, b: 245 },\r\n\tyellow: { r: 255, g: 255, b: 0 },\r\n\tyellowgreen: { r: 154, g: 205, b: 50 }\r\n};\r\n\r\n\r\n/**\r\n * Tries to resolve a named color into a hex color representation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Color name\r\n * @return Color\r\n * @deprecated\r\n * @hidden\r\n */\r\n/*export function resolveNamedColor(value: string): Color {\r\n\treturn (<any>namedColors)[value] ? (<any>namedColors)[value] : undefined;\r\n}*/\r\n\r\n/**\r\n * Converts a proper color hex code (i.e. \"#FF5500\") or named color (i.e. \"red\")\r\n * into an {iRGB} object. If the code is not correctly formatted, an RGB of\r\n * black is returned.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Color code\r\n * @param alpha Alpha (0-1)\r\n * @return RGB\r\n */\r\nexport function rgb(color: string, alpha?: number): iRGB {\r\n\r\n\t// Init return value\r\n\tlet rgb: $type.Optional<iRGB>;\r\n\r\n\t// Try resolving color format\r\n\r\n\t// Named color?\r\n\tif ((<any>namedColors)[color]) {\r\n\t\trgb = (<any>namedColors)[color];\r\n\t}\r\n\r\n\t// Hex code?\r\n\telse if (color.charAt(0) === \"#\") {\r\n\t\trgb = hexToRgb(color);\r\n\t}\r\n\r\n\t// rgb() format?\r\n\telse if (color.match(/^rgba?\\(/)) {\r\n\t\trgb = rgbaToRgb(color);\r\n\t}\r\n\r\n\t// Was not able to resolve?\r\n\tif (!rgb) {\r\n\t\trgb = { r: 0, g: 0, b: 0, a: 1 };\r\n\t}\r\n\r\n\t// Set alpha\r\n\tif ($type.hasValue(alpha)) {\r\n\t\trgb.a = alpha;\r\n\t}\r\n\r\n\treturn rgb;\r\n}\r\n\r\n/**\r\n * Converts a hex color code (i.e. \"#FF5500\") to an [[iRGB]] object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param hex Hex color code\r\n * @return RGB\r\n */\r\nexport function hexToRgb(hex: string): $type.Optional<iRGB> {\r\n\t// Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\r\n\tlet shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\r\n\thex = hex.replace(shorthandRegex, function(m, r, g, b) {\r\n\t\treturn r + r + g + g + b + b;\r\n\t});\r\n\r\n\tlet result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n\treturn result ? {\r\n\t\tr: parseInt(result[1], 16),\r\n\t\tg: parseInt(result[2], 16),\r\n\t\tb: parseInt(result[3], 16)\r\n\t} : undefined;\r\n}\r\n\r\n/**\r\n * Converts color strings in format like `rgb()` and `rgba()` to [[iRGB]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Color code\r\n * @return RGB\r\n */\r\nexport function rgbaToRgb(color: string): $type.Optional<iRGB> {\r\n\tcolor = color.replace(/[ ]/g, \"\");\r\n\r\n\t// Init\r\n\tlet matches: string[] | null = color.match(/^rgb\\(([0-9]*),([0-9]*),([0-9]*)\\)/i);\r\n\r\n\t// Try rgb() format\r\n\tif (matches) {\r\n\t\tmatches.push(\"1\");\r\n\r\n\t} else {\r\n\t\tmatches = color.match(/^rgba\\(([0-9]*),([0-9]*),([0-9]*),([.0-9]*)\\)/i);\r\n\r\n\t\tif (!matches) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tr: parseInt(matches[1]),\r\n\t\tg: parseInt(matches[2]),\r\n\t\tb: parseInt(matches[3]),\r\n\t\ta: parseFloat(matches[4])\r\n\t};\r\n}\r\n\r\n/**\r\n * Converts an [[iRGB]] object into a hex color code.\r\n *\r\n * @ignore Exclude from docs\r\n * @param rgb RGB\r\n * @return Hex color code\r\n */\r\nexport function rgbToHex(rgb: iRGB): string {\r\n\treturn \"#\" + pad2(rgb.r.toString(16)) + pad2(rgb.g.toString(16)) + pad2(rgb.b.toString(16));\r\n}\r\n\r\n/**\r\n * Converts an [[iRGB]] object into its `rgb()` or `rgba()` representation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param rgb RGB\r\n * @return `rgba()` syntax\r\n */\r\nexport function rgbToRGBA(rgb: iRGB): string {\r\n\tif ($type.hasValue(rgb.a) && rgb.a !== 1) {\r\n\t\treturn \"rgba(\" + rgb.r + \",\" + rgb.g + \",\" + rgb.b + \",\" + rgb.a + \")\";\r\n\t}\r\n\telse {\r\n\t\treturn \"rgb(\" + rgb.r + \",\" + rgb.g + \",\" + rgb.b + \")\";\r\n\t}\r\n}\r\n\r\n/**\r\n * Pads a 1-digit string with a zero.\r\n *\r\n * @ignore Exclude from docs\r\n * @param c Input string\r\n * @return Padded string\r\n */\r\nexport function pad2(c: string): string {\r\n\treturn c.length == 1 ? \"0\" + c : \"\" + c;\r\n}\r\n\r\n/**\r\n * Returns an intermediate color between two colors based on the relative\r\n * position. Position needs to be in range between 0 and 1. Zero meaning the\r\n * resulting color will be closest to the first reference color.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color1 First reference color\r\n * @param color2 Second reference color\r\n * @param percent Relative position (0-1)\r\n * @return Interpolated color\r\n */\r\nexport function interpolate(rgb1: $type.Optional<iRGB>, rgb2: $type.Optional<iRGB>, percent: number): $type.Optional<iRGB> {\r\n\tpercent = $math.fitToRange(percent, 0, 1);\r\n\r\n\tif (rgb1) {\r\n\t\tif (rgb2) {\r\n\t\t\treturn {\r\n\t\t\t\tr: rgb1.r + Math.round((rgb2.r - rgb1.r) * percent),\r\n\t\t\t\tg: rgb1.g + Math.round((rgb2.g - rgb1.g) * percent),\r\n\t\t\t\tb: rgb1.b + Math.round((rgb2.b - rgb1.b) * percent),\r\n\t\t\t\ta: (rgb1.a || 1) + Math.round(((rgb2.a || 1) - (rgb1.a || 1)) * percent)\r\n\t\t\t};\r\n\r\n\t\t} else {\r\n\t\t\treturn rgb1;\r\n\t\t}\r\n\r\n\t} else if (rgb2) {\r\n\t\treturn rgb2;\r\n\r\n\t} else {\r\n\t\treturn rgb1;\r\n\t}\r\n}\r\n\r\n/**\r\n * Returns a color that is `percent` brighter than the reference color.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Reference color\r\n * @param percent Brightness percent\r\n * @return Hex code of the new color\r\n */\r\nexport function lighten(rgb: $type.Optional<iRGB>, percent: number): $type.Optional<iRGB> {\r\n\tif (rgb) {\r\n\t\treturn {\r\n\t\t\tr: Math.max(0, Math.min(255, rgb.r + getLightnessStep(rgb.r, percent))),\r\n\t\t\tg: Math.max(0, Math.min(255, rgb.g + getLightnessStep(rgb.g, percent))),\r\n\t\t\tb: Math.max(0, Math.min(255, rgb.b + getLightnessStep(rgb.b, percent))),\r\n\t\t\ta: rgb.a\r\n\t\t};\r\n\r\n\t} else {\r\n\t\t// TODO is this correct ?\r\n\t\treturn rgb;\r\n\t}\r\n};\r\n\r\n/**\r\n * Gets lightness step.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Value\r\n * @param percent Percent\r\n * @return Step\r\n */\r\nexport function getLightnessStep(value: number, percent: number): number {\r\n\tlet base = percent > 0 ? 255 - value : value;\r\n\treturn Math.round(base * percent);\r\n}\r\n\r\n/**\r\n * Returns a color that is `percent` brighter than the source `color`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Source color\r\n * @param percent Brightness percent\r\n * @return New color\r\n */\r\nexport function brighten(rgb: $type.Optional<iRGB>, percent: number): $type.Optional<iRGB> {\r\n\tif (rgb) {\r\n\t\tlet base = Math.min(Math.max(rgb.r, rgb.g, rgb.b), 230);\r\n\t\t//let base = Math.max(rgb.r, rgb.g, rgb.b);\r\n\t\tlet step = getLightnessStep(base, percent);\r\n\t\treturn {\r\n\t\t\tr: Math.max(0, Math.min(255, Math.round(rgb.r + step))),\r\n\t\t\tg: Math.max(0, Math.min(255, Math.round(rgb.g + step))),\r\n\t\t\tb: Math.max(0, Math.min(255, Math.round(rgb.b + step))),\r\n\t\t\ta: rgb.a\r\n\t\t};\r\n\r\n\t} else {\r\n\t\t// TODO is this correct ?\r\n\t\treturn rgb;\r\n\t}\r\n};\r\n\r\n/**\r\n * Returns brightness step.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Value\r\n * @param percent Percent\r\n * @return Step\r\n */\r\nexport function getBrightnessStep(value: number, percent: number): number {\r\n\tlet base = 255; //percent > 0 ? 255 - value : value;\r\n\treturn Math.round(base * percent);\r\n}\r\n\r\n/**\r\n * Returns a new [[iRGB]] object based on `rgb` parameter with specific\r\n * saturation applied.\r\n *\r\n * `saturation` can be in the range of 0 (fully desaturated) to 1 (fully\r\n * saturated).\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Base color\r\n * @param saturation Saturation (0-1)\r\n * @return New color\r\n */\r\nexport function saturate(rgb: $type.Optional<iRGB>, saturation: number): $type.Optional<iRGB> {\r\n\tif (rgb == null || saturation == 1) {\r\n\t\treturn rgb;\r\n\t}\r\n\r\n\tlet hsl = rgbToHsl(rgb);\r\n\thsl.s = saturation;\r\n\treturn hslToRgb(hsl);\r\n}\r\n\r\n/*\r\n// not used\r\nexport function rgbToMatrix(rgb: iRGB): string {\r\n\tlet r = $type.toText($math.round((rgb.r || 0) / 255, 10));\r\n\tlet g = $type.toText($math.round((rgb.g || 0) / 255, 10));\r\n\tlet b = $type.toText($math.round((rgb.b || 0) / 255, 10));\r\n\tlet a = $type.toText(rgb.a || 1);\r\n\treturn\t r + \" 0 0 0 0\" +\r\n\t\t\t\t\t\" 0 \" + g + \" 0 0 0\" +\r\n\t\t\t\t\t\" 0 0 \" + b + \" 0 0\" +\r\n\t\t\t\t\t\" 0 0 0 \" + a + \" 0\";\r\n}\r\n*/\r\n\r\n/**\r\n * The functions below are taken and adapted from Garry Tan's blog post:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * The further attributions go mjijackson.com, which now seems to be defunct.\r\n */\r\n\r\n/**\r\n * Converts an HSL color value to RGB. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes h, s, and l are contained in the set [0, 1] and\r\n * returns r, g, and b in the set [0, 255].\r\n *\r\n * Function adapted from:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * @ignore Exclude from docs\r\n * @param h The hue\r\n * @param s The saturation\r\n * @param l The lightness\r\n * @return The RGB representation\r\n */\r\nexport function hslToRgb(color: iHSL): iRGB {\r\n\tlet r, g, b;\r\n\tlet h = color.h;\r\n\tlet s = color.s;\r\n\tlet l = color.l;\r\n\r\n\tif (s == 0) {\r\n\t\tr = g = b = l; // achromatic\r\n\t} else {\r\n\t\tlet hue2rgb = function hue2rgb(p: number, q: number, t: number) {\r\n\t\t\tif (t < 0) { t += 1; }\r\n\t\t\tif (t > 1) { t -= 1; }\r\n\t\t\tif (t < 1 / 6) { return p + (q - p) * 6 * t; }\r\n\t\t\tif (t < 1 / 2) { return q; }\r\n\t\t\tif (t < 2 / 3) { return p + (q - p) * (2 / 3 - t) * 6; }\r\n\t\t\treturn p;\r\n\t\t}\r\n\r\n\t\tlet q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n\t\tlet p = 2 * l - q;\r\n\t\tr = hue2rgb(p, q, h + 1 / 3);\r\n\t\tg = hue2rgb(p, q, h);\r\n\t\tb = hue2rgb(p, q, h - 1 / 3);\r\n\t}\r\n\r\n\treturn {\r\n\t\tr: Math.round(r * 255),\r\n\t\tg: Math.round(g * 255),\r\n\t\tb: Math.round(b * 255)\r\n\t};\r\n}\r\n\r\n/**\r\n * Converts an RGB color value to HSL. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes r, g, and b are contained in the set [0, 255] and\r\n * returns h, s, and l in the set [0, 1].\r\n *\r\n * Function adapted from:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * @ignore Exclude from docs\r\n * @param r The red color value\r\n * @param g The green color value\r\n * @param b The blue color value\r\n * @return The HSL representation\r\n */\r\nexport function rgbToHsl(color: iRGB): iHSL {\r\n\tlet r = color.r / 255;\r\n\tlet g = color.g / 255;\r\n\tlet b = color.b / 255;\r\n\tlet max = Math.max(r, g, b);\r\n\tlet min = Math.min(r, g, b);\r\n\tlet h = 0;\r\n\tlet s = 0;\r\n\tlet l = (max + min) / 2;\r\n\r\n\tif (max === min) {\r\n\t\th = s = 0; // achromatic\r\n\r\n\t} else {\r\n\t\tlet d = max - min;\r\n\r\n\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n\r\n\t\tswitch (max) {\r\n\t\t\tcase r: h = (g - b) / d + (g < b ? 6 : 0); break;\r\n\t\t\tcase g: h = (b - r) / d + 2; break;\r\n\t\t\tcase b: h = (r - g) / d + 4; break;\r\n\t\t}\r\n\r\n\t\th /= 6;\r\n\t}\r\n\r\n\treturn {\r\n\t\th: h,\r\n\t\ts: s,\r\n\t\tl: l\r\n\t};\r\n}\r\n\r\n/**\r\n * Converts an RGB color value to HSV. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSV_color_space.\r\n * Assumes r, g, and b are contained in the set [0, 255] and\r\n * returns h, s, and v in the set [0, 1].\r\n *\r\n * @ignore Exclude from docs\r\n * @param Number r The red color value\r\n * @param Number g The green color value\r\n * @param Number b The blue color value\r\n * @return Array The HSV representation\r\n */\r\nexport function rgbToHsv(color: iRGB): iHSV {\r\n\tlet r = color.r / 255;\r\n\tlet g = color.g / 255;\r\n\tlet b = color.b / 255;\r\n\tlet max = Math.max(r, g, b), min = Math.min(r, g, b);\r\n\tlet h = 0;\r\n\tlet s = 0;\r\n\tlet v = max;\r\n\r\n\tlet d = max - min;\r\n\ts = max == 0 ? 0 : d / max;\r\n\r\n\tif (max == min) {\r\n\t\th = 0; // achromatic\r\n\r\n\t} else {\r\n\t\tswitch (max) {\r\n\t\t\tcase r: h = (g - b) / d + (g < b ? 6 : 0); break;\r\n\t\t\tcase g: h = (b - r) / d + 2; break;\r\n\t\t\tcase b: h = (r - g) / d + 4; break;\r\n\t\t}\r\n\t\th /= 6;\r\n\t}\r\n\r\n\treturn {\r\n\t\th: h,\r\n\t\ts: s,\r\n\t\tv: v\r\n\t};\r\n}\r\n\r\n/**\r\n * Converts an HSV color value to RGB. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSV_color_space.\r\n * Assumes h, s, and v are contained in the set [0, 1] and\r\n * returns r, g, and b in the set [0, 255].\r\n *\r\n * @ignore Exclude from docs\r\n * @param Number h The hue\r\n * @param Number s The saturation\r\n * @param Number v The value\r\n * @return Array The RGB representation\r\n */\r\nexport function hsvToRgb(color: iHSV): iRGB {\r\n\tlet r = 0;\r\n\tlet g = 0;\r\n\tlet b = 0;\r\n\tlet h = color.h;\r\n\tlet s = color.s;\r\n\tlet v = color.v;\r\n\r\n\tlet i = Math.floor(h * 6);\r\n\tlet f = h * 6 - i;\r\n\tlet p = v * (1 - s);\r\n\tlet q = v * (1 - f * s);\r\n\tlet t = v * (1 - (1 - f) * s);\r\n\r\n\tswitch (i % 6) {\r\n\t\tcase 0:\r\n\t\t\tr = v;\r\n\t\t\tg = t;\r\n\t\t\tb = p;\r\n\t\t\tbreak;\r\n\t\tcase 1:\r\n\t\t\tr = q;\r\n\t\t\tg = v;\r\n\t\t\tb = p;\r\n\t\t\tbreak;\r\n\t\tcase 2:\r\n\t\t\tr = p;\r\n\t\t\tg = v;\r\n\t\t\tb = t;\r\n\t\t\tbreak;\r\n\t\tcase 3:\r\n\t\t\tr = p;\r\n\t\t\tg = q;\r\n\t\t\tb = v;\r\n\t\t\tbreak;\r\n\t\tcase 4:\r\n\t\t\tr = t;\r\n\t\t\tg = p;\r\n\t\t\tb = v;\r\n\t\t\tbreak;\r\n\t\tcase 5:\r\n\t\t\tr = v;\r\n\t\t\tg = p;\r\n\t\t\tb = q;\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\treturn {\r\n\t\tr: Math.round(r * 255),\r\n\t\tg: Math.round(g * 255),\r\n\t\tb: Math.round(b * 255)\r\n\t};\r\n}\r\n\r\n/**\r\n * Returns `true` if color is \"light\". Useful indetermining which contrasting\r\n * color to use for elements over this color. E.g.: you would want to use\r\n * black text over light background, and vice versa.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Source color\r\n * @return Light?\r\n */\r\nexport function isLight(color: iRGB): boolean {\r\n\treturn ((color.r * 299) + (color.g * 587) + (color.b * 114)) / 1000 >= 128;\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * COLOR CONVERSION\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Represents an interface for an object that represents an RGB color.\r\n */\r\nexport interface iRGB {\r\n\tr: number;\r\n\tg: number;\r\n\tb: number;\r\n\ta?: number;\r\n}\r\n\r\n/**\r\n * Represents an interface for an object that represents an HSL color.\r\n */\r\nexport interface iHSL {\r\n\th: number;\r\n\ts: number;\r\n\tl: number;\r\n\ta?: number;\r\n}\r\n\r\n/**\r\n * Represents an interface for an object that represents an HSV color.\r\n */\r\nexport interface iHSV {\r\n\th: number;\r\n\ts: number;\r\n\tv: number;\r\n\ta?: number;\r\n}\r\n","/**\n * A collection of DOM-related functions.\n */\n\n/**\n * ============================================================================\n * IMPORTS\n * ============================================================================\n * @hidden\n */\nimport { Disposer, IDisposer } from \"./Disposer\";\nimport { readFrame, writeFrame } from \"./AsyncPending\";\nimport * as $object from \"./Object\";\nimport * as $array from \"./Array\";\nimport * as $type from \"./Type\";\n\n/**\n * SVG namespace.\n *\n * @ignore Exclude from docs\n */\nexport const SVGNS: string = \"http://www.w3.org/2000/svg\";\n\n/**\n * XML namespace.\n *\n * @ignore Exclude from docs\n */\nexport const XMLNS: string = \"http://www.w3.org/2000/xmlns/\";\n\n/**\n * XLINK namespace.\n *\n * @ignore Exclude from docs\n */\nexport const XLINK: string = \"http://www.w3.org/1999/xlink\";\n\n\n/**\n * Function that adds a disposable event listener directly to a DOM element.\n *\n * @ignore Exclude from docs\n * @param dom A DOM element to add event to\n * @param type Event type\n * @param listener Event listener\n * @returns Disposable event\n */\nexport function addEventListener<E extends Event>(dom: EventTarget, type: string, listener: (event: E) => void, options?: any): IDisposer {\n\t//@todo proper type check for options: EventListenerOptions | boolean (TS for some reason gives error on passive parameter)\n\t//console.log(type, dom);\n\tdom.addEventListener(type, <EventListener>listener, options || false);\n\n\treturn new Disposer(() => {\n\t\tdom.removeEventListener(type, <EventListener>listener, options || false);\n\t});\n}\n\n/**\n * Finds and returns an element reference using following logic:\n * * If we pass in an element instance, we just return it back.\n * * If we pass in a string, the function looks for an element with such id.\n * * If no element with such id is found, we grab the first element with a tag name like this.\n *\n * @ignore Exclude from docs\n * @param el Element definition (reference, or id, or tag name)\n * @return Element reference\n * @todo Review this function as it seems pretty fuzzy and hacky\n */\nexport function getElement(el: $type.Optional<HTMLElement | string>): $type.Optional<HTMLElement> {\n\tif ($type.isString(el)) {\n\t\tlet e: Element | null = document.getElementById(el);\n\n\t\tif (e == null) {\n\t\t\te = document.getElementsByClassName(el)[0];\n\t\t}\n\n\t\tif (e instanceof HTMLElement) {\n\t\t\treturn e;\n\t\t}\n\n\t} else if (el instanceof HTMLElement) {\n\t\treturn el;\n\t}\n}\n\n/**\n * Adds a class name to an HTML or SVG element.\n *\n * @ignore Exclude from docs\n * @param element Element\n * @param className Class name to add\n */\nexport function addClass(element: HTMLElement | SVGSVGElement, className: string): void {\n\tif (!element) {\n\t\treturn;\n\t}\n\tif (element.classList) {\n\t\telement.classList.add(className);\n\t}\n\telse {\n\t\tlet currentClassName = element.getAttribute(\"class\");\n\t\tif (currentClassName) {\n\t\t\telement.setAttribute(\"class\", currentClassName.split(\" \").filter((item) => {\n\t\t\t\treturn item !== className;\n\t\t\t}).join(\" \") + \" \" + className);\n\t\t}\n\t\telse {\n\t\t\telement.setAttribute(\"class\", className);\n\t\t}\n\t\t//element.className = element.className.replace(new RegExp(\"^\" + className + \"| \" + className), \"\") + \" \" + className;\n\t}\n}\n\n/**\n * Removes a class name from an HTML or SVG element.\n *\n * @ignore Exclude from docs\n * @param element Element\n * @param className Class name to add\n */\nexport function removeClass(element: HTMLElement | SVGSVGElement, className: string): void {\n\tif (!element) {\n\t\treturn;\n\t}\n\tif (element.classList) {\n\t\telement.classList.remove(className);\n\t}\n\telse {\n\t\tlet currentClassName = element.getAttribute(\"class\");\n\t\tif (currentClassName) {\n\t\t\telement.setAttribute(\"class\", currentClassName.split(\" \").filter((item) => {\n\t\t\t\treturn item !== className;\n\t\t\t}).join(\" \"));\n\t\t}\n\t\t//element.className = element.className.replace(new RegExp(\"^\" + className + \"| \" + className), \"\");\n\t}\n}\n\n/**\n * Sets style property on DOM element.\n *\n * @ignore Exclude from docs\n * @todo Still needed?\n */\nexport function setStyle(element: HTMLElement | SVGSVGElement, property: string, value: string): void {\n\t(<any>element.style)[property] = value;\n}\n\n/**\n * Gets the computed style value for an element.\n *\n * @ignore Exclude from docs\n */\nexport function getComputedStyle(element: Element, property: string): string | number {\n\n\tif ((<any>element).currentStyle) {\n\t\treturn (<any>element).currentStyle[property];\n\t}\n\n\treturn document.defaultView.getComputedStyle(element, null).getPropertyValue(property);\n}\n\n/**\n * Removes focus from any element by shifting focus to body.\n *\n * @ignore Exclude from docs\n */\nexport function blur(): void {\n\tlet input = document.createElement(\"input\");\n\tinput.style.position = \"fixed\";\n\tinput.style.top = \"0px\";\n\tinput.style.left = \"-10000px\";\n\tdocument.body.appendChild(input);\n\tinput.focus();\n\tinput.blur();\n\tdocument.body.removeChild(input);\n}\n\n/**\n * Tries to focus the element.\n *\n * @ignore Exlude from docs\n * @param element Element to focus\n */\nexport function focus(element: HTMLElement | SVGSVGElement): void {\n\n\tif (element instanceof HTMLElement) {\n\t\telement.focus();\n\t}\n\telse {\n\t\tlet input = document.createElement(\"input\");\n\t\tlet fo = <SVGSVGElement>document.createElementNS(SVGNS, \"foreignObject\");\n\t\tfo.appendChild(input);\n\t\telement.appendChild(fo);\n\t\tinput.focus();\n\t\tinput.disabled = true;\n\t\tfo.remove();\n\t}\n\n\t/*if ((<any>element).focus != undefined) {\n\t\t(<any>element).focus();\n\t}\n\telse if (element instanceof SVGSVGElement) {\n\t\t// Not implemented\n\t\t// @todo implement focus fallback\n\t}*/\n}\n\n/**\n * Returns markup for the element including the element tag itself.\n * SVG elements do not support `outerHTML` so this functions applies of\n * a workaround which creates a new temporary wrapper, clones element and uses\n * wrapper's `innerHTML`.\n *\n * @ignore Exclude from docs\n * @param element Element to get full markup for\n * @return Markup\n * @deprecated Not in use anywhere\n */\nexport function outerHTML(element: HTMLElement | SVGSVGElement): string {\n\tif (element.outerHTML) {\n\t\treturn element.outerHTML;\n\t}\n\telse {\n\t\tlet twrap = document.createElement(\"div\");\n\t\tlet tnode = element.cloneNode(true);\n\t\ttwrap.appendChild(tnode);\n\t\tlet content = twrap.innerHTML;\n\t\treturn content;\n\t}\n}\n\n/**\n * Checks if element is a valid DOM node.\n *\n * @ignore Exclude from docs\n * @param el Element\n * @return `true` if element is a valid DOM node\n */\nexport function isElement(el: HTMLElement): boolean {\n\treturn el instanceof Object && el && el.nodeType === 1;\n}\n\n/**\n * Checks of element `a` contains element `b`.\n *\n * @param a Aleged ascendant\n * @param b Aleged descendant\n * @return Contains?\n */\nexport function contains(a: HTMLElement | SVGSVGElement, b: HTMLElement | SVGSVGElement): boolean {\n\tlet cursor: Node = b;\n\n\twhile (true) {\n\t\tif (a === cursor) {\n\t\t\treturn true;\n\n\t\t} else if (cursor.parentNode == null) {\n\t\t\t// TODO better ShadowRoot detection\n\t\t\tif ((<ShadowRoot>cursor).host == null) {\n\t\t\t\treturn false;\n\n\t\t\t} else {\n\t\t\t\tcursor = (<ShadowRoot>cursor).host;\n\t\t\t}\n\n\t\t} else {\n\t\t\tcursor = cursor.parentNode;\n\t\t}\n\t}\n}\n\n/**\n * Returns the root of the element (either the Document or the ShadowRoot)\n *\n * @param a Node\n * @return Root\n */\nexport function getRoot(a: Node): Document | ShadowRoot | null {\n\t// TODO replace with Node.prototype.getRootNode\n\tconst owner = a.ownerDocument;\n\n\tlet cursor: Node = a;\n\n\twhile (true) {\n\t\tif (cursor.parentNode == null) {\n\t\t\t// If the cursor is the document, or it is a ShadowRoot\n\t\t\t// TODO better ShadowRoot detection\n\t\t\tif (cursor === owner || (<ShadowRoot>cursor).host != null) {\n\t\t\t\treturn <Document | ShadowRoot>cursor;\n\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t} else {\n\t\t\tcursor = cursor.parentNode;\n\t\t}\n\t}\n}\n\n/**\n * Gets the true target of the Event.\n *\n * This is needed to make events work with the shadow DOM.\n *\n * @param event Event\n * @return EventTarget\n */\nexport function eventTarget(event: Event): EventTarget {\n\tif (typeof (<any>event).composedPath === \"function\") {\n\t\treturn (<any>event).composedPath()[0];\n\n\t} else {\n\t\treturn event.target;\n\t}\n}\n\n/**\n * Copies attributes from one element to another.\n *\n * @ignore Exclude from docs\n * @param source Element to copy attributes from\n * @param target Element to copy attributes to\n */\nexport function copyAttributes(source: Element | HTMLElement | SVGSVGElement, target: HTMLElement | SVGSVGElement): void {\n\t$array.each(source.attributes, (attr) => {\n\t\t// TODO what if it's null ?\n\t\tif (attr.value != null) {\n\t\t\ttarget.setAttribute(attr.name, attr.value);\n\t\t}\n\t});\n}\n\n/**\n * [fixPixelPerfect description]\n *\n * @ignore Exclude from docs\n * @todo Description\n * @param el Element\n */\nexport function fixPixelPerfect(el: HTMLElement): void {\n\treadFrame(() => {\n\t\t// sometimes IE doesn't like this\n\t\t// TODO figure out a way to remove this\n\t\ttry {\n\t\t\tconst rect = el.getBoundingClientRect();\n\n\t\t\tconst left = rect.left - Math.round(rect.left);\n\t\t\tconst top = rect.top - Math.round(rect.top);\n\n\t\t\tif (left !== 0) {\n\t\t\t\twriteFrame(() => {\n\t\t\t\t\tel.style.left = left + \"px\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (top !== 0) {\n\t\t\t\twriteFrame(() => {\n\t\t\t\t\tel.style.top = top + \"px\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t} catch (e) { }\n\t});\n}\n\n/**\n * [rootStylesheet description]\n *\n * @ignore Exclude from docs\n * @todo Description\n */\nlet rootStylesheet: $type.Optional<CSSStyleSheet>;\n\n/**\n * [getStylesheet description]\n *\n * @ignore Exclude from docs\n * @todo Description\n * @return [description]\n */\nfunction getStylesheet(): CSSStyleSheet {\n\tif (!$type.hasValue(rootStylesheet)) {\n\t\t// TODO use createElementNS ?\n\t\tconst e = document.createElement(\"style\");\n\t\te.type = \"text/css\";\n\t\tdocument.head.appendChild(e);\n\t\trootStylesheet = e.sheet as CSSStyleSheet;\n\t}\n\n\treturn rootStylesheet;\n}\n\n/**\n * [makeStylesheet description]\n *\n * @ignore Exclude from docs\n * @todo Description\n * @param selector [description]\n * @return [description]\n */\nfunction makeStylesheet(selector: string): CSSStyleRule {\n\tconst root = getStylesheet();\n\n\tconst index = root.cssRules.length;\n\n\troot.insertRule(selector + \"{}\", index);\n\n\treturn root.cssRules[index] as CSSStyleRule;\n}\n\n/**\n * Defines a class for a CSS rule.\n *\n * Can be used to dynamically add CSS to the document.\n */\nexport class StyleRule extends Disposer {\n\n\t/**\n\t * CSS rule.\n\t */\n\tprivate _rule: CSSStyleRule;\n\n\t/**\n\t * A CSS selector text.\n\t *\n\t * E.g.: `.myClass p`\n\t *\n\t * @param selector CSS selector\n\t */\n\tpublic set selector(selector: string) {\n\t\tthis._rule.selectorText = selector;\n\t}\n\n\t/**\n\t * @return CSS selector\n\t */\n\tpublic get selector(): string {\n\t\treturn this._rule.selectorText;\n\t}\n\n\t/**\n\t * Constructor.\n\t *\n\t * @param selector CSS selector\n\t * @param styles An object of style attribute - value pairs\n\t */\n\tconstructor(selector: string, styles: { [name: string]: string }) {\n\t\t// TODO test this\n\t\tsuper(() => {\n\t\t\tconst root = getStylesheet();\n\n\t\t\t// TODO a bit hacky\n\t\t\tconst index = $array.indexOf(root.cssRules, this._rule);\n\n\t\t\tif (index === -1) {\n\t\t\t\tthrow new Error(\"Could not dispose StyleRule\");\n\n\t\t\t} else {\n\t\t\t\troot.deleteRule(index);\n\t\t\t}\n\t\t});\n\n\t\tthis._rule = makeStylesheet(selector);\n\n\t\t$object.each(styles, (key, value) => {\n\t\t\tthis.setStyle(key, value);\n\t\t});\n\t}\n\n\t/**\n\t * Sets the same style properties with browser-specific prefixes.\n\t *\n\t * @param name Attribute name\n\t * @param value Attribute value\n\t */\n\tprivate _setVendorPrefixName(name: string, value: string): void {\n\t\tconst style = this._rule.style;\n\t\tstyle.setProperty(\"-webkit-\" + name, value, \"\");\n\t\tstyle.setProperty(\"-moz-\" + name, value, \"\");\n\t\tstyle.setProperty(\"-ms-\" + name, value, \"\");\n\t\tstyle.setProperty(\"-o-\" + name, value, \"\");\n\t\tstyle.setProperty(name, value, \"\");\n\t}\n\n\t/**\n\t * Sets a value for specific style attribute.\n\t *\n\t * @param name Attribute\n\t * @param value Value\n\t */\n\tpublic setStyle(name: string, value: string): void {\n\t\tif (name === \"transition\") {\n\t\t\tthis._setVendorPrefixName(name, value);\n\n\t\t} else {\n\t\t\tthis._rule.style.setProperty(name, value, \"\");\n\t\t}\n\t}\n\n}\n\n/**\n * An internal counter for unique style ids.\n *\n * @ignore Exclude from docs\n */\nlet styleId: number = 0;\n\n/**\n * @ignore Exclude from docs\n * @todo Description\n */\nexport class StyleClass extends StyleRule {\n\n\t/**\n\t * Class name.\n\t */\n\tprivate _className: string;\n\n\t/**\n\t * Constructor.\n\t *\n\t * @param styles An object of style attribute - value pairs\n\t * @param name Class name\n\t */\n\tconstructor(styles: { [name: string]: string }, name?: string) {\n\t\tconst className =\n\t\t\t(!$type.hasValue(name)\n\t\t\t\t// TODO generate the classname randomly\n\t\t\t\t? \"__style_\" + (++styleId) + \"__\"\n\t\t\t\t: name);\n\n\t\tsuper(\".\" + className, styles);\n\n\t\tthis._className = className;\n\t}\n\n\t/**\n\t * Class name.\n\t *\n\t * @param name Class name\n\t */\n\tpublic set className(name: string) {\n\t\tthis._className = name;\n\t\tthis.selector = \".\" + name;\n\t}\n\n\t/**\n\t * @return Class name\n\t */\n\tpublic get className(): string {\n\t\treturn this._className;\n\t}\n\n\t/**\n\t * Converts the whole class to\n\t * @ignore Exclude from docs\n\t */\n\tpublic toString(): string {\n\t\treturn this._className;\n\t}\n\n}\n\n\nexport function ready(f: () => void): void {\n\tif (document.readyState !== \"loading\") {\n\t\tf();\n\n\t} else {\n\t\tconst listener = () => {\n\t\t\tif (document.readyState !== \"loading\") {\n\t\t\t\tdocument.removeEventListener(\"readystatechange\", listener);\n\t\t\t\tf();\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener(\"readystatechange\", listener);\n\t}\n}\n\n/**\n * Returns a font fmaily name for the element (directly set or\n * computed/inherited).\n *\n * @ignore Exclude from docs\n * @param element Element\n * @return Font family\n */\nexport function findFont(element: Element): string {\n\n\t// Check if element has styles set\n\tlet font = getComputedStyle(element, \"font-family\");\n\n\tif (!font) {\n\t\t// Completely transparent. Look for a parent\n\t\tlet parent = element.parentElement || <Element>element.parentNode;\n\t\tif (parent) {\n\t\t\treturn findFont(parent);\n\t\t}\n\t\telse {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\telse {\n\t\treturn (<string>font);\n\t}\n\n}\n\n/**\n * Returns a font fmaily name for the element (directly set or\n * computed/inherited).\n *\n * @ignore Exclude from docs\n * @param element Element\n * @return Font family\n */\nexport function findFontSize(element: Element): string {\n\n\t// Check if element has styles set\n\tlet font = getComputedStyle(element, \"font-size\");\n\n\tif (!font) {\n\t\t// Completely transparent. Look for a parent\n\t\tlet parent = element.parentElement || <Element>element.parentNode;\n\t\tif (parent) {\n\t\t\treturn findFontSize(parent);\n\t\t}\n\t\telse {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\telse {\n\t\treturn (<string>font);\n\t}\n\n}\n\n/**\n * Checks whether element is not visible, whether directly or via its\n * ascendants.\n *\n * @param element Target element\n * @return Hidden?\n */\nexport function isHidden(element: HTMLElement): boolean {\n\treturn (element.offsetParent === null);\n}\n\n\n/**\n * Checks wthether element is in the current viewport.\n *\n * @since 2.5.5\n * @param el Element\n * @return Within viewport?\n */\nexport function isElementInViewport(el: HTMLElement, viewportTarget?: HTMLElement): boolean {\n\n\t// Get position data of the element\n\tlet rect = el.getBoundingClientRect();\n\n\t// Should we measure against specific viewport element?\n\tif (viewportTarget) {\n\n\t\t// Check if viewport itself is visible\n\t\tif (!isElementInViewport(viewportTarget)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check if element is visible within the viewport\n\t\tlet viewportRect = viewportTarget.getBoundingClientRect();\n\t\treturn (\n\t\t\trect.top >= 0 &&\n\t\t\trect.left >= 0 &&\n\t\t\trect.top <= (viewportRect.top + viewportRect.height) &&\n\t\t\trect.left <= (viewportRect.left + viewportRect.width)\n\t\t);\n\t}\n\n\treturn (\n\t\trect.top >= 0 &&\n\t\trect.left >= 0 &&\n\t\trect.top <= (window.innerHeight || document.documentElement.clientHeight) &&\n\t\trect.left <= (window.innerWidth || document.documentElement.clientWidth)\n\t);\n\n}","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { IDisposer, Disposer } from \"./Disposer\";\r\nimport { EventDispatcher, AMEvent } from \"./EventDispatcher\";\r\nimport { Optional } from \"./Type\";\r\nimport { IClone } from \"./Clone\";\r\nimport * as $object from \"./Object\";\r\nimport * as $iter from \"./Iterator\";\r\nimport * as $string from \"./String\";\r\n\r\n/**\r\n * Defines events from [[Dictionary]].\r\n */\r\nexport interface IDictionaryEvents<Key, Value> {\r\n\r\n\t/**\r\n\t * Invoked when an item is removed from the dictionary.\r\n\t */\r\n\tremoved: {\r\n\r\n\t\t/**\r\n\t\t * Removed value.\r\n\t\t */\r\n\t\toldValue: Value;\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when dictionary is cleared.\r\n\t */\r\n\tcleared: {};\r\n\r\n\t/**\r\n\t * Invoked when `insertKey()` method is called.\r\n\t */\r\n\tinsertKey: {\r\n\r\n\t\t/**\r\n\t\t * Key.\r\n\t\t */\r\n\t\tkey: Key;\r\n\r\n\t\t/**\r\n\t\t * Added value.\r\n\t\t */\r\n\t\tnewValue: Value;\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when `setKey()` method is called.\r\n\t */\r\n\tsetKey: {\r\n\r\n\t\t/**\r\n\t\t * Key.\r\n\t\t */\r\n\t\tkey: Key;\r\n\r\n\t\t/**\r\n\t\t * Removed value. (if overwriting)\r\n\t\t */\r\n\t\toldValue: Value;\r\n\r\n\t\t/**\r\n\t\t * Added value.\r\n\t\t */\r\n\t\tnewValue: Value;\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when `removeKey()` method is called.\r\n\t */\r\n\tremoveKey: {\r\n\r\n\t\t/**\r\n\t\t * Key.\r\n\t\t */\r\n\t\tkey: Key;\r\n\r\n\t\t/**\r\n\t\t * Removed value.\r\n\t\t */\r\n\t\toldValue: Value;\r\n\r\n\t};\r\n\r\n}\r\n\r\n/**\r\n * [K description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Descirption\r\n */\r\nexport type DictionaryLike<K, A> = $iter.Iterable<[K, A]> & {\r\n\tevents: EventDispatcher<{ removed: { oldValue: A } }>;\r\n};\r\n\r\n/**\r\n * A disposable dictionary, which when disposed itself will call `dispose()`\r\n * method on all its items.\r\n */\r\nexport class DictionaryDisposer<K, A extends IDisposer> extends Disposer {\r\n\tconstructor(dict: DictionaryLike<K, A>) {\r\n\t\tconst disposer = dict.events.on(\"removed\", (x) => {\r\n\t\t\tx.oldValue.dispose();\r\n\t\t}, undefined, false);\r\n\r\n\t\tsuper(() => {\r\n\t\t\tdisposer.dispose();\r\n\r\n\t\t\t// TODO clear the dictionary ?\r\n\t\t\t$iter.each(dict.iterator(), (a) => {\r\n\t\t\t\tconst v = a[1];\r\n\t\t\t\tv.dispose();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}\r\n\r\n/**\r\n * A Dictionary is collection where values of some type can be mapped to\r\n * string keys.\r\n *\r\n * You might call it an \"associative list\" or \"associative array\".\r\n */\r\nexport class Dictionary<Key extends string, T> {\r\n\r\n\t/**\r\n\t * Key/value pairs\r\n\t */\r\n\tprivate _dictionary: { [key in Key]?: T };\r\n\r\n\t/**\r\n\t * Event dispatcher.\r\n\t */\r\n\tpublic events: EventDispatcher<AMEvent<Dictionary<Key, T>, IDictionaryEvents<Key, T>>> = new EventDispatcher();\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tthis._dictionary = {};\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if key exists in Dictionary.\r\n\t *\r\n\t * @param key The key to search for\r\n\t * @return `true` if key exists, `false` if it doesn't\r\n\t */\r\n\tpublic hasKey(key: Key): boolean {\r\n\t\treturn $object.hasKey(this._dictionary, key);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the value for a specific key.\r\n\t *\r\n\t * @param key The key to search for\r\n\t * @return Value for the key, or `undefined` if it doesn't exist\r\n\t */\r\n\tpublic getKey(key: Key): Optional<T> {\r\n\t\treturn this._dictionary[key];\r\n\t}\r\n\r\n\t/**\r\n\t * Inserts value at specific key.\r\n\t *\r\n\t * Will thrown an exception if the key already exists in the dictionary.\r\n\t *\r\n\t * @param key Key\r\n\t * @param value Value\r\n\t */\r\n\tpublic insertKey(key: Key, value: T): void {\r\n\t\tif ($object.hasKey(this._dictionary, key)) {\r\n\t\t\tthrow new Error(\"Key \" + key + \" already exists in dictionary\");\r\n\r\n\t\t} else {\r\n\t\t\tthis._dictionary[key] = value;\r\n\r\n\t\t\tif (this.events.isEnabled(\"insertKey\")) {\r\n\t\t\t\tthis.events.dispatchImmediately(\"insertKey\", {\r\n\t\t\t\t\ttype: \"insertKey\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tkey: key,\r\n\t\t\t\t\tnewValue: value\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Adds or updates key/value into dictionary.\r\n\t *\r\n\t * If the key already exists, the old value will be overwritten.\r\n\t *\r\n\t * If the new value is exactly the same as the old value (using ===), it won't do anything.\r\n\t *\r\n\t * @param key Key\r\n\t * @param value Value\r\n\t */\r\n\tpublic setKey(key: Key, value: T): void {\r\n\t\tif ($object.hasKey(this._dictionary, key)) {\r\n\t\t\tconst oldValue = this._dictionary[key];\r\n\r\n\t\t\tif (oldValue !== value) {\r\n\t\t\t\tthis._dictionary[key] = value;\r\n\r\n\t\t\t\tif (this.events.isEnabled(\"setKey\")) {\r\n\t\t\t\t\tthis.events.dispatchImmediately(\"setKey\", {\r\n\t\t\t\t\t\ttype: \"setKey\",\r\n\t\t\t\t\t\ttarget: this,\r\n\t\t\t\t\t\tkey: key,\r\n\t\t\t\t\t\toldValue: oldValue,\r\n\t\t\t\t\t\tnewValue: value\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.events.isEnabled(\"removed\")) {\r\n\t\t\t\t\tthis.events.dispatchImmediately(\"removed\", {\r\n\t\t\t\t\t\ttype: \"removed\",\r\n\t\t\t\t\t\ttarget: this,\r\n\t\t\t\t\t\toldValue: oldValue\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tthis._dictionary[key] = value;\r\n\r\n\t\t\tif (this.events.isEnabled(\"insertKey\")) {\r\n\t\t\t\tthis.events.dispatchImmediately(\"insertKey\", {\r\n\t\t\t\t\ttype: \"insertKey\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tkey: key,\r\n\t\t\t\t\tnewValue: value\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the value at specific `key` using custom function.\r\n\t *\r\n\t * Passes in current value into the function, and uses its output as a new\r\n\t * value.\r\n\t *\r\n\t * If the new value is exactly the same as the old value (using ===), it won't do anything.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param key Key\r\n\t * @param fn Function to transform the value\r\n\t */\r\n\tpublic updateKey(key: Key, fn: (value: T) => T): void {\r\n\t\tif ($object.hasKey(this._dictionary, key)) {\r\n\t\t\tconst oldValue = this._dictionary[key];\r\n\t\t\tconst newValue = fn(oldValue);\r\n\r\n\t\t\tif (oldValue !== newValue) {\r\n\t\t\t\tthis._dictionary[key] = newValue;\r\n\r\n\t\t\t\tif (this.events.isEnabled(\"setKey\")) {\r\n\t\t\t\t\tthis.events.dispatchImmediately(\"setKey\", {\r\n\t\t\t\t\t\ttype: \"setKey\",\r\n\t\t\t\t\t\ttarget: this,\r\n\t\t\t\t\t\tkey: key,\r\n\t\t\t\t\t\toldValue: oldValue,\r\n\t\t\t\t\t\tnewValue: newValue\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.events.isEnabled(\"removed\")) {\r\n\t\t\t\t\tthis.events.dispatchImmediately(\"removed\", {\r\n\t\t\t\t\t\ttype: \"removed\",\r\n\t\t\t\t\t\ttarget: this,\r\n\t\t\t\t\t\toldValue: oldValue\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tthrow new Error(\"Key \" + key + \" doesn't exist in dictionary\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Removes value at specific `key` from dictionary.\r\n\t *\r\n\t * @param key Key to remove\r\n\t */\r\n\tpublic removeKey(key: Key): void {\r\n\t\tif ($object.hasKey(this._dictionary, key)) {\r\n\t\t\tconst oldValue = this._dictionary[key];\r\n\r\n\t\t\tdelete this._dictionary[key];\r\n\r\n\t\t\tif (this.events.isEnabled(\"removeKey\")) {\r\n\t\t\t\tthis.events.dispatchImmediately(\"removeKey\", {\r\n\t\t\t\t\ttype: \"removeKey\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tkey: key,\r\n\t\t\t\t\toldValue: oldValue\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.events.isEnabled(\"removed\")) {\r\n\t\t\t\tthis.events.dispatchImmediately(\"removed\", {\r\n\t\t\t\t\ttype: \"removed\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\toldValue: oldValue\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [insertKeyIfEmpty description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo description\r\n\t * @param key [description]\r\n\t * @param ifEmpty [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic insertKeyIfEmpty(key: Key, ifEmpty: () => T): T {\r\n\t\tif (!this.hasKey(key)) {\r\n\t\t\tthis.insertKey(key, ifEmpty());\r\n\t\t}\r\n\r\n\t\treturn <T>this.getKey(key);\r\n\t}\r\n\r\n\t/**\r\n\t * Removes all items from the dictionary.\r\n\t */\r\n\tpublic clear(): void {\r\n\t\t// TODO dispatch this after clear\r\n\t\tif (this.events.isEnabled(\"removed\")) {\r\n\t\t\t$object.each(this._dictionary, (key, value) => {\r\n\t\t\t\tthis.events.dispatchImmediately(\"removed\", {\r\n\t\t\t\t\ttype: \"removed\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\toldValue: value\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._dictionary = {};\r\n\r\n\t\tif (this.events.isEnabled(\"cleared\")) {\r\n\t\t\tthis.events.dispatchImmediately(\"cleared\", {\r\n\t\t\t\ttype: \"cleared\",\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Copies items from another Dictionary.\r\n\t *\r\n\t * @param source A Dictionary to copy items from\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\t$iter.each(source.iterator(), (a) => {\r\n\t\t\t// TODO fix this type cast\r\n\t\t\tthis.setKey(<Key>a[0], a[1]);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an interator that can be used to iterate through all items in\r\n\t * the dictionary.\r\n\t *\r\n\t * @return Iterator\r\n\t */\r\n\tpublic iterator(): $iter.Iterator<[Key, T]> {\r\n\t\t// @todo fix this type after the Iterator bug is fixed\r\n\t\t// https://github.com/Microsoft/TypeScript/issues/16730\r\n\t\treturn <$iter.Iterator<[Key, T]>>$object.entries(this._dictionary);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an ES6 iterator for the keys/values of the dictionary.\r\n\t */\r\n\tpublic *[Symbol.iterator](): Iterator<[Key, T]> {\r\n\t\t// TODO make this more efficient ?\r\n\t\tfor (let key in this._dictionary) {\r\n\t\t\tif ($object.hasKey(this._dictionary, key)) {\r\n\t\t\t\tyield [<Key>key, this._dictionary[key]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Calls `f` for each key/value in the dictionary.\r\n\t */\r\n\tpublic each(f: (key: Key, value: T) => void): void {\r\n\t\t$iter.each(this.iterator(), ([key, value]) => f(key, value));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an iterator that can be used to iterate through all items in\r\n\t * the dictionary, ordered by key.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Iterator\r\n\t */\r\n\tpublic sortedIterator(): $iter.Iterator<[Key, T]> {\r\n\t\treturn $iter.sort(this.iterator(), (x, y) => $string.order(x[0], y[0]));\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * A version of a [[Dictionary]] that has a \"template\".\r\n *\r\n * A template is an instance of an object, that can be used to create new\r\n * elements in the list without actually needing to create instances for those.\r\n *\r\n * When new element is created in the list, e.g. by calling its `create()`\r\n * method, an exact copy of the element is created (including properties and\r\n * other attributes), inserted into the list and returned.\r\n */\r\nexport class DictionaryTemplate<Key extends string, T extends IClone<T> & { isTemplate: boolean }> extends Dictionary<Key, T> {\r\n\t/**\r\n\t * A template object.\r\n\t *\r\n\t * @todo Make this private\r\n\t */\r\n\tpublic _template!: T;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t *\r\n\t * @param t Template object\r\n\t */\r\n\tpublic constructor(t: T) {\r\n\t\tsuper();\r\n\t\tthis.template = t;\r\n\t}\r\n\r\n\t/**\r\n\t * A \"template\" object to copy all properties from when creating new list\r\n\t * items.\r\n\t *\r\n\t * @param v Template object\r\n\t */\r\n\tpublic set template(v: T) {\r\n\t\tv.isTemplate = true;\r\n\t\tthis._template = v;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Template object\r\n\t */\r\n\tpublic get template(): T {\r\n\t\treturn this._template;\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all elements from other dictionary.\r\n\t *\r\n\t * @param source Source dictionary\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\t$iter.each(source.iterator(), (a) => {\r\n\t\t\t// TODO fix this type cast\r\n\t\t\t// TODO why does this need to clone ?\r\n\t\t\tthis.setKey(<Key>a[0], a[1].clone());\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Instantiates a new object of the specified type, adds it to specified\r\n\t * `key` in the dictionary, and returns it.\r\n\t *\r\n\t * @param make Item type to use. Will use the default type for the dictionary if not specified.\r\n\t * @return Newly created item\r\n\t */\r\n\tpublic create(key: Key): T {\r\n\t\treturn this.insertKeyIfEmpty(key, () => this.template.clone());\r\n\t}\r\n\r\n}\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $array from \"./Array\";\r\nimport * as $type from \"./Type\";\r\nimport { Optional } from \"./Type\";\r\n\r\n/**\r\n * Defines interface for disposable objects.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport interface IDisposer {\r\n\tisDisposed(): boolean;\r\n\tdispose(): void;\r\n}\r\n\r\n/**\r\n * A base class for disposable objects.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport class Disposer implements IDisposer {\r\n\r\n\t/**\r\n\t * Is object disposed?\r\n\t */\r\n\tprivate _disposed: boolean;\r\n\r\n\t/**\r\n\t * Method that disposes the object.\r\n\t */\r\n\tprivate _dispose: () => void;\r\n\r\n\t/**\r\n\t * Constructor.\r\n\t *\r\n\t * @param dispose Function that disposes object\r\n\t */\r\n\tconstructor(dispose: () => void) {\r\n\t\tthis._disposed = false;\r\n\t\tthis._dispose = dispose;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if object is disposed.\r\n\t *\r\n\t * @return Disposed?\r\n\t */\r\n\tpublic isDisposed(): boolean {\r\n\t\treturn this._disposed;\r\n\t}\r\n\r\n\t/**\r\n\t * Disposes the object.\r\n\t */\r\n\tpublic dispose(): void {\r\n\t\tif (!this._disposed) {\r\n\t\t\tthis._disposed = true;\r\n\t\t\tthis._dispose();\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * A collection of related disposers that can be disposed in one go.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport class MultiDisposer extends Disposer {\r\n\tconstructor(disposers: Array<IDisposer>) {\r\n\t\tsuper(() => {\r\n\t\t\t$array.each(disposers, (x) => {\r\n\t\t\t\tx.dispose();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}\r\n\r\n/**\r\n * A special kind of Disposer that has attached value set.\r\n *\r\n * If a new value is set using `set()` method, the old disposer value is\r\n * disposed.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport class MutableValueDisposer<T extends IDisposer> extends Disposer {\r\n\r\n\t/**\r\n\t * Current disposer.\r\n\t */\r\n\tprivate _disposer: Optional<IDisposer>;\r\n\r\n\t/**\r\n\t * Current value.\r\n\t */\r\n\tprivate _value: Optional<T>;\r\n\r\n\t/**\r\n\t * Constructor.\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper(() => {\r\n\t\t\tif ($type.hasValue(this._disposer)) {\r\n\t\t\t\tthis._disposer.dispose();\r\n\t\t\t\tthis._disposer = undefined;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Returns current value.\r\n\t *\r\n\t * @return Value\r\n\t */\r\n\tpublic get(): Optional<T> {\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets value and disposes previous disposer if it was set.\r\n\t *\r\n\t * @param value New value\r\n\t * @param disposer Disposer\r\n\t */\r\n\tpublic set(value: Optional<T>, disposer: Optional<IDisposer>): void {\r\n\t\tif ($type.hasValue(this._disposer)) {\r\n\t\t\tthis._disposer.dispose();\r\n\t\t}\r\n\r\n\t\tthis._disposer = disposer;\r\n\t\tthis._value = value;\r\n\t}\r\n\r\n\t/**\r\n\t * Resets the disposer value.\r\n\t */\r\n\tpublic reset(): void {\r\n\t\tthis.set(undefined, undefined);\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\nexport class CounterDisposer extends Disposer {\r\n\r\n\t/**\r\n\t * [_counter description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprivate _counter: number = 0;\r\n\r\n\t/**\r\n\t * [increment description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tpublic increment() {\r\n\t\t// TODO throw an error if it is disposed\r\n\t\t++this._counter;\r\n\r\n\t\t// TODO make this more efficient\r\n\t\treturn new Disposer(() => {\r\n\t\t\t--this._counter;\r\n\r\n\t\t\tif (this._counter === 0) {\r\n\t\t\t\tthis.dispose();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n}\r\n","/**\r\n * A collection of easing functions\r\n *\r\n * Parts of this collection are taken from D3.js library (https://d3js.org/)\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $math from \"../utils/Math\";\r\nimport { registry } from \"../Registry\";\r\n\r\n/**\r\n * The functions below are from D3.js library (https://d3js.org/)\r\n *\r\n * ----------------------------------------------------------------------------\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n * this list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n * this list of conditions and the following disclaimer in the documentation\r\n * and/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n * contributors may be used to endorse or promote products derived from this\r\n * software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * ----------------------------------------------------------------------------\r\n * @hidden\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * LINEAR FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Easing function: \"linear\".\r\n */\r\nexport function linear(t: number): number {\r\n\treturn +t;\r\n}\r\nregistry.registeredClasses[\"ease.linear\"] = linear;\r\n\r\n/**\r\n * Easing function: \"quadIn\".\r\n */\r\nexport function quadIn(t: number): number {\r\n\treturn t * t;\r\n}\r\nregistry.registeredClasses[\"ease.quadIn\"] = quadIn;\r\n\r\n/**\r\n * Easing function: \"quadOut\".\r\n */\r\nexport function quadOut(t: number): number {\r\n\treturn t * (2 - t);\r\n}\r\nregistry.registeredClasses[\"ease.quadOut\"] = quadOut;\r\n\r\n/**\r\n * Easing function: \"quadInOut\".\r\n */\r\nexport function quadInOut(t: number): number {\r\n\tt *= 2;\r\n\treturn (t <= 1 ? t * t : --t * (2 - t) + 1) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.quadInOut\"] = quadInOut;\r\n\r\n/**\r\n * Easing function: \"polyIn\".\r\n */\r\nexport function polyIn(t: number, e: number): number {\r\n\treturn Math.pow(t, e);\r\n}\r\nregistry.registeredClasses[\"ease.polyIn\"] = polyIn;\r\n\r\n/**\r\n * Easing function: \"polyOut\".\r\n */\r\nexport function polyOut(t: number, e: number): number {\r\n\treturn 1 - Math.pow(1 - t, e);\r\n}\r\nregistry.registeredClasses[\"ease.polyOut\"] = polyOut;\r\n\r\n/**\r\n * Easing function: \"polyInOut\".\r\n */\r\nexport function polyInOut(t: number, e: number): number {\r\n\tt *= 2;\r\n\treturn (t <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.polyInOut\"] = polyInOut;\r\n\r\n/**\r\n * Easing function: \"polyIn3\".\r\n */\r\nexport function polyIn3(t: number): number {\r\n\treturn polyIn(t, 3);\r\n}\r\nregistry.registeredClasses[\"ease.polyIn3\"] = polyIn3;\r\n\r\n/**\r\n * Easing function: \"polyOut3\".\r\n */\r\nexport function polyOut3(t: number): number {\r\n\treturn polyOut(t, 3);\r\n}\r\nregistry.registeredClasses[\"ease.polyOut3\"] = polyOut3;\r\n\r\n/**\r\n * Easing function: \"polyInOut3\".\r\n */\r\nexport function polyInOut3(t: number): number {\r\n\treturn polyInOut(t, 3);\r\n}\r\nregistry.registeredClasses[\"ease.polyInOut3\"] = polyInOut3;\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * EXPONENTIAL FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Easing function: \"expIn\".\r\n */\r\nexport function expIn(t: number): number {\r\n\treturn Math.pow(2, 10 * t - 10);\r\n}\r\nregistry.registeredClasses[\"ease.expIn\"] = expIn;\r\n\r\n/**\r\n * Easing function: \"expOut\".\r\n */\r\nexport function expOut(t: number): number {\r\n\treturn 1 - Math.pow(2, -10 * t);\r\n}\r\nregistry.registeredClasses[\"ease.expOut\"] = expOut;\r\n\r\n/**\r\n * Easing function: \"expInOut\".\r\n */\r\nexport function expInOut(t: number): number {\r\n\tt *= 2;\r\n\treturn (t <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.expInOut\"] = expInOut;\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * SINE FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Easing function: \"sinIn\".\r\n */\r\nexport function sinIn(t: number): number {\r\n\treturn 1 - Math.cos(t * $math.HALFPI);\r\n}\r\nregistry.registeredClasses[\"ease.sinIn\"] = sinIn;\r\n\r\n/**\r\n * Easing function: \"sinOut\".\r\n */\r\nexport function sinOut(t: number): number {\r\n\treturn Math.sin(t * $math.HALFPI);\r\n}\r\nregistry.registeredClasses[\"ease.sinOut\"] = sinOut;\r\n\r\n/**\r\n * Easing function: \"sinInOut\".\r\n */\r\nexport function sinInOut(t: number): number {\r\n\treturn (1 - Math.cos($math.PI * t)) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.sinInOut\"] = sinInOut;\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * CUBIC FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Easing function: \"cubicIn\".\r\n */\r\nexport function cubicIn(t: number): number {\r\n\treturn t * t * t;\r\n}\r\nregistry.registeredClasses[\"ease.cubicIn\"] = cubicIn;\r\n\r\n/**\r\n * Easing function: \"cubicOut\".\r\n */\r\nexport function cubicOut(t: number): number {\r\n\treturn --t * t * t + 1;\r\n}\r\nregistry.registeredClasses[\"ease.cubicOut\"] = cubicOut;\r\n\r\n/**\r\n * Easing function: \"cubicInOut\".\r\n */\r\nexport function cubicInOut(t: number): number {\r\n\tt *= 2;\r\n\treturn (t <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.cubicInOut\"] = cubicInOut;\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * CIRCLE FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Easing function: \"circleIn\".\r\n */\r\nexport function circleIn(t: number): number {\r\n\treturn 1 - Math.sqrt(1 - t * t);\r\n}\r\nregistry.registeredClasses[\"ease.circleIn\"] = circleIn;\r\n\r\n/**\r\n * Easing function: \"circleOut\".\r\n */\r\nexport function circleOut(t: number): number {\r\n\treturn Math.sqrt(1 - --t * t);\r\n}\r\nregistry.registeredClasses[\"ease.circleOut\"] = circleOut;\r\n\r\n/**\r\n * Easing function: \"circleInOut\".\r\n */\r\nexport function circleInOut(t: number): number {\r\n\tt *= 2;\r\n\treturn (t <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.circleInOut\"] = circleInOut;\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * BOUNCE FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nlet b1 = 4 / 11,\r\n\tb2 = 6 / 11,\r\n\tb3 = 8 / 11,\r\n\tb4 = 3 / 4,\r\n\tb5 = 9 / 11,\r\n\tb6 = 10 / 11,\r\n\tb7 = 15 / 16,\r\n\tb8 = 21 / 22,\r\n\tb9 = 63 / 64,\r\n\tb0 = 1 / b1 / b1;\r\n\r\n/**\r\n * Easing function: \"bounceIn\".\r\n */\r\nexport function bounceIn(t: number): number {\r\n\treturn 1 - bounceOut(1 - t);\r\n}\r\nregistry.registeredClasses[\"ease.bounceIn\"] = bounceIn;\r\n\r\n/**\r\n * Easing function: \"bounceOut\".\r\n */\r\nexport function bounceOut(t: number): number {\r\n\tt = +t;\r\n\treturn t < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\r\n}\r\nregistry.registeredClasses[\"ease.bounceOut\"] = bounceOut;\r\n\r\n/**\r\n * Easing function: \"bounceInOut\".\r\n */\r\nexport function bounceInOut(t: number): number {\r\n\tt *= 2;\r\n\treturn (t <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.bounceInOut\"] = bounceInOut;\r\n\r\n/**\r\n * ============================================================================\r\n * ELASTIC FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nlet tau = 2 * Math.PI;\r\nlet amplitude = 1;\r\nlet period = 0.3 / tau;\r\nlet s = Math.asin(1 / amplitude) * period;\r\n\r\n/**\r\n * Easing function: \"elasticIn\".\r\n *\r\n * @function elasticIn\r\n * @param a Amplitude\r\n * @param p period\r\n */\r\nexport function elasticIn(t: number): number {\r\n\treturn amplitude * Math.pow(2, 10 * --t) * Math.sin((s - t) / period);\r\n}\r\nregistry.registeredClasses[\"ease.elasticIn\"] = elasticIn;\r\n\r\n/**\r\n * Easing function: \"elasticOut\".\r\n *\r\n * @function elasticOut\r\n * @param a Amplitude\r\n * @param p period\r\n */\r\nexport function elasticOut(t: number): number {\r\n\treturn 1 - amplitude * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / period);\r\n}\r\nregistry.registeredClasses[\"ease.elasticOut\"] = elasticOut;\r\n\r\n/**\r\n * Easing function: \"elasticInOut\".\r\n *\r\n * @function elasticInOut\r\n * @param a Amplitude\r\n * @param p period\r\n */\r\nexport function elasticInOut(t: number): number {\r\n\tt = t * 2 - 1;\r\n\treturn (t < 0\r\n\t\t? amplitude * Math.pow(2, 10 * t) * Math.sin((s - t) / period)\r\n\t\t: 2 - amplitude * Math.pow(2, -10 * t) * Math.sin((s + t) / period)) / 2;\r\n}\r\nregistry.registeredClasses[\"ease.elasticInOut\"] = elasticInOut;\r\n","/**\r\n * Event Dispatcher module is used for registering listeners and dispatching\r\n * events across amCharts system.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Disposer, IDisposer } from \"./Disposer\";\r\nimport * as $array from \"./Array\";\r\nimport * as $async from \"./AsyncPending\";\r\nimport * as $type from \"./Type\";\r\n\r\n/**\r\n * Defines a universal type for the event object.\r\n */\r\nexport type AMEvent<Target, T> = {\r\n\t[K in keyof T]: { type: K, target: Target } & T[K];\r\n};\r\n\r\n/**\r\n * A universal interface for event listeners.\r\n */\r\nexport interface EventListener<T> {\r\n\tkilled: boolean;\r\n\tonce: boolean;\r\n\ttype: any;\r\n\tcallback: any;\r\n\tcontext: any;\r\n\tshouldClone: boolean;\r\n\tdispatch: any;\r\n\tdisposer: IDisposer;\r\n}\r\n\r\n/*export interface IEventDispatcher<T> {\r\n\tisDisposed(): boolean;\r\n\tdispose(): void;\r\n\thasListeners(): boolean;\r\n\tenable(): void;\r\n\tdisable(): void;\r\n\tenableType<Key extends keyof T>(type: Key): void;\r\n\tdisableType<Key extends keyof T>(type: Key, amount?: number): void;\r\n\tisEnabled<Key extends keyof T>(type: Key): boolean;\r\n\thas<C, Key extends keyof T>(type: Key, callback?: (this: C, event: T[Key]) => void, context?: C): boolean;\r\n\tdispatchImmediately<Key extends keyof T>(type: Key, event: T[Key]): void;\r\n\tdispatch<Key extends keyof T>(type: Key, event: T[Key]): void;\r\n\tonAll<C, Key extends keyof T>(callback: (this: C, type: Key, event: T[Key]) => void, context?: C): IDisposer;\r\n\ton<C, Key extends keyof T>(type: Key, callback: (this: C, event: T[Key]) => void, context?: C): IDisposer;\r\n\tonce<C, Key extends keyof T>(type: Key, callback: (this: C, event: T[Key]) => void, context?: C): IDisposer;\r\n\toff<C, Key extends keyof T>(type: Key, callback: (this: C, event: T[Key]) => void, context?: C): void;\r\n\toff<C, Key extends keyof T>(type: Key, callback: (this: C, event: T[Key]) => void, context?: C): void;\r\n\tcopyFrom(source: this): void;\r\n}*/\r\n\r\n/**\r\n * Universal Event Dispatcher.\r\n *\r\n * @important\r\n */\r\nexport class EventDispatcher<T> implements IDisposer {\r\n\r\n\tprotected _listeners: Array<EventListener<T>>;\r\n\tprotected _killed: Array<EventListener<T>>;\r\n\tprotected _disabled: { [key in keyof T]?: number };\r\n\tprotected _iterating: number;\r\n\tprotected _enabled: boolean;\r\n\tprotected _disposed: boolean;\r\n\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tthis._listeners = [];\r\n\t\tthis._killed = [];\r\n\t\tthis._disabled = {};\r\n\t\tthis._iterating = 0;\r\n\t\tthis._enabled = true;\r\n\t\tthis._disposed = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns if this object has been already disposed.\r\n\t *\r\n\t * @return Disposed?\r\n\t */\r\n\tpublic isDisposed(): boolean {\r\n\t\treturn this._disposed;\r\n\t}\r\n\r\n\t/**\r\n\t * Dispose (destroy) this object.\r\n\t */\r\n\tpublic dispose(): void {\r\n\t\tif (!this._disposed) {\r\n\t\t\tthis._disposed = true;\r\n\r\n\t\t\tconst a = this._listeners;\r\n\r\n\t\t\tthis._iterating = 1;\r\n\t\t\tthis._listeners = <any>null;\r\n\t\t\tthis._disabled = <any>null;\r\n\r\n\t\t\ttry {\r\n\t\t\t\t$array.each(a, (x) => {\r\n\t\t\t\t\tx.disposer.dispose();\r\n\t\t\t\t});\r\n\r\n\t\t\t} finally {\r\n\t\t\t\tthis._killed = <any>null;\r\n\t\t\t\tthis._iterating = <any>null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if this particular event dispatcher has any listeners set.\r\n\t *\r\n\t * @return Has listeners?\r\n\t */\r\n\tpublic hasListeners(): boolean {\r\n\t\treturn this._listeners.length !== 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if this particular event dispatcher has any particular listeners set.\r\n\t *\r\n\t * @return Has particular event listeners?\r\n\t */\r\n\tpublic hasListenersByType<Key extends keyof T>(type: Key): boolean {\r\n\t\treturn $array.any(this._listeners, (x) => (x.type === null || x.type === type) && !x.killed);\r\n\t}\r\n\r\n\t/**\r\n\t * Enable dispatching of events if they were previously disabled by\r\n\t * `disable()`.\r\n\t */\r\n\tpublic enable(): void {\r\n\t\tthis._enabled = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Disable dispatching of events until re-enabled by `enable()`.\r\n\t */\r\n\tpublic disable(): void {\r\n\t\tthis._enabled = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Enable dispatching particular event, if it was disabled before by\r\n\t * `disableType()`.\r\n\t *\r\n\t * @param type Event type\r\n\t */\r\n\tpublic enableType<Key extends keyof T>(type: Key): void {\r\n\t\tdelete this._disabled[type];\r\n\t}\r\n\r\n\t/**\r\n\t * Disable dispatching of events for a certain event type.\r\n\t *\r\n\t * Optionally, can set how many dispatches to skip before automatically\r\n\t * re-enabling the dispatching.\r\n\t *\r\n\t * @param type Event type\r\n\t * @param amount Number of event dispatches to skip\r\n\t */\r\n\tpublic disableType<Key extends keyof T>(type: Key, amount: number = Infinity): void {\r\n\t\tthis._disabled[type] = amount;\r\n\t}\r\n\r\n\t/**\r\n\t * Removes listener from dispatcher.\r\n\t *\r\n\t * Will throw an exception if such listener does not exists.\r\n\t *\r\n\t * @param listener Listener to remove\r\n\t */\r\n\tprotected _removeListener(listener: EventListener<T>): void {\r\n\t\tif (this._iterating === 0) {\r\n\t\t\tconst index = this._listeners.indexOf(listener);\r\n\r\n\t\t\tif (index === -1) {\r\n\t\t\t\tthrow new Error(\"Invalid state: could not remove listener\");\r\n\t\t\t}\r\n\r\n\t\t\tthis._listeners.splice(index, 1);\r\n\r\n\t\t} else {\r\n\t\t\tthis._killed.push(listener);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Removes existing listener by certain parameters.\r\n\t *\r\n\t * @param once Listener's once setting\r\n\t * @param type Listener's type\r\n\t * @param callback Callback function\r\n\t * @param context Callback context\r\n\t */\r\n\tprotected _removeExistingListener<A, B, Key extends keyof T>(once: boolean, type: Key | null, callback?: A, context?: B): void {\r\n\t\tif (this._disposed) {\r\n\t\t\tthrow new Error(\"EventDispatcher is disposed\");\r\n\t\t}\r\n\r\n\t\tthis._eachListener((info) => {\r\n\t\t\tif (info.once === once && // TODO is this correct ?\r\n\t\t\t\tinfo.type === type &&\r\n\t\t\t\t(callback == null || info.callback === callback) &&\r\n\t\t\t\tinfo.context === context) {\r\n\t\t\t\tinfo.disposer.dispose();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if dispatching for particular event type is enabled.\r\n\t *\r\n\t * @param type Event type\r\n\t * @return Enabled?\r\n\t */\r\n\tpublic isEnabled<Key extends keyof T>(type: Key): boolean {\r\n\t\tif (this._disposed) {\r\n\t\t\tthrow new Error(\"EventDispatcher is disposed\");\r\n\t\t}\r\n\r\n\t\t// TODO is this check correct ?\r\n\t\treturn this._enabled && this._listeners.length > 0 && this.hasListenersByType(type) && this._disabled[type] == null;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if there's already a listener with specific parameters.\r\n\t *\r\n\t * @param type Listener's type\r\n\t * @param callback Callback function\r\n\t * @param context Callback context\r\n\t * @return Has listener?\r\n\t */\r\n\tpublic has<C, Key extends keyof T>(type: Key, callback?: (this: C, event: T[Key]) => void, context?: C): boolean {\r\n\t\tconst index = $array.findIndex(this._listeners, (info) => {\r\n\t\t\treturn info.once !== true && // Ignoring \"once\" listeners\r\n\t\t\t\tinfo.type === type &&\r\n\t\t\t\t(callback == null || info.callback === callback) &&\r\n\t\t\t\tinfo.context === context;\r\n\t\t});\r\n\r\n\t\treturn index !== -1;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks whether event of the particular type should be dispatched.\r\n\t *\r\n\t * @param type Event type\r\n\t * @return Dispatch?\r\n\t */\r\n\tprotected _shouldDispatch<Key extends keyof T>(type: Key): boolean {\r\n\t\tif (this._disposed) {\r\n\t\t\tthrow new Error(\"EventDispatcher is disposed\");\r\n\t\t}\r\n\r\n\t\tconst count = this._disabled[type];\r\n\r\n\t\tif (!$type.isNumber(count)) {\r\n\t\t\treturn this._enabled;\r\n\r\n\t\t} else {\r\n\t\t\tif (count <= 1) {\r\n\t\t\t\tdelete this._disabled[type];\r\n\r\n\t\t\t} else {\r\n\t\t\t\t--this._disabled[type];\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [_eachListener description]\r\n\t *\r\n\t * All of this extra code is needed when a listener is removed while iterating\r\n\t *\r\n\t * @todo Description\r\n\t * @param fn [description]\r\n\t */\r\n\tprotected _eachListener(fn: (listener: EventListener<T>) => void): void {\r\n\t\t++this._iterating;\r\n\r\n\t\ttry {\r\n\t\t\t$array.each(this._listeners, fn);\r\n\r\n\t\t} finally {\r\n\t\t\t--this._iterating;\r\n\r\n\t\t\t// TODO should this be inside or outside the finally ?\r\n\t\t\tif (this._iterating === 0 && this._killed.length !== 0) {\r\n\t\t\t\t// Remove killed listeners\r\n\t\t\t\t$array.each(this._killed, (killed) => {\r\n\t\t\t\t\tthis._removeListener(killed);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._killed.length = 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches an event immediately without waiting for next cycle.\r\n\t *\r\n\t * @param type Event type\r\n\t * @param event Event object\r\n\t * @todo automatically add in type and target properties if they are missing\r\n\t */\r\n\tpublic dispatchImmediately<Key extends keyof T>(type: Key, event: T[Key]): void {\r\n\t\tif (this._shouldDispatch(type)) {\r\n\t\t\t// TODO check if it's faster to use an object of listeners rather than a single big array\r\n\t\t\t// TODO if the function throws, maybe it should keep going ?\r\n\t\t\tthis._eachListener((listener) => {\r\n\t\t\t\tif (!listener.killed && (listener.type === null || listener.type === type)) {\r\n\t\t\t\t\tlistener.dispatch(type, event);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Shelves the event to be dispatched within next update cycle.\r\n\t *\r\n\t * @param type Event type\r\n\t * @param event Event object\r\n\t * @todo automatically add in type and target properties if they are missing\r\n\t */\r\n\tpublic dispatch<Key extends keyof T>(type: Key, event: T[Key]): void {\r\n\t\tif (this._shouldDispatch(type)) {\r\n\t\t\tthis._eachListener((listener) => {\r\n\t\t\t\t// TODO check if it's faster to use an object of listeners rather than a single big array\r\n\t\t\t\tif (!listener.killed && (listener.type === null || listener.type === type)) {\r\n\t\t\t\t\t// TODO if the function throws, maybe it should keep going ?\r\n\t\t\t\t\t// TODO dispatch during the update cycle, rather than using whenIdle\r\n\t\t\t\t\t$async.whenIdle(() => {\r\n\t\t\t\t\t\tif (!listener.killed) {\r\n\t\t\t\t\t\t\tlistener.dispatch(type, event);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates, catalogs and returns an [[EventListener]].\r\n\t *\r\n\t * Event listener can be disposed.\r\n\t *\r\n\t * @param once Listener's once setting\r\n\t * @param type Listener's type\r\n\t * @param callback Callback function\r\n\t * @param context Callback context\r\n\t * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n\t * @param dispatch\r\n\t * @returns An event listener\r\n\t */\r\n\tprotected _on<A, B, Key extends keyof T>(once: boolean, type: Key | null, callback: A, context: B, shouldClone: boolean, dispatch: (type: Key, event: T[Key]) => void): EventListener<T> {\r\n\t\tif (this._disposed) {\r\n\t\t\tthrow new Error(\"EventDispatcher is disposed\");\r\n\t\t}\r\n\r\n\t\tthis._removeExistingListener(once, type, callback, context);\r\n\r\n\t\tconst info: EventListener<T> = {\r\n\t\t\ttype: type,\r\n\t\t\tcallback: callback,\r\n\t\t\tcontext: context,\r\n\t\t\tshouldClone: shouldClone,\r\n\t\t\tdispatch: <any>dispatch,\r\n\t\t\tkilled: false,\r\n\t\t\tonce: once,\r\n\t\t\tdisposer: new Disposer(() => {\r\n\t\t\t\tinfo.killed = true;\r\n\t\t\t\tthis._removeListener(info);\r\n\t\t\t})\r\n\t\t};\r\n\r\n\t\tthis._listeners.push(info);\r\n\r\n\t\treturn info;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an event listener to be invoked on **any** event.\r\n\t *\r\n\t * @param callback Callback function\r\n\t * @param context Callback context\r\n\t * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n\t * @returns A disposable event listener\r\n\t * @todo what if `listen` is called on the same function twice ?\r\n\t */\r\n\tpublic onAll<C, Key extends keyof T>(callback: (this: C, type: Key, event: T[Key]) => void, context?: C, shouldClone: boolean = true): IDisposer {\r\n\t\treturn this._on(false, null, callback, context, shouldClone, (type, event) => callback.call(context, type, event)).disposer;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an event listener to be invoked on a specific event type.\r\n\t *\r\n\t * ```TypeScript\r\n\t * series.events.on(\"hidden\", (ev) => {\r\n\t * console.log(\"Series hidden: \" + ev.target.name);\r\n\t * }, this);\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * series.events.on(\"hidden\", function(ev) {\r\n\t * console.log(\"Series hidden: \" + ev.target.name);\r\n\t * }, this);\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"series\": [{\r\n\t * // ...\r\n\t * \"events\": {\r\n\t * \t\"hidden\": function(ev) {\r\n\t * \t console.log(\"Series hidden: \" + ev.target.name);\r\n\t * \t}\r\n\t * }\r\n\t * }]\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * The above will invoke our custom event handler whenever series we put\r\n\t * event on is hidden.\r\n\t *\r\n\t * @param type Listener's type\r\n\t * @param callback Callback function\r\n\t * @param context Callback context\r\n\t * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n\t * @returns A disposable event listener\r\n\t * @todo what if `listen` is called on the same function twice ?\r\n\t */\r\n\tpublic on<C, Key extends keyof T>(type: Key, callback: (this: C, event: T[Key]) => void, context?: C, shouldClone: boolean = true): IDisposer {\r\n\t\treturn this._on(false, type, callback, context, shouldClone, (type, event) => callback.call(context, event)).disposer;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an event listener to be invoked on a specific event type once.\r\n\t *\r\n\t * Once the event listener is invoked, it is automatically disposed.\r\n\t *\r\n\t * ```TypeScript\r\n\t * series.events.on(\"hidden\", (ev) => {\r\n\t * console.log(\"Series hidden: \" + ev.target.name);\r\n\t * }, this);\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * series.events.on(\"hidden\", function(ev) {\r\n\t * console.log(\"Series hidden: \" + ev.target.name);\r\n\t * }, this);\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"series\": [{\r\n\t * // ...\r\n\t * \"events\": {\r\n\t * \t\"hidden\": function(ev) {\r\n\t * \t console.log(\"Series hidden: \" + ev.target.name);\r\n\t * \t}\r\n\t * }\r\n\t * }]\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * The above will invoke our custom event handler the first time series we\r\n\t * put event on is hidden.\r\n\t *\r\n\t * @param type Listener's type\r\n\t * @param callback Callback function\r\n\t * @param context Callback context\r\n\t * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n\t * @returns A disposable event listener\r\n\t * @todo what if `listen` is called on the same function twice ?\r\n\t */\r\n\tpublic once<C, Key extends keyof T>(type: Key, callback: (this: C, event: T[Key]) => void, context?: C, shouldClone: boolean = true): IDisposer {\r\n\t\tconst x = this._on(true, type, callback, context, shouldClone, (type, event) => {\r\n\t\t\tx.disposer.dispose();\r\n\t\t\tcallback.call(context, event)\r\n\t\t});\r\n\r\n\t\t// TODO maybe this should return a different Disposer ?\r\n\t\treturn x.disposer;\r\n\t}\r\n\r\n\t/**\r\n\t * Removes the event listener with specific parameters.\r\n\t *\r\n\t * @param type Listener's type\r\n\t * @param callback Callback function\r\n\t * @param context Callback context\r\n\t */\r\n\tpublic off<C, Key extends keyof T>(type: Key, callback?: (this: C, event: T[Key]) => void, context?: C): void {\r\n\t\tthis._removeExistingListener(false, type, callback, context);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Copies all dispatcher parameters, including listeners, from another event\r\n\t * dispatcher.\r\n\t *\r\n\t * @param source Source event dispatcher\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\tif (this._disposed) {\r\n\t\t\tthrow new Error(\"EventDispatcher is disposed\");\r\n\t\t}\r\n\r\n\t\tif (source === this) {\r\n\t\t\tthrow new Error(\"Cannot copyFrom the same TargetedEventDispatcher\");\r\n\t\t}\r\n\r\n\t\t$array.each(source._listeners, (x) => {\r\n\t\t\t// TODO is this correct ?\r\n\t\t\tif (!x.killed && x.shouldClone) {\r\n\t\t\t\tif (x.type === null) {\r\n\t\t\t\t\tthis.onAll(x.callback, x.context);\r\n\r\n\t\t\t\t} else if (x.once) {\r\n\t\t\t\t\tthis.once(x.type, x.callback, x.context);\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.on(x.type, x.callback, x.context);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * A version of the [[EventDispatcher]] that dispatches events for a specific\r\n * target object.\r\n *\r\n * @important\r\n */\r\nexport class TargetedEventDispatcher<Target, T> extends EventDispatcher<T> {\r\n\r\n\t/**\r\n\t * A target object which is originating events using this dispatcher.\r\n\t */\r\n\tpublic target: Target;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t *\r\n\t * @param target Event dispatcher target\r\n\t */\r\n\tconstructor(target: Target) {\r\n\t\tsuper();\r\n\t\tthis.target = target;\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all dispatcher parameters, including listeners, from another event\r\n\t * dispatcher.\r\n\t *\r\n\t * @param source Source event dispatcher\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\tif (this._disposed) {\r\n\t\t\tthrow new Error(\"EventDispatcher is disposed\");\r\n\t\t}\r\n\r\n\t\tif (source === this) {\r\n\t\t\tthrow new Error(\"Cannot copyFrom the same TargetedEventDispatcher\");\r\n\t\t}\r\n\r\n\t\t$array.each(source._listeners, (x) => {\r\n\t\t\t// TODO very hacky\r\n\t\t\tif (x.context === source.target) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t// TODO is this correct ?\r\n\t\t\tif (!x.killed && x.shouldClone) {\r\n\t\t\t\tif (x.type === null) {\r\n\t\t\t\t\tthis.onAll(x.callback, x.context);\r\n\r\n\t\t\t\t} else if (x.once) {\r\n\t\t\t\t\tthis.once(x.type, x.callback, x.context);\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.on(x.type, x.callback, x.context);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n}\r\n","/**\r\n * This module contains a version of ColorSet that can (and should) be used for\r\n * coloring UI elements.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { registry } from \"../Registry\";\r\nimport { Color, color } from \"./Color\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines available color purposes and their relation with the color set color\r\n * index.\r\n */\r\nexport interface IColorPurpose {\r\n\tstroke: Color,\r\n\tfill: Color,\r\n\r\n\tprimaryButton: Color,\r\n\tprimaryButtonHover: Color,\r\n\tprimaryButtonDown: Color,\r\n\tprimaryButtonActive: Color,\r\n\tprimaryButtonText: Color,\r\n\tprimaryButtonStroke: Color,\r\n\r\n\tsecondaryButton: Color,\r\n\tsecondaryButtonHover: Color,\r\n\tsecondaryButtonDown: Color,\r\n\tsecondaryButtonActive: Color,\r\n\tsecondaryButtonText: Color,\r\n\tsecondaryButtonStroke: Color,\r\n\r\n\tgrid: Color,\r\n\tbackground: Color,\r\n\talternativeBackground: Color,\r\n\ttext: Color,\r\n\talternativeText: Color,\r\n\tdisabledBackground: Color,\r\n\r\n\tpositive: Color,\r\n\tnegative: Color\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * This module contains a version of ColorSet that can (and should) be used for\r\n * coloring UI elements.\r\n *\r\n * The main difference from the basic [[ColorSet]] is that instead of sequenced\r\n * colors, it uses a concept of named colors.\r\n *\r\n * This way, every element in the UI can extract an exact color theme author\r\n * meant for the specific purpose, like strokes, backgrounds, etc.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/colors/} for color-related info\r\n */\r\nexport class InterfaceColorSet extends BaseObject {\r\n\r\n\t/**\r\n\t * Maps the list of purposes (like \"stroke\") to an index of color of the\r\n\t * color set.\r\n\t */\r\n\tprotected _purposes: IColorPurpose = {\r\n\t\tstroke: color(\"#e5e5e5\"),\r\n\t\tfill: color(\"#f3f3f3\"),\r\n\r\n\t\tprimaryButton: color(\"#6794dc\"),\r\n\t\tprimaryButtonHover: color(\"#6771dc\"),\r\n\t\tprimaryButtonDown: color(\"#68dc75\"),\r\n\t\tprimaryButtonActive: color(\"#68dc75\"),\r\n\t\tprimaryButtonText: color(\"#FFFFFF\"),\r\n\t\tprimaryButtonStroke: color(\"#FFFFFF\"),\r\n\r\n\t\tsecondaryButton: color(\"#d9d9d9\"),\r\n\t\tsecondaryButtonHover: color(\"#d9d9d9\").brighten(-0.25),\r\n\t\tsecondaryButtonDown: color(\"#d9d9d9\").brighten(-0.35),\r\n\t\tsecondaryButtonActive: color(\"#d9d9d9\").brighten(0.35),\r\n\t\tsecondaryButtonText: color(\"#000000\"),\r\n\r\n\t\tsecondaryButtonStroke: color(\"#FFFFFF\"),\r\n\r\n\t\tgrid: color(\"#000000\"),\r\n\t\tbackground: color(\"#ffffff\"),\r\n\t\talternativeBackground: color(\"#000000\"),\r\n\t\ttext: color(\"#000000\"),\r\n\t\talternativeText: color(\"#FFFFFF\"),\r\n\t\tdisabledBackground: color(\"#999999\"),\r\n\t\tpositive: color(\"#67dc75\"),\r\n\t\tnegative: color(\"#dc6788\")\r\n\t};\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"InterfaceColorSet\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\tprotected debug(): void {}\r\n\r\n\t/**\r\n\t * Returns a color to be used for the specific purpose.\r\n\t *\r\n\t * ```TypeScript\r\n\t * let uicolors = new am4core.InterfaceColorSet();\r\n\t * console.log(uicolors.getFor(\"stroke\"));\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * var uicolors = new am4core.InterfaceColorSet();\r\n\t * console.log(uicolors.getFor(\"stroke\"));\r\n\t * ```\r\n\t *\r\n\t * @param purpose Color use purpuse\r\n\t * @return Color\r\n\t */\r\n\tpublic getFor(purpose: keyof IColorPurpose): Color {\r\n\t\treturn this._purposes[purpose];\r\n\t}\r\n\r\n\t/**\r\n\t * Sets color to be used for the specific purpose.\r\n\t *\r\n\t * @param purpose Color use purpose\r\n\t * @param color Color\r\n\t */\r\n\tpublic setFor(purpose: keyof IColorPurpose, color: Color): void {\r\n\t\tthis._purposes[purpose] = color;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"InterfaceColorSet\"] = InterfaceColorSet;\r\n","/**\n * ============================================================================\n * IMPORTS\n * ============================================================================\n * @hidden\n */\nimport { IClone } from \"./Clone\";\nimport { Ordering } from \"./Order\";\nimport * as $array from \"./Array\";\nimport * as $type from \"./Type\";\n\n\n/**\n * ============================================================================\n * UTILITY FUNCTIONS\n * ============================================================================\n * @hidden\n */\n\n/**\n * @ignore Exclude from docs\n * @todo Description\n */\nexport interface Iterator<A> {\n\t(push: (value: A) => boolean): void;\n}\n\n/**\n * @ignore Exclude from docs\n * @todo Description\n */\nexport interface Iterable<A> {\n\titerator(): Iterator<A>;\n}\n\n/**\n * @ignore Exclude from docs\n * @todo Description\n */\nexport function fromArray<A>(array: Array<A>): Iterator<A> {\n\treturn (push) => {\n\t\tconst length = array.length;\n\n\t\tfor (let i = 0; i < length; ++i) {\n\t\t\tif (!push(array[i])) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * @ignore Exclude from docs\n * @todo Description\n */\nexport function length<A>(iter: Iterator<A>): number {\n\tlet sum = 0;\n\n\titer((_) => {\n\t\t++sum;\n\t\treturn true;\n\t});\n\n\treturn sum;\n}\n\n/**\n * @ignore Exclude from docs\n * @todo Description\n */\nexport function toArray<A>(iter: Iterator<A>): Array<A> {\n\tconst output: Array<A> = [];\n\n\titer((value) => {\n\t\toutput.push(value);\n\t\treturn true;\n\t});\n\n\treturn output;\n}\n\n/**\n * [iter description]\n *\n * @ignore Exclude from docs\n * @todo Description\n */\nexport function eachContinue<A>(iter: Iterator<A>, fn: (value: A) => boolean): void {\n\titer(fn);\n}\n\n/**\n * [iter description]\n *\n * @ignore Exclude from docs\n * @todo Description\n */\nexport function each<A>(iter: Iterator<A>, fn: (value: A) => void): void {\n\titer((value) => {\n\t\tfn(value);\n\t\treturn true;\n\t});\n}\n\n/**\n * [iter description]\n *\n * @ignore Exclude from docs\n * @todo Description\n */\nexport function sort<A>(iter: Iterator<A>, fn: (left: A, right: A) => Ordering): Iterator<A> {\n\treturn fromArray(toArray(iter).sort(fn));\n}\n\n/**\n * [A description]\n *\n * @ignore Exclude from docs\n * @todo Description\n */\nexport function map<A, B>(iter: Iterator<A>, fn: (value: A) => B): Iterator<B> {\n\treturn (push) => iter((value) => push(fn(value)));\n}\n\n/**\n * [iter description]\n *\n * @ignore Exclude from docs\n * @todo Description\n */\nexport function filter<A>(iter: Iterator<A>, fn: (value: A) => boolean): Iterator<A> {\n\treturn (push) => iter((value) => {\n\t\tif (fn(value)) {\n\t\t\treturn push(value);\n\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t});\n}\n\n/**\n * @ignore Exclude from docs\n * @todo Description\n */\nexport function concat<A>(...args: Array<Iterator<A>>): Iterator<A> {\n\treturn (push) => {\n\t\tlet go = true;\n\n\t\tconst push2 = (value: A) => (go = push(value));\n\n\t\tconst length = args.length;\n\n\t\tfor (let i = 0; i < length; ++i) {\n\t\t\targs[i](push2);\n\n\t\t\tif (!go) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * @ignore Exclude from docs\n * @todo Description\n */\nexport function flatten<A>(iter: Iterator<Iterator<A>>): Iterator<A> {\n\treturn (push) => {\n\t\tlet go = true;\n\n\t\tconst push2 = (value: A) => (go = push(value));\n\n\t\titer((value) => {\n\t\t\tvalue(push2);\n\t\t\treturn go;\n\t\t});\n\t};\n}\n\n/**\n * [number description]\n *\n * @ignore Exclude from docs\n * @todo Description\n */\nexport function indexed<A>(iter: Iterator<A>): Iterator<[number, A]> {\n\treturn (push) => {\n\t\tlet index = 0;\n\n\t\titer((value) => push([index++, value]));\n\t};\n}\n\n/**\n * [iter description]\n *\n * @ignore Exclude from docs\n * @todo Description\n */\nexport function findIndex<A>(iter: Iterator<A>, matches: (value: A) => boolean): number {\n\tlet found = false;\n\tlet i = 0;\n\n\titer((value) => {\n\t\tif (matches(value)) {\n\t\t\tfound = true;\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\t++i;\n\t\t\treturn true;\n\t\t}\n\t});\n\n\treturn (found ? i : -1);\n}\n\n/**\n * [iter description]\n *\n * @ignore Exclude from docs\n * @todo Description\n */\nexport function find<A>(iter: Iterator<A>, matches: (value: A) => boolean): A | undefined {\n\tlet output;\n\n\titer((value) => {\n\t\tif (matches(value)) {\n\t\t\toutput = value;\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t});\n\n\treturn output;\n}\n\n/**\n * [A description]\n *\n * @ignore Exclude from docs\n * @todo Description\n */\nexport function findMap<A, B>(iter: Iterator<A>, matches: (value: A) => B | null): B | undefined {\n\tlet output;\n\n\titer((value) => {\n\t\tconst v = matches(value);\n\n\t\tif (v !== null) {\n\t\t\toutput = v;\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t});\n\n\treturn output;\n}\n\n/**\n * [iter description]\n *\n * @ignore Exclude from docs\n * @todo Description\n */\nexport function contains<A>(iter: Iterator<A>, matches: (value: A) => boolean): boolean {\n\tlet output = false;\n\n\titer((value) => {\n\t\tif (matches(value)) {\n\t\t\toutput = true;\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t});\n\n\treturn output;\n}\n\n/**\n * [A description]\n *\n * @ignore Exclude from docs\n * @todo Description\n */\nexport function foldl<A, B>(iter: Iterator<A>, init: B, fn: (state: B, value: A) => B): B {\n\titer((value) => {\n\t\tinit = fn(init, value);\n\t\treturn true;\n\t});\n\n\treturn init;\n}\n\n/**\n * [min2 description]\n *\n * @ignore Exclude from docs\n * @todo Description\n * @param left [description]\n * @param right [description]\n * @return [description]\n */\nfunction min2(left: number | null, right: number): number {\n\tif (left == null || right < left) {\n\t\treturn right;\n\n\t} else {\n\t\treturn left;\n\t}\n}\n\n/**\n * [min description]\n *\n * @ignore Exclude from docs\n * @todo Verify that this works correctly\n * @todo Description\n * @param a [description]\n * @return [description]\n */\nexport function min(a: Iterator<number>): number | null {\n\treturn foldl(a, null, min2);\n}\n\n/**\n * [max2 description]\n *\n * @ignore Exclude from docs\n * @todo Description\n * @param left [description]\n * @param right [description]\n * @return [description]\n */\nfunction max2(left: number | null, right: number): number {\n\tif (left == null || right > left) {\n\t\treturn right;\n\n\t} else {\n\t\treturn left;\n\t}\n}\n\n/**\n * [max description]\n *\n * @ignore Exclude from docs\n * @todo Verify that this works correctly\n * @todo Description\n * @param a [description]\n * @return [description]\n */\nexport function max(a: Iterator<number>): number | null {\n\treturn foldl(a, null, max2);\n}\n\n\n/**\n * [join description]\n *\n * @ignore Exclude from docs\n * @todo Description\n * @param iter [description]\n * @param separator [description]\n * @return [description]\n */\nexport function join(iter: Iterator<string>, separator: string = \"\"): string {\n\tlet first = true;\n\tlet init = \"\";\n\n\titer((value) => {\n\t\tif (first) {\n\t\t\tfirst = false;\n\n\t\t} else {\n\t\t\tinit += separator;\n\t\t}\n\n\t\tinit += value;\n\n\t\treturn true;\n\t});\n\n\treturn init;\n}\n\n/**\n * @ignore Exclude from docs\n * @todo Description\n */\nexport class ListIterator<T extends IClone<T>> {\n\tprivate _listCopy!: Array<T>;\n\tprivate _create: () => T;\n\n\tpublic list: Iterable<T>;\n\n\t// flag specifies if iterator should create new list item if it is reqested for a nextItem but there is no more left in the list\n\tpublic createNewItems: boolean = false;\n\n\t/**\n\t * Constructor\n\t *\n\t * @param list [description]\n\t * @param create [description]\n\t */\n\tconstructor(list: Iterable<T>, create: () => T) {\n\t\tthis.list = list;\n\t\tthis._create = create;\n\t\tthis.reset();\n\t}\n\n\treset() {\n\t\tthis._listCopy = toArray(this.list.iterator());\n\t}\n\n\tclear() {\n\t\tthis._listCopy.length = 0;\n\t}\n\n\tgetFirst(): $type.Optional<T> {\n\t\treturn this.returnItem(0);\n\t}\n\n\tgetLast(): $type.Optional<T> {\n\t\treturn this.returnItem(this._listCopy.length - 1);\n\t}\n\n\tfind(fn: (value: T) => boolean): $type.Optional<T> {\n\t\tlet index: number = $array.findIndex(this._listCopy, fn);\n\n\t\tif (index !== -1) {\n\t\t\tlet item = this._listCopy[index];\n\t\t\t// TODO use removeIndex instead ?\n\t\t\t$array.remove(this._listCopy, item);\n\t\t\treturn item;\n\n\t\t} else {\n\t\t\treturn this.getLast();\n\t\t}\n\t}\n\n\tremoveItem(item: T): boolean {\n\t\treturn $array.remove(this._listCopy, item);\n\t}\n\n\tprotected returnItem(index: number): $type.Optional<T> {\n\t\tif (index >= 0 && index < this._listCopy.length) {\n\t\t\tlet item = this._listCopy[index];\n\t\t\t// TODO use removeIndex instead ?\n\t\t\t$array.remove(this._listCopy, item);\n\t\t\treturn item;\n\n\t\t} else if (this.createNewItems) {\n\t\t\treturn this._create();\n\t\t}\n\t}\n\n\titerator() {\n\t\treturn fromArray(this._listCopy);\n\t}\n}\n","/**\r\n * A collection of keyboard-related utilities accessible via `keyboard`\r\n * instance.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $type from \"./Type\";\r\n\r\n/**\r\n * Represents named (usually frequently used) keyboard keys for easy referece.\r\n */\r\nexport type KeyboardKeys =\r\n\t\"up\"\r\n\t| \"down\"\r\n\t| \"left\"\r\n\t| \"right\"\r\n\t| \"enter\"\r\n\t| \"esc\"\r\n\t| \"home\"\r\n\t| \"tab\"\r\n\t| \"end\"\r\n\t| \"ctrl\"\r\n\t| \"alt\"\r\n\t| \"shift\"\r\n\t| \"space\"\r\n\t| \"home\"\r\n\t| \"end\"\r\n\t| \"pgup\"\r\n\t| \"pgdn\"\r\n\t| \"ins\"\r\n\t| \"del\"\r\n\t| \"plus\"\r\n\t| \"minus\"\r\n\t| \"other\";\r\n\r\n/**\r\n * A class that represents collection of keyboard-related utilities.\r\n *\r\n * Do not instantiate this class directly, but rather use `keyboard` variable.\r\n */\r\nexport class Keyboard {\r\n\r\n\t/**\r\n\t * Returns a named key based on information contained in the event or\r\n\t * \"other\".\r\n\t *\r\n\t * @param ev A keyboard event\r\n\t * @return Keyboard named key\r\n\t */\r\n\tpublic getEventKey(ev: KeyboardEvent): KeyboardKeys {\r\n\r\n\t\t// Get the key code\r\n\t\tlet code: number = ev.keyCode || ev.which,\r\n\t\t\tkey: KeyboardKeys;\r\n\r\n\t\t// Map to internal key\r\n\t\tswitch (code) {\r\n\t\t\tcase 38: key = \"up\"; break;\r\n\t\t\tcase 40: key = \"down\"; break;\r\n\t\t\tcase 37: key = \"left\"; break;\r\n\t\t\tcase 39: key = \"right\"; break;\r\n\t\t\tcase 13: key = \"enter\"; break;\r\n\t\t\tcase 27: key = \"esc\"; break;\r\n\t\t\tcase 36: key = \"home\"; break;\r\n\t\t\tcase 35: key = \"end\"; break;\r\n\t\t\tcase 9: key = \"tab\"; break;\r\n\t\t\tcase 17: key = \"ctrl\"; break;\r\n\t\t\tcase 18: key = \"alt\"; break;\r\n\t\t\tcase 16: key = \"shift\"; break;\r\n\t\t\tcase 32: key = \"space\"; break;\r\n\t\t\tcase 36: key = \"home\"; break;\r\n\t\t\tcase 35: key = \"end\"; break;\r\n\t\t\tcase 33: key = \"pgup\"; break;\r\n\t\t\tcase 34: key = \"pgdn\"; break;\r\n\t\t\tcase 45: key = \"ins\"; break;\r\n\t\t\tcase 46: key = \"del\"; break;\r\n\t\t\tcase 107: key = \"plus\"; break;\r\n\t\t\tcase 109: key = \"minus\"; break;\r\n\t\t\tdefault: key = \"other\"; break;\r\n\t\t}\r\n\r\n\t\treturn key;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if event key is one or more of the selected named keys.\r\n\t *\r\n\t * @param ev Keyboard event\r\n\t * @param key Named key or array of keys\r\n\t * @return Is event key one of the list?\r\n\t */\r\n\tpublic isKey(ev: KeyboardEvent, key: string | string[]): boolean {\r\n\t\tlet eventKey = this.getEventKey(ev);\r\n\t\tif ($type.isString(key)) {\r\n\t\t\tkey = [key];\r\n\t\t}\r\n\t\treturn key.indexOf(eventKey) !== -1;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if shift key was presset at the moment of the event.\r\n\t *\r\n\t * @param ev Event object\r\n\t * @return Was shift pressed?\r\n\t */\r\n\tpublic shiftKey(ev: KeyboardEvent | MouseEvent): boolean {\r\n\t\treturn ev.shiftKey;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if ctrl key was presset at the moment of the event.\r\n\t *\r\n\t * @param ev Event object\r\n\t * @return Was ctrl pressed?\r\n\t */\r\n\tpublic ctrlKey(ev: KeyboardEvent | MouseEvent): boolean {\r\n\t\treturn ev.ctrlKey;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if alt key was presset at the moment of the event\r\n\t * @param ev Event object\r\n\t * @return Was alt pressed?\r\n\t */\r\n\tpublic altKey(ev: KeyboardEvent | MouseEvent): boolean {\r\n\t\treturn ev.altKey;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if meta key was presset at the moment of the event\r\n\t * @param ev Event object\r\n\t * @return Was meta pressed?\r\n\t */\r\n\tpublic metaKey(ev: KeyboardEvent | MouseEvent): boolean {\r\n\t\treturn ev.metaKey;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * A single [[Keyboard]] instance to be reused across all elements so that\r\n * they don't need to instantiate their own.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport let keyboard = new Keyboard();\r\n","/**\n * amCharts 4 locale\n * \n * Locale: en\n * Language: International English\n * Author: Martynas Majeris\n *\n * Follow instructions in [on this page](https://www.amcharts.com/docs/v4/tutorials/creating-translations/) to make corrections or add new translations.\n *\n * ---\n * Edit but leave the header section above this line. You can remove any\n * subsequent comment sections.\n * ---\n *\n * Use this file as a template to create translations. Leave the key part in\n * English intact. Fill the value with a translation.\n *\n * Empty string means no translation, so default \"International English\"\n * will be used.\n *\n * If you need the translation to literally be an empty string, use `null`\n * instead.\n *\n * IMPORTANT:\n * When translating make good effort to keep the translation length\n * at least the same chartcount as the English, especially for short prompts.\n *\n * Having significantly longer prompts may distort the actual charts.\n *\n * NOTE:\n * Some prompts - like months or weekdays - come in two versions: full and\n * shortened.\n *\n * If there's no official shortened version of these in your language, and it\n * would not be possible to invent such short versions that don't seem weird\n * to native speakers of that language, fill those with the same as full\n * version.\n *\n * PLACEHOLDERS:\n * Some prompts have placeholders like \"%1\". Those will be replaced by actual\n * values during translation and should be retained in the translated prompts.\n *\n * Placeholder positions may be changed to better suit structure of the\n * sentence.\n *\n * For example \"From %1 to %2\", when actually used will replace \"%1\" with an\n * actual value representing range start, and \"%2\" will be replaced by end\n * value.\n *\n * E.g. in a Scrollbar for Value axis \"From %1 to %2\" will become\n * \"From 100 to 200\". You may translate \"From\" and \"to\", as well as re-arrange\n * the order of the prompt itself, but make sure the \"%1\" and \"%2\" remain, in\n * places where they will make sense.\n *\n * Save the file as language_LOCALE, i.e. `en_GB.ts`, `fr_FR.ts`, etc.\n */\nexport default {\n\t// Number formatting options.\n\t// \n\t// Please check with the local standards which separator is accepted to be\n\t// used for separating decimals, and which for thousands.\n\t\"_decimalSeparator\": \".\",\n\t\"_thousandSeparator\": \",\",\n\n\t// Suffixes for numbers\n\t// When formatting numbers, big or small numers might be reformatted to\n\t// shorter version, by applying a suffix.\n\t// \n\t// For example, 1000000 might become \"1m\".\n\t// Or 1024 might become \"1KB\" if we're formatting byte numbers.\n\t// \n\t// This section defines such suffixes for all such cases.\n\t\"_big_number_suffix_3\": \"k\",\n\t\"_big_number_suffix_6\": \"M\",\n\t\"_big_number_suffix_9\": \"G\",\n\t\"_big_number_suffix_12\": \"T\",\n\t\"_big_number_suffix_15\": \"P\",\n\t\"_big_number_suffix_18\": \"E\",\n\t\"_big_number_suffix_21\": \"Z\",\n\t\"_big_number_suffix_24\": \"Y\",\n\n\t\"_small_number_suffix_3\": \"m\",\n\t\"_small_number_suffix_6\": \"μ\",\n\t\"_small_number_suffix_9\": \"n\",\n\t\"_small_number_suffix_12\": \"p\",\n\t\"_small_number_suffix_15\": \"f\",\n\t\"_small_number_suffix_18\": \"a\",\n\t\"_small_number_suffix_21\": \"z\",\n\t\"_small_number_suffix_24\": \"y\",\n\n\t\"_byte_suffix_B\": \"B\",\n\t\"_byte_suffix_KB\": \"KB\",\n\t\"_byte_suffix_MB\": \"MB\",\n\t\"_byte_suffix_GB\": \"GB\",\n\t\"_byte_suffix_TB\": \"TB\",\n\t\"_byte_suffix_PB\": \"PB\",\n\n\t// Default date formats for various periods.\n\t// \n\t// This should reflect official or de facto formatting universally accepted\n\t// in the country translation is being made for\n\t// Available format codes here:\n\t// https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/#Format_codes\n\t// \n\t// This will be used when formatting date/time for particular granularity,\n\t// e.g. \"_date_hour\" will be shown whenever we need to show time as hours.\n\t// \n\t// \"date\" is used as in default date format when showing standalone dates.\n\t\"_date\": \"yyyy-MM-dd\",\n\t\"_date_millisecond\": \"mm:ss SSS\",\n\t\"_date_second\": \"HH:mm:ss\",\n\t\"_date_minute\": \"HH:mm\",\n\t\"_date_hour\": \"HH:mm\",\n\t\"_date_day\": \"MMM dd\",\n\t\"_date_week\": \"ww\",\n\t\"_date_month\": \"MMM\",\n\t\"_date_year\": \"yyyy\",\n\n\t// Default duration formats for various base units.\n\t// \n\t// This will be used by DurationFormatter to format numeric values into\n\t// duration.\n\t// \n\t// Notice how each duration unit comes in several versions. This is to ensure\n\t// that each base unit is shown correctly.\n\t// \n\t// For example, if we have baseUnit set to \"second\", meaning our duration is\n\t// in seconds.\n\t// \n\t// If we pass in `50` to formatter, it will know that we have just 50 seconds\n\t// (less than a minute) so it will use format in `\"_duration_second\"` (\"ss\"),\n\t// and the formatted result will be in like `\"50\"`.\n\t// \n\t// If we pass in `70`, which is more than a minute, the formatter will switch\n\t// to `\"_duration_second_minute\"` (\"mm:ss\"), resulting in \"01:10\" formatted\n\t// text.\n\t// \n\t// Available codes here:\n\t// https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/#Available_Codes\n\t\"_duration_millisecond\": \"SSS\",\n\t\"_duration_millisecond_second\": \"ss.SSS\",\n\t\"_duration_millisecond_minute\": \"mm:ss SSS\",\n\t\"_duration_millisecond_hour\": \"hh:mm:ss SSS\",\n\t\"_duration_millisecond_day\": \"d'd' mm:ss SSS\",\n\t\"_duration_millisecond_week\": \"d'd' mm:ss SSS\",\n\t\"_duration_millisecond_month\": \"M'm' dd'd' mm:ss SSS\",\n\t\"_duration_millisecond_year\": \"y'y' MM'm' dd'd' mm:ss SSS\",\n\n\t\"_duration_second\": \"ss\",\n\t\"_duration_second_minute\": \"mm:ss\",\n\t\"_duration_second_hour\": \"hh:mm:ss\",\n\t\"_duration_second_day\": \"d'd' hh:mm:ss\",\n\t\"_duration_second_week\": \"d'd' hh:mm:ss\",\n\t\"_duration_second_month\": \"M'm' dd'd' hh:mm:ss\",\n\t\"_duration_second_year\": \"y'y' MM'm' dd'd' hh:mm:ss\",\n\n\t\"_duration_minute\": \"mm\",\n\t\"_duration_minute_hour\": \"hh:mm\",\n\t\"_duration_minute_day\": \"d'd' hh:mm\",\n\t\"_duration_minute_week\": \"d'd' hh:mm\",\n\t\"_duration_minute_month\": \"M'm' dd'd' hh:mm\",\n\t\"_duration_minute_year\": \"y'y' MM'm' dd'd' hh:mm\",\n\n\t\"_duration_hour\": \"hh'h'\",\n\t\"_duration_hour_day\": \"d'd' hh'h'\",\n\t\"_duration_hour_week\": \"d'd' hh'h'\",\n\t\"_duration_hour_month\": \"M'm' dd'd' hh'h'\",\n\t\"_duration_hour_year\": \"y'y' MM'm' dd'd' hh'h'\",\n\n\t\"_duration_day\": \"d'd'\",\n\t\"_duration_day_week\": \"d'd'\",\n\t\"_duration_day_month\": \"M'm' dd'd'\",\n\t\"_duration_day_year\": \"y'y' MM'm' dd'd'\",\n\n\t\"_duration_week\": \"w'w'\",\n\t\"_duration_week_month\": \"w'w'\",\n\t\"_duration_week_year\": \"w'w'\",\n\n\t\"_duration_month\": \"M'm'\",\n\t\"_duration_month_year\": \"y'y' MM'm'\",\n\n\t\"_duration_year\": \"y'y'\",\n\n\t// Era translations\n\t\"_era_ad\": \"AD\",\n\t\"_era_bc\": \"BC\",\n\n\t// Day part, used in 12-hour formats, e.g. 5 P.M.\n\t// Please note that these come in 3 variants:\n\t// * one letter (e.g. \"A\")\n\t// * two letters (e.g. \"AM\")\n\t// * two letters with dots (e.g. \"A.M.\")\n\t// \n\t// All three need to to be translated even if they are all the same. Some\n\t// users might use one, some the other.\n\t\"A\": \"\",\n\t\"P\": \"\",\n\t\"AM\": \"\",\n\t\"PM\": \"\",\n\t\"A.M.\": \"\",\n\t\"P.M.\": \"\",\n\n\t// Date-related stuff.\n\t// \n\t// When translating months, if there's a difference, use the form which is\n\t// best for a full date, e.g. as you would use it in \"2018 January 1\".\n\t// \n\t// Note that May is listed twice. This is because in English May is the same\n\t// in both long and short forms, while in other languages it may not be the\n\t// case. Translate \"May\" to full word, while \"May(short)\" to shortened\n\t// version.\n\t// \n\t// Should month names and weekdays be capitalized or not?\n\t// \n\t// Rule of thumb is this: if the names should always be capitalized,\n\t// regardless of name position within date (\"January\", \"21st January 2018\",\n\t// etc.) use capitalized names. Otherwise enter all lowercase.\n\t// \n\t// The date formatter will automatically capitalize names if they are the\n\t// first (or only) word in resulting date.\n\t\"January\": \"\",\n\t\"February\": \"\",\n\t\"March\": \"\",\n\t\"April\": \"\",\n\t\"May\": \"\",\n\t\"June\": \"\",\n\t\"July\": \"\",\n\t\"August\": \"\",\n\t\"September\": \"\",\n\t\"October\": \"\",\n\t\"November\": \"\",\n\t\"December\": \"\",\n\t\"Jan\": \"\",\n\t\"Feb\": \"\",\n\t\"Mar\": \"\",\n\t\"Apr\": \"\",\n\t\"May(short)\": \"May\",\n\t\"Jun\": \"\",\n\t\"Jul\": \"\",\n\t\"Aug\": \"\",\n\t\"Sep\": \"\",\n\t\"Oct\": \"\",\n\t\"Nov\": \"\",\n\t\"Dec\": \"\",\n\n\t// Weekdays.\n\t\"Sunday\": \"\",\n\t\"Monday\": \"\",\n\t\"Tuesday\": \"\",\n\t\"Wednesday\": \"\",\n\t\"Thursday\": \"\",\n\t\"Friday\": \"\",\n\t\"Saturday\": \"\",\n\t\"Sun\": \"\",\n\t\"Mon\": \"\",\n\t\"Tue\": \"\",\n\t\"Wed\": \"\",\n\t\"Thu\": \"\",\n\t\"Fri\": \"\",\n\t\"Sat\": \"\",\n\n\t// Date ordinal function.\n\t// \n\t// This is used when adding number ordinal when formatting days in dates.\n\t// \n\t// E.g. \"January 1st\", \"February 2nd\".\n\t// \n\t// The function accepts day number, and returns a string to be added to the\n\t// day, like in default English translation, if we pass in 2, we will receive\n\t// \"nd\" back.\n\t\"_dateOrd\": function(day: number): string {\n\t\tlet res = \"th\";\n\t\tif ((day < 11) || (day > 13)) {\n\t\t\tswitch (day % 10) {\n\t\t\t\tcase 1:\n\t\t\t\t\tres = \"st\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tres = \"nd\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tres = \"rd\"\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t},\n\n\t// Various chart controls.\n\t// Shown as a tooltip on zoom out button.\n\t\"Zoom Out\": \"\",\n\n\t// Timeline buttons\n\t\"Play\": \"\",\n\t\"Stop\": \"\",\n\n\t// Chart's Legend screen reader title.\n\t\"Legend\": \"\",\n\n\t// Legend's item screen reader indicator.\n\t\"Click, tap or press ENTER to toggle\": \"\",\n\n\t// Shown when the chart is busy loading something.\n\t\"Loading\": \"\",\n\n\t// Shown as the first button in the breadcrumb navigation, e.g.:\n\t// Home > First level > ...\n\t\"Home\": \"\",\n\n\t// Chart types.\n\t// Those are used as default screen reader titles for the main chart element\n\t// unless developer has set some more descriptive title.\n\t\"Chart\": \"\",\n\t\"Serial chart\": \"\",\n\t\"X/Y chart\": \"\",\n\t\"Pie chart\": \"\",\n\t\"Gauge chart\": \"\",\n\t\"Radar chart\": \"\",\n\t\"Sankey diagram\": \"\",\n\t\"Flow diagram\": \"\",\n\t\"Chord diagram\": \"\",\n\t\"TreeMap chart\": \"\",\n\t\"Force directed tree\": \"\",\n\t\"Sliced chart\": \"\",\n\n\t// Series types.\n\t// Used to name series by type for screen readers if they do not have their\n\t// name set.\n\t\"Series\": \"\",\n\t\"Candlestick Series\": \"\",\n\t\"OHLC Series\": \"\",\n\t\"Column Series\": \"\",\n\t\"Line Series\": \"\",\n\t\"Pie Slice Series\": \"\",\n\t\"Funnel Series\": \"\",\n\t\"Pyramid Series\": \"\",\n\t\"X/Y Series\": \"\",\n\n\t// Map-related stuff.\n\t\"Map\": \"\",\n\t\"Press ENTER to zoom in\": \"\",\n\t\"Press ENTER to zoom out\": \"\",\n\t\"Use arrow keys to zoom in and out\": \"\",\n\t\"Use plus and minus keys on your keyboard to zoom in and out\": \"\",\n\n\t// Export-related stuff.\n\t// These prompts are used in Export menu labels.\n\t// \n\t// \"Export\" is the top-level menu item.\n\t// \n\t// \"Image\", \"Data\", \"Print\" as second-level indicating type of export\n\t// operation.\n\t// \n\t// Leave actual format untranslated, unless you absolutely know that they\n\t// would convey more meaning in some other way.\n\t\"Export\": \"\",\n\t\"Image\": \"\",\n\t\"Data\": \"\",\n\t\"Print\": \"\",\n\t\"Click, tap or press ENTER to open\": \"\",\n\t\"Click, tap or press ENTER to print.\": \"\",\n\t\"Click, tap or press ENTER to export as %1.\": \"\",\n\t'To save the image, right-click this link and choose \"Save picture as...\"': \"\",\n\t'To save the image, right-click thumbnail on the left and choose \"Save picture as...\"': \"\",\n\t\"(Press ESC to close this message)\": \"\",\n\t\"Image Export Complete\": \"\",\n\t\"Export operation took longer than expected. Something might have gone wrong.\": \"\",\n\t\"Saved from\": \"\",\n\t\"PNG\": \"\",\n\t\"JPG\": \"\",\n\t\"GIF\": \"\",\n\t\"SVG\": \"\",\n\t\"PDF\": \"\",\n\t\"JSON\": \"\",\n\t\"CSV\": \"\",\n\t\"XLSX\": \"\",\n\n\t// Scrollbar-related stuff.\n\t// \n\t// Scrollbar is a control which can zoom and pan the axes on the chart.\n\t// \n\t// Each scrollbar has two grips: left or right (for horizontal scrollbar) or\n\t// upper and lower (for vertical one).\n\t// \n\t// Prompts change in relation to whether Scrollbar is vertical or horizontal.\n\t// \n\t// The final section is used to indicate the current range of selection.\n\t\"Use TAB to select grip buttons or left and right arrows to change selection\": \"\",\n\t\"Use left and right arrows to move selection\": \"\",\n\t\"Use left and right arrows to move left selection\": \"\",\n\t\"Use left and right arrows to move right selection\": \"\",\n\t\"Use TAB select grip buttons or up and down arrows to change selection\": \"\",\n\t\"Use up and down arrows to move selection\": \"\",\n\t\"Use up and down arrows to move lower selection\": \"\",\n\t\"Use up and down arrows to move upper selection\": \"\",\n\t\"From %1 to %2\": \"\",\n\t\"From %1\": \"\",\n\t\"To %1\": \"\",\n\n\t// Data loader-related.\n\t\"No parser available for file: %1\": \"\",\n\t\"Error parsing file: %1\": \"\",\n\t\"Unable to load file: %1\": \"\",\n\t\"Invalid date\": \"\",\n\n\t// Common actions\n\t\"Close\": \"\",\n\t\"Minimize\": \"\"\n\n};","/**\r\n * Language module contains everything related to language-specific operations:\r\n * * Translating prompts\r\n * * Translating functions\r\n * * Date format localizations\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObjectEvents, IBaseObjectEvents } from \"../Base\";\r\nimport { Adapter } from \"./Adapter\";\r\nimport { AMEvent } from \"./EventDispatcher\";\r\nimport * as $array from \"./Array\";\r\nimport * as $type from \"./Type\";\r\nimport en from \"../../../lang/en\";\r\nimport { options } from \"../Options\";\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines events for [[Language]].\r\n */\r\nexport interface ILanguageEvents extends IBaseObjectEvents {\r\n\r\n\t/**\r\n\t * Invoked when locale is changed by user.\r\n\t */\r\n\tlocalechanged: {\r\n\t\tlocale: ILocale;\r\n\t};\r\n\r\n};\r\n\r\n\r\n/**\r\n * Defines properties that exist for the locale.\r\n */\r\nexport interface ILocaleProperties {\r\n\t// number formatter related\r\n\t\"_decimalSeparator\"?: string;\r\n\t\"_thousandSeparator\"?: string;\r\n\r\n\t\"_big_number_suffix_3\"?: string;\r\n\t\"_big_number_suffix_6\"?: string;\r\n\t\"_big_number_suffix_9\"?: string;\r\n\t\"_big_number_suffix_12\"?: string;\r\n\t\"_big_number_suffix_15\"?: string;\r\n\t\"_big_number_suffix_18\"?: string;\r\n\t\"_big_number_suffix_21\"?: string;\r\n\t\"_big_number_suffix_24\"?: string;\r\n\r\n\t\"_small_number_suffix_24\"?: string;\r\n\t\"_small_number_suffix_21\"?: string;\r\n\t\"_small_number_suffix_18\"?: string;\r\n\t\"_small_number_suffix_15\"?: string;\r\n\t\"_small_number_suffix_12\"?: string;\r\n\t\"_small_number_suffix_9\"?: string;\r\n\t\"_small_number_suffix_6\"?: string;\r\n\t\"_small_number_suffix_3\"?: string;\r\n\r\n\t\"_byte_suffix_B\"?: string;\r\n\t\"_byte_suffix_KB\"?: string;\r\n\t\"_byte_suffix_MB\"?: string;\r\n\t\"_byte_suffix_GB\"?: string;\r\n\t\"_byte_suffix_TB\"?: string;\r\n\t\"_byte_suffix_PB\"?: string;\r\n\r\n\t// Default date formats for various periods\r\n\t\"_date\"?: string;\r\n\t\"_date_millisecond\"?: string;\r\n\t\"_date_second\"?: string;\r\n\t\"_date_minute\"?: string;\r\n\t\"_date_hour\"?: string;\r\n\t\"_date_day\"?: string;\r\n\t\"_date_week\"?: string;\r\n\t\"_date_month\"?: string;\r\n\t\"_date_year\"?: string;\r\n\r\n\t// Default duration formats for various base units\r\n\t\"_duration_millisecond\"?: string;\r\n\t\"_duration_millisecond_second\"?: string;\r\n\t\"_duration_millisecond_minute\"?: string;\r\n\t\"_duration_millisecond_hour\"?: string;\r\n\t\"_duration_millisecond_day\"?: string;\r\n\t\"_duration_millisecond_week\"?: string;\r\n\t\"_duration_millisecond_month\"?: string;\r\n\t\"_duration_millisecond_year\"?: string;\r\n\r\n\t\"_duration_second\"?: string;\r\n\t\"_duration_second_minute\"?: string;\r\n\t\"_duration_second_hour\"?: string;\r\n\t\"_duration_second_day\"?: string;\r\n\t\"_duration_second_week\"?: string;\r\n\t\"_duration_second_month\"?: string;\r\n\t\"_duration_second_year\"?: string;\r\n\r\n\t\"_duration_minute\"?: string;\r\n\t\"_duration_minute_hour\"?: string;\r\n\t\"_duration_minute_day\"?: string;\r\n\t\"_duration_minute_week\"?: string;\r\n\t\"_duration_minute_month\"?: string;\r\n\t\"_duration_minute_year\"?: string;\r\n\r\n\t\"_duration_hour\"?: string;\r\n\t\"_duration_hour_day\"?: string;\r\n\t\"_duration_hour_week\"?: string;\r\n\t\"_duration_hour_month\"?: string;\r\n\t\"_duration_hour_year\"?: string;\r\n\r\n\t\"_duration_day\"?: string;\r\n\t\"_duration_day_week\"?: string;\r\n\t\"_duration_day_month\"?: string;\r\n\t\"_duration_day_year\"?: string;\r\n\r\n\t\"_duration_week\"?: string;\r\n\t\"_duration_week_month\"?: string;\r\n\t\"_duration_week_year\"?: string;\r\n\r\n\t\"_duration_month\"?: string;\r\n\t\"_duration_month_year\"?: string;\r\n\r\n\t\"_duration_year\"?: string;\r\n\r\n\t// Era\r\n\t\"_era_ad\"?: string;\r\n\t\"_era_bc\"?: string;\r\n\r\n\t// Period\r\n\t\"A\"?: string;\r\n\t\"P\"?: string;\r\n\t\"AM\"?: string;\r\n\t\"PM\"?: string;\r\n\t\"A.M.\"?: string;\r\n\t\"P.M.\"?: string;\r\n\r\n\t// Dates\r\n\t\"January\"?: string;\r\n\t\"February\"?: string;\r\n\t\"March\"?: string;\r\n\t\"April\"?: string;\r\n\t\"May\"?: string;\r\n\t\"June\"?: string;\r\n\t\"July\"?: string;\r\n\t\"August\"?: string;\r\n\t\"September\"?: string;\r\n\t\"October\"?: string;\r\n\t\"November\"?: string;\r\n\t\"December\"?: string;\r\n\t\"Jan\"?: string;\r\n\t\"Feb\"?: string;\r\n\t\"Mar\"?: string;\r\n\t\"Apr\"?: string;\r\n\t\"May(short)\"?: string;\r\n\t\"Jun\"?: string;\r\n\t\"Jul\"?: string;\r\n\t\"Aug\"?: string;\r\n\t\"Sep\"?: string;\r\n\t\"Oct\"?: string;\r\n\t\"Nov\"?: string;\r\n\t\"Dec\"?: string;\r\n\t\"Sunday\"?: string;\r\n\t\"Monday\"?: string;\r\n\t\"Tuesday\"?: string;\r\n\t\"Wednesday\"?: string;\r\n\t\"Thursday\"?: string;\r\n\t\"Friday\"?: string;\r\n\t\"Saturday\"?: string;\r\n\t\"Sun\"?: string;\r\n\t\"Mon\"?: string;\r\n\t\"Tue\"?: string;\r\n\t\"Wed\"?: string;\r\n\t\"Thu\"?: string;\r\n\t\"Fri\"?: string;\r\n\t\"Sat\"?: string;\r\n\r\n\t// Chart elements\r\n\t\"Zoom Out\"?: string;\r\n\t\"Play\"?: string;\r\n\t\"Stop\"?: string;\r\n\t\"Legend\"?: string;\r\n\t\"Click, tap or press ENTER to toggle\"?: string;\r\n\t\"Loading\"?: string;\r\n\r\n\t// Chart types\r\n\t\"Chart\"?: string;\r\n\t\"Serial chart\"?: string;\r\n\t\"X/Y chart\"?: string;\r\n\t\"Pie chart\"?: string;\r\n\t\"Sunburst chart\"?: string;\r\n\t\"Gauge chart\"?: string;\r\n\t\"Radar chart\"?: string;\r\n\t\"Sankey diagram\"?: string;\r\n\t\"Flow diagram\"?: string;\r\n\t\"Chord diagram\"?: string;\r\n\t\"TreeMap chart\"?: string;\r\n\t\"Force directed tree\"?: string;\r\n\t\"Sliced chart\"?: string;\r\n\r\n\t// Series types\r\n\t\"Series\"?: string;\r\n\t\"Candlestick Series\"?: string;\r\n\t\"OHLC Series\"?: string;\r\n\t\"Column Series\"?: string;\r\n\t\"Line Series\"?: string;\r\n\t\"Pie Slice Series\"?: string;\r\n\t\"Funnel Series\"?: string;\r\n\t\"Pyramid Series\"?: string;\r\n\t\"X/Y Series\"?: string;\r\n\r\n\t// Map-related\r\n\t\"Map\"?: string;\r\n\t\"Press ENTER to zoom in\"?: string;\r\n\t\"Press ENTER to zoom out\"?: string;\r\n\t\"Use arrow keys to zoom in and out\"?: string;\r\n\t\"Use plus and minus keys on your keyboard to zoom in and out\"?: string;\r\n\t\"Home\"?: string;\r\n\r\n\t// Export-related\r\n\t\"Export\"?: string;\r\n\t\"Image\"?: string;\r\n\t\"Data\"?: string;\r\n\t\"Print\"?: string;\r\n\t\"Click, tap or press ENTER to open\"?: string;\r\n\t\"Click, tap or press ENTER to print.\"?: string;\r\n\t\"Click, tap or press ENTER to export as %1.\"?: string;\r\n\t'To save the image, right-click this link and choose \"Save picture as...\"': string;\r\n\t'To save the image, right-click thumbnail on the left and choose \"Save picture as...\"': string;\r\n\t\"(Press ESC to close this message)\"?: string;\r\n\t\"Image Export Complete\"?: string;\r\n\t\"Export operation took longer than expected. Something might have gone wrong.\"?: string;\r\n\t\"Saved from\"?: string;\r\n\t\"PNG\"?: string;\r\n\t\"JPG\"?: string;\r\n\t\"GIF\"?: string;\r\n\t\"SVG\"?: string;\r\n\t\"PDF\"?: string;\r\n\t\"JSON\"?: string;\r\n\t\"CSV\"?: string;\r\n\t\"XLSX\"?: string;\r\n\r\n\t// Scrollbar-related\r\n\t\"Use TAB to select grip buttons or left and right arrows to change selection\"?: string;\r\n\t\"Use left and right arrows to move selection\"?: string;\r\n\t\"Use left and right arrows to move left selection\"?: string;\r\n\t\"Use left and right arrows to move right selection\"?: string;\r\n\t\"Use TAB select grip buttons or up and down arrows to change selection\"?: string;\r\n\t\"Use up and down arrows to move selection\"?: string;\r\n\t\"Use up and down arrows to move lower selection\"?: string;\r\n\t\"Use up and down arrows to move upper selection\"?: string;\r\n\t\"From %1 to %2\"?: string;\r\n\t\"From %1\"?: string;\r\n\t\"To %1\"?: string;\r\n\r\n\t// Data loader-related\r\n\t\"No parser available for file: %1\"?: string;\r\n\t\"Error parsing file: %1\"?: string;\r\n\t\"Unable to load file: %1\"?: string;\r\n\t\"Invalid date\"?: string;\r\n\r\n\t// Common actions\r\n\t\"Close\"?: string;\r\n\t\"Minimize\"?: string;\r\n\r\n\t\"Venn Series\"?: string;\r\n\t\"Venn Diagram\"?: string;\r\n}\r\n\r\n/**\r\n * Defines functions that exist for the locale.\r\n */\r\nexport interface ILocaleFunctions {\r\n\t// ordinal function\r\n\t\"_dateOrd\": (day: number) => string;\r\n}\r\n\r\n/**\r\n * Defines all of the defaults for locale properties.\r\n */\r\nexport interface ILocaleDefault extends ILocaleProperties, ILocaleFunctions { }\r\n\r\n/**\r\n * Defines locale interface.\r\n */\r\nexport interface ILocale extends Partial<ILocaleDefault> { };\r\n\r\n/**\r\n * Represents a list of available adapters for Language.\r\n */\r\nexport interface ILanguageAdapters {\r\n\r\n\t/**\r\n\t * Applied to result whenever retrieving currently set locale.\r\n\t */\r\n\tlocale: {\r\n\t\tlocale: ILocale\r\n\t},\r\n\r\n\t/**\r\n\t * Applied to a translation.\r\n\t */\r\n\ttranslate: {\r\n\t\ttranslation: string,\r\n\t\tlocale?: ILocale\r\n\t},\r\n\r\n\t/**\r\n\t * Applied to all of the locale translations.\r\n\t */\r\n\ttranslations: {\r\n\t\ttranslations: any,\r\n\t\tlocale?: ILocale\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Handles all language-related tasks, like loading and storing translations,\r\n * translating prompts, lists of prompts and even functions.\r\n *\r\n * Almost every object in amCharts4 universe will have a `language` property,\r\n * which can be accessed for prompt translation.\r\n *\r\n * @see {@link ILanguageAdapters} for a list of available Adapters\r\n * @todo Make prompt keys case-insensitive\r\n * @important\r\n */\r\nexport class Language extends BaseObjectEvents {\r\n\t/**\r\n\t * Defines type used in the Sprite.\r\n\t */\r\n\tpublic _adapter!: ILanguageAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ILanguageEvents;\r\n\r\n\t/**\r\n\t * Adapter.\r\n\t */\r\n\tpublic adapter: Adapter<this, this[\"_adapter\"]> = new Adapter(this);\r\n\r\n\t/**\r\n\t * Current locale.\r\n\t */\r\n\tprotected _locale: ILocale = en;\r\n\r\n\t/**\r\n\t * Default locale. A locale to fall back to if none is specified, or\r\n\t * if there's no translation for the prompt for the current language.\r\n\t */\r\n\tprotected _defaultLocale: ILocaleDefault = en;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"Language\";\r\n\r\n\t\t// Set default language if necessary\r\n\t\tif ($type.hasValue(options.defaultLocale)) {\r\n\t\t\tthis.locale = options.defaultLocale;\r\n\t\t}\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns locale that is currently used.\r\n\t *\r\n\t * @param locale Force locale. Will use current language if not set.\r\n\t * @return Locale\r\n\t */\r\n\tprotected getLocale(locale?: ILocale): ILocale {\r\n\t\tif (locale == null) {\r\n\t\t\tlocale = this._locale;\r\n\t\t}\r\n\r\n\t\treturn this.adapter.apply(\"locale\", {\r\n\t\t\tlocale: locale\r\n\t\t}).locale;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the translation of the string.\r\n\t *\r\n\t * If the translation is empty, it will return untranslated prompt.\r\n\t *\r\n\t * Third parameter and up are strings that can be used to replace \"%X\"\r\n\t * placeholders in prompt.\r\n\t *\r\n\t * E.g.:\r\n\t *\r\n\t * ```TypeScript\r\n\t * // Results in \"This is a first translation test\"\r\n\t * chart.language.translate(\"This is a %1 translation %2\", null, \"first\", \"test\");\r\n\t * ```\r\n\t * ```JavaScriptScript\r\n\t * // Results in \"This is a first translation test\"\r\n\t * chart.language.translate(\"This is a %1 translation %2\", null, \"first\", \"test\");\r\n\t * ```\r\n\t *\r\n\t * @param prompt A string to translate\r\n\t * @param locale Force translation into specific locale, e.g. fr_FR\r\n\t * @param rest Parameters to replace in string\r\n\t * @return Translation\r\n\t */\r\n\tpublic translate<Key extends keyof ILocaleProperties>(prompt: Key, locale?: ILocale, ...rest: Array<string>): string {\r\n\r\n\t\t// Get langauge\r\n\t\tlocale = this.getLocale(locale);\r\n\r\n\t\t// Init translation\r\n\t\tlet translation: string = prompt;\r\n\r\n\t\t// Get translations for the locale\r\n\t\tlet translations = this.getTranslations(locale);\r\n\r\n\t\tlet value: $type.Optional<ILocaleDefault[Key]> = translations[prompt];\r\n\r\n\t\t// Try to look for the translation\r\n\t\tif (value === null) {\r\n\t\t\tvalue = \"\";\r\n\t\t}\r\n\t\telse if ($type.hasValue(value)) {\r\n\t\t\t// It might be an empty string\r\n\t\t\tif (value) {\r\n\t\t\t\ttranslation = value!;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (locale !== this._defaultLocale) {\r\n\t\t\t// Try to look in default language\r\n\t\t\treturn this.translate(prompt, this._defaultLocale, ...rest);\r\n\t\t}\r\n\r\n\t\t// Replace %1, %2, etc params\r\n\t\tif (rest.length) {\r\n\t\t\tfor (let len = rest.length, i = 0; i < len; ++i) {\r\n\t\t\t\ttranslation = translation.split(\"%\" + (i + 1)).join(rest[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Return the translation\r\n\t\treturn this.adapter.apply(\"translate\", {\r\n\t\t\ttranslation: translation,\r\n\t\t\tlocale: locale\r\n\t\t}).translation;\r\n\t}\r\n\r\n\t/**\r\n\t * Non-type-checked translation.\r\n\t *\r\n\t * Can be used by plugins and other code that may have their own non-standard\r\n\t * translation prompts.\r\n\t *\r\n\t * @since 4.5.5\r\n\t * @param prompt A string to translate\r\n\t * @param locale Force translation into specific locale, e.g. fr_FR\r\n\t * @param rest Parameters to replace in string\r\n\t * @return Translation\r\n\t */\r\n\tpublic translateAny(prompt: string, locale?: ILocale, ...rest: Array<string>): string {\r\n\t\treturn this.translate(<any>prompt, locale);\r\n\t}\r\n\r\n\t/**\r\n\t * Translates prompt.\r\n\t *\r\n\t * If translation is empty, it will return empty string, which is a different\r\n\t * behavior than that of regular `translate`.\r\n\t *\r\n\t * @param prompt A string to translate\r\n\t * @param locale Force translation into specific locale, e.g. fr_FR\r\n\t * @param ...rest Parameters to replace in string\r\n\t * @return Translation\r\n\t */\r\n\tpublic translateEmpty<Key extends keyof ILocaleProperties>(prompt: Key, locale?: ILocale, ...rest: Array<string>): string {\r\n\t\tlet translation = this.translate(prompt, locale, ...rest);\r\n\t\treturn translation == prompt ? \"\" : translation;\r\n\t}\r\n\r\n\t/**\r\n\t * Translates a function.\r\n\t *\r\n\t * This method will return a function reference, but will not run it. It's\r\n\t * up to the caller script to run the function.\r\n\t *\r\n\t * @param prompt A function id to translate\r\n\t * @param locale Force translation into specific locale. e.g. fr_FR\r\n\t * @return A language-specific version of the function\r\n\t * @todo Apply adapter\r\n\t */\r\n\tpublic translateFunc<Key extends keyof ILocaleFunctions>(prompt: Key, locale?: ILocale): ILocaleFunctions[Key] {\r\n\r\n\t\t// Get langauge\r\n\t\tlocale = this.getLocale(locale);\r\n\r\n\t\t// Get translations for the locale\r\n\t\tlet translations = this.getTranslations(locale);\r\n\r\n\t\tlet value: $type.Optional<ILocaleFunctions[Key]> = translations[prompt];\r\n\r\n\t\t// Try to look for the translation\r\n\t\tif (value != null) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\t// Try to look in default language\r\n\t\tif (locale !== this._defaultLocale) {\r\n\t\t\treturn this.translateFunc(prompt, this._defaultLocale);\r\n\t\t}\r\n\r\n\t\t// Fail - return empty function\r\n\t\treturn (): string => {\r\n\t\t\treturn \"\";\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Translates a list of prompts in one go.\r\n\t *\r\n\t * @param list An array of strings to translate\r\n\t * @param locale Force translation into specific locale. e.g. fr_FR\r\n\t * @return An array of translated strings in the same order as source list\r\n\t */\r\n\tpublic translateAll<Key extends keyof ILocaleProperties>(list: Array<Key>, locale?: ILocale): Array<string> {\r\n\t\t// Translate all items in the list\r\n\t\tif (!this.isDefault()) {\r\n\t\t\treturn $array.map(list, (x) => this.translate(x, locale));\r\n\r\n\t\t} else {\r\n\t\t\treturn list;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the currently selected locale is a default locale.\r\n\t *\r\n\t * @return `true` if locale is default; `false` if it is not.\r\n\t */\r\n\tpublic isDefault(): boolean {\r\n\t\treturn this._defaultLocale === this._locale;\r\n\t}\r\n\r\n\t/**\r\n\t * Current locale.\r\n\t *\r\n\t * @param value Locale definition (translations)\r\n\t */\r\n\tpublic set locale(value: ILocale) {\r\n\t\tif (this._locale != value) {\r\n\t\t\tthis._locale = value;\r\n\r\n\r\n\t\t\tif (this.events.isEnabled(\"localechanged\")) {\r\n\t\t\t\tconst event: AMEvent<this, ILanguageEvents>[\"localechanged\"] = {\r\n\t\t\t\t\ttype: \"localechanged\",\r\n\t\t\t\t\tlocale: value,\r\n\t\t\t\t\ttarget: this\r\n\t\t\t\t};\r\n\t\t\t\tthis.events.dispatchImmediately(\"localechanged\", event);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Locale definition\r\n\t */\r\n\tpublic get locale(): ILocale {\r\n\t\treturn this._locale;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns translations for a given locale.\r\n\t *\r\n\t * @ignore\r\n\t * @deprecated\r\n\t * @param locale Locale\r\n\t * @return Translations\r\n\t */\r\n\tpublic getTranslations(locale: ILocale): ILocale {\r\n\t\treturn this.adapter.apply(\"translations\", {\r\n\t\t\ttranslations: locale,\r\n\t\t\tlocale: locale\r\n\t\t}).translations;\r\n\t}\r\n\r\n}\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { IClone } from \"./Clone\";\r\nimport { Disposer, MultiDisposer, IDisposer } from \"./Disposer\";\r\nimport { EventDispatcher, AMEvent } from \"./EventDispatcher\";\r\nimport { Ordering } from \"./Order\";\r\nimport * as $array from \"./Array\";\r\nimport * as $iter from \"./Iterator\";\r\nimport * as $type from \"./Type\";\r\n\r\n/**\r\n * @todo Description\r\n */\r\nexport class IndexedIterable<A> {\r\n\r\n\t/**\r\n\t * Item list\r\n\t */\r\n\tprivate _array: Array<A>;\r\n\r\n\t/**\r\n\t * Start index.\r\n\t */\r\n\tprivate _start: number;\r\n\r\n\t/**\r\n\t * End index.\r\n\t */\r\n\tprivate _end: number;\r\n\r\n\t/**\r\n\t * Constructor.\r\n\t *\r\n\t * @param array List items\r\n\t * @param start Start index\r\n\t * @param end End index\r\n\t */\r\n\tconstructor(array: Array<A>, start: number, end: number) {\r\n\t\tthis._array = array;\r\n\t\tthis._start = start;\r\n\t\tthis._end = end;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a list item iterator.\r\n\t *\r\n\t * @return Iterator\r\n\t */\r\n\tpublic iterator(): $iter.Iterator<A> {\r\n\t\treturn (push) => {\r\n\t\t\tif (this._start !== this._end) {\r\n\t\t\t\tif (this._start < this._end) {\r\n\t\t\t\t\tfor (let i = this._start; i < this._end; ++i) {\r\n\t\t\t\t\t\tif (!push(this._array[i])) {\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfor (let i = this._start - 1; i >= this._end; --i) {\r\n\t\t\t\t\t\tif (!push(this._array[i])) {\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an interable list sorted backwards than current list.\r\n\t *\r\n\t * @return List\r\n\t */\r\n\tpublic backwards(): IndexedIterable<A> {\r\n\t\treturn new IndexedIterable(this._array, this._end, this._start);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new list consisting only of specific range of items between\r\n\t * `start` and `end` indexes.\r\n\t *\r\n\t * @param start Start index\r\n\t * @param end End index\r\n\t * @return List\r\n\t */\r\n\tpublic range(start: number, end: number): IndexedIterable<A> {\r\n\t\tif (start <= end) {\r\n\t\t\tif (this._start === this._end) {\r\n\t\t\t\treturn this;\r\n\r\n\t\t\t} else if (this._start < this._end) {\r\n\t\t\t\tconst diff = end - start;\r\n\r\n\t\t\t\tstart = Math.max(this._start + start, this._start);\r\n\t\t\t\tend = Math.min(start + diff, this._end);\r\n\r\n\t\t\t\treturn new IndexedIterable(this._array, start, end);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tconst diff = end - start;\r\n\r\n\t\t\t\tstart = Math.max(this._start - start, this._end);\r\n\t\t\t\tend = Math.max(start - diff, this._end);\r\n\r\n\t\t\t\treturn new IndexedIterable(this._array, start, end);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tthrow new Error(\"Start index must be lower than end index\");\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Defines events for the [[List]].\r\n */\r\nexport interface IListEvents<A> {\r\n\t/**\r\n\t * Invoked when item is added to the list.\r\n\t *\r\n\t * @todo remove this later?\r\n\t */\r\n\tinserted: {\r\n\t\tnewValue: A;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when item is removed from the list.\r\n\t *\r\n\t * @todo remove this later?\r\n\t */\r\n\tremoved: {\r\n\t\toldValue: A;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when `setAll` method is called.\r\n\t */\r\n\tsetAll: {\r\n\t\toldArray: Array<A>;\r\n\t\tnewArray: Array<A>;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when `insertIndex` method is called.\r\n\t */\r\n\tinsertIndex: {\r\n\t\tindex: number;\r\n\t\tnewValue: A;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when `setIndex` method is called.\r\n\t */\r\n\tsetIndex: {\r\n\t\tindex: number;\r\n\t\toldValue: A;\r\n\t\tnewValue: A;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when item is removed.\r\n\t */\r\n\tremoveIndex: {\r\n\t\tindex: number;\r\n\t\toldValue: A;\r\n\t};\r\n\r\n}\r\n\r\n/**\r\n * ListGrouper organizes [[List]] items into groups.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport class ListGrouper<A> extends MultiDisposer {\r\n\r\n\t/**\r\n\t * Function that can be used to extract a \"value\" of the list element.\r\n\t *\r\n\t * Used for ordering.\r\n\t */\r\n\tprivate _getKey: (value: A) => number;\r\n\r\n\t/**\r\n\t * A function that is used to order list groups.\r\n\t */\r\n\tprivate _sort: (left: number, right: number) => Ordering;\r\n\r\n\t/**\r\n\t * Grouping keys.\r\n\t */\r\n\tprivate _keys: Array<number> = [];\r\n\r\n\t/**\r\n\t * List item groups.\r\n\t */\r\n\tprivate _groups: { [key: number]: Array<A> } = {};\r\n\r\n\t/**\r\n\t * Inserts an item (`x`) to a specific group (`key`) and specific `index`.\r\n\t *\r\n\t * @param x Item\r\n\t * @param key Group name\r\n\t * @param index Index\r\n\t */\r\n\tprivate _insert(x: A, key: number, index?: number): void {\r\n\t\tif (this._groups[key] == null) {\r\n\t\t\tthis._groups[key] = [];\r\n\r\n\t\t\t// TODO code duplication with SortedList\r\n\t\t\tconst { found, index } = $array.getSortedIndex(this._keys, this._sort, key);\r\n\r\n\t\t\tif (found) {\r\n\t\t\t\tthrow new Error(\"Key already exists: \" + key);\r\n\r\n\t\t\t} else {\r\n\t\t\t\t$array.insertIndex(this._keys, index, key);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (index == null) {\r\n\t\t\tthis._groups[key].push(x);\r\n\r\n\t\t} else {\r\n\t\t\t$array.insertIndex(this._groups[key], index, x);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Removes an item from the list.\r\n\t *\r\n\t * @param x Item to remove\r\n\t */\r\n\tprivate _remove(x: A): void {\r\n\t\tconst key = this._getKey(x);\r\n\r\n\t\tconst values = this._groups[key];\r\n\r\n\t\tif (values != null) {\r\n\t\t\t$array.remove(values, x);\r\n\r\n\t\t\tif (values.length === 0) {\r\n\t\t\t\tdelete this._groups[key];\r\n\r\n\t\t\t\tconst { found, index } = $array.getSortedIndex(this._keys, this._sort, key);\r\n\r\n\t\t\t\tif (found) {\r\n\t\t\t\t\t$array.removeIndex(this._keys, index);\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow new Error(\"Key doesn't exist: \" + key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Constructor.\r\n\t */\r\n\tconstructor(\r\n\t\tlist: $iter.Iterable<A> & {\r\n\t\t\tevents: EventDispatcher<{\r\n\t\t\t\tinserted: { newValue: A },\r\n\t\t\t\tremoved: { oldValue: A }\r\n\t\t\t}>;\r\n\t\t},\r\n\t\tgetKey: (value: A) => number,\r\n\t\tsort: (left: number, right: number) => Ordering\r\n\t) {\r\n\t\tsuper([\r\n\t\t\tlist.events.on(\"inserted\", (x) => {\r\n\t\t\t\tconst value = x.newValue;\r\n\t\t\t\tconst key = this._getKey(value);\r\n\r\n\t\t\t\tlet index = 0;\r\n\r\n\t\t\t\t$iter.eachContinue(list.iterator(), (x) => {\r\n\t\t\t\t\tif (x === value) {\r\n\t\t\t\t\t\treturn false;\r\n\r\n\t\t\t\t\t} else if (this._getKey(x) === key) {\r\n\t\t\t\t\t\t++index;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._insert(value, key, index);\r\n\t\t\t}, undefined, false),\r\n\r\n\t\t\tlist.events.on(\"removed\", (x) => {\r\n\t\t\t\tthis._remove(x.oldValue);\r\n\t\t\t}, undefined, false)\r\n\t\t]);\r\n\r\n\t\tthis._getKey = getKey;\r\n\t\tthis._sort = sort;\r\n\r\n\t\t$iter.each(list.iterator(), (x) => {\r\n\t\t\tthis._insert(x, getKey(x));\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an iterator for the list.\r\n\t *\r\n\t * The iterator will iterate through all items in all groups.\r\n\t *\r\n\t * @return Iterator\r\n\t */\r\n\tpublic iterator(): $iter.Iterator<A> {\r\n\t\treturn $iter.flatten($iter.map($iter.fromArray(this._keys), (key) => {\r\n\t\t\treturn $iter.fromArray(this._groups[key]);\r\n\t\t}));\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\nexport type ListLike<A> = $iter.Iterable<A> & {\r\n\tevents: EventDispatcher<{ removed: { oldValue: A } }>;\r\n};\r\n\r\n/**\r\n * A disposable list, which when disposed itself will call `dispose()` method\r\n * on all its items.\r\n */\r\nexport class ListDisposer<A extends IDisposer> extends Disposer {\r\n\tconstructor(list: ListLike<A>) {\r\n\t\tconst disposer = list.events.on(\"removed\", (x) => {\r\n\t\t\tx.oldValue.dispose();\r\n\t\t}, undefined, false);\r\n\r\n\t\tsuper(() => {\r\n\t\t\tdisposer.dispose();\r\n\r\n\t\t\t// TODO clear the list ?\r\n\t\t\t$iter.each(list.iterator(), (x) => {\r\n\t\t\t\tx.dispose();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}\r\n\r\n/**\r\n * Checks if specific index fits into length.\r\n *\r\n * @param index Index\r\n * @param len Length\r\n */\r\nfunction checkBounds(index: number, len: number): void {\r\n\tif (!(index >= 0 && index < len)) {\r\n\t\tthrow new Error(\"Index out of bounds: \" + index);\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * A List class is used to hold a number of indexed items of the same type.\r\n */\r\nexport class List<T> {\r\n\r\n\t/**\r\n\t * List values.\r\n\t */\r\n\tprivate _values: Array<T>;\r\n\r\n\t/**\r\n\t * Event dispatcher.\r\n\t */\r\n\tpublic events: EventDispatcher<AMEvent<this, IListEvents<T>>> = new EventDispatcher();\r\n\r\n\t/**\r\n\t * Constructor\r\n\t *\r\n\t * @param initial Inital list of values to add to list\r\n\t */\r\n\tconstructor(initial: Array<T> = []) {\r\n\t\tthis._values = initial;\r\n\t}\r\n\r\n\t/**\r\n\t * An array of values in the list.\r\n\t *\r\n\t * Do not use this property to add values. Rather use dedicated methods, like\r\n\t * `push()`, `removeIndex()`, etc.\r\n\t *\r\n\t * @readonly\r\n\t * @return List values\r\n\t */\r\n\tpublic get values(): Array<T> {\r\n\t\treturn this._values;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if list contains specific item reference.\r\n\t *\r\n\t * @param item Item to search for\r\n\t * @return `true` if found, `false` if not found\r\n\t */\r\n\tpublic contains(value: T): boolean {\r\n\t\treturn this._values.indexOf(value) !== -1;\r\n\t}\r\n\r\n\t/**\r\n\t * Removes specific item from the list.\r\n\t *\r\n\t * @param item An item to remove\r\n\t */\r\n\tpublic removeValue(value: T): void {\r\n\t\tlet i = 0;\r\n\t\tlet length = this._values.length;\r\n\r\n\t\twhile (i < length) {\r\n\t\t\t// TODO handle NaN\r\n\t\t\tif (this._values[i] === value) {\r\n\t\t\t\tthis.removeIndex(i);\r\n\t\t\t\t--length;\r\n\r\n\t\t\t} else {\r\n\t\t\t\t++i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Searches the list for specific item and returns its index.\r\n\t *\r\n\t * @param item An item to search for\r\n\t * @return Index or -1 if not found\r\n\t */\r\n\tpublic indexOf(value: T): number {\r\n\t\treturn $array.indexOf(this._values, value);\r\n\t}\r\n\r\n\t/**\r\n\t * Number of items in list.\r\n\t *\r\n\t * @readonly\r\n\t * @return Number of items\r\n\t */\r\n\tpublic get length(): number {\r\n\t\treturn this._values.length;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if there's a value at specific index.\r\n\t *\r\n\t * @param index Index\r\n\t * @return Value exists?\r\n\t */\r\n\tpublic hasIndex(index: number): boolean {\r\n\t\treturn index >= 0 && index < this._values.length;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an item at specified index.\r\n\t *\r\n\t * @param index Index\r\n\t * @return List item\r\n\t */\r\n\tpublic getIndex(index: number): T | undefined {\r\n\t\treturn this._values[index];\r\n\t}\r\n\r\n\t/**\r\n\t * Sets value at specific index.\r\n\t *\r\n\t * If there's already a value at the index, it is overwritten.\r\n\t *\r\n\t * @param index Index\r\n\t * @param value New value\r\n\t * @return New value\r\n\t */\r\n\tpublic setIndex(index: number, value: T): T {\r\n\t\tcheckBounds(index, this._values.length);\r\n\r\n\t\tconst oldValue = this._values[index];\r\n\r\n\t\t// Do nothing if the old value and the new value are the same\r\n\t\tif (oldValue !== value) {\r\n\t\t\tthis._values[index] = value;\r\n\r\n\t\t\tif (this.events.isEnabled(\"setIndex\")) {\r\n\t\t\t\tthis.events.dispatchImmediately(\"setIndex\", {\r\n\t\t\t\t\ttype: \"setIndex\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tindex: index,\r\n\t\t\t\t\toldValue: oldValue,\r\n\t\t\t\t\tnewValue: value\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.events.isEnabled(\"removed\")) {\r\n\t\t\t\tthis.events.dispatchImmediately(\"removed\", {\r\n\t\t\t\t\ttype: \"removed\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\toldValue: oldValue\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.events.isEnabled(\"inserted\")) {\r\n\t\t\t\tthis.events.dispatchImmediately(\"inserted\", {\r\n\t\t\t\t\ttype: \"inserted\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tnewValue: value\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn oldValue;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds an item to the list at a specific index, which pushes all the other\r\n\t * items further down the list.\r\n\t *\r\n\t * @param index Index\r\n\t * @param item An item to add\r\n\t */\r\n\tpublic insertIndex(index: number, value: T): void {\r\n\t\tcheckBounds(index, this._values.length + 1);\r\n\r\n\t\t$array.insertIndex(this._values, index, value);\r\n\r\n\t\tif (this.events.isEnabled(\"insertIndex\")) {\r\n\t\t\tthis.events.dispatchImmediately(\"insertIndex\", {\r\n\t\t\t\ttype: \"insertIndex\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\tindex: index,\r\n\t\t\t\tnewValue: value\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.events.isEnabled(\"inserted\")) {\r\n\t\t\tthis.events.dispatchImmediately(\"inserted\", {\r\n\t\t\t\ttype: \"inserted\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\tnewValue: value\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [_sortQuicksort description]\r\n\t *\r\n\t * @todo Description\r\n\t * @param low [description]\r\n\t * @param high [description]\r\n\t * @param order [description]\r\n\t */\r\n\tprivate _sortQuicksort(low: number, high: number, order: (left: T, right: T) => Ordering): void {\r\n\t\tif (low < high) {\r\n\t\t\tconst p = this._sortPartition(low, high, order);\r\n\t\t\tthis._sortQuicksort(low, p, order);\r\n\t\t\tthis._sortQuicksort(p + 1, high, order);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [_sortPartition description]\r\n\t *\r\n\t * @todo Description\r\n\t * @param low [description]\r\n\t * @param high [description]\r\n\t * @param order [description]\r\n\t * @return [description]\r\n\t */\r\n\tprivate _sortPartition(low: number, high: number, order: (left: T, right: T) => Ordering): number {\r\n\t\tconst values = this._values;\r\n\t\tconst pivot = values[low];\r\n\r\n\t\tlet i = low - 1;\r\n\t\tlet j = high + 1;\r\n\r\n\t\tfor (; ;) {\r\n\t\t\tdo {\r\n\t\t\t\t++i;\r\n\t\t\t} while (order(values[i], pivot) < 0);\r\n\r\n\t\t\tdo {\r\n\t\t\t\t--j;\r\n\t\t\t} while (order(values[j], pivot) > 0);\r\n\r\n\t\t\tif (i >= j) {\r\n\t\t\t\treturn j;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tthis.swap(i, j);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Reorders list items according to specific ordering function.\r\n\t *\r\n\t * @param order Ordering function\r\n\t */\r\n\tpublic sort(order: (left: T, right: T) => Ordering): void {\r\n\t\t// https://en.wikipedia.org/wiki/Quicksort#Hoare_partition_scheme\r\n\t\t// @todo faster implementation of this\r\n\t\t// @todo test this\r\n\t\tthis._sortQuicksort(0, this._values.length - 1, order);\r\n\t}\r\n\r\n\t/**\r\n\t * Swaps indexes of two items in the list.\r\n\t *\r\n\t * @param a Item 1\r\n\t * @param b Item 2\r\n\t */\r\n\tpublic swap(a: number, b: number): void {\r\n\t\tconst len = this._values.length;\r\n\r\n\t\tcheckBounds(a, len);\r\n\t\tcheckBounds(b, len);\r\n\r\n\t\tif (a !== b) {\r\n\t\t\tconst value_a = this._values[a];\r\n\t\t\tconst value_b = this._values[b];\r\n\r\n\t\t\tthis._values[a] = value_b;\r\n\r\n\t\t\tif (this.events.isEnabled(\"setIndex\")) {\r\n\t\t\t\tthis.events.dispatchImmediately(\"setIndex\", {\r\n\t\t\t\t\ttype: \"setIndex\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tindex: a,\r\n\t\t\t\t\toldValue: value_a,\r\n\t\t\t\t\tnewValue: value_b\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis._values[b] = value_a;\r\n\r\n\t\t\tif (this.events.isEnabled(\"setIndex\")) {\r\n\t\t\t\tthis.events.dispatchImmediately(\"setIndex\", {\r\n\t\t\t\t\ttype: \"setIndex\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tindex: b,\r\n\t\t\t\t\toldValue: value_b,\r\n\t\t\t\t\tnewValue: value_a\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Removes a value at specific index.\r\n\t *\r\n\t * @param index Index of value to remove\r\n\t * @return Removed value\r\n\t */\r\n\tpublic removeIndex(index: number): T {\r\n\t\tcheckBounds(index, this._values.length);\r\n\r\n\t\tconst oldValue = this._values[index];\r\n\r\n\t\t$array.removeIndex(this._values, index);\r\n\r\n\t\tif (this.events.isEnabled(\"removeIndex\")) {\r\n\t\t\tthis.events.dispatchImmediately(\"removeIndex\", {\r\n\t\t\t\ttype: \"removeIndex\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\tindex: index,\r\n\t\t\t\toldValue: oldValue\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.events.isEnabled(\"removed\")) {\r\n\t\t\tthis.events.dispatchImmediately(\"removed\", {\r\n\t\t\t\ttype: \"removed\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\toldValue: oldValue\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn oldValue;\r\n\t}\r\n\r\n\t/**\r\n\t * Moves an item to a specific index within the list.\r\n\t *\r\n\t * If the index is not specified it will move the item to the end of the\r\n\t * list.\r\n\t *\r\n\t * @param value Item to move\r\n\t * @param index Index to place item at\r\n\t */\r\n\tpublic moveValue(value: T, toIndex?: number): void {\r\n\t\t// TODO don't do anything if the desired index is the same as the current index\r\n\t\tlet index = this.indexOf(value);\r\n\r\n\t\t// TODO remove all old values rather than only the first ?\r\n\t\tif (index !== -1) {\r\n\t\t\tconst oldValue = this._values[index];\r\n\r\n\t\t\t$array.removeIndex(this._values, index);\r\n\r\n\t\t\tif (this.events.isEnabled(\"removeIndex\")) {\r\n\t\t\t\tthis.events.dispatchImmediately(\"removeIndex\", {\r\n\t\t\t\t\ttype: \"removeIndex\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tindex: index,\r\n\t\t\t\t\toldValue: oldValue\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (toIndex == null) {\r\n\t\t\ttoIndex = this._values.length;\r\n\t\t\tthis._values.push(value);\r\n\r\n\t\t} else {\r\n\t\t\t$array.insertIndex(this._values, toIndex, value);\r\n\t\t}\r\n\r\n\t\tif (this.events.isEnabled(\"insertIndex\")) {\r\n\t\t\tthis.events.dispatchImmediately(\"insertIndex\", {\r\n\t\t\t\ttype: \"insertIndex\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\tindex: toIndex,\r\n\t\t\t\tnewValue: value\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (index === -1) {\r\n\t\t\tif (this.events.isEnabled(\"inserted\")) {\r\n\t\t\t\tthis.events.dispatchImmediately(\"inserted\", {\r\n\t\t\t\t\ttype: \"inserted\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tnewValue: value\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Adds an item to the end of the list.\r\n\t *\r\n\t * @param item An item to add\r\n\t */\r\n\tpublic push<K extends T>(value: K): K {\r\n\t\tconst index = this._values.push(value) - 1;\r\n\r\n\t\tif (this.events.isEnabled(\"insertIndex\")) {\r\n\t\t\tthis.events.dispatchImmediately(\"insertIndex\", {\r\n\t\t\t\ttype: \"insertIndex\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\tindex: index,\r\n\t\t\t\tnewValue: value\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.events.isEnabled(\"inserted\")) {\r\n\t\t\tthis.events.dispatchImmediately(\"inserted\", {\r\n\t\t\t\ttype: \"inserted\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\tnewValue: value\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds an item as a first item in the list.\r\n\t *\r\n\t * @param item An item to add\r\n\t */\r\n\tpublic unshift(value: T): void {\r\n\t\tthis.insertIndex(0, value);\r\n\t}\r\n\r\n\t/**\r\n\t * Adds multiple items to the list.\r\n\t *\r\n\t * @param items An Array of items to add\r\n\t */\r\n\tpublic pushAll(values: Array<T>): void {\r\n\t\t$array.each(values, (value) => {\r\n\t\t\tthis.push(value);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Copies and adds items from abother list.\r\n\t *\r\n\t * @param source A list top copy items from\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\tthis.pushAll(source._values);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the last item from the list, and removes it.\r\n\t *\r\n\t * @return Item\r\n\t */\r\n\tpublic pop(): $type.Optional<T> {\r\n\t\tlet index = this._values.length - 1;\r\n\t\treturn index < 0 ? undefined : this.removeIndex(this._values.length - 1);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the first item from the list, and removes it.\r\n\t *\r\n\t * @return Item\r\n\t */\r\n\tpublic shift(): $type.Optional<T> {\r\n\t\treturn this._values.length ? this.removeIndex(0) : undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets multiple items to the list.\r\n\t *\r\n\t * All current items are removed.\r\n\t *\r\n\t * @param newArray New items\r\n\t */\r\n\tpublic setAll(newArray: Array<T>): void {\r\n\t\t// @tod if a value exists in both the new and old arrays, don't send remove/insert events\r\n\t\tconst oldArray = $array.copy(this._values);\r\n\r\n\t\tthis._values.length = 0;\r\n\r\n\t\t$array.each(newArray, (value) => {\r\n\t\t\tthis._values.push(value);\r\n\t\t});\r\n\r\n\t\tif (this.events.isEnabled(\"setAll\")) {\r\n\t\t\tthis.events.dispatchImmediately(\"setAll\", {\r\n\t\t\t\ttype: \"setAll\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\toldArray: oldArray,\r\n\t\t\t\tnewArray: this._values // TODO make a copy ?\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.events.isEnabled(\"removed\")) {\r\n\t\t\t$array.each(oldArray, (x) => {\r\n\t\t\t\tthis.events.dispatchImmediately(\"removed\", {\r\n\t\t\t\t\ttype: \"removed\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\toldValue: x\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.events.isEnabled(\"inserted\")) {\r\n\t\t\t$array.each(this._values, (x) => {\r\n\t\t\t\tthis.events.dispatchImmediately(\"inserted\", {\r\n\t\t\t\t\ttype: \"inserted\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tnewValue: x\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Removes all items from the list.\r\n\t */\r\n\tpublic clear(): void {\r\n\t\tthis.setAll([]);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a list iterator.\r\n\t *\r\n\t * @return Iterator\r\n\t */\r\n\tpublic iterator(): $iter.Iterator<T> {\r\n\t\treturn $iter.fromArray(this._values);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an ES6 iterator for the list.\r\n\t */\r\n\tpublic *[Symbol.iterator](): Iterator<T> {\r\n\t\tconst length = this._values.length;\r\n\r\n\t\tfor (let i = 0; i < length; ++i) {\r\n\t\t\tyield this._values[i];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Calls `f` for each element in the list.\r\n\t *\r\n\t * `f` should have at least one parameter defined which will get a current\r\n\t * item, with optional second argument - index.\r\n\t */\r\n\tpublic each(f: (value: T, index: number) => void): void {\r\n\t\t$array.each(this._values, f);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a specific range of list items, which can be iterated.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Code duplication with IndexedIterable\r\n\t * @param start Start index\r\n\t * @param end End index\r\n\t * @return Range\r\n\t */\r\n\tpublic range(start: number, end: number): IndexedIterable<T> {\r\n\t\tif (start <= end) {\r\n\t\t\tconst diff = end - start;\r\n\r\n\t\t\tstart = Math.max(start, 0);\r\n\t\t\tend = Math.min(start + diff, this._values.length);\r\n\r\n\t\t\treturn new IndexedIterable(this._values, start, end);\r\n\r\n\t\t} else {\r\n\t\t\tthrow new Error(\"Start index must be lower than end index\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an iterator that has list items sorted backwards.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return List\r\n\t */\r\n\tpublic backwards(): IndexedIterable<T> {\r\n\t\treturn new IndexedIterable(this._values, this._values.length, 0);\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * A version of a [[List]] that has a \"template\".\r\n *\r\n * A template is an instance of an object, that can be used to create new\r\n * elements in the list without actually needing to create instances for those.\r\n *\r\n * When new element is created in the list, e.g. by calling its `create()`\r\n * method, an exact copy of the element is created (including properties and\r\n * other attributes), inserted into the list and returned.\r\n */\r\nexport class ListTemplate<T extends IClone<T> & { isTemplate: boolean }> extends List<T> implements IClone<ListTemplate<T>> {\r\n\t/**\r\n\t * A template object.\r\n\t *\r\n\t * @todo Make this private\r\n\t */\r\n\tpublic _template!: T;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t *\r\n\t * @param t Template object\r\n\t */\r\n\tpublic constructor(t: T) {\r\n\t\tsuper();\r\n\t\tthis.template = t;\r\n\t}\r\n\r\n\t/**\r\n\t * A \"template\" object to copy all properties from when creating new list\r\n\t * items.\r\n\t *\r\n\t * @param v Template object\r\n\t */\r\n\tpublic set template(v: T) {\r\n\t\tv.isTemplate = true;\r\n\t\tthis._template = v;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Template object\r\n\t */\r\n\tpublic get template(): T {\r\n\t\treturn this._template;\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all elements from other list.\r\n\t *\r\n\t * @param source Source list\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\t$iter.each(source.iterator(), (value) => {\r\n\t\t\tthis.push(value.clone());\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Instantiates a new object of the specified type, adds it to the end of\r\n\t * the list, and returns it.\r\n\t *\r\n\t * @param make Item type to use. Will use the default type for the list if not specified.\r\n\t * @return Newly created item\r\n\t */\r\n\tpublic create(make: { new(): T; }): T;\r\n\tpublic create(): T;\r\n\tpublic create(make?: { new(): T; }): T {\r\n\t\tconst clone =\r\n\t\t\t(make != null\r\n\t\t\t\t? new make()\r\n\t\t\t\t: this.template.clone());\r\n\r\n\t\tthis.push(clone);\r\n\r\n\t\treturn clone;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an exact clone of the list, including its items and template.\r\n\t *\r\n\t * @return New list\r\n\t */\r\n\tpublic clone(): ListTemplate<T> {\r\n\t\tconst out = new ListTemplate(this.template);\r\n\r\n\t\tconst values = this.values;\r\n\r\n\t\tconst length = values.length;\r\n\r\n\t\tfor (let i = 0; i < length; ++i) {\r\n\t\t\tout.push(values[i].clone());\r\n\t\t}\r\n\r\n\t\treturn out;\r\n\t}\r\n\r\n}\r\n","import { options } from \"../Options\";\n\n/**\n * Outputs string to console if `verbose` is `true`.\n */\nexport function log(...messages: Array<any>): void {\n\tif (options.verbose) {\n\t\tif (console) {\n\t\t\tconsole.log(...messages);\n\t\t}\n\t}\n}\n\n/**\n * Outputs a warning to the console.\n */\nexport function warn(...messages: Array<any>): void {\n\tif (console) {\n\t\tconsole.warn(...messages);\n\t}\n}\n","/**\r\n * A collection of Math-related functions\r\n *\r\n * @todo Comment trigonometric functions?\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { IPoint } from \"../defs/IPoint\";\r\nimport { IRectangle } from \"../defs/IRectangle\";\r\nimport { IRange } from \"../defs/IRange\";\r\nimport * as $type from \"./Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * CONSTANTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nexport const PI = Math.PI;\r\nexport const HALFPI = PI / 2;\r\nexport const RADIANS = PI / 180;\r\nexport const DEGREES = 180 / PI;\r\n\r\n/**\r\n * Converts any value and fits it into a specific value range.\r\n *\r\n * @param value Source value\r\n * @param min Minimum allowable value\r\n * @param max Maximum allowable value\r\n * @return Number\r\n */\r\nexport function toNumberRange(value: any, min: number, max: number): number {\r\n\tif ($type.hasValue(value)) {\r\n\t\tvalue = $type.toNumber(value);\r\n\t\treturn fitToRange(value, min, max);\r\n\t}\r\n\treturn value;\r\n}\r\n\r\n/**\r\n * Rounds the numeric value to whole number or specific precision of set.\r\n *\r\n * @param value Value\r\n * @param precision Precision (number of decimal points)\r\n * @param floor In case value ends with 0.5 and precision is 0, we might need to floor the value instead of ceiling it.\r\n * @return Rounded value\r\n */\r\nexport function round(value: number, precision?: number, floor?: boolean): number {\r\n\tif (!$type.isNumber(precision) || precision <= 0) {\r\n\r\n\t\tlet rounded = Math.round(value);\r\n\t\tif (floor) {\r\n\t\t\tif (rounded - value == 0.5) {\r\n\t\t\t\trounded--;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn rounded;\r\n\t}\r\n\telse {\r\n\t\tlet d: number = Math.pow(10, precision);\r\n\t\treturn Math.round(value * d) / d;\r\n\t}\r\n}\r\n\r\n/**\r\n * Ceils the numeric value to whole number or specific precision of set.\r\n *\r\n * @param value Value\r\n * @param precision Precision (number of decimal points)\r\n * @return Rounded value\r\n */\r\nexport function ceil(value: number, precision?: number): number {\r\n\tif (!$type.isNumber(precision) || precision <= 0) {\r\n\t\treturn Math.ceil(value);\r\n\t}\r\n\telse {\r\n\t\tlet d: number = Math.pow(10, precision);\r\n\t\treturn Math.ceil(value * d) / d;\r\n\t}\r\n}\r\n\r\n/**\r\n * Stretches `t` so that it will always be between `from` and `to`.\r\n *\r\n * @param t Number from 0 to 1\r\n * @param from Lowest possible value\r\n * @param to Highest possible value\r\n * @return Adjusted value\r\n */\r\nexport function stretch(t: number, from: number, to: number): number {\r\n\treturn (t * (to - from)) + from;\r\n}\r\n\r\n\r\n/**\r\n * Adjust numeric value so it fits to specific value range.\r\n *\r\n * @param value Value\r\n * @param minValue Lowest possible value\r\n * @param maxValue Highest possible value\r\n * @return Adjusted value\r\n */\r\nexport function fitToRange(value: number, minValue: $type.Optional<number>, maxValue: $type.Optional<number>): number {\r\n\tif ($type.isNumber(minValue)) {\r\n\t\tif ($type.isNumber(maxValue) && maxValue < minValue) {\r\n\t\t\tlet temp = maxValue;\r\n\t\t\tmaxValue = minValue;\r\n\t\t\tminValue = temp;\r\n\t\t}\r\n\r\n\t\tif (value < minValue) {\r\n\t\t\tvalue = minValue;\r\n\t\t}\r\n\t}\r\n\r\n\tif ($type.isNumber(maxValue)) {\r\n\t\tif (value > maxValue) {\r\n\t\t\tvalue = maxValue;\r\n\t\t}\r\n\t}\r\n\r\n\treturn value;\r\n}\r\n\r\n/**\r\n * Returns sine of a number.\r\n *\r\n * @param value Value\r\n * @return Sine\r\n */\r\nexport function sin(value: number): number {\r\n\treturn round(Math.sin(RADIANS * value), 10);\r\n}\r\n\r\n/**\r\n * Returns tan of a number.\r\n *\r\n * @param value Value\r\n * @return Sine\r\n */\r\nexport function tan(value: number): number {\r\n\treturn round(Math.tan(RADIANS * value), 10);\r\n}\r\n\r\n/**\r\n * Returns cosine of a number.\r\n *\r\n * @param value Value\r\n * @return Cosine\r\n */\r\nexport function cos(value: number): number {\r\n\treturn round(Math.cos(RADIANS * value), 10);\r\n}\r\n\r\n/**\r\n * Returns biggest value out of passed in numeric values.\r\n *\r\n * @param left Numeric value\r\n * @param right Numeric value\r\n * @return Biggest value\r\n */\r\nexport function max(left: number, right: number): number;\r\nexport function max(left: number, right: $type.Optional<number>): number;\r\nexport function max(left: $type.Optional<number>, right: number): number;\r\nexport function max(left: $type.Optional<number>, right: $type.Optional<number>): $type.Optional<number>;\r\nexport function max(left: any, right: any): any {\r\n\tif ($type.isNumber(left)) {\r\n\t\tif ($type.isNumber(right)) {\r\n\t\t\tif (right > left) {\r\n\t\t\t\treturn right;\r\n\r\n\t\t\t} else {\r\n\t\t\t\treturn left;\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\treturn left;\r\n\t\t}\r\n\r\n\t} else if ($type.isNumber(right)) {\r\n\t\treturn right;\r\n\r\n\t} else {\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\n/**\r\n * Returns smallest value out of passed in numeric values.\r\n *\r\n * @param left Numeric value\r\n * @param right Numeric value\r\n * @return Smallest value\r\n */\r\nexport function min(left: number, right: number): number;\r\nexport function min(left: number, right: $type.Optional<number>): number;\r\nexport function min(left: $type.Optional<number>, right: number): number;\r\nexport function min(left: $type.Optional<number>, right: $type.Optional<number>): $type.Optional<number>;\r\nexport function min(left: any, right: any): any {\r\n\tif ($type.isNumber(left)) {\r\n\t\tif ($type.isNumber(right)) {\r\n\t\t\tif (right < left) {\r\n\t\t\t\treturn right;\r\n\r\n\t\t\t} else {\r\n\t\t\t\treturn left;\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\treturn left;\r\n\t\t}\r\n\r\n\t} else if ($type.isNumber(right)) {\r\n\t\treturn right;\r\n\r\n\t} else {\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\n/**\r\n * Returns the closest value from the array of values to the reference value.\r\n *\r\n * @param values Array of values\r\n * @param value Reference value\r\n * @return Closes value from the array\r\n */\r\nexport function closest(values: number[], referenceValue: number): number {\r\n\treturn values.reduce(function(prev, curr) {\r\n\t\treturn (Math.abs(curr - referenceValue) < Math.abs(prev - referenceValue) ? curr : prev);\r\n\t});\r\n}\r\n\r\n/**\r\n * Checks whether two ranges of values intersect.\r\n *\r\n * @param range1 Range 1\r\n * @param range2 Range 2\r\n * @return Any intersecting numbers?\r\n */\r\nexport function intersect(range1: IRange, range2: IRange): boolean {\r\n\tlet start1: number = $type.getValue(range1.start);\r\n\tlet start2: number = $type.getValue(range2.start);\r\n\tlet end1: number = $type.getValue(range1.end);\r\n\tlet end2: number = $type.getValue(range2.end);\r\n\r\n\treturn Math.max(start1, start2) <= Math.min(end1, end2);\r\n}\r\n\r\n/**\r\n * Inverts the range of values.\r\n *\r\n * @param range Range\r\n */\r\nexport function invertRange(range: IRange) {\r\n\tlet start: number = $type.getValue(range.start);\r\n\tlet end: number = $type.getValue(range.end);\r\n\treturn { start: 1 - end, end: 1 - start };\r\n}\r\n\r\n/**\r\n * Returns an intersection range between two ranges of values.\r\n *\r\n * @param range1 Range 1\r\n * @param range2 Range 2\r\n * @return Intersecting value range\r\n */\r\nexport function intersection(range1: IRange, range2: IRange): $type.Optional<IRange> {\r\n\tlet start1: number = $type.getValue(range1.start);\r\n\tlet start2: number = $type.getValue(range2.start);\r\n\tlet end1: number = $type.getValue(range1.end);\r\n\tlet end2: number = $type.getValue(range2.end);\r\n\tlet startMax: number = Math.max(start1, start2);\r\n\tlet endMin: number = Math.min(end1, end2);\r\n\r\n\tif (endMin < startMax) {\r\n\t\treturn undefined;\r\n\t}\r\n\telse {\r\n\t\treturn { start: startMax, end: endMin };\r\n\t}\r\n}\r\n\r\n/**\r\n * Returns pixel \"distance\" between two points.\r\n *\r\n * If second point is not specified, distance from {x:0, y:0} point is\r\n * calculated.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @return Distance in relative pixels\r\n */\r\nexport function getDistance(point1: IPoint, point2?: IPoint): number {\r\n\tif (!point1) {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tif (!point2) {\r\n\t\tpoint2 = { x: 0, y: 0 };\r\n\t}\r\n\treturn Math.sqrt(Math.pow(Math.abs(point1.x - point2.x), 2) + Math.pow(Math.abs(point1.y - point2.y), 2));\r\n}\r\n\r\n/**\r\n * Returns pixel \"horizontal distance\" between two points.\r\n *\r\n * If second point is not specified, distance from {x:0, y:0} point is\r\n * calculated.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @return Distance in relative pixels\r\n */\r\nexport function getHorizontalDistance(point1: IPoint, point2?: IPoint): number {\r\n\tif (!point1) {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tif (!point2) {\r\n\t\tpoint2 = { x: 0, y: 0 };\r\n\t}\r\n\treturn Math.abs(point1.x - point2.x);\r\n}\r\n\r\n/**\r\n * Returns pixel \"vertical distance\" between two points.\r\n *\r\n * If second point is not specified, distance from {x:0, y:0} point is\r\n * calculated.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @return Distance in relative pixels\r\n */\r\nexport function getVerticalDistance(point1: IPoint, point2?: IPoint): number {\r\n\tif (!point1) {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tif (!point2) {\r\n\t\tpoint2 = { x: 0, y: 0 };\r\n\t}\r\n\treturn Math.abs(point1.y - point2.y);\r\n}\r\n\r\n/**\r\n * Returns approximate pixel \"distance\" between two points of cubic curve\r\n *\r\n * If second point is not specified, distance from {x:0, y:0} point is\r\n * calculated.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @param controlPointA Control Point 1\r\n * @param controlPointB Control Point 2\r\n * @param stepCount number of steps (the more, the more accurate result)\r\n * @return Distance in relative pixels\r\n */\r\nexport function getCubicCurveDistance(point1: IPoint, point2: IPoint, controlPointA: IPoint, controlPointB: IPoint, stepCount:number): number {\r\n\tif (!point1) {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tif (!point2) {\r\n\t\tpoint2 = { x: 0, y: 0 };\r\n\t}\r\n\r\n\tlet distance = 0;\r\n\tlet prevPoint: IPoint = point1;\r\n\tif (stepCount > 0) {\r\n\t\tfor (let s = 0; s <= stepCount; s++) {\r\n\t\t\tlet point = getPointOnCubicCurve(point1, point2, controlPointA, controlPointB, s / stepCount);\r\n\t\t\tdistance += getDistance(prevPoint, point);\r\n\t\t\tprevPoint = point;\r\n\t\t}\r\n\t}\r\n\treturn distance;\r\n}\r\n\r\n/**\r\n * Returns scale based on original and end position of the two points.\r\n *\r\n * @param point1 Current position of point 1\r\n * @param startPoint1 Start position of point 1\r\n * @param point2 Current position of point 1\r\n * @param startPoint2 Start position of point 2\r\n * @return Scale Calculated scale\r\n */\r\nexport function getScale(point1: IPoint, startPoint1: IPoint, point2: IPoint, startPoint2: IPoint): number {\r\n\tlet initialDistance: number = getDistance(startPoint1, startPoint2);\r\n\tlet currentDistance: number = getDistance(point1, point2);\r\n\r\n\treturn Math.abs(currentDistance / initialDistance);\r\n}\r\n\r\n/**\r\n * Returns an exact mid point between two points.\r\n *\r\n * @param point1 Position of point 1\r\n * @param point2 Position of point 2\r\n * @return Mid point Position of mid-point\r\n */\r\nexport function getMidPoint(point1: IPoint, point2: IPoint, position?: number): IPoint {\r\n\tif (!$type.isNumber(position)) {\r\n\t\tposition = 0.5;\r\n\t}\r\n\r\n\treturn {\r\n\t\t\"x\": (point1.x + (point2.x - point1.x) * position),\r\n\t\t\"y\": (point1.y + (point2.y - point1.y) * position)\r\n\t}\r\n}\r\n\r\n/**\r\n * Returns difference in angles between starting and ending position of two\r\n * vectors.\r\n *\r\n * @param point1 Current position of point 1\r\n * @param startPoint1 Start position of point 1\r\n * @param point2 Current position of point 1\r\n * @param startPoint2 Start position of point 2\r\n * @return Angle difference in degrees\r\n */\r\nexport function getRotation(point1: IPoint, startPoint1: IPoint, point2: IPoint, startPoint2: IPoint): number {\r\n\r\n\t// Get start and end angles\r\n\tlet startAngle: number = getAngle(startPoint1, startPoint2);\r\n\tlet angle: number = getAngle(point1, point2);\r\n\r\n\t// Calculate angle\r\n\tlet diff: number = startAngle - angle;\r\n\tif (diff < 0) {\r\n\t\tdiff += 360;\r\n\t}\r\n\r\n\treturn diff;\r\n}\r\n\r\n/**\r\n * Calculates angle of the vector based on two or one point.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @return Angle in degrees\r\n */\r\nexport function getAngle(point1: IPoint, point2?: IPoint): number {\r\n\tif (!point2) {\r\n\t\tpoint2 = { x: point1.x * 2, y: point1.y * 2 };\r\n\t}\r\n\tlet diffX: number = point2.x - point1.x;\r\n\tlet diffY: number = point2.y - point1.y;\r\n\tlet angle: number = Math.atan2(diffY, diffX) * DEGREES;\r\n\tif (angle < 0) {\r\n\t\tangle += 360;\r\n\t}\r\n\treturn normalizeAngle(angle);\r\n}\r\n\r\n/**\r\n * Returns the shift in coordinates of the center when item is rotated, moved\r\n * and scaled at the same time.\r\n *\r\n * @param center Current center\r\n * @param point1 Frst reference point\r\n * @param startPoint1 Original position of the first reference point\r\n * @param point2 Second reference point\r\n * @param startPoint2 Original position of the first reference point\r\n * @return Shift in center point coordinates\r\n */\r\nexport function getCenterShift(center: IPoint, point1: IPoint, startPoint1: IPoint, point2: IPoint, startPoint2: IPoint): IPoint {\r\n\r\n\t// Get angle\r\n\tlet angle: number = getRotation(point1, startPoint1, point2, startPoint2) - 90;\r\n\tif (angle < 0) {\r\n\t\tangle += 360;\r\n\t}\r\n\r\n\t// Get distance between new position\r\n\tlet distance: number = getDistance(point1, point2);\r\n\r\n\t// Calculate new X\r\n\tlet x: number = Math.cos(angle) / distance + point1.x;\r\n\tlet y: number = Math.cos(angle) / distance + point1.y;\r\n\r\n\tlet shift: IPoint = {\r\n\t\t\"x\": x - center.x,\r\n\t\t\"y\": y - center.y\r\n\t}\r\n\treturn shift;\r\n}\r\n\r\n/**\r\n * Converts an array of points into a bounding box rectangle.\r\n *\r\n * Array can contain any number of points.\r\n *\r\n * @param points Points\r\n * @return Bounding box rectangle\r\n */\r\nexport function getBBox(points: IPoint[]): $type.Optional<IRectangle> {\r\n\tif (points) {\r\n\t\tlet length = points.length;\r\n\r\n\t\tif (length !== 0) {\r\n\t\t\tlet left!: number;\r\n\t\t\tlet right!: number;\r\n\t\t\tlet top!: number;\r\n\t\t\tlet bottom!: number;\r\n\r\n\t\t\tfor (let i = 0; i < length; i++) {\r\n\t\t\t\tlet point: IPoint = points[i];\r\n\r\n\t\t\t\tif (!$type.isNumber(right) || (point.x > right)) {\r\n\t\t\t\t\tright = point.x;\r\n\t\t\t\t}\r\n\t\t\t\tif (!$type.isNumber(left) || (point.x < left)) {\r\n\t\t\t\t\tleft = point.x;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!$type.isNumber(top) || (point.y < top)) {\r\n\t\t\t\t\ttop = point.y;\r\n\t\t\t\t}\r\n\t\t\t\tif (!$type.isNumber(bottom) || (point.y > bottom)) {\r\n\t\t\t\t\tbottom = point.y;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn { x: left, y: top, width: right - left, height: bottom - top };\r\n\t\t}\r\n\t}\r\n\r\n\treturn { x: 0, y: 0, width: 0, height: 0 };\r\n}\r\n\r\n/**\r\n * Returns a [[IRectangle]] object representing a common rectangle that fits\r\n * all passed in rectangles in it.\r\n *\r\n * @param rectangles An array of rectangles\r\n * @return Common rectangle\r\n */\r\nexport function getCommonRectangle(rectangles: IRectangle[]): $type.Optional<IRectangle> {\r\n\tlet length = rectangles.length;\r\n\r\n\tif (length !== 0) {\r\n\t\tlet minX!: number;\r\n\t\tlet minY!: number;\r\n\t\tlet maxX!: number;\r\n\t\tlet maxY!: number;\r\n\r\n\t\tfor (let i = 0; i < length; i++) {\r\n\t\t\tlet rectangle = rectangles[i];\r\n\t\t\tminX = min(rectangle.x, minX);\r\n\t\t\tminY = min(rectangle.y, minY);\r\n\t\t\tmaxX = max(rectangle.x + rectangle.width, maxX);\r\n\t\t\tmaxY = max(rectangle.y + rectangle.height, maxY);\r\n\t\t}\r\n\r\n\t\treturn { x: minX, y: minY, width: maxX - minX, height: maxY - minY };\r\n\t}\r\n}\r\n\r\n/**\r\n * [getPointOnQuadraticCurve description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param pointA [description]\r\n * @param pointB [description]\r\n * @param controlPoint [description]\r\n * @param position [description]\r\n * @return [description]\r\n */\r\nexport function getPointOnQuadraticCurve(pointA: IPoint, pointB: IPoint, controlPoint: IPoint, position: number): IPoint {\r\n\tlet x: number = (1 - position) * (1 - position) * pointA.x + 2 * (1 - position) * position * controlPoint.x + position * position * pointB.x;\r\n\tlet y: number = (1 - position) * (1 - position) * pointA.y + 2 * (1 - position) * position * controlPoint.y + position * position * pointB.y;\r\n\treturn { x: x, y: y };\r\n}\r\n\r\n/**\r\n * [getPointOnCubicCurve description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param pointA [description]\r\n * @param pointB [description]\r\n * @param controlPointA [description]\r\n * @param controlPointB [description]\r\n * @param position [description]\r\n * @return [description]\r\n */\r\nexport function getPointOnCubicCurve(pointA: IPoint, pointB: IPoint, controlPointA: IPoint, controlPointB: IPoint, position: number): IPoint {\r\n\tlet point: IPoint = { x: 0, y: 0 };\r\n\tlet mt1: number = 1 - position;\r\n\tlet mt2: number = mt1 * mt1;\r\n\tlet mt3: number = mt2 * mt1;\r\n\r\n\tpoint.x = pointA.x * mt3 + controlPointA.x * 3 * mt2 * position + controlPointB.x * 3 * mt1 * position * position + pointB.x * position * position * position;\r\n\tpoint.y = pointA.y * mt3 + controlPointA.y * 3 * mt2 * position + controlPointB.y * 3 * mt1 * position * position + pointB.y * position * position * position;\r\n\r\n\treturn point;\r\n}\r\n\r\n/**\r\n * [getCubicControlPointA description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param p0 [description]\r\n * @param p1 [description]\r\n * @param p2 [description]\r\n * @param p3 [description]\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n * @return [description]\r\n */\r\nexport function getCubicControlPointA(p0: IPoint, p1: IPoint, p2: IPoint, p3: IPoint, tensionX: number, tensionY: number): IPoint {\r\n\ttensionX = adjustTension(tensionX);\r\n\ttensionY = adjustTension(tensionY);\r\n\treturn { x: ((-p0.x + p1.x / tensionX + p2.x) * tensionX), y: ((-p0.y + p1.y / tensionY + p2.y) * tensionY) };\r\n}\r\n\r\n/**\r\n * [getCubicControlPointB description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param p0 [description]\r\n * @param p1 [description]\r\n * @param p2 [description]\r\n * @param p3 [description]\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n * @return [description]\r\n */\r\nexport function getCubicControlPointB(p0: IPoint, p1: IPoint, p2: IPoint, p3: IPoint, tensionX: number, tensionY: number): IPoint {\r\n\ttensionX = adjustTension(tensionX);\r\n\ttensionY = adjustTension(tensionY);\r\n\treturn { x: ((p1.x + p2.x / tensionX - p3.x) * tensionX), y: ((p1.y + p2.y / tensionY - p3.y) * tensionY) };\r\n}\r\n\r\n/**\r\n * [adjustTension description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param tension [description]\r\n * @return [description]\r\n */\r\nexport function adjustTension(tension: number): number {\r\n\treturn 1 - tension + 0.00001;\r\n}\r\n\r\n/**\r\n * [normalizeAngle description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n * @return [description]\r\n */\r\nexport function normalizeAngle(value: number): number {\r\n\tif (value == 360) {\r\n\t\treturn 360;\r\n\t}\r\n\treturn value % 360;\r\n}\r\n\r\n\r\n\r\n/**\r\n * [normalizeAngleToRange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @todo review this with various angles, can be tested on radar chart with custom start/end angles\r\n * @param value [description]\r\n * @param startAngle [description]\r\n * @param endAngle [description]\r\n * @return [description]\r\n */\r\nexport function fitAngleToRange(value: number, startAngle: number, endAngle: number): number {\r\n\r\n\tif (startAngle > endAngle) {\r\n\t\tlet temp: number = startAngle;\r\n\t\tstartAngle = endAngle;\r\n\t\tendAngle = temp;\r\n\t}\r\n\r\n\tvalue = normalizeAngle(value);\r\n\r\n\tlet count = (startAngle - normalizeAngle(startAngle)) / 360;\r\n\r\n\tif (value < startAngle) {\r\n\t\tvalue += 360 * (count + 1);\r\n\t}\r\n\r\n\tlet maxEnd: number = startAngle + (endAngle - startAngle) / 2 + 180;\r\n\tlet maxStart: number = startAngle + (endAngle - startAngle) / 2 - 180;\r\n\r\n\tif (value > endAngle) {\r\n\r\n\t\tif (value - 360 > startAngle) {\r\n\t\t\tvalue -= 360;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (value < maxEnd) {\r\n\t\t\t\tvalue = endAngle;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvalue = startAngle;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (value < startAngle) {\r\n\t\tif (value > maxStart) {\r\n\t\t\tvalue = startAngle;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvalue = endAngle;\r\n\t\t}\r\n\t}\r\n\r\n\treturn value;\r\n}\r\n\r\n\r\n/**\r\n * Returns [[IRectangle]] of an arc in relative values, assuming that the\r\n * center is at the circle center.\r\n *\r\n * Used to find out max radius of an arc.\r\n *\r\n * @ignore Exclude from docs\r\n * @param startAngle Start angle\r\n * @param endAngle End angle\r\n * @param radius \t Relative radius\r\n * @return Rectangle\r\n */\r\nexport function getArcRect(startAngle: number, endAngle: number, radius?: number): IRectangle {\r\n\r\n\tlet minX = Number.MAX_VALUE;\r\n\tlet minY = Number.MAX_VALUE;\r\n\tlet maxX = -Number.MAX_VALUE;\r\n\tlet maxY = -Number.MAX_VALUE;\r\n\r\n\tlet bpoints = [];\r\n\r\n\tif (!$type.isNumber(radius)) {\r\n\t\tradius = 1;\r\n\t}\r\n\r\n\tbpoints.push(getArcPoint(radius, startAngle));\r\n\tbpoints.push(getArcPoint(radius, endAngle));\r\n\r\n\tlet fromAngle = Math.min(Math.floor(startAngle / 90) * 90, Math.floor(endAngle / 90) * 90);\r\n\tlet toAngle = Math.max(Math.ceil(startAngle / 90) * 90, Math.ceil(endAngle / 90) * 90);\r\n\r\n\tfor (let angle = fromAngle; angle <= toAngle; angle += 90) {\r\n\t\tif (angle >= startAngle && angle <= endAngle) {\r\n\t\t\tbpoints.push(getArcPoint(radius, angle));\r\n\t\t}\r\n\t}\r\n\r\n\tfor (let i = 0; i < bpoints.length; i++) {\r\n\t\tlet pt = bpoints[i];\r\n\t\tif (pt.x < minX) { minX = pt.x; }\r\n\t\tif (pt.y < minY) { minY = pt.y; }\r\n\t\tif (pt.x > maxX) { maxX = pt.x; }\r\n\t\tif (pt.y > maxY) { maxY = pt.y; }\r\n\t}\r\n\r\n\treturn ({ x: minX, y: minY, width: maxX - minX, height: maxY - minY });\r\n}\r\n\r\n/**\r\n * Returns point on arc\r\n *\r\n * @param center point\r\n * @param radius\r\n * @param arc\r\n * @return {boolean}\r\n */\r\nexport function getArcPoint(radius: number, arc: number) {\r\n\treturn ({ x: radius * cos(arc), y: radius * sin(arc) });\r\n}\r\n\r\n/**\r\n * Returns true if a point is within rectangle\r\n *\r\n * @param point\r\n * @param rectangle\r\n * @return {boolean}\r\n */\r\nexport function isInRectangle(point: IPoint, rectangle: IRectangle): boolean {\r\n\tif (point.x >= rectangle.x && point.x <= rectangle.x + rectangle.width && point.y > rectangle.y && point.y < rectangle.y + rectangle.height) {\r\n\t\treturn true;\r\n\t}\r\n\treturn false;\r\n}\r\n\r\n\r\nexport function getLineIntersection(pointA1: IPoint, pointA2: IPoint, pointB1: IPoint, pointB2: IPoint) {\r\n\tlet x = ((pointA1.x * pointA2.y - pointA2.x * pointA1.y) * (pointB1.x - pointB2.x) - (pointA1.x - pointA2.x) * (pointB1.x * pointB2.y - pointB1.y * pointB2.x)) / ((pointA1.x - pointA2.x) * (pointB1.y - pointB2.y) - (pointA1.y - pointA2.y) * (pointB1.x - pointB2.x));\r\n\tlet y = ((pointA1.x * pointA2.y - pointA2.x * pointA1.y) * (pointB1.y - pointB2.y) - (pointA1.y - pointA2.y) * (pointB1.x * pointB2.y - pointB1.y * pointB2.x)) / ((pointA1.x - pointA2.x) * (pointB1.y - pointB2.y) - (pointA1.y - pointA2.y) * (pointB1.x - pointB2.x));\r\n\treturn { x: x, y: y };\r\n}\r\n","/**\r\n * A collection of network-related functions\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $type from \"./Type\";\r\n\r\n/**\r\n * Defines an interface for objects that hold a net request result.\r\n */\r\nexport interface INetLoadResult<A> {\r\n\r\n\t/**\r\n\t * A reference to original [[XMLHttpRequest]].\r\n\t */\r\n\txhr: XMLHttpRequest;\r\n\r\n\t/**\r\n\t * Request response body.\r\n\t */\r\n\tresponse?: string;\r\n\r\n\t/**\r\n\t * Request response as Blob. (if set `responseType = \"blob\"`)\r\n\t */\r\n\tblob?: Blob;\r\n\r\n\t/**\r\n\t * Response `Content-Type`.\r\n\t */\r\n\ttype: string | null;\r\n\r\n\t/**\r\n\t * Was there an error?\r\n\t */\r\n\terror: boolean;\r\n\r\n\t/**\r\n\t * A target object that made the net load request.\r\n\t */\r\n\ttarget?: A;\r\n\r\n}\r\n\r\nexport interface INetRequestOptions {\r\n\r\n\t/**\r\n\t * Custom request headers to be added to HTTP(S) request.\r\n\t */\r\n\trequestHeaders?: { key: string, value: string }[];\r\n\r\n\t/**\r\n\t * Specify expected response type.\r\n\t *\r\n\t * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType} for more info\r\n\t */\r\n\tresponseType?: XMLHttpRequestResponseType;\r\n\r\n\t/**\r\n\t * Specify whether to send CORS credentials (defaults to `false`).\r\n\t *\r\n\t * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials} for more info\r\n\t */\r\n\twithCredentials?: boolean;\r\n}\r\n\r\n/**\r\n * Loads an external file via its URL.\r\n *\r\n * Please note that this is an asynchronous function.\r\n *\r\n * It will not return the result, but rather a `Promise`.\r\n *\r\n * You can use the `await` notion, or `then()`.\r\n *\r\n * ```TypeScript\r\n * // Using await\r\n * let response = await Net.load( \"http://www.my.com/data.json\" );\r\n * console.log( response.response );\r\n *\r\n * // Using then()\r\n * Net.load( \"http://www.my.com/data.json\" ).then( ( response ) => {\r\n * console.log( response.response );\r\n * } );\r\n * ```\r\n * ```JavaScript\r\n * // Using then()\r\n * Net.load( \"http://www.my.com/data.json\" ).then( function( response ) {\r\n * console.log( response.response );\r\n * } );\r\n * ```\r\n *\r\n * @async\r\n * @param url URL for the file to load\r\n * @param target A target element that is requesting the net load\r\n * @param options Request options\r\n * @return Result (Promise)\r\n */\r\nexport function load<A>(url: string, target?: A, options?: INetRequestOptions): Promise<INetLoadResult<A>> {\r\n\treturn new Promise<INetLoadResult<A>>((success, error) => {\r\n\r\n\t\t// Is return type Blob?\r\n\t\tlet isBlob = $type.hasValue(options) && options.responseType == \"blob\";\r\n\r\n\t\t// Create request and set up handlers\r\n\t\tlet xhr = new XMLHttpRequest();\r\n\t\txhr.onload = () => {\r\n\t\t\tif (xhr.status === 200) {\r\n\r\n\t\t\t\tlet response: $type.Optional<string>;\r\n\t\t\t\tlet blob: $type.Optional<Blob>;\r\n\r\n\t\t\t\tif (isBlob) {\r\n\t\t\t\t\tblob = xhr.response;\r\n\t\t\t\t\treadBlob(blob).then((response) => {\r\n\t\t\t\t\t\tlet output: INetLoadResult<A> = {\r\n\t\t\t\t\t\t\txhr: xhr,\r\n\t\t\t\t\t\t\terror: false,\r\n\t\t\t\t\t\t\tresponse: response,\r\n\t\t\t\t\t\t\tblob: blob,\r\n\t\t\t\t\t\t\ttype: xhr.getResponseHeader(\"Content-Type\"),\r\n\t\t\t\t\t\t\ttarget: target\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tsuccess(output);\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tresponse = xhr.responseText || xhr.response\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet output: INetLoadResult<A> = {\r\n\t\t\t\t\txhr: xhr,\r\n\t\t\t\t\terror: false,\r\n\t\t\t\t\tresponse: response,\r\n\t\t\t\t\tblob: blob,\r\n\t\t\t\t\ttype: xhr.getResponseHeader(\"Content-Type\"),\r\n\t\t\t\t\ttarget: target\r\n\t\t\t\t};\r\n\t\t\t\tsuccess(output);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\terror({\r\n\t\t\t\t\txhr: xhr,\r\n\t\t\t\t\terror: true,\r\n\t\t\t\t\ttype: xhr.getResponseHeader(\"Content-Type\"),\r\n\t\t\t\t\ttarget: target\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\t\txhr.onerror = () => {\r\n\t\t\terror({\r\n\t\t\t\txhr: xhr,\r\n\t\t\t\terror: true,\r\n\t\t\t\ttype: xhr.getResponseHeader(\"Content-Type\"),\r\n\t\t\t\ttarget: target\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t// Open request\r\n\t\txhr.open(\"GET\", url, true);\r\n\r\n\t\tif (options && options.withCredentials) {\r\n\t\t\txhr.withCredentials = true;\r\n\t\t}\r\n\r\n\t\t// Process options\r\n\t\tif ($type.hasValue(options)) {\r\n\r\n\t\t\tif ($type.hasValue(options.requestHeaders)) {\r\n\t\t\t\tfor (let i = 0; i < options.requestHeaders.length; i++) {\r\n\t\t\t\t\tlet header = options.requestHeaders[i];\r\n\t\t\t\t\txhr.setRequestHeader(header.key, header.value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ($type.hasValue(options.responseType)) {\r\n\t\t\t\txhr.responseType = options.responseType;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Send request\r\n\t\txhr.send();\r\n\r\n\t});\r\n\r\n}\r\n\r\n/**\r\n * Returns textual representation of a Blob object.\r\n *\r\n * @param blob Target blob\r\n * @return Text promise\r\n */\r\nexport function readBlob(blob: Blob): Promise<string> {\r\n\treturn new Promise<string>((success, error) => {\r\n\t\tconst reader = new FileReader()\r\n\r\n\t\treader.onload = event => {\r\n\t\t\tsuccess(<string>reader.result);\r\n\t\t}\r\n\r\n\t\treader.onerror = (e) => {\r\n\t\t\terror(e);\r\n\t\t}\r\n\r\n\t\treader.readAsText(blob);\r\n\t});\r\n}\r\n","/**\n * ============================================================================\n * IMPORTS\n * ============================================================================\n * @hidden\n */\nimport { Ordering } from \"./Order\";\n\n\n/**\n * ============================================================================\n * COMPARING FUNCTIONS\n * ============================================================================\n * @hidden\n */\n\n/**\n * Comparing function used for ordering.\n *\n * @ignore Exclude from docs\n * @param a Number 1\n * @param b Number 2\n * @return Result\n */\nexport function order(a: number, b: number): Ordering {\n\tif (a === b) {\n\t\treturn 0;\n\n\t} else if (a < b) {\n\t\treturn -1;\n\n\t} else {\n\t\treturn 1;\n\t}\n}\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport * as $array from \"./Array\";\r\nimport * as $iter from \"./Iterator\";\r\nimport * as $type from \"./Type\";\r\nimport { Ordering } from \"./Order\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * UTILITY FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Returns an iterator for all entries in object.\r\n *\r\n * Can be used to safely iterate through all properties of the object.\r\n *\r\n * @param object Source object\r\n * @returns Iterator\r\n */\r\nexport function entries<Object>(object: Object): $iter.Iterator<[$type.Keyof<Object>, Object[$type.Keyof<Object>]]> {\r\n\treturn (push) => {\r\n\t\t// TODO make this more efficient ?\r\n\t\tfor (let key in object) {\r\n\t\t\tif (hasKey(object, key)) {\r\n\t\t\t\tif (!push([key as $type.Keyof<Object>, object[key] as Object[$type.Keyof<Object>]])) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}\r\n\r\n/**\r\n * Returns an array of object's property names.\r\n *\r\n * @param object Source object\r\n * @returns Object property names\r\n */\r\nexport function keys<Object>(object: Object): Array<$type.Keyof<Object>> {\r\n\tconst output = [];\r\n\r\n\tfor (let key in object) {\r\n\t\tif (hasKey(object, key)) {\r\n\t\t\toutput.push(key as $type.Keyof<Object>);\r\n\t\t}\r\n\t}\r\n\r\n\treturn output;\r\n}\r\n\r\n/**\r\n * Returns an array of object's property names ordered using specific ordering\r\n * function.\r\n *\r\n * @param object Source object\r\n * @param order Ordering function\r\n * @returns Object property names\r\n */\r\nexport function keysOrdered<Object>(object: Object, order: (a: $type.Keyof<Object>, b: $type.Keyof<Object>) => Ordering): Array<$type.Keyof<Object>> {\r\n\treturn keys(object).sort(order);\r\n}\r\n\r\n/**\r\n * Checks if `object` has a specific `key`.\r\n *\r\n * @param object Source object\r\n * @param key Property name\r\n * @returns Has key?\r\n */\r\nexport function hasKey<Object, Key extends keyof Object>(object: Object, key: Key): boolean {\r\n\treturn {}.hasOwnProperty.call(object, key);\r\n}\r\n\r\n/**\r\n * Returns value of the specific `key`.\r\n *\r\n * @param object Source object\r\n * @param key Property name\r\n * @returns Key value\r\n */\r\nexport function getKey<Object, Key extends keyof Object>(object: Object, key: Key): Object[Key] {\r\n\treturn object[key];\r\n}\r\n\r\n/**\r\n * Iterates through all properties of the object calling `fn` for each of them.\r\n *\r\n * If return value of the function evaluates to `false` further iteration is\r\n * cancelled.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n */\r\nexport function eachContinue<Object>(object: Object, fn: <Key extends $type.Keyof<Object>>(key: Key, value: Object[Key]) => boolean): void {\r\n\tfor (let key in object) {\r\n\t\tif (hasKey(object, key)) {\r\n\t\t\tif (!fn(key as $type.Keyof<Object>, object[key] as Object[$type.Keyof<Object>])) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Iterates through all properties of the object calling `fn` for each of them.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n */\r\nexport function each<Object>(object: Object, fn: <Key extends $type.Keyof<Object>>(key: Key, value: Object[Key]) => void): void {\r\n\teachContinue(object, (key, value) => {\r\n\t\tfn(key, value);\r\n\t\treturn true;\r\n\t});\r\n}\r\n\r\n/**\r\n * Orders object properties using custom `ord` function and iterates through\r\n * them calling `fn` for each of them.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n * @param order Ordering function\r\n */\r\nexport function eachOrdered<Object>(object: Object, fn: <Key extends $type.Keyof<Object>>(key: Key, value: Object[Key]) => void, ord: (a: $type.Keyof<Object>, b: $type.Keyof<Object>) => Ordering): void {\r\n\t$array.each(keysOrdered(object, ord), (key) => {\r\n\t\tfn(key, object[key]);\r\n\t});\r\n}\r\n\r\n/**\r\n * Returns a copy of the object.\r\n *\r\n * @param object Source object\r\n * @returns Copy of the object\r\n */\r\nexport function copy<Object>(object: Object): Object {\r\n\treturn Object.assign({}, object);\r\n}\r\n\r\n/**\r\n * Merges two objects and returns a new object that contains properties from\r\n * both source objects.\r\n *\r\n * @param object1 Source object #1\r\n * @param object2 Source object #2\r\n * @returns Combined object\r\n */\r\nexport function merge<Object1, Object2>(object1: Object1, object2: Object2): Object1 & Object2 {\r\n\treturn Object.assign({}, object1, object2);\r\n}\r\n\r\n/**\r\n * Copies a list of properties from one object to another.\r\n *\r\n * Will not copy empty properties.\r\n *\r\n * @param source Source object\r\n * @param target Target object\r\n * @param keys List of keys to copy\r\n */\r\nexport function copyProperties(source: { [key: string]: any }, target: { [key: string]: any }, keys: Array<string>): void {\r\n\t$array.each(keys, (key) => {\r\n\t\tif ($type.hasValue(source[key])) {\r\n\t\t\ttarget[key] = source[key];\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Copies a list of properties from one object to another only if target does't have value of the property set.\r\n *\r\n * Will not copy empty properties.\r\n *\r\n * @param source Source object\r\n * @param target Target object\r\n * @param keys List of keys to copy\r\n */\r\nexport function softCopyProperties(source: { [key: string]: any }, target: { [key: string]: any }, keys: Array<string>): void {\r\n\t$array.each(keys, (key) => {\r\n\t\tif ($type.hasValue(source[key]) && !($type.hasValue((<any>target)[key]))) {\r\n\t\t\ttarget[key] = source[key];\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Copies a list of properties from one object to another.\r\n *\r\n * Will copy empty properties.\r\n *\r\n * @param source Source object\r\n * @param target Target object\r\n * @param keys List of keys to copy\r\n */\r\nexport function forceCopyProperties(source: { [key: string]: any }, target: { [key: string]: any }, keys: Array<string>): void {\r\n\t$array.each(keys, (key) => {\r\n\t\ttarget[key] = source[key];\r\n\t});\r\n}\r\n\r\n/**\r\n * Copies all properties from one object to another.\r\n *\r\n * @param from Source object\r\n * @param to Target object\r\n */\r\nexport function copyAllProperties(from: { [key: string]: any }, to: { [key: string]: any }): void {\r\n\tcopyProperties(from, to, keys(from));\r\n}\r\n","/**\n * A collection of functions for ordering.\n */\n\n/**\n * ============================================================================\n * UTILITY FUNCTIONS\n * ============================================================================\n * @hidden\n */\n\n/**\n * Defines values that ordering functions can return.\n */\nexport type Ordering = -1 | 0 | 1;\n\n/**\n * [reverse description]\n *\n * @ignore Exclude from docs\n * @todo Description\n * @param a [description]\n * @return [description]\n */\nexport function reverse(a: Ordering): Ordering {\n\tswitch (a) {\n\t\tcase 0:\n\t\t\treturn 0;\n\t\tcase -1:\n\t\t\treturn 1;\n\t\tcase 1:\n\t\t\treturn -1;\n\t}\n}\n\n/**\n * [or description]\n *\n * @ignore Exclude from docs\n * @todo Description\n * @param a Item 1\n * @param b Item 2\n * @return [description]\n */\nexport function or(a: Ordering, b: Ordering): Ordering {\n\tif (a === 0) {\n\t\treturn b;\n\n\t} else {\n\t\treturn a;\n\t}\n}\n","/**\n * ============================================================================\n * MAIN CLASS\n * ============================================================================\n * @hidden\n */\n\n/**\n * Represents a relative value (percent).\n *\n * The Percent object, can be instantiated using two ways:\n *\n * * Via `new Percent(X)`.\n * * Via `am4core.percent(X)`.\n *\n * `Percent` type objects can be used in a number of dual-measuring or\n * positioning properties, like `width`. E.g.:\n *\n * ```TypeScript\n * chart.paddingRight = new Percent(10);\n * // or\n * chart.paddingRight = am4core.percent(10);\n * ```\n * ```JavaScript\n * chart.paddingRight = new Percent(10);\n * // or\n * chart.paddingRight = am4core.percent(10);\n * ```\n * ```JSON\n * {\n * // ...\n * \"paddingRight\": \"10%\"\n * }\n * ```\n */\nexport class Percent {\n\n\t/**\n\t * Value in percent.\n\t */\n\tprotected _value: number;\n\n\t/**\n\t * Constructor.\n\t *\n\t * @param percent Percent value\n\t */\n\tconstructor(percent: number) {\n\t\tthis._value = percent;\n\t}\n\n\t/**\n\t * Relative value.\n\t *\n\t * E.g. 100% is 1, 50% is 0.5, etc.\n\t *\n\t * This is useful to apply transformations to other values. E.g.:\n\t *\n\t * ```TypeScript\n\t * let value = 256;\n\t * let percent = new am4core.Percent(50);\n\t * console.log(value * percent.value); // outputs 128\n\t * ```\n\t * ```JavaScript\n\t * var value = 256;\n\t * var percent = new am4core.Percent(50);\n\t * console.log(value * percent.value); // outputs 128\n\t * ```\n\t *\n\t * Alternatively, you can use `am4core.percent()` helper function:\n\t *\n\t * ```TypeScript\n\t * let value = 256;\n\t * let percent = am4core.percent(50);\n\t * console.log(value * percent.value); // outputs 128\n\t * ```\n\t * ```JavaScript\n\t * var value = 256;\n\t * var percent = am4core.percent(50);\n\t * console.log(value * percent.value); // outputs 128\n\t * ```\n\t *\n\t * @readonly\n\t * @return Relative value\n\t */\n\tpublic get value(): number {\n\t\treturn this._value / 100;\n\t}\n\n\t/**\n\t * Value in percent.\n\t *\n\t * @return Percent\n\t */\n\tpublic get percent(): number {\n\t\treturn this._value;\n\t}\n\n\tpublic toString(): string {\n\t\treturn \"\" + this._value + \"%\";\n\t}\n\n\t/*public toNumber(): number {\n\t\treturn this.percent;\n\t}*/\n\n}\n\n\n/**\n * Converts numeric percent value to a proper [[Percent]] object.\n *\n * ```TypeScript\n * pieSeries.radius = am4core.percent(80);\n * ```\n * ```JavaScript\n * pieSeries.radius = am4core.percent(80);\n * ```\n *\n * @param value Percent\n * @return Percent object\n */\nexport function percent(value: number): Percent {\n\treturn new Percent(value);\n}\n\n\n/**\n * Checks if value is a [[Percent]] object.\n *\n * @ignore Exclude from docs\n * @param value Input value\n * @return Is percent?\n */\nexport function isPercent(value: any): boolean {\n\treturn value instanceof Percent;\n}\n","/**\r\n * Responsive functionality module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObjectEvents, IBaseObjectEvents } from \"../Base\";\r\nimport { Sprite, ISpriteProperties, ISpriteAdapters } from \"../Sprite\";\r\nimport { SpriteState } from \"../SpriteState\";\r\nimport { Container } from \"../Container\";\r\nimport { Component } from \"../Component\";\r\nimport { List } from \"../utils/List\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { IDisposer } from \"../utils/Disposer\";\r\nimport { registry } from \"../Registry\";\r\nimport { Optional } from \"../utils/Type\";\r\nimport * as $iter from \"../utils/Iterator\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $type from \"../utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines an interface for the responsive rule, i.e. what overrides need to\r\n * be applied when certain conditions are matched.\r\n *\r\n * @important\r\n */\r\nexport interface IResponsiveRule {\r\n\r\n\t/**\r\n\t * A function which determines if this rule is relevant to current\r\n\t * conditions.\r\n\t *\r\n\t * Whenever the chrt size changes, this function will be run to determine\r\n\t * whether this rule needs to be applied.\r\n\t */\r\n\trelevant(target: Container): boolean;\r\n\r\n\t/**\r\n\t * A function which creates and returns a [[SpriteState]] that needs to be\r\n\t * set whenever rule should be applied.\r\n\t *\r\n\t * This is run only once.\r\n\t *\r\n\t * Once state is created, it is added to the Sprite's available states and\r\n\t * applied as necessary.\r\n\t */\r\n\tstate(target: Sprite, stateId: string): Optional<SpriteState<ISpriteProperties, ISpriteAdapters>>;\r\n\r\n\t/**\r\n\t * ID of the rule.\r\n\t */\r\n\tid?: string;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[Responsive]].\r\n */\r\nexport interface IResponsiveEvents extends IBaseObjectEvents {\r\n\r\n\t/**\r\n\t * Invoked when a list of applicable rules for the current resolution\r\n\t * changes.\r\n\t */\r\n\truleschanged: {},\r\n\r\n\t/**\r\n\t * Invoked after each rule is applied to the actual element.\r\n\t */\r\n\truleapplied: {\r\n\r\n\t\t/**\r\n\t\t * A rule that was just applied.\r\n\t\t */\r\n\t\t\"rule\": IResponsiveRule\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Defines adapters for [[Responsive]] class.\r\n *\r\n * Includes both the [[Adapter]] definitions and properties.\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IResponsiveAdapters {\r\n\r\n\t/**\r\n\t * Are responsive features enabled?\r\n\t */\r\n\tenabled: boolean;\r\n\r\n\t/**\r\n\t * Use default rules?\r\n\t *\r\n\t * If this is set `false`, only user-defined rules will be applied.\r\n\t */\r\n\tuseDefault: boolean;\r\n\r\n\t/**\r\n\t * A list of user-defined rules.\r\n\t */\r\n\trules: List<IResponsiveRule>;\r\n\r\n\t/**\r\n\t * A list of default rules.\r\n\t */\r\n\tdefaultRules: List<IResponsiveRule>;\r\n\r\n\t/**\r\n\t * A list of **all** rules - user-defined and default combined.\r\n\t */\r\n\tallRules: List<IResponsiveRule>;\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Responsive is responsible for overriding certain properties when conditions\r\n * are met.\r\n *\r\n * This class is used to dynamically apply and change certain chart properties\r\n * based on the current values of properties.\r\n *\r\n * Mainly, this is used with [[Sprite]]'s dimensional properties, like\r\n * `pixelWidth` and `pixelHeight`. However, it can be used to dynamically\r\n * change any property, based on any other property's value.\r\n *\r\n * A default responsive rules are disabled.\r\n *\r\n * To enable, set `enabled = false`. E.g.:\r\n *\r\n * ```TypeScript\r\n * chart.responsive.enabled = true;\r\n * ```\r\n * ```JavaScript\r\n * chart.responsive.enabled = true;\r\n * ```\r\n *\r\n * @see {@link IResponsiveEvents} for a list of available events\r\n * @see {@link IResponsiveAdapters} for a list of available Adapters\r\n * @todo Add default rules\r\n * @todo Watch for rule modification\r\n * @important\r\n */\r\nexport class Responsive extends BaseObjectEvents {\r\n\r\n\t/**\r\n\t * Holds a list of responsive rules organized by object type.\r\n\t */\r\n\tprotected _rules = new List<IResponsiveRule>();\r\n\r\n\t/**\r\n\t * Holds the list of the default responsive rules.\r\n\t * @deprecated\r\n\t */\r\n\t//protected _defaultRules = new List<IResponsiveRule>();\r\n\r\n\t/**\r\n\t * Holds the list of currently applied rules.\r\n\t */\r\n\tprotected _appliedRules: { [index: string]: boolean } = {};\r\n\r\n\t/**\r\n\t * Used to keep track of objects that have rules applied at the moment.\r\n\t */\r\n\tprotected _appliedTargets: string[] = [];\r\n\r\n\t/**\r\n\t * Use default rules in addition to the user-defined ones?\r\n\t */\r\n\tprotected _useDefault = true;\r\n\r\n\t/**\r\n\t * A target object responsive rules apply to.\r\n\t */\r\n\tprotected _component: $type.Optional<Component>;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IResponsiveEvents;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IResponsiveAdapters;\r\n\r\n\t/**\r\n\t * Adapter.\r\n\t */\r\n\tpublic adapter = new Adapter<this, IResponsiveAdapters>(this);\r\n\r\n\t/**\r\n\t * Indicates of responsive rules application is enabled.\r\n\t */\r\n\tprotected _enabled = false;\r\n\r\n\t/**\r\n\t * Holds a disposer for size events.\r\n\t */\r\n\tprivate _sizeEventDisposer: $type.Optional<IDisposer>;\r\n\r\n\t/**\r\n\t * Collection of objects and state ids that do not have any properties set.\r\n\t */\r\n\tprivate _noStates: string[] = [];\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"Responsive\";\r\n\r\n\t\t// Set up rules list events\r\n\t\tthis.rules.events.on(\"inserted\", this.checkRules, true);\r\n\t\tthis.rules.events.on(\"removed\", this.checkRules, true);\r\n\t\tthis._disposers.push(this.rules.events);\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * A target object that responsive rules will need to be applied to.\r\n\t *\r\n\t * @param value Target object\r\n\t */\r\n\tpublic set component(value: $type.Optional<Component>) {\r\n\r\n\t\t// Check if it's the same\r\n\t\tif (value == this._component) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Check if we already have a set up component and remove its events\r\n\t\tif (this._sizeEventDisposer) {\r\n\t\t\tthis.removeDispose(this._sizeEventDisposer);\r\n\t\t}\r\n\r\n\t\t// Set\r\n\t\tthis._component = value;\r\n\r\n\t\t// Set up resize monitoring events\r\n\t\tthis._sizeEventDisposer = $type.getValue(this.component).events.on(\"sizechanged\", this.checkRules, this);\r\n\t\tthis._disposers.push(this._sizeEventDisposer);\r\n\r\n\t\t// Enable resoponsive\r\n\t\tthis.enabled = true;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @return Target object\r\n\t */\r\n\tpublic get component(): $type.Optional<Component> {\r\n\t\treturn this._component;\r\n\t}\r\n\r\n\t/**\r\n\t * Should responsive rules be checked against and applied?\r\n\t *\r\n\t * @default false\r\n\t * @param value Apply responsive rules?\r\n\t */\r\n\tpublic set enabled(value: boolean) {\r\n\t\tif (this._enabled != value) {\r\n\t\t\tthis._enabled = value;\r\n\r\n\t\t\t// Run `applyRules` so that any currently applied rules can be reset\r\n\t\t\tthis.applyRules();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Apply responsive rules?\r\n\t */\r\n\tpublic get enabled(): boolean {\r\n\t\treturn this.adapter.apply(\"enabled\", this._enabled);\r\n\t}\r\n\r\n\t/**\r\n\t * Should default responsive rules be applied in addition to user-defined\r\n\t * ones.\r\n\t *\r\n\t * User-defined rules will take precedence over default rules whenever they\r\n\t * produce conflicting settings.\r\n\t *\r\n\t * @default true\r\n\t * @param value Use default rules?\r\n\t */\r\n\tpublic set useDefault(value: boolean) {\r\n\t\tif (this._useDefault != value) {\r\n\t\t\tthis._useDefault = value;\r\n\r\n\t\t\t// Run `applyRules` so that any currently applied rules can be reset\r\n\t\t\tthis.applyRules();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Use default rules?\r\n\t */\r\n\tpublic get useDefault(): boolean {\r\n\t\treturn this.adapter.apply(\"useDefault\", this._useDefault);\r\n\t}\r\n\r\n\t/**\r\n\t * User-defined responsive rules.\r\n\t *\r\n\t * User-defined rules will take precedence over default rules whenever they\r\n\t * produce conflicting settings.\r\n\t *\r\n\t * Use `allRules` to get all applicable rules including default and\r\n\t * user-defined ones.\r\n\t *\r\n\t * @param value User-defined rules\r\n\t */\r\n\tpublic set rules(value: List<IResponsiveRule>) {\r\n\t\tthis._rules = value;\r\n\t\tthis._enabled = true;\r\n\t\tthis.applyRules();\r\n\t}\r\n\r\n\t/**\r\n\t * @return User-defined rules\r\n\t */\r\n\tpublic get rules(): List<IResponsiveRule> {\r\n\t\treturn this.adapter.apply(\"rules\", this._rules);\r\n\t}\r\n\r\n\t/**\r\n\t * Default responsive rules.\r\n\t *\r\n\t * @readonly\r\n\t * @return List of responsive rules\r\n\t */\r\n\tpublic get defaultRules(): List<IResponsiveRule> {\r\n\t\treturn this.adapter.apply(\"defaultRules\", defaultRules);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns all rules: default rules (if not disabled) combined with\r\n\t * user-defined ones.\r\n\t *\r\n\t * @readonly\r\n\t * @return List of all applicable rules\r\n\t */\r\n\tpublic get allRules(): List<IResponsiveRule> {\r\n\r\n\t\t// Create empty list\r\n\t\tlet rules = new List<IResponsiveRule>();\r\n\r\n\t\t// Add default rules if not disabled\r\n\t\t// A code, requesting `allRules` must ensure loading of default rules\r\n\t\t// by calling `loadDefaultRules()`\r\n\t\tif (this.useDefault) {\r\n\t\t\trules.copyFrom(this.defaultRules);\r\n\t\t}\r\n\r\n\t\t// Add user-defined ones\r\n\t\trules.copyFrom(this.rules);\r\n\r\n\t\treturn this.adapter.apply(\"allRules\", rules);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if rule by the particular id currently applied.\r\n\t *\r\n\t * @param ruleId Rule ID\r\n\t * @return Is currently applied?\r\n\t */\r\n\tprotected isApplied(ruleId: string): boolean {\r\n\t\tconst rule = this._appliedRules[ruleId];\r\n\t\treturn $type.hasValue(rule) ? rule : false;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks which responsive rules currently satisfy their conditions and\r\n\t * should be applied, or unapplied.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic checkRules(): void {\r\n\r\n\t\t// Check if there are any rules\r\n\t\tlet rules = this.allRules;\r\n\t\tif (!rules || rules.length == 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\r\n\t\t// Init a list of rules to be applied\r\n\t\tlet rulesChanged: boolean = false;\r\n\r\n\t\tconst component = $type.getValue(this.component);\r\n\r\n\t\t// Check which rules match\r\n\t\t$iter.each(rules.iterator(), (rule) => {\r\n\r\n\t\t\t// Check if rule has an id\r\n\t\t\tif (!rule.id) {\r\n\t\t\t\trule.id = registry.getUniqueId();\r\n\t\t\t}\r\n\r\n\t\t\t// Init indicator if this rule should be applied\r\n\t\t\tlet apply = rule.relevant(component);\r\n\r\n\t\t\t// Let's check if this rule needs to be applied\r\n\t\t\tif ((apply && !this.isApplied(rule.id)) || (!apply && this.isApplied(rule.id))) {\r\n\t\t\t\trulesChanged = true;\r\n\t\t\t}\r\n\t\t\tthis._appliedRules[rule.id] = apply;\r\n\t\t});\r\n\r\n\t\t// Check if we need to re-apply the rules\r\n\t\tif (rulesChanged) {\r\n\r\n\t\t\tif (!this.component.isReady()) {\r\n\t\t\t\t// The chart is not yet ready (built)\r\n\t\t\t\t// We will hide the chart and delay application of rules\r\n\t\t\t\t// until \"ready\" event kicks in\r\n\t\t\t\t//component.hide(0);\r\n\t\t\t\tcomponent.hidden = true;\r\n\t\t\t\tcomponent.events.once(\"ready\", (ev) => {\r\n\t\t\t\t\tev.target.show(0);\r\n\t\t\t\t\tthis.applyRules();\r\n\t\t\t\t});\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.dispatchImmediately(\"ruleschanged\");\r\n\t\t\tthis.applyRules();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Applies current rules to the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param target Target object\r\n\t * @todo Better type check\r\n\t */\r\n\tpublic applyRules(target?: Container): void {\r\n\t\t// If no target supplied, we assume the top-level element\r\n\t\tconst newTarget = ($type.hasValue(target)\r\n\t\t\t? target\r\n\t\t\t: $type.getValue(this.component));\r\n\t\t// Check each rule\r\n\t\tlet defaultStateApplied = false;\r\n\t\tif (this.enabled) {\r\n\t\t\tlet isApplied = false;\r\n\t\t\t$iter.each(this.allRules.iterator(), (rule) => {\r\n\r\n\t\t\t\t// Get relevant state\r\n\t\t\t\tlet state = this.getState(rule, newTarget);\r\n\r\n\t\t\t\t// If there's a state, it means it needs to be applied\r\n\t\t\t\tif (state) {\r\n\r\n\t\t\t\t\t// Check if default state was already applied to this element.\r\n\t\t\t\t\t// We don't want to go resetting default states to ALL element,\r\n\t\t\t\t\t// if they don't have responsive states.\r\n\t\t\t\t\tif (!defaultStateApplied) {\r\n\t\t\t\t\t\t// Nope, reset states (instantly).\r\n\t\t\t\t\t\tif ($array.indexOf(this._appliedTargets, newTarget.uid) !== -1) {\r\n\t\t\t\t\t\t\t// But only if this element has any rules applied, otherwise no\r\n\t\t\t\t\t\t\t// point in setting current state\r\n\t\t\t\t\t\t\tnewTarget.applyCurrentState(0);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdefaultStateApplied = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Is this rule currently applied?\r\n\t\t\t\t\tif (this.isApplied($type.getValue(rule.id))) {\r\n\t\t\t\t\t\t// Yes. Apply the responsive state\r\n\t\t\t\t\t\tstate.transitionDuration = 0;\r\n\t\t\t\t\t\tnewTarget.setState(state);\r\n\t\t\t\t\t\tthis.dispatchImmediately(\"ruleapplied\", {\r\n\t\t\t\t\t\t\trule: rule\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tisApplied = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tif (isApplied) {\r\n\t\t\t\t$array.replace(this._appliedTargets, newTarget.uid);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t$array.remove(this._appliedTargets, newTarget.uid);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Apply rules to the children\r\n\t\tif (newTarget.children) {\r\n\t\t\t$iter.each(newTarget.children.iterator(), (child) => {\r\n\t\t\t\tthis.applyRules(child as Container);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a relative state for the rule/target, or `undefined` if no state is\r\n\t * needed.\r\n\t *\r\n\t * @param rule [description]\r\n\t * @param target [description]\r\n\t * @return [description]\r\n\t */\r\n\tprotected getState(rule: IResponsiveRule, target: any): Optional<SpriteState<any, any>> {\r\n\t\tlet stateId = \"responsive-\" + rule.id;\r\n\t\tlet tmpId = target.uid + \"_\" + stateId;\r\n\t\tif ($array.indexOf(this._noStates, tmpId) !== -1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\telse if (!target.states.hasKey(stateId)) {\r\n\t\t\tlet state = rule.state(target, stateId);\r\n\t\t\tif (!state) {\r\n\t\t\t\tthis._noStates.push(tmpId);\r\n\t\t\t}\r\n\t\t\treturn state;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn target.states.getKey(stateId);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a value from an element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param target Target object\r\n\t * @param property Property\r\n\t * @return Property value\r\n\t */\r\n\tpublic getValue(target: any, property: string): any {\r\n\t\t// This is a bit hacky, first we check if the property exist.\r\n\t\t// If it doesn't we try accessing target's property directly\r\n\t\tlet value: any = target.getPropertyValue(property);\r\n\t\tif (!$type.hasValue(value) && $type.hasValue(target[property])) {\r\n\t\t\tvalue = target[property];\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * [defaultRules description]\r\n *\r\n * @todo description\r\n */\r\nexport let defaultRules = new List<IResponsiveRule>();\r\ndefaultRules.events.on(\"inserted\", (ev) => {\r\n\tev.newValue.id = registry.getUniqueId();\r\n});\r\n\r\n/**\r\n *\r\n * @todo description\r\n */\r\nexport class ResponsiveBreakpoints {\r\n\r\n\t// Named pixel breakpoints\r\n\tstatic XXS = 100;\r\n\tstatic XS = 200;\r\n\tstatic S = 300;\r\n\tstatic M = 400;\r\n\tstatic L = 600;\r\n\tstatic XL = 800;\r\n\tstatic XXL = 1000;\r\n\r\n\t// Breakpoint functions (for use in `relevant` clause of the responsive rules)\r\n\r\n\tstatic widthXXS(container: Container): boolean {\r\n\t\treturn container.pixelWidth <= ResponsiveBreakpoints.XXS;\r\n\t}\r\n\r\n\tstatic widthXS(container: Container): boolean {\r\n\t\treturn container.pixelWidth <= ResponsiveBreakpoints.XS;\r\n\t}\r\n\r\n\tstatic widthS(container: Container): boolean {\r\n\t\treturn container.pixelWidth <= ResponsiveBreakpoints.S;\r\n\t}\r\n\r\n\tstatic widthM(container: Container): boolean {\r\n\t\treturn container.pixelWidth <= ResponsiveBreakpoints.M;\r\n\t}\r\n\r\n\tstatic widthL(container: Container): boolean {\r\n\t\treturn container.pixelWidth <= ResponsiveBreakpoints.L;\r\n\t}\r\n\r\n\tstatic widthXL(container: Container): boolean {\r\n\t\treturn container.pixelWidth <= ResponsiveBreakpoints.XL;\r\n\t}\r\n\r\n\tstatic widthXXL(container: Container): boolean {\r\n\t\treturn container.pixelWidth <= ResponsiveBreakpoints.XXL;\r\n\t}\r\n\r\n\r\n\tstatic heightXXS(container: Container): boolean {\r\n\t\treturn container.pixelHeight <= ResponsiveBreakpoints.XXS;\r\n\t}\r\n\r\n\tstatic heightXS(container: Container): boolean {\r\n\t\treturn container.pixelHeight <= ResponsiveBreakpoints.XS;\r\n\t}\r\n\r\n\tstatic heightS(container: Container): boolean {\r\n\t\treturn container.pixelHeight <= ResponsiveBreakpoints.S;\r\n\t}\r\n\r\n\tstatic heightM(container: Container): boolean {\r\n\t\treturn container.pixelHeight <= ResponsiveBreakpoints.M;\r\n\t}\r\n\r\n\tstatic heightL(container: Container): boolean {\r\n\t\treturn container.pixelHeight <= ResponsiveBreakpoints.L;\r\n\t}\r\n\r\n\tstatic heightXL(container: Container): boolean {\r\n\t\treturn container.pixelHeight <= ResponsiveBreakpoints.XL;\r\n\t}\r\n\r\n\tstatic heightXXL(container: Container): boolean {\r\n\t\treturn container.pixelHeight <= ResponsiveBreakpoints.XXL;\r\n\t}\r\n\r\n\r\n\tstatic isXXS(container: Container): boolean {\r\n\t\treturn (container.pixelWidth <= ResponsiveBreakpoints.XXS) && (container.pixelHeight <= ResponsiveBreakpoints.XXS);\r\n\t}\r\n\r\n\tstatic isXS(container: Container): boolean {\r\n\t\treturn (container.pixelWidth <= ResponsiveBreakpoints.XS) && (container.pixelHeight <= ResponsiveBreakpoints.XS);\r\n\t}\r\n\r\n\tstatic isS(container: Container): boolean {\r\n\t\treturn (container.pixelWidth <= ResponsiveBreakpoints.S) && (container.pixelHeight <= ResponsiveBreakpoints.S);\r\n\t}\r\n\r\n\tstatic isM(container: Container): boolean {\r\n\t\treturn (container.pixelWidth <= ResponsiveBreakpoints.M) && (container.pixelHeight <= ResponsiveBreakpoints.M);\r\n\t}\r\n\r\n\tstatic isL(container: Container): boolean {\r\n\t\treturn (container.pixelWidth <= ResponsiveBreakpoints.L) && (container.pixelHeight <= ResponsiveBreakpoints.L);\r\n\t}\r\n\r\n\tstatic isXL(container: Container): boolean {\r\n\t\treturn (container.pixelWidth <= ResponsiveBreakpoints.XL) && (container.pixelHeight <= ResponsiveBreakpoints.XL);\r\n\t}\r\n\r\n\tstatic isXXL(container: Container): boolean {\r\n\t\treturn (container.pixelWidth <= ResponsiveBreakpoints.XXL) && (container.pixelHeight <= ResponsiveBreakpoints.XXL);\r\n\t}\r\n\r\n\r\n\tstatic maybeXXS(container: Container): boolean {\r\n\t\treturn (container.pixelWidth <= ResponsiveBreakpoints.XXS) || (container.pixelHeight <= ResponsiveBreakpoints.XXS);\r\n\t}\r\n\r\n\tstatic maybeXS(container: Container): boolean {\r\n\t\treturn (container.pixelWidth <= ResponsiveBreakpoints.XS) || (container.pixelHeight <= ResponsiveBreakpoints.XS);\r\n\t}\r\n\r\n\tstatic maybeS(container: Container): boolean {\r\n\t\treturn (container.pixelWidth <= ResponsiveBreakpoints.S) || (container.pixelHeight <= ResponsiveBreakpoints.S);\r\n\t}\r\n\r\n\tstatic maybeM(container: Container): boolean {\r\n\t\treturn (container.pixelWidth <= ResponsiveBreakpoints.M) || (container.pixelHeight <= ResponsiveBreakpoints.M);\r\n\t}\r\n\r\n\tstatic maybeL(container: Container): boolean {\r\n\t\treturn (container.pixelWidth <= ResponsiveBreakpoints.L) || (container.pixelHeight <= ResponsiveBreakpoints.L);\r\n\t}\r\n\r\n\tstatic maybeXL(container: Container): boolean {\r\n\t\treturn (container.pixelWidth <= ResponsiveBreakpoints.XL) || (container.pixelHeight <= ResponsiveBreakpoints.XL);\r\n\t}\r\n\r\n\tstatic maybeXXL(container: Container): boolean {\r\n\t\treturn (container.pixelWidth <= ResponsiveBreakpoints.XXL) || (container.pixelHeight <= ResponsiveBreakpoints.XXL);\r\n\t}\r\n}\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { EventDispatcher, AMEvent } from \"./EventDispatcher\";\r\nimport { Ordering } from \"./Order\";\r\nimport { IClone } from \"./Clone\";\r\nimport * as $array from \"./Array\";\r\nimport * as $iter from \"./Iterator\";\r\nimport * as $type from \"./Type\";\r\n\r\n/**\r\n * Defines evends for [[SortedList]].\r\n */\r\nexport interface ISortedListEvents<A> {\r\n\r\n\t/**\r\n\t * Invoked when new value is inserted into the list.\r\n\t */\r\n\tinserted: {\r\n\t\t/**\r\n\t\t * Index where the element was inserted.\r\n\t\t */\r\n\t\tindex: number;\r\n\r\n\t\t/**\r\n\t\t * Inserted value.\r\n\t\t */\r\n\t\tnewValue: A;\r\n\t};\r\n\r\n\t/**\r\n\t * Invoked when a value is removed from the list.\r\n\t */\r\n\tremoved: {\r\n\t\t/**\r\n\t\t * Index of the element which was removed.\r\n\t\t */\r\n\t\tindex: number;\r\n\r\n\t\t/**\r\n\t\t * Removed value.\r\n\t\t */\r\n\t\toldValue: A;\r\n\t};\r\n\r\n}\r\n\r\n/**\r\n * Ordered list contains values of any type in an indexed array.\r\n */\r\nexport class OrderedList<T> {\r\n\r\n\t/**\r\n\t * Holds list values.\r\n\t */\r\n\tprotected _values: Array<T> = [];\r\n\r\n\t/**\r\n\t * Event dispatcher.\r\n\t */\r\n\tpublic events: EventDispatcher<AMEvent<OrderedList<T>, ISortedListEvents<T>>> = new EventDispatcher();\r\n\r\n\t/**\r\n\t * Constructor\r\n\t *\r\n\t * @param initial Inital list of values to add to list\r\n\t */\r\n\tconstructor(initial?: Array<T>) {\r\n\t\tif (initial != null) {\r\n\t\t\tthis.setAll(initial);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * All items of the list.\r\n\t *\r\n\t * Do not modify the list directly. Rather use `insert()` and `remove()`\r\n\t * methods.\r\n\t *\r\n\t * @return List values\r\n\t */\r\n\tpublic get values(): Array<T> {\r\n\t\treturn this._values;\r\n\t}\r\n\r\n\t/**\r\n\t * Inserts a value into list item array.\r\n\t *\r\n\t * @param value Value\r\n\t */\r\n\tprotected _insert(value: T): number {\r\n\t\tthis._values.push(value);\r\n\t\treturn this._values.length - 1;\r\n\t}\r\n\r\n\t/**\r\n\t * Number of items in the list.\r\n\t *\r\n\t * @readonly\r\n\t * @return Length\r\n\t */\r\n\tpublic get length(): number {\r\n\t\treturn this._values.length;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the index of the specific `value`.\r\n\t *\r\n\t * -1 if not found.\r\n\t *\r\n\t * @param value Value\r\n\t * @return Index\r\n\t */\r\n\tpublic indexOf(value: T): number {\r\n\t\treturn $array.indexOf(this._values, value);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if list contains the `value`.\r\n\t *\r\n\t * @param value Value\r\n\t * @return In the list?\r\n\t */\r\n\tpublic contains(value: T): boolean {\r\n\t\treturn this.indexOf(value) !== -1;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an item at specific `index`.\r\n\t *\r\n\t * @param index Index\r\n\t * @return Item\r\n\t */\r\n\tpublic getIndex(index: number): T | undefined {\r\n\t\treturn this._values[index];\r\n\t}\r\n\r\n\t/**\r\n\t * First item in the list.\r\n\t *\r\n\t * @return Item\r\n\t */\r\n\tpublic get first(): T | undefined {\r\n\t\treturn this._values[0];\r\n\t}\r\n\r\n\t/**\r\n\t * Last item in the list.\r\n\t *\r\n\t * @return Item\r\n\t */\r\n\tpublic get last(): T | undefined {\r\n\t\treturn this._values[this._values.length - 1];\r\n\t}\r\n\r\n\t/**\r\n\t * Inserts a value into list.\r\n\t *\r\n\t * @param value Value\r\n\t */\r\n\tpublic insert(value: T): void {\r\n\t\tconst index = this._insert(value);\r\n\r\n\t\tif (this.events.isEnabled(\"inserted\")) {\r\n\t\t\tthis.events.dispatchImmediately(\"inserted\", {\r\n\t\t\t\ttype: \"inserted\",\r\n\t\t\t\ttarget: this,\r\n\t\t\t\tindex: index,\r\n\t\t\t\tnewValue: value\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Removes an item with the `value` from the list.\r\n\t *\r\n\t * @param value Value\r\n\t */\r\n\tpublic remove(value: T): void {\r\n\t\tconst index = this.indexOf(value);\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\tconst oldValue = this._values[index];\r\n\r\n\t\t\t$array.removeIndex(this._values, index);\r\n\r\n\t\t\tif (this.events.isEnabled(\"removed\")) {\r\n\t\t\t\tthis.events.dispatchImmediately(\"removed\", {\r\n\t\t\t\t\ttype: \"removed\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tindex: index,\r\n\t\t\t\t\toldValue: oldValue,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets multiple items to the list.\r\n\t *\r\n\t * All current items are removed.\r\n\t *\r\n\t * @param newArray New items\r\n\t */\r\n\tpublic setAll(newArray: Array<T>): void {\r\n\t\t$array.eachReverse(this._values, (x, i) => {\r\n\t\t\tthis._values.pop();\r\n\r\n\t\t\tif (this.events.isEnabled(\"removed\")) {\r\n\t\t\t\tthis.events.dispatchImmediately(\"removed\", {\r\n\t\t\t\t\ttype: \"removed\",\r\n\t\t\t\t\ttarget: this,\r\n\t\t\t\t\tindex: i,\r\n\t\t\t\t\toldValue: x\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$array.each(newArray, (value) => {\r\n\t\t\tthis.insert(value);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Removes all items from the list.\r\n\t */\r\n\tpublic clear(): void {\r\n\t\tthis.setAll([]);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns part of the list between `start` and `end` indexes, as a new\r\n\t * [[OrderedList]].\r\n\t *\r\n\t * @param start Start index\r\n\t * @param end End index\r\n\t * @return Items in range\r\n\t */\r\n\tpublic slice(start: number, end: number): OrderedList<T> {\r\n\t\tconst out = new OrderedList<T>();\r\n\r\n\t\tout._values = this._values.slice(start, end);\r\n\r\n\t\treturn out;\r\n\t}\r\n\r\n\t/**\r\n\t * Finds a closest available index to the `value` in specified direction.\r\n\t *\r\n\t * @ignore exclude from docs\r\n\t * @param value value to search for\r\n\t * @param fn A callback function that returns value of the item\r\n\t * @param direction Direciton\r\n\t * @return Index\r\n\t */\r\n\tpublic findClosestIndex(value: number, fn: (value: T) => number, direction: \"left\" | \"right\" | \"any\" = \"any\"): number {\r\n\t\t// Init temporary values\r\n\t\tlet closestIndex: number = -1;\r\n\t\tlet closestValue: number;\r\n\t\tlet closestDifference: number;\r\n\r\n\t\tlet i = 0;\r\n\r\n\t\t$iter.eachContinue(this.iterator(), (element) => {\r\n\t\t\tconst item: number = fn(element);\r\n\r\n\t\t\t// Calc difference\r\n\t\t\tif (direction === \"any\") {\r\n\r\n\t\t\t\t// Exact match?\r\n\t\t\t\tif (item === value) {\r\n\t\t\t\t\t// Found exact value - don't bother searching further\r\n\t\t\t\t\tclosestIndex = i;\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet difference = Math.abs(value - item);\r\n\t\t\t\tif (!$type.hasValue(closestDifference) || (closestDifference > difference)) {\r\n\t\t\t\t\tclosestIndex = i;\r\n\t\t\t\t\tclosestValue = item;\r\n\t\t\t\t\tclosestDifference = difference;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (direction === \"left\" && (item < value)) {\r\n\t\t\t\tif (!$type.hasValue(closestValue) || (closestValue < item)) {\r\n\t\t\t\t\tclosestIndex = i;\r\n\t\t\t\t\tclosestValue = item;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (direction === \"right\" && (item >= value)) {\r\n\t\t\t\tif (!$type.hasValue(closestValue) || (closestValue >= item)) {\r\n\t\t\t\t\tclosestIndex = i;\r\n\t\t\t\t\tclosestValue = item;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t++i;\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\t// Found nothing?\r\n\t\tif (closestIndex === -1) {\r\n\t\t\tif (direction === \"left\") {\r\n\t\t\t\t// Use First one\r\n\t\t\t\tclosestIndex = 0;\r\n\t\t\t}\r\n\t\t\telse if (direction === \"right\") {\r\n\t\t\t\t// Use last item\r\n\t\t\t\tclosestIndex = this.length - 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn closestIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a list iterator.\r\n\t *\r\n\t * @return Iterator\r\n\t */\r\n\tpublic iterator(): $iter.Iterator<T> {\r\n\t\treturn $iter.fromArray(this._values);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an ES6 iterator for the list.\r\n\t */\r\n\tpublic *[Symbol.iterator](): Iterator<T> {\r\n\t\tconst length = this._values.length;\r\n\r\n\t\tfor (let i = 0; i < length; ++i) {\r\n\t\t\tyield this._values[i];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Calls `f` for each element in the list.\r\n\t */\r\n\tpublic each(f: (value: T, index: number) => void): void {\r\n\t\t$array.each(this._values, f);\r\n\t}\r\n}\r\n\r\n/**\r\n * A list where all items are ordered according to specific ordering function,\r\n * which is passed in via constructor parameter, when creating an instance of\r\n * [[SortedList]].\r\n */\r\nexport class SortedList<T> extends OrderedList<T> {\r\n\r\n\t/**\r\n\t * A reference to the ordering function.\r\n\t */\r\n\tprivate _ordering: any;\r\n\r\n\t/**\r\n\t * Constructor.\r\n\t *\r\n\t * @param sort Ordering function\r\n\t */\r\n\tconstructor(sort: (left: T, right: T) => Ordering) {\r\n\t\tsuper();\r\n\t\tthis._ordering = sort;\r\n\t}\r\n\r\n\t/**\r\n\t * Inserts item into the list.\r\n\t *\r\n\t * @param value Item\r\n\t */\r\n\tprotected _insert(value: T): number {\r\n\t\tconst { index } = $array.getSortedIndex(this._values, this._ordering, value);\r\n\r\n\t\t$array.insertIndex(this._values, index, value);\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns index of the item in list if found.\r\n\t *\r\n\t * -1 if item is not in the list.\r\n\t *\r\n\t * @param value Item to search for\r\n\t * @return Index\r\n\t */\r\n\tpublic indexOf(value: T): number {\r\n\t\tconst { found, index } = $array.getSortedIndex(this._values, this._ordering, value);\r\n\r\n\t\tif (found) {\r\n\t\t\treturn index;\r\n\r\n\t\t} else {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [udpate description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param value [description]\r\n\t */\r\n\tpublic update(value: T): void {\r\n\t\t// @todo test this\r\n\t\tconst index = $array.indexOf(this._values, value);\r\n\r\n\t\t// @todo throw an error if it doesn't exist ?\r\n\t\tif (index !== -1) {\r\n\t\t\tconst last = this._values.length - 1;\r\n\r\n\t\t\t// Check if the current ordering is correct\r\n\t\t\tif (!((index === 0 || this._ordering(this._values[index - 1], value) < 0) &&\r\n\t\t\t\t(index === last || this._ordering(value, this._values[index + 1]) < 0))) {\r\n\t\t\t\t// TODO send remove/insert/move events\r\n\t\t\t\t$array.removeIndex(this._values, index);\r\n\t\t\t\tthis._insert(value);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n\r\n/**\r\n * A version of a [[OrderedList]] that has a \"template\".\r\n *\r\n * A template is an instance of an object, that can be used to create new\r\n * elements in the list without actually needing to create instances for those.\r\n *\r\n * When new element is created in the list, e.g. by calling its `create()`\r\n * method, an exact copy of the element is created (including properties and\r\n * other attributes), inserted into the list and returned.\r\n */\r\nexport class OrderedListTemplate<T extends IClone<T> & { isTemplate: boolean }> extends OrderedList<T> {\r\n\r\n\t/**\r\n\t * A template object.\r\n\t *\r\n\t * @todo Make this private\r\n\t */\r\n\tpublic _template!: T;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t *\r\n\t * @param t Template object\r\n\t */\r\n\tpublic constructor(t: T) {\r\n\t\tsuper();\r\n\t\tthis.template = t;\r\n\t}\r\n\r\n\t/**\r\n\t * A \"template\" object to copy all properties from when creating new list\r\n\t * items.\r\n\t *\r\n\t * @param v Template object\r\n\t */\r\n\tpublic set template(v: T) {\r\n\t\tv.isTemplate = true;\r\n\t\tthis._template = v;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Template object\r\n\t */\r\n\tpublic get template(): T {\r\n\t\treturn this._template;\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all elements from other list.\r\n\t *\r\n\t * @param source Source list\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\t$iter.each(source.iterator(), (value) => {\r\n\t\t\tthis.insert(value.clone());\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Returns part of the list, starting at `start` and ending at `end` indexes,\r\n\t * as a new [[OrderedListTemplate]].\r\n\t *\r\n\t * @param start Start index\r\n\t * @param end End index\r\n\t * @return New list\r\n\t */\r\n\tpublic slice(start: number, end: number): OrderedListTemplate<T> {\r\n\t\tconst out = new OrderedListTemplate<T>(this.template);\r\n\r\n\t\tout._values = this._values.slice(start, end);\r\n\r\n\t\treturn out;\r\n\t}\r\n\r\n\t/**\r\n\t * Instantiates a new object of the specified type, adds it to the end of\r\n\t * the list, and returns it.\r\n\t *\r\n\t * @param make Item type to use. Will use the default type for the list if not specified.\r\n\t * @return Newly created item\r\n\t */\r\n\tpublic create<T>(make: { new(): T; }): T;\r\n\tpublic create(): T;\r\n\tpublic create(make?: { new(): T; }): T {\r\n\t\tconst clone =\r\n\t\t\t(make != null\r\n\t\t\t\t? new make()\r\n\t\t\t\t: this.template.clone());\r\n\r\n\t\tthis.insert(clone);\r\n\r\n\t\treturn clone;\r\n\t}\r\n}\r\n\r\n/**\r\n * A version of a [[SortedList]] that has a \"template\".\r\n *\r\n * A template is an instance of an object, that can be used to create new\r\n * elements in the list without actually needing to create instances for those.\r\n *\r\n * When new element is created in the list, e.g. by calling its `create()`\r\n * method, an exact copy of the element is created (including properties and\r\n * other attributes), inserted into the list and returned.\r\n */\r\nexport class SortedListTemplate<T extends IClone<T> & { isTemplate: boolean }> extends SortedList<T> {\r\n\r\n\t// @todo code duplication\r\n\r\n\t/**\r\n\t * A template object.\r\n\t *\r\n\t * @todo Make this private\r\n\t */\r\n\tpublic _template!: T;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t *\r\n\t * @param t Template object\r\n\t * @param sort Ordering function\r\n\t */\r\n\tpublic constructor(t: T, sort: (left: T, right: T) => Ordering) {\r\n\t\tsuper(sort);\r\n\t\tthis.template = t;\r\n\t}\r\n\r\n\t/**\r\n\t * A \"template\" object to copy all properties from when creating new list\r\n\t * items.\r\n\t *\r\n\t * @param v Template object\r\n\t */\r\n\tpublic set template(v: T) {\r\n\t\tv.isTemplate = true;\r\n\t\tthis._template = v;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Template object\r\n\t */\r\n\tpublic get template(): T {\r\n\t\treturn this._template;\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all elements from other list.\r\n\t *\r\n\t * @param source Source list\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\t$iter.each(source.iterator(), (value) => {\r\n\t\t\tthis.insert(value.clone());\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Instantiates a new object of the specified type, adds it to the end of\r\n\t * the list, and returns it.\r\n\t *\r\n\t * @param make Item type to use. Will use the default type for the list if not specified.\r\n\t * @return Newly created item\r\n\t */\r\n\tpublic create<T>(make: { new(): T; }): T;\r\n\tpublic create(): T;\r\n\tpublic create(make?: { new(): T; }): T {\r\n\t\tconst clone =\r\n\t\t\t(make != null\r\n\t\t\t\t? new make()\r\n\t\t\t\t: this.template.clone());\r\n\r\n\t\tthis.insert(clone);\r\n\r\n\t\treturn clone;\r\n\t}\r\n\r\n}\r\n","/**\n * ============================================================================\n * IMPORTS\n * ============================================================================\n * @hidden\n */\nimport { Ordering } from \"./Order\";\n\n\n/**\n * ============================================================================\n * COMPARING FUNCTIONS\n * ============================================================================\n * @hidden\n */\n\n/**\n * Comparing function used for ordering.\n *\n * @ignore Exclude from docs\n * @todo Use localeCompare\n * @param a Item 1\n * @param b Item 2\n * @return Result\n */\nexport function order(a: string, b: string): Ordering {\n\tif (a === b) {\n\t\treturn 0;\n\n\t} else if (a < b) {\n\t\treturn -1;\n\n\t} else {\n\t\treturn 1;\n\t}\n}\n\n\n/**\n * ============================================================================\n * OTHER FUNCTIONS\n * ============================================================================\n * @hidden\n */\n\n/**\n * Repeats a `string` number of times as set in `amount`.\n *\n * @ignore Exclude from docs\n * @todo Make this faster\n * @param string Source string\n * @param amount Number of times to repeat string\n * @return New string\n */\nexport function repeat(string: string, amount: number): string {\n\treturn new Array(amount + 1).join(string);\n}\n\n/**\n * Generates a random string `characters` length.\n *\n * @param chars Number of characters\n * @return Random string\n */\nexport function random(chars: number): string {\n\tlet res = \"\";\n\tlet choice = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\tfor (let i = 0; i < chars; i++) {\n\t\tres += choice.charAt(Math.floor(Math.random() * choice.length));\n\t}\n\treturn res;\n}\n","/**\r\n * A collection of String-based constants.\r\n * @hidden\r\n * @ignore Exclude from docs\r\n */\r\n\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport let PX: string = \"px\";\r\n\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport let STRING: string = \"string\";\r\n\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport let NUMBER: string = \"number\";\r\n\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport let DATE: string = \"date\";\r\n\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport let DURATION: string = \"duration\";\r\n\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport let PLACEHOLDER: string = \"__§§§__\";\r\n\r\n/**\r\n * @ignore Exclude from docs\r\n */\r\nexport let PLACEHOLDER2: string = \"__§§§§__\";\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { TimeUnit } from \"../defs/TimeUnit\";\r\nimport * as $type from \"../utils/Type\";\r\n\r\n/**\r\n * Maps time period names to their numeric representations in milliseconds.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport let timeUnitDurations: { [Key in TimeUnit]: number } = {\r\n\tmillisecond: 1,\r\n\tsecond: 1000,\r\n\tminute: 60000,\r\n\thour: 3600000,\r\n\tday: 86400000,\r\n\tweek: 604800000,\r\n\tmonth: 2592000000,\r\n\tyear: 31536000000\r\n};\r\n\r\n/**\r\n * Returns the next time unit that goes after source `unit`.\r\n *\r\n * E.g. \"hour\" is the next unit after \"minute\", etc.\r\n *\r\n * @ignore Exclude from docs\r\n * @param unit Source time unit\r\n * @return Next time unit\r\n */\r\nexport function getNextUnit(unit: TimeUnit): $type.Optional<TimeUnit> {\r\n\tswitch (unit) {\r\n\t\tcase \"year\":\r\n\t\t\treturn\r\n\r\n\t\tcase \"month\":\r\n\t\t\treturn \"year\";\r\n\r\n\t\tcase \"week\":\r\n\t\t\treturn \"month\";\r\n\r\n\t\tcase \"day\":\r\n\t\t\treturn \"month\"; // not a mistake\r\n\r\n\t\tcase \"hour\":\r\n\t\t\treturn \"day\";\r\n\r\n\t\tcase \"minute\":\r\n\t\t\treturn \"hour\";\r\n\r\n\t\tcase \"second\":\r\n\t\t\treturn \"minute\"\r\n\r\n\t\tcase \"millisecond\":\r\n\t\t\treturn \"second\";\r\n\t}\r\n}\r\n\r\n/**\r\n * Returns number of milliseconds in the `count` of time `unit`.\r\n *\r\n * Available units: \"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"week\",\r\n * \"month\", and \"year\".\r\n *\r\n * @ignore Exclude from docs\r\n * @param unit Time unit\r\n * @param count Number of units\r\n * @return Milliseconds\r\n */\r\nexport function getDuration(unit: TimeUnit, count?: number): number {\r\n\tif (!$type.hasValue(count)) {\r\n\t\tcount = 1;\r\n\t}\r\n\treturn timeUnitDurations[unit] * count;\r\n}\r\n\r\n/**\r\n * Returns current `Date` object.\r\n *\r\n * @return Current date\r\n */\r\nexport function now(): Date {\r\n\treturn new Date();\r\n}\r\n\r\n/**\r\n * Returns current timestamp.\r\n *\r\n * @return Current timestamp\r\n */\r\nexport function getTime(): number {\r\n\treturn now().getTime();\r\n}\r\n\r\n/**\r\n * Returns a copy of the `Date` object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param date Source date\r\n * @return Copy\r\n */\r\nexport function copy(date: Date): Date {\r\n\treturn new Date(date.getTime()); // todo: check if this is ok. new Date(date) used to strip milliseconds on FF in v3\r\n}\r\n\r\n/**\r\n * Checks if the `unit` part of two `Date` objects do not match. Two dates\r\n * represent a \"range\" of time, rather the same time date.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dateOne Date 1\r\n * @param dateTwo Date 2\r\n * @param unit Time unit to check\r\n * @return Range?\r\n */\r\nexport function checkChange(dateOne: Date, dateTwo: Date, unit: TimeUnit, utc?: boolean): boolean {\r\n\r\n\tdateOne = new Date(dateOne.getTime());\r\n\tdateTwo = new Date(dateTwo.getTime());\r\n\r\n\tlet timeZoneOffset1 = 0;\r\n\tlet timeZoneOffset2 = 0;\r\n\r\n\tif (!utc && unit != \"millisecond\") {\r\n\t\ttimeZoneOffset1 = dateOne.getTimezoneOffset();\r\n\t\tdateOne.setUTCMinutes(dateOne.getUTCMinutes() - timeZoneOffset1);\r\n\r\n\t\ttimeZoneOffset2 = dateTwo.getTimezoneOffset();\r\n\t\tdateTwo.setUTCMinutes(dateTwo.getUTCMinutes() - timeZoneOffset2);\r\n\t}\r\n\r\n\tlet changed = false;\r\n\tswitch (unit) {\r\n\t\tcase \"year\":\r\n\t\t\tif (dateOne.getUTCFullYear() != dateTwo.getUTCFullYear()) {\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase \"month\":\r\n\t\t\tif (dateOne.getUTCFullYear() != dateTwo.getUTCFullYear()) {\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t\telse if (dateOne.getUTCMonth() != dateTwo.getUTCMonth()) {\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"day\":\r\n\t\t\tif (dateOne.getUTCMonth() != dateTwo.getUTCMonth()) {\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t\telse if (dateOne.getUTCDate() != dateTwo.getUTCDate()) {\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"hour\":\r\n\t\t\tif (dateOne.getUTCHours() != dateTwo.getUTCHours()) {\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"minute\":\r\n\t\t\tif (dateOne.getUTCMinutes() != dateTwo.getUTCMinutes()) {\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"second\":\r\n\t\t\tif (dateOne.getUTCSeconds() != dateTwo.getUTCSeconds()) {\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"millisecond\":\r\n\t\t\tif (dateOne.getTime() != dateTwo.getTime()) {\r\n\t\t\t\tchanged = true;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tif (changed) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tlet nextUnit: $type.Optional<TimeUnit> = getNextUnit(unit);\r\n\tif (nextUnit) {\r\n\t\tdateOne.setUTCMinutes(dateOne.getUTCMinutes() + timeZoneOffset1);\r\n\t\tdateTwo.setUTCMinutes(dateTwo.getUTCMinutes() + timeZoneOffset2);\r\n\t\treturn checkChange(dateOne, dateTwo, nextUnit, utc);\r\n\t}\r\n\telse {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\n/**\r\n * Adds `count` of time `unit` to the source date. Returns a modified `Date` object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param date Source date\r\n * @param unit Time unit\r\n * @param count Number of units to add\r\n * @return Modified date\r\n */\r\nexport function add(date: Date, unit: TimeUnit, count: number, utc?: boolean): Date {\r\n\tlet timeZoneOffset = 0;\r\n\r\n\tif (!utc && unit != \"millisecond\") {\r\n\t\ttimeZoneOffset = date.getTimezoneOffset();\r\n\t\tdate.setUTCMinutes(date.getUTCMinutes() - timeZoneOffset);\r\n\t}\r\n\r\n\tswitch (unit) {\r\n\t\tcase \"day\":\r\n\t\t\tlet day: number = date.getUTCDate();\r\n\t\t\tdate.setUTCDate(day + count);\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"second\":\r\n\t\t\tlet seconds: number = date.getUTCSeconds();\r\n\t\t\tdate.setUTCSeconds(seconds + count);\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"millisecond\":\r\n\t\t\tlet milliseconds: number = date.getUTCMilliseconds();\r\n\t\t\tdate.setUTCMilliseconds(milliseconds + count);\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"hour\":\r\n\t\t\tlet hours: number = date.getUTCHours();\r\n\t\t\tdate.setUTCHours(hours + count);\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"minute\":\r\n\t\t\tlet minutes: number = date.getUTCMinutes();\r\n\t\t\tdate.setUTCMinutes(minutes + count);\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"year\":\r\n\t\t\tlet year: number = date.getUTCFullYear();\r\n\t\t\tdate.setUTCFullYear(year + count);\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"month\":\r\n\t\t\tlet month: number = date.getUTCMonth();\r\n\t\t\tdate.setUTCMonth(month + count);\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"week\":\r\n\t\t\tlet wday: number = date.getUTCDate();\r\n\t\t\tdate.setUTCDate(wday + count * 7);\r\n\t\t\tbreak;\r\n\t}\r\n\tif (!utc && unit != \"millisecond\") {\r\n\t\tdate.setUTCMinutes(date.getUTCMinutes() + timeZoneOffset);\r\n\r\n\t\tif (unit == \"day\" || unit == \"week\" || unit == \"month\" || unit == \"year\") {\r\n\t\t\tlet newTimeZoneOffset = date.getTimezoneOffset();\r\n\t\t\tif (newTimeZoneOffset != timeZoneOffset) {\r\n\t\t\t\tlet diff = newTimeZoneOffset - timeZoneOffset;\r\n\r\n\t\t\t\tdate.setUTCMinutes(date.getUTCMinutes() + diff);\r\n\t\t\t\t// solves issues if newe time falls back to old time zone\r\n\t\t\t\tif (date.getTimezoneOffset() != newTimeZoneOffset) {\r\n\t\t\t\t\tdate.setUTCMinutes(date.getUTCMinutes() - diff);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn date;\r\n}\r\n\r\n/**\r\n * \"Rounds\" the date to specific time unit.\r\n *\r\n * @ignore Exclude from docs\r\n * @param date Source date\r\n * @param unit Time unit\r\n * @param count Number of units to round to\r\n * @param firstDateOfWeek First day of week\r\n * @return New date\r\n */\r\nexport function round(date: Date, unit: TimeUnit, count: number, firstDateOfWeek?: number, utc?: boolean, firstDate?: Date): Date {\r\n\r\n\tif (!$type.isNumber(count)) {\r\n\t\tcount = 1;\r\n\t}\r\n\r\n\tlet timeZoneOffset = 0;\r\n\r\n\tif (!utc && unit != \"millisecond\") {\r\n\t\ttimeZoneOffset = date.getTimezoneOffset();\r\n\t\tdate.setUTCMinutes(date.getUTCMinutes() - timeZoneOffset);\r\n\t}\r\n\r\n\tswitch (unit) {\r\n\r\n\t\tcase \"day\":\r\n\t\t\tlet day = date.getUTCDate();\r\n\r\n\t\t\tif (count > 1) {\r\n\t\t\t\t//\tday = Math.floor(day / count) * count;\r\n\t\t\t\tif (firstDate) {\r\n\t\t\t\t\tfirstDate = round(firstDate, \"day\", 1);\r\n\r\n\t\t\t\t\tlet difference = date.getTime() - firstDate.getTime();\r\n\t\t\t\t\tlet unitCount = Math.floor(difference / getDuration(\"day\") / count);\r\n\t\t\t\t\tlet duration = getDuration(\"day\", unitCount * count);\r\n\t\t\t\t\tdate.setTime(firstDate.getTime() + duration - timeZoneOffset * getDuration(\"minute\"));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tdate.setUTCDate(day);\r\n\t\t\t}\r\n\t\t\tdate.setUTCHours(0, 0, 0, 0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"second\":\r\n\t\t\tlet seconds = date.getUTCSeconds();\r\n\t\t\tif (count > 1) {\r\n\t\t\t\tseconds = Math.floor(seconds / count) * count;\r\n\t\t\t}\r\n\t\t\tdate.setUTCSeconds(seconds, 0);\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"millisecond\":\r\n\t\t\tif (count == 1) {\r\n\t\t\t\treturn date; // much better for perf!\r\n\t\t\t}\r\n\r\n\t\t\tlet milliseconds = date.getUTCMilliseconds();\r\n\t\t\tmilliseconds = Math.floor(milliseconds / count) * count;\r\n\t\t\tdate.setUTCMilliseconds(milliseconds);\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"hour\":\r\n\r\n\t\t\tlet hours = date.getUTCHours();\r\n\t\t\tif (count > 1) {\r\n\t\t\t\thours = Math.floor(hours / count) * count;\r\n\t\t\t}\r\n\t\t\tdate.setUTCHours(hours, 0, 0, 0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"minute\":\r\n\r\n\t\t\tlet minutes = date.getUTCMinutes();\r\n\t\t\tmilliseconds = date.getUTCMilliseconds();\r\n\t\t\tif (count > 1) {\r\n\t\t\t\tminutes = Math.floor(minutes / count) * count;\r\n\t\t\t}\r\n\r\n\t\t\tdate.setUTCMinutes(minutes, 0, 0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"month\":\r\n\r\n\t\t\tlet month = date.getUTCMonth();\r\n\t\t\tif (count > 1) {\r\n\t\t\t\tmonth = Math.floor(month / count) * count;\r\n\t\t\t}\r\n\r\n\t\t\tdate.setUTCMonth(month, 1);\r\n\t\t\tdate.setUTCHours(0, 0, 0, 0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\tcase \"year\":\r\n\r\n\t\t\tlet year = date.getUTCFullYear();\r\n\t\t\tif (count > 1) {\r\n\t\t\t\tyear = Math.floor(year / count) * count;\r\n\t\t\t}\r\n\t\t\tdate.setUTCFullYear(year, 0, 1);\r\n\t\t\tdate.setUTCHours(0, 0, 0, 0);\r\n\r\n\t\t\t//let nonUTCDateY = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\r\n\t\t\t//timeZoneOffset = nonUTCDateY.getTimezoneOffset();\r\n\r\n\t\t\tbreak;\r\n\r\n\r\n\t\tcase \"week\":\r\n\r\n\t\t\tlet wday = date.getUTCDate();\r\n\t\t\tlet weekDay = date.getUTCDay();\r\n\r\n\t\t\tif (!$type.isNumber(firstDateOfWeek)) {\r\n\t\t\t\tfirstDateOfWeek = 1;\r\n\t\t\t}\r\n\r\n\t\t\t// todo: rounding when count is not 1\r\n\t\t\tif (weekDay >= firstDateOfWeek) {\r\n\t\t\t\twday = wday - weekDay + firstDateOfWeek;\r\n\t\t\t} else {\r\n\t\t\t\twday = wday - (7 + weekDay) + firstDateOfWeek;\r\n\t\t\t}\r\n\r\n\t\t\tdate.setUTCDate(wday);\r\n\t\t\tdate.setUTCHours(0, 0, 0, 0);\r\n\r\n\t\t\tbreak;\r\n\t}\r\n\tif (!utc && unit != \"millisecond\") {\r\n\t\tdate.setUTCMinutes(date.getUTCMinutes() + timeZoneOffset);\r\n\r\n\t\tif (unit == \"day\" || unit == \"week\" || unit == \"month\" || unit == \"year\") {\r\n\t\t\tlet newTimeZoneOffset = date.getTimezoneOffset();\r\n\t\t\tif (newTimeZoneOffset != timeZoneOffset) {\r\n\t\t\t\tlet diff = newTimeZoneOffset - timeZoneOffset;\r\n\r\n\t\t\t\tdate.setUTCMinutes(date.getUTCMinutes() + diff);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn date;\r\n}\r\n","/**\r\n * A collection of utility functions for various type checks and conversion\r\n * @todo Review unused functions for removal\r\n * @hidden\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { percent, Percent, isPercent } from \"./Percent\";\r\n\r\n\r\n/**\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\r\nexport type Public<T> = {[P in keyof T]: T[P]};\r\n\r\n\r\n/**\r\n * `Keyof<T>` is the same as `keyof T` except it only accepts string keys, not numbers or symbols.\r\n */\r\nexport type Keyof<T> = Extract<keyof T, string>;\r\n\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * TYPE CHECK\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Returns `true` if value is not a number (NaN).\r\n *\r\n * @param value Input value\r\n * @return Is NaN?\r\n * @deprecated Is not used anywhere. JS built-in isNaN is used everywhere. Maybe we don't need this, or if we do, then we should use it everywhere\r\n */\r\nexport function isNaN(value: number): boolean {\r\n\treturn Number(value) !== value;\r\n}\r\n\r\n/**\r\n * Represents a type for all available JavaScript variable types.\r\n */\r\nexport type Type\r\n\t= \"[object Object]\"\r\n\t| \"[object Array]\"\r\n\t| \"[object String]\"\r\n\t| \"[object Number]\"\r\n\t| \"[object Boolean]\"\r\n\t| \"[object Date]\";\r\n\r\n/**\r\n * Returns a type of the value.\r\n *\r\n * @param value Input value\r\n * @return Type of the value\r\n */\r\nexport function getType<A>(value: A): Type {\r\n\treturn ({}).toString.call(value) as Type;\r\n}\r\n\r\n/**\r\n * Returns a default value if the passed in value is empty.\r\n *\r\n * @param value Input value\r\n * @param optional Default value\r\n * @return Value or default value whichever is available\r\n * @deprecated Not used anywhere\r\n */\r\nexport function getDefault<A>(value: null | undefined | A, optional: A): A {\r\n\treturn value || optional;\r\n}\r\n\r\n/**\r\n * Checks if the passed in value is a string.\r\n *\r\n * @param value Value\r\n * @return Is string?\r\n * @throws {Error}\r\n * @deprecated Not used anywhere\r\n */\r\nexport function checkString(value: any): value is string {\r\n\tif (typeof value === \"string\") {\r\n\t\treturn true;\r\n\t} else {\r\n\t\tthrow new Error(\"Expected a string but got \" + getType(value));\r\n\t}\r\n}\r\n\r\n/**\r\n * Checks if the passed in value is a boolean.\r\n *\r\n * @param value Value\r\n * @return Is boolean?\r\n * @throws {Error}\r\n * @deprecated Not used anywhere\r\n */\r\nexport function checkBoolean(value: any): value is boolean {\r\n\tif (typeof value === \"boolean\") {\r\n\t\treturn true;\r\n\t} else {\r\n\t\tthrow new Error(\"Expected a boolean but got \" + getType(value));\r\n\t}\r\n}\r\n\r\n/**\r\n * Checks if the passed in value is a number.\r\n *\r\n * @param value Value\r\n * @return Is number?\r\n * @throws {Error}\r\n */\r\nexport function checkNumber(value: any): value is number {\r\n\tif (typeof value === \"number\") {\r\n\t\tif (isNaN(value)) {\r\n\t\t\tthrow new Error(\"Expected a number but got NaN\");\r\n\t\t}\r\n\t} else {\r\n\t\tthrow new Error(\"Expected a number but got \" + getType(value));\r\n\t}\r\n\treturn true;\r\n}\r\n\r\n/**\r\n * Checks if the passed in value is an object.\r\n *\r\n * @param value Value\r\n * @return Is object?\r\n * @throws {Error}\r\n * @todo Is the input type correct?\r\n * @deprecated Not used anywhere\r\n */\r\nexport function checkObject(value: {}): value is {} {\r\n\tconst t = getType(value);\r\n\r\n\tif (t === \"[object Object]\") {\r\n\t\treturn true;\r\n\r\n\t} else {\r\n\t\tthrow new Error(\"Expected an object but got \" + t);\r\n\t}\r\n}\r\n\r\n/**\r\n * Checks if the passed in value is an array.\r\n *\r\n * @param value Value\r\n * @return Is array?\r\n * @throws {Error}\r\n * @deprecated Not used anywhere\r\n */\r\nexport function checkArray<A>(value: Array<A>): value is Array<A> {\r\n\tif (Array.isArray(value)) {\r\n\t\treturn true;\r\n\r\n\t} else {\r\n\t\tthrow new Error(\"Expected an array but got \" + getType(value));\r\n\t}\r\n}\r\n\r\n/**\r\n * Checks if the passed in value is a Date object.\r\n *\r\n * @param value Value\r\n * @return Is Date object?\r\n * @throws {Error}\r\n * @deprecated Not used anywhere\r\n */\r\nexport function checkDate(value: Date): value is Date {\r\n\tconst t = getType(value);\r\n\r\n\tif (t === \"[object Date]\") {\r\n\t\treturn true;\r\n\r\n\t} else {\r\n\t\tthrow new Error(\"Expected a date but got \" + t);\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * TYPE CASTING\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Casts string or a number into string.\r\n *\r\n * @param value Input\r\n * @return String value\r\n * @deprecated Not used anywhere\r\n */\r\nexport function castString(value: string | number): string {\r\n\tif (typeof value === \"string\") {\r\n\t\treturn value;\r\n\r\n\t} else if (typeof value === \"number\") {\r\n\t\treturn \"\" + value;\r\n\r\n\t} else {\r\n\t\tthrow new Error(\"Expected a string or number but got \" + getType(value));\r\n\t}\r\n}\r\n\r\n/**\r\n * Casts string or a number into a number.\r\n *\r\n * @param value Input value\r\n * @return Number value\r\n * @throws {Error}\r\n */\r\nexport function castNumber(value: string | number | Date): number {\r\n\tif (typeof value === \"string\") {\r\n\t\tconst number = +value;\r\n\r\n\t\tif (isNaN(number)) {\r\n\t\t\tthrow new Error(\"Cannot cast string \" + JSON.stringify(value) + \" to a number\");\r\n\r\n\t\t} else {\r\n\t\t\treturn number;\r\n\t\t}\r\n\r\n\t} else if (typeof value === \"number\") {\r\n\t\tif (isNaN(value)) {\r\n\t\t\tthrow new Error(\"Expected a number but got NaN\");\r\n\r\n\t\t} else {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t} else {\r\n\t\tconst t = getType(value);\r\n\r\n\t\tif (t === \"[object Date]\") {\r\n\t\t\treturn value.getTime();\r\n\r\n\t\t} else {\r\n\t\t\tthrow new Error(\"Expected a string, number, or date but got \" + t);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Casts number, string or Date into a Date object.\r\n *\r\n * @param value Input value\r\n * @return Date object\r\n * @deprecated Not used anywhere\r\n * @throws {Error}\r\n * @hidden\r\n * @deprecated\r\n */\r\n/*export function castDate(value: string | number | Date, formatter?: DateFormatter): Date {\r\n\tif (typeof value === \"string\") {\r\n\t\tif (formatter) {\r\n\t\t\treturn formatter.parse(value);\r\n\t\t}\r\n\t\treturn new Date(value);\r\n\r\n\t} else if (typeof value === \"number\") {\r\n\t\treturn new Date(value);\r\n\r\n\t} else {\r\n\t\tconst t = getType(value);\r\n\r\n\t\tif (t === \"[object Date]\") {\r\n\t\t\treturn value;\r\n\r\n\t\t} else {\r\n\t\t\tthrow new Error(\"Expected a string, number, or date but got \" + t);\r\n\t\t}\r\n\t}\r\n}*/\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * QUICK CONVERSION\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n\r\n/**\r\n * Converts any value into `boolean`.\r\n *\r\n * @param value Source value\r\n * @return `true` or `false`\r\n */\r\nexport function toBoolean(value: any): boolean {\r\n\treturn value ? true : false;\r\n}\r\n\r\n/**\r\n * Converts any value into a `number`.\r\n *\r\n * @param value Source value\r\n * @return Number representation of value\r\n */\r\nexport function toNumber(value: any): number {\r\n\tif (hasValue(value) && !isNumber(value)) {\r\n\t\tlet converted = Number(value);\r\n\t\tif (isNaN(converted) && isString(value) && value != \"\") {\r\n\t\t\treturn toNumber(value.replace(/[^0-9.\\-]+/g, ''));\r\n\t\t}\r\n\t\treturn converted;\r\n\t}\r\n\treturn value;\r\n}\r\n\r\n/**\r\n * Converts any value into a string (text).\r\n *\r\n * @param value Source value\r\n * @return String representation of the input\r\n */\r\nexport function toText(value: any): string {\r\n\tif (hasValue(value) && !isString(value)) {\r\n\t\tif (isNumber(value)) {\r\n\t\t\treturn castString(value);\r\n\t\t}\r\n\t\telse if (isObject(value)) {\r\n\t\t\treturn value.toString();\r\n\t\t}\r\n\t}\r\n\treturn value;\r\n}\r\n\r\n/**\r\n * Converts any value to a number or [[Percent]].\r\n *\r\n * If the parameter is a string and contains \"%\", it will\r\n * convert it into a [[Percent]].\r\n *\r\n * Otherwise, it will convert into a number.\r\n *\r\n * @param value Number or percent\r\n * @return Percent object\r\n */\r\nexport function toNumberOrPercent(value: any): number | Percent {\r\n\tif (!hasValue(value) || isNumber(value) || isPercent(value)) {\r\n\t\treturn value;\r\n\t}\r\n\tif (isString(value) && value.indexOf(\"%\") != -1) {\r\n\t\treturn percent(toNumber(value));\r\n\t}\r\n\treturn toNumber(value);\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * VALUE PRESENCE CHECK\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines an optional value that can be of any type or `undefined`.\r\n */\r\nexport type Optional<A> = A | undefined;\r\n\r\n/**\r\n * Checks if a variable has a value.\r\n *\r\n * @param a Input value\r\n * @returns Has value?\r\n */\r\nexport function hasValue<A>(a: Optional<A> | null): a is A {\r\n\treturn a != null;\r\n}\r\n\r\n/**\r\n * Returns a value or throws an {Error} exception if the variable has not\r\n * value.\r\n *\r\n * @param a Input value\r\n * @returns Value\r\n */\r\nexport function getValue<A>(a: Optional<A> | null): A {\r\n\tif (hasValue(a)) {\r\n\t\treturn a;\r\n\r\n\t} else {\r\n\t\tthrow new Error(\"Value doesn't exist\");\r\n\t}\r\n}\r\n\r\n/**\r\n * Returns a value, or returns the default value if it doesn't have a value.\r\n *\r\n * @param a Input value\r\n * @returns Value\r\n */\r\nexport function getValueDefault<A>(a: Optional<A> | null, defaultValue: A): A {\r\n\tif (hasValue(a)) {\r\n\t\treturn a;\r\n\r\n\t} else {\r\n\t\treturn defaultValue;\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * TYPE CHECK\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Checks if parameter is `Date`.\r\n *\r\n * @param value Input value\r\n * @return Is Date?\r\n */\r\nexport function isDate(value: any): value is Date {\r\n\treturn getType(value) === \"[object Date]\";\r\n}\r\n\r\n/**\r\n * Checks if parameter is `string`.\r\n *\r\n * @param value Input value\r\n * @return Is string?\r\n */\r\nexport function isString(value: any): value is string {\r\n\treturn typeof value === \"string\";\r\n}\r\n\r\n/**\r\n * Checks if parameter is `number`.\r\n *\r\n * @param value Input value\r\n * @return Is number?\r\n */\r\nexport function isNumber(value: any): value is number {\r\n\treturn typeof value === \"number\" && Number(value) == value;\r\n}\r\n\r\n/**\r\n * Checks if parameter is `object`.\r\n *\r\n * @param value Input value\r\n * @return Is object?\r\n */\r\nexport function isObject(value: any): value is object {\r\n\treturn typeof value === \"object\" && value != null;\r\n}\r\n\r\n/**\r\n * Checks if parameter is `Array`.\r\n *\r\n * @param value Input value\r\n * @return Is Array?\r\n */\r\nexport function isArray(value: any): value is Array<any> {\r\n\treturn Array.isArray(value);\r\n}\r\n","/**\r\n * A collection of universal utility functions.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../Sprite\";\r\nimport { IPoint } from \"../defs/IPoint\";\r\nimport { IRectangle } from \"../defs/IRectangle\";\r\nimport { Percent } from \"./Percent\";\r\nimport { isSafari } from \"./Browser\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $string from \"./String\";\r\nimport * as $strings from \"./Strings\";\r\nimport * as $object from \"./Object\";\r\nimport * as $array from \"./Array\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MISC FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n\r\n/**\r\n * Marks a value as being used (e.g. because the value has side effects).\r\n */\r\nexport function used<A>(value: A) { }\r\n\r\n/**\r\n * Copies all properties of one object to the other, omitting undefined.\r\n *\r\n * @param fromObject Source object\r\n * @param toObject Target object\r\n * @return Updated target object\r\n * @todo Maybe consolidate with utils.copy?\r\n */\r\nexport function copyProperties(source: Object, target: Object): Object {\r\n\t$object.each(source, (key, value) => {\r\n\t\t// only if value is set\r\n\t\tif ($type.hasValue(value)) {\r\n\t\t\t(<any>target)[key] = value;\r\n\t\t}\r\n\t});\r\n\r\n\treturn target;\r\n}\r\n\r\n/**\r\n * Removes target from url\r\n */\r\nexport function stripHash(url: string): string {\r\n\treturn /^[^#]*/.exec(url)[0];\r\n}\r\n\r\nexport function getBaseURI() {\r\n\tlet url = \"#\";\r\n\r\n\t// Needed until https://bugs.webkit.org/show_bug.cgi?id=189499 is fixed\r\n\tif (isSafari()) {\r\n\t\tlet baseURI = document.baseURI;\r\n\t\tif (baseURI) {\r\n\t\t\tbaseURI = stripHash(baseURI);\r\n\t\t\tlet loc = stripHash(location.href);\r\n\t\t\tif (baseURI !== loc) {\r\n\t\t\t\turl = loc + url;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn url;\r\n}\r\n\r\n/**\r\n * Copies all properties of one object to the other, omitting undefined, but only if property in target object doesn't have a value set.\r\n *\r\n * @param fromObject Source object\r\n * @param toObject Target object\r\n * @return Updated target object\r\n * @todo Maybe consolidate with utils.copy?\r\n */\r\nexport function softCopyProperties(source: Object, target: Object): Object {\r\n\t$object.each(source, (key, value) => {\r\n\t\t// only if value is set\r\n\t\tif ($type.hasValue(value) && !($type.hasValue((<any>target)[key]))) {\r\n\t\t\t(<any>target)[key] = value;\r\n\t\t}\r\n\t});\r\n\treturn target;\r\n}\r\n\r\n/**\r\n * Copies all properties of one object to the other.\r\n *\r\n * @param source Source object\r\n * @param recipient Target object\r\n * @return Updated target object\r\n */\r\nexport function copy(source: Object, target: Object): Object {\r\n\t$object.each(source, (key, value) => {\r\n\t\t(<any>target)[key] = value;\r\n\t});\r\n\treturn target;\r\n}\r\n\r\n/**\r\n * Checks if value is not empty (undefined or zero-length string).\r\n *\r\n * @param value Value to check\r\n * @return `true` if value is not \"empty\"\r\n */\r\nexport function isNotEmpty(value: $type.Optional<string>): value is string {\r\n\treturn $type.hasValue(value) && (value.toString() !== \"\");\r\n}\r\n\r\n/**\r\n * [relativeToValue description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param percent [description]\r\n * @param full [description]\r\n * @return [description]\r\n */\r\nexport function relativeToValue(percent: $type.Optional<number | Percent>, full: number): number {\r\n\tif ($type.isNumber(percent)) {\r\n\t\treturn percent;\r\n\t} else if (percent != null && $type.isNumber(percent.value) && $type.isNumber(full)) {\r\n\t\treturn full * percent.value;\r\n\r\n\t} else {\r\n\t\treturn 0;\r\n\t}\r\n}\r\n\r\n/**\r\n * [relativeRadiusToValue description]\r\n *\r\n * Differs from relativeToValue so that if a value is negative, it subtracts\r\n * it from full value.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param percent [description]\r\n * @param full [description]\r\n * @param subtractIfNegative [description]\r\n * @return [description]\r\n */\r\nexport function relativeRadiusToValue(percent: $type.Optional<number | Percent>, full: number, subtractIfNegative?: boolean): $type.Optional<number> {\r\n\tlet value: $type.Optional<number>;\r\n\r\n\tif ($type.isNumber(percent)) {\r\n\t\tvalue = percent;\r\n\r\n\t\tif (value < 0) {\r\n\t\t\tif (subtractIfNegative) {\r\n\t\t\t\tvalue = full + value;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvalue = full - value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t} else if (percent != null && $type.isNumber(percent.value)) {\r\n\t\tvalue = full * percent.value;\r\n\t}\r\n\r\n\treturn value;\r\n}\r\n\r\n/**\r\n * [valueToRelative description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n * @param full [description]\r\n * @return [description]\r\n */\r\nexport function valueToRelative(value: number | Percent, full: number): number {\r\n\tif (value instanceof Percent) {\r\n\t\treturn value.value;\r\n\t}\r\n\telse {\r\n\t\treturn value / full;\r\n\t}\r\n}\r\n\r\n/**\r\n * Returns pixel ratio of the current screen (used on retina displays).\r\n *\r\n * @return Pixel ratio\r\n */\r\nexport function getPixelRatio(): number {\r\n\tlet ratio = window.devicePixelRatio || 1;\r\n\treturn ratio;\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * STRING FORMATTING FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Converts camelCased text to dashed version:\r\n * (\"thisIsString\" > \"this-is-string\")\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\r\nexport function camelToDashed(str: string): string {\r\n\treturn str.replace(/\\W+/g, '-').replace(/([a-z\\d])([A-Z])/g, '$1-$2').toLowerCase();\r\n}\r\n\r\n/**\r\n * Converts tring to uppercase.\r\n *\r\n * @param str String to convert\r\n * @return uppercased string\r\n * @todo Maybe make it better\r\n */\r\nexport function capitalize(str: string): string {\r\n\tlet arr: string[] = str.split(\"\");\r\n\tarr[0] = arr[0].toUpperCase();\r\n\treturn arr.join(\"\");\r\n}\r\n\r\n/**\r\n * Converts any value into its string representation.\r\n *\r\n * @param value Value\r\n * @return String represantation of the value\r\n */\r\nexport function stringify(value: any): string {\r\n\treturn JSON.stringify(value);\r\n}\r\n\r\n/**\r\n * Escapes string so it can safely be used in a Regex.\r\n *\r\n * @param value Unsescaped string\r\n * @return Escaped string\r\n */\r\nexport function escapeForRgex(value: string): string {\r\n\treturn value.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\r\n}\r\n\r\n/**\r\n * Splits the text into multiple lines, respecting maximum character count.\r\n * Prioretizes splitting on spaces and punctuation. Falls back on splitting\r\n * mid-word if there's no other option.\r\n *\r\n * @param text Text\r\n * @param maxChars Maximum number of characters per line\r\n * @return An array of split text\r\n */\r\nexport function splitTextByCharCount(text: string, maxChars: number, fullWords?: boolean, rtl?: boolean): string[] {\r\n\r\n\t// Maybe the text fits?\r\n\tif (text.length <= maxChars) {\r\n\t\treturn [text];\r\n\t}\r\n\r\n\t// Init result\r\n\tlet res: string[] = [];\r\n\r\n\t// Split by words or by charts\r\n\tif (fullWords) {\r\n\r\n\t\t// Split by words first\r\n\r\n\t\t// Split by spacing\r\n\t\tlet currentIndex: number = -1;\r\n\t\tlet tmpText = text.replace(/([,;:!?\\\\\\/\\.]+[\\s]+|[\\s])/g, $strings.PLACEHOLDER + \"$1\" + $strings.PLACEHOLDER);\r\n\t\tlet words = tmpText.split($strings.PLACEHOLDER);\r\n\r\n\t\t// Process each word\r\n\t\tfor (let i = 0; i < words.length; i++) {\r\n\r\n\t\t\t// Get word and symbol count\r\n\t\t\tlet word: string = words[i];\r\n\t\t\tlet wordLength: number = word.length;\r\n\r\n\t\t\t// Ignore empty words\r\n\t\t\tif (wordLength === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// Check word length\r\n\t\t\t//if ((wordLength > maxChars) && fullWords !== true) {\r\n\t\t\tif (wordLength > maxChars) {\r\n\t\t\t\t// A single word is longer than allowed symbol count\r\n\t\t\t\t// Break it up\r\n\t\t\t\tif (rtl) {\r\n\t\t\t\t\tword = reverseString(word);\r\n\t\t\t\t}\r\n\t\t\t\tlet parts: RegExpMatchArray | null = word.match(new RegExp(\".{1,\" + maxChars + \"}\", \"g\"));\r\n\r\n\t\t\t\t// TODO is this correct ?\r\n\t\t\t\tif (parts) {\r\n\t\t\t\t\tif (rtl) {\r\n\t\t\t\t\t\tfor (let x = 0; x < parts.length; x++) {\r\n\t\t\t\t\t\t\tparts[x] = reverseString(parts[x]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t//parts.reverse();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tres = res.concat(parts);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\r\n\t\t\t\t// Init current line\r\n\t\t\t\tif (currentIndex === -1) {\r\n\t\t\t\t\tres.push(\"\");\r\n\t\t\t\t\tcurrentIndex = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Check if we need to break into another line\r\n\t\t\t\tif (((res[currentIndex].length + wordLength + 1) > maxChars) && res[currentIndex] !== \"\") {\r\n\t\t\t\t\tres.push(\"\");\r\n\t\t\t\t\tcurrentIndex++;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Add word\r\n\t\t\t\tres[currentIndex] += word;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Update index\r\n\t\t\tcurrentIndex = res.length - 1;\r\n\t\t}\r\n\t}\r\n\telse {\r\n\r\n\t\t// Splitting by anywhere (living la vida facil)\r\n\t\tlet parts: RegExpMatchArray | null = text.match(new RegExp(\".{1,\" + maxChars + \"}\", \"g\"));\r\n\r\n\t\tif (parts) {\r\n\t\t\tif (rtl) {\r\n\t\t\t\tfor (let x = 0; x < parts.length; x++) {\r\n\t\t\t\t\tparts[x] = reverseString(parts[x]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tres = parts;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t// Do we have only one word that does not fit?\r\n\t// Since fullWords is set and we can't split the word, we end up with empty\r\n\t// set.\r\n\tif (res.length == 1 && fullWords && (res[0].length > maxChars)) {\r\n\t\tres = [];\r\n\t}\r\n\r\n\treturn res;\r\n}\r\n\r\n/**\r\n * Truncates the text to certain character count.\r\n *\r\n * Will add ellipsis if the string is truncated. Optionally, can truncate on\r\n * full words only.\r\n *\r\n * For RTL support, pass in the fifth parameter as `true`.\r\n *\r\n * @param text Input text\r\n * @param maxChars Maximum character count of output\r\n * @param ellipsis Ellipsis string, i.e. \"...\"\r\n * @param fullWords If `true`, will not break mid-word, unless there's a single word and it does not with into `maxChars`\r\n * @param rtl Is this an RTL text?\r\n * @return Truncated text\r\n */\r\nexport function truncateWithEllipsis(text: string, maxChars: number, ellipsis: string, fullWords?: boolean, rtl?: boolean): string {\r\n\r\n\tif (text.length <= maxChars) {\r\n\t\treturn text;\r\n\t}\r\n\r\n\t// Calc max chars\r\n\tmaxChars -= ellipsis.length;\r\n\tif (maxChars < 1) {\r\n\t\tmaxChars = 1;\r\n\t\t//ellipsis = \"\";\r\n\t}\r\n\r\n\t// Get lines\r\n\tlet lines = splitTextByCharCount(text, maxChars, fullWords, rtl);\r\n\r\n\t// Use first line\r\n\treturn (lines[0] || \"\") + ellipsis;\r\n}\r\n\r\n/**\r\n * Removes whitespace from beginning and end of the string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\r\nexport function trim(str: string): string {\r\n\treturn str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\");\r\n};\r\n\r\n/**\r\n * Removes whitespace from end of the string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\r\nexport function rtrim(str: string): string {\r\n\treturn str.replace(/[\\s\\uFEFF\\xA0]+$/g, \"\");\r\n};\r\n\r\n/**\r\n * Removes whitespace from beginning of the string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\r\nexport function ltrim(str: string): string {\r\n\treturn str.replace(/^[\\s\\uFEFF\\xA0]+/g, \"\");\r\n};\r\n\r\n/**\r\n * Reverses string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\r\nexport function reverseString(str: string): string {\r\n\treturn str.split(\"\").reverse().join(\"\");\r\n}\r\n\r\n/**\r\n * Removes quotes from the string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\r\nexport function unquote(str: string): string {\r\n\tlet res = str.trim();\r\n\tres = str.replace(/^'(.*)'$/, \"$1\");\r\n\tif (res == str) {\r\n\t\tres = str.replace(/^\"(.*)\"$/, \"$1\");\r\n\t}\r\n\treturn res;\r\n}\r\n\r\n/**\r\n * Pads a string with additional characters to certain length.\r\n *\r\n * @param value A numeric value\r\n * @param len Result string length in characters\r\n * @param char A character to use for padding\r\n * @return Padded value as string\r\n */\r\nexport function padString(value: any, len: number = 0, char: string = \"0\"): string {\r\n\tif (typeof value !== \"string\") {\r\n\t\tvalue = value.toString();\r\n\t}\r\n\r\n\treturn len > value.length ? Array(len - value.length + 1).join(char) + value : value;\r\n}\r\n\r\n/**\r\n * Tries to determine format type.\r\n *\r\n * @ignore Exclude from docs\r\n * @param format Format string\r\n * @return Format type (\"string\" | \"number\" | \"date\" | \"duration\")\r\n */\r\nexport function getFormat(format: string): string {\r\n\r\n\t// Undefined?\r\n\tif (typeof format === \"undefined\") {\r\n\t\treturn $strings.STRING;\r\n\t}\r\n\r\n\t// Cleanup and lowercase format\r\n\tformat = format.toLowerCase().replace(/^\\[[^\\]]*\\]/, \"\");\r\n\r\n\t// Remove style tags\r\n\tformat = format.replace(/\\[[^\\]]+\\]/, \"\");\r\n\r\n\t// Trim\r\n\tformat = format.trim();\r\n\r\n\t// Check for any explicit format hints (i.e. /Date)\r\n\tlet hints: RegExpMatchArray | null = format.match(/\\/(date|number|duration)$/);\r\n\r\n\tif (hints) {\r\n\t\treturn hints[1];\r\n\t}\r\n\r\n\t// Check for explicit hints\r\n\tif (format === $strings.NUMBER) {\r\n\t\treturn $strings.NUMBER;\r\n\t}\r\n\r\n\tif (format === $strings.DATE) {\r\n\t\treturn $strings.DATE;\r\n\t}\r\n\r\n\tif (format === $strings.DURATION) {\r\n\t\treturn $strings.DURATION;\r\n\t}\r\n\r\n\t// Detect number formatting symbols\r\n\tif (format.match(/[#0]/)) {\r\n\t\treturn $strings.NUMBER;\r\n\t}\r\n\r\n\t// Detect date formatting symbols\r\n\tif (format.match(/[ymwdhnsqaxkzgtei]/)) {\r\n\t\treturn $strings.DATE;\r\n\t}\r\n\r\n\t// Nothing? Let's display as string\r\n\treturn $strings.STRING;\r\n}\r\n\r\n/**\r\n * Cleans up format:\r\n * * Strips out formatter hints\r\n *\r\n * @ignore Exclude from docs\r\n * @param format Format\r\n * @return Cleaned format\r\n */\r\nexport function cleanFormat(format: string): string {\r\n\treturn format.replace(/\\/(date|number|duration)$/i, \"\");\r\n}\r\n\r\n/**\r\n * Strips all tags from the string.\r\n *\r\n * @param text Source string\r\n * @return String without tags\r\n */\r\nexport function stripTags(text: string): string {\r\n\treturn text ? text.replace(/<[^>]*>/g, \"\") : text;\r\n}\r\n\r\n/**\r\n * Removes new lines and tags from a string.\r\n *\r\n * @param text String to conver\r\n * @return Converted string\r\n */\r\nexport function plainText(text: string): string {\r\n\treturn text ? stripTags(text.replace(/[\\n\\r]+/g, \". \")) : text;\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * TYPE CONVERSION FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Converts numeric value into string. Deals with large or small numbers that\r\n * would otherwise use exponents.\r\n *\r\n * @param value Numeric value\r\n * @return Numeric value as string\r\n */\r\nexport function numberToString(value: number): string {\r\n\t// TODO handle Infinity and -Infinity\r\n\tif ($type.isNaN(value)) {\r\n\t\treturn \"NaN\";\r\n\t}\r\n\r\n\tif (value === Infinity) {\r\n\t\treturn \"Infinity\";\r\n\t}\r\n\r\n\tif (value === -Infinity) {\r\n\t\treturn \"-Infinity\";\r\n\t}\r\n\r\n\t// Negative 0\r\n\tif ((value === 0) && (1 / value === -Infinity)) {\r\n\t\treturn \"-0\";\r\n\t}\r\n\r\n\t// Preserve negative and deal with absoute values\r\n\tlet negative = value < 0;\r\n\r\n\tvalue = Math.abs(value);\r\n\r\n\t// TODO test this\r\n\tlet parsed = $type.getValue(/^([0-9]+)(?:\\.([0-9]+))?(?:e[\\+\\-]([0-9]+))?$/.exec(\"\" + value));\r\n\tlet digits = parsed[1];\r\n\tlet decimals = parsed[2] || \"\";\r\n\r\n\tlet res: string;\r\n\r\n\t// Leave the nummber as it is if it does not use exponents\r\n\tif (parsed[3] == null) {\r\n\t\tres = (decimals === \"\" ? digits : digits + \".\" + decimals);\r\n\r\n\t} else {\r\n\t\tlet exponent = +parsed[3];\r\n\r\n\t\t// Deal with decimals\r\n\t\tif (value < 1) {\r\n\t\t\tlet zeros = exponent - 1;\r\n\r\n\t\t\tres = \"0.\" + $string.repeat(\"0\", zeros) + digits + decimals;\r\n\r\n\t\t\t// Deal with integers\r\n\t\t} else {\r\n\t\t\tlet zeros = exponent - decimals.length;\r\n\r\n\t\t\tif (zeros === 0) {\r\n\t\t\t\tres = digits + decimals;\r\n\r\n\t\t\t} else if (zeros < 0) {\r\n\t\t\t\tres = digits + decimals.slice(0, zeros) + \".\" + decimals.slice(zeros);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tres = digits + decimals + $string.repeat(\"0\", zeros);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn negative ? \"-\" + res : res;\r\n}\r\n\r\n/**\r\n * Converts anything to Date object.\r\n *\r\n * @param value A value of any type\r\n * @return Date object representing a value\r\n */\r\nexport function anyToDate(value: Date | number | string): Date {\r\n\tif ($type.isDate(value)) {\r\n\t\t// TODO maybe don't create a new Date ?\r\n\t\treturn new Date(value);\r\n\t}\r\n\r\n\telse if ($type.isNumber(value)) {\r\n\t\treturn new Date(value);\r\n\t}\r\n\r\n\telse {\r\n\t\t// Try converting to number (assuming timestamp)\r\n\t\tlet num = Number(value);\r\n\r\n\t\tif (!$type.isNumber(num)) {\r\n\t\t\treturn new Date(value);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn new Date(num);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Tries converting any value to a number.\r\n *\r\n * @param value Source value\r\n * @return Number\r\n */\r\nexport function anyToNumber(value: Date | number | string): $type.Optional<number> {\r\n\tif ($type.isDate(value)) {\r\n\t\treturn value.getTime();\r\n\t}\r\n\r\n\telse if ($type.isNumber(value)) {\r\n\t\treturn value;\r\n\t}\r\n\r\n\telse if ($type.isString(value)) {\r\n\t\t// Try converting to number (assuming timestamp)\r\n\t\tlet num = Number(value);\r\n\r\n\t\tif (!$type.isNumber(num)) {\r\n\t\t\t// Failing\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn num;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * DATE-RELATED FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Returns a year day.\r\n *\r\n * @param date Date\r\n * @param utc Assume UTC dates?\r\n * @return Year day\r\n * @todo Account for UTC\r\n */\r\nexport function getYearDay(date: Date, utc: boolean = false): number {\r\n\tlet first = new Date(date.getFullYear(), 0, 1, 0, 0, 0, 0);\r\n\treturn Math.floor((date.getTime() - first.getTime()) / 86400000) + 1;\r\n}\r\n\r\n/**\r\n * Returns week number for a given date.\r\n *\r\n * @param date Date\r\n * @param utc Assume UTC dates?\r\n * @return Week number\r\n * @todo Account for UTC\r\n */\r\nexport function getWeek(date: Date, utc: boolean = false): number {\r\n\tlet day = getYearDay(date, utc) - 1;\r\n\tlet week = Math.floor((day - (date.getDay() || 7) + 10) / 7);\r\n\tif (week === 0) {\r\n\t\tweek = 53;\r\n\t}\r\n\telse if (week === 53) {\r\n\t\tweek = 1;\r\n\t}\r\n\treturn week;\r\n}\r\n\r\n/**\r\n * Returns a week number in the month.\r\n *\r\n * @param date Source Date\r\n * @param utc Assume UTC dates?\r\n * @return Week number in month\r\n */\r\nexport function getMonthWeek(date: Date, utc: boolean = false): number {\r\n\tlet firstWeek = getWeek(new Date(date.getFullYear(), date.getMonth(), 1), utc);\r\n\tlet currentWeek = getWeek(date, utc);\r\n\tif (currentWeek == 1) {\r\n\t\tcurrentWeek = 53;\r\n\t}\r\n\treturn currentWeek - firstWeek + 1;\r\n}\r\n\r\n/**\r\n * Returns a year day out of the given week number.\r\n *\r\n * @param week Week\r\n * @param year Year\r\n * @param weekday Weekday\r\n * @param utc Assume UTC dates\r\n * @return Day in a year\r\n */\r\nexport function getDayFromWeek(week: number, year: number, weekday: number = 1, utc: boolean = false): number {\r\n\tlet date = new Date(year, 0, 4, 0, 0, 0, 0);\r\n\tif (utc) {\r\n\t\tdate.setUTCFullYear(year);\r\n\t}\r\n\tlet day = week * 7 + weekday - ((date.getDay() || 7) + 3);\r\n\treturn day;\r\n}\r\n\r\n/**\r\n * Returns 12-hour representation out of the 24-hour hours.\r\n *\r\n * @param hours 24-hour number\r\n * @return 12-hour number\r\n */\r\nexport function get12Hours(hours: number, base?: number): number {\r\n\tif (hours > 12) {\r\n\t\thours -= 12;\r\n\t}\r\n\telse if (hours === 0) {\r\n\t\thours = 12;\r\n\t}\r\n\treturn $type.hasValue(base) ? hours + (base - 1) : hours;\r\n}\r\n\r\n/**\r\n * Returns a string name of the tome zone.\r\n *\r\n * @param date Date object\r\n * @param long Should return long (\"Pacific Standard Time\") or short abbreviation (\"PST\")\r\n * @param savings Include information if it's in daylight savings mode\r\n * @param utc Assume UTC dates\r\n * @return Time zone name\r\n */\r\nexport function getTimeZone(date: Date, long: boolean = false, savings: boolean = false, utc: boolean = false): string {\r\n\tif (utc) {\r\n\t\treturn long ? \"Coordinated Universal Time\" : \"UTC\";\r\n\t}\r\n\tlet wotz = date.toLocaleString(\"UTC\");\r\n\tlet wtz = date.toLocaleString(\"UTC\", { timeZoneName: long ? \"long\" : \"short\" }).substr(wotz.length);\r\n\t//wtz = wtz.replace(/[+-]+[0-9]+$/, \"\");\r\n\tif (savings === false) {\r\n\t\twtz = wtz.replace(/ (standard|daylight|summer|winter) /i, \" \");\r\n\t}\r\n\treturn wtz;\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * NUMBER-RELATED FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Returns a random number between `from` and `to`.\r\n *\r\n * @param from From number\r\n * @param to To number\r\n * @return Random number\r\n */\r\nexport function random(from: number, to: number): number {\r\n\treturn Math.floor(Math.random() * to) + from;\r\n}\r\n\r\n/**\r\n * Fits the number into specific `min` and `max` bounds.\r\n *\r\n * @param value Input value\r\n * @param min Minimum value\r\n * @param max Maximum value\r\n * @return Possibly adjusted value\r\n */\r\nexport function fitNumber(value: number, min: number, max: number): number {\r\n\tif (value > max) {\r\n\t\treturn max;\r\n\t}\r\n\telse if (value < min) {\r\n\t\treturn min;\r\n\t}\r\n\treturn value;\r\n}\r\n\r\n/**\r\n * Fits the number into specific `min` and `max` bounds.\r\n *\r\n * If the value is does not fit withing specified range, it \"wraps\" around the\r\n * values.\r\n *\r\n * For example, if we have input value 10 with min set at 1 and max set at 8,\r\n * the value will not fit. The remainder that does not fit (2) will be added\r\n * to `min`, resulting in 3.\r\n *\r\n * The output of regular `fitNumber()` would return 8 instead.\r\n *\r\n * @param value Input value\r\n * @param min Minimum value\r\n * @param max Maximum value\r\n * @return Possibly adjusted value\r\n */\r\nexport function fitNumberRelative(value: number, min: number, max: number): number {\r\n\tlet gap = max - min;\r\n\tif (value > max) {\r\n\t\tvalue = min + (value - gap * Math.floor(value / gap));\r\n\t}\r\n\telse if (value < min) {\r\n\t\tvalue = min + (value - gap * Math.floor(value / gap));\r\n\t}\r\n\treturn value;\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * SPRITE-RELATED FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Converts SVG element coordinates to coordinates within specific [[Sprite]].\r\n *\r\n * @param point SVG coordinates\r\n * @param sprite Sprite\r\n * @return Sprite coordinates\r\n */\r\nexport function svgPointToSprite(point: IPoint, sprite: Sprite): IPoint {\r\n\tlet x: number = point.x;\r\n\tlet y: number = point.y;\r\n\tlet sprites: Sprite[] = [];\r\n\tif (sprite) {\r\n\t\twhile ($type.hasValue(sprite.parent)) {\r\n\t\t\tsprites.push(sprite);\r\n\t\t\tsprite = sprite.parent as any;\r\n\t\t}\r\n\r\n\t\tsprites.reverse();\r\n\r\n\t\tfor (let i = 0; i < sprites.length; i++) {\r\n\t\t\tlet sprite: Sprite = sprites[i];\r\n\t\t\tlet angle: number = sprite.rotation;\r\n\r\n\t\t\tlet relativeX = x - sprite.pixelX - sprite.ex;\r\n\t\t\tlet relativeY = y - sprite.pixelY - sprite.ey;\r\n\r\n\t\t\tif (sprite.dx) {\r\n\t\t\t\tx -= sprite.dx;\r\n\t\t\t}\r\n\t\t\tif (sprite.dy) {\r\n\t\t\t\ty -= sprite.dy;\r\n\t\t\t}\r\n\r\n\t\t\tlet scale = sprite.scale;\r\n\r\n\t\t\t// this handles nonscaling\r\n\t\t\tif(sprite.group){\r\n\t\t\t\tscale = sprite.group.scale; \r\n\t\t\t}\r\n\r\n\t\t\tx = ($math.cos(-angle) * relativeX - $math.sin(-angle) * relativeY) / scale - sprite.pixelPaddingLeft;\r\n\t\t\ty = ($math.cos(-angle) * relativeY + $math.sin(-angle) * relativeX) / scale - sprite.pixelPaddingTop;\r\n\t\t}\r\n\t}\r\n\r\n\treturn { x: x, y: y };\r\n}\r\n\r\n/**\r\n * Converts coordinates within [[Sprite]] to coordinates relative to the whole\r\n * SVG element.\r\n *\r\n * @param point Sprite coordinates\r\n * @param sprite Sprite\r\n * @return SVG coordinates\r\n */\r\nexport function spritePointToSvg(point: IPoint, sprite: Sprite): IPoint {\r\n\tlet x: number = point.x;\r\n\tlet y: number = point.y;\r\n\r\n\tif (sprite) {\r\n\t\twhile ($type.hasValue(sprite.parent)) {\r\n\t\t\tlet angle: number = sprite.rotation;\r\n\r\n\t\t\tx += sprite.pixelPaddingLeft + sprite.ex;\r\n\t\t\ty += sprite.pixelPaddingTop + sprite.ey;\r\n\r\n\t\t\tif (sprite.dx) {\r\n\t\t\t\tx += sprite.dx;\r\n\t\t\t}\r\n\t\t\tif (sprite.dy) {\r\n\t\t\t\ty += sprite.dy;\r\n\t\t\t}\r\n\r\n\t\t\tlet scale = sprite.scale;\r\n\r\n\t\t\t// this handles nonscaling\r\n\t\t\tif(sprite.group){\r\n\t\t\t\tscale = sprite.group.scale; \r\n\t\t\t}\r\n\r\n\t\t\tlet relativeX = sprite.pixelX + ((x * $math.cos(angle) - y * $math.sin(angle))) * scale;\r\n\t\t\tlet relativeY = sprite.pixelY + ((x * $math.sin(angle) + y * $math.cos(angle))) * scale;\r\n\r\n\t\t\tx = relativeX;\r\n\t\t\ty = relativeY;\r\n\r\n\t\t\tsprite = sprite.parent as any;\r\n\t\t}\r\n\t}\r\n\treturn { x: x, y: y };\r\n}\r\n\r\n\r\n/**\r\n * Converts coordinates of one sprite to another.\r\n *\r\n * @param point Sprite coordinates\r\n * @param sprite Sprite\r\n * @param toSprite Sprite\r\n * @return converted coordinates\r\n */\r\nexport function spritePointToSprite(point: IPoint, sprite: Sprite, toSprite: Sprite): IPoint {\r\n\treturn svgPointToSprite(spritePointToSvg(point, sprite), toSprite);\r\n}\r\n\r\n\r\n/**\r\n * Converts a rectangle expressed in SVG element coordinates to coordinates\r\n * within specific [[Sprite]].\r\n *\r\n * @param rect SVG rectangle\r\n * @param sprite Sprite\r\n * @return Sprite rectangle\r\n */\r\nexport function svgRectToSprite(rect: IRectangle, sprite: Sprite): IRectangle {\r\n\tlet p1: IPoint = svgPointToSprite(rect, sprite);\r\n\tlet p2: IPoint = svgPointToSprite({ x: rect.x + rect.width, y: rect.y + rect.height }, sprite);\r\n\treturn { x: p1.x, y: p1.y, width: p2.x - p1.x, height: p2.y - p1.y };\r\n}\r\n\r\n/**\r\n * Converts a rectangle expressed in [[Sprite]] coordinates to SVG coordinates.\r\n *\r\n * @param rect Sprite rectangle\r\n * @param sprite Sprite\r\n * @return SVG rectangle\r\n */\r\nexport function spriteRectToSvg(rect: IRectangle, sprite: Sprite): IRectangle {\r\n\tlet p1: IPoint = spritePointToSvg(rect, sprite);\r\n\tlet p2: IPoint = spritePointToSvg({ x: rect.x + rect.width, y: rect.y + rect.height }, sprite);\r\n\treturn { x: p1.x, y: p1.y, width: p2.x - p1.x, height: p2.y - p1.y };\r\n}\r\n\r\n/**\r\n * Converts global document-wide coordinates to coordinates within SVG element.\r\n *\r\n * @param point Global coordinates\r\n * @param svgContainer SVG element\r\n * @return SVG coordinates\r\n */\r\nexport function documentPointToSvg(point: IPoint, svgContainer: HTMLElement, cssScale?: number): IPoint {\r\n\ttry {\r\n\t\tlet bbox = svgContainer.getBoundingClientRect();\r\n\r\n\t\tif (!$type.isNumber(cssScale)) {\r\n\t\t\tcssScale = 1;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\t\"x\": (point.x - bbox.left) / cssScale,\r\n\t\t\t\"y\": (point.y - bbox.top) / cssScale\r\n\t\t};\r\n\t}\r\n\tcatch (e) {\r\n\t\treturn point;\r\n\t}\r\n}\r\n\r\n/**\r\n * Converts SVG coordinates to global document-wide coordinates.\r\n *\r\n * @param point SVG coordinates\r\n * @param svgContainer SVG element\r\n * @return Global coordinates\r\n */\r\nexport function svgPointToDocument(point: IPoint, svgContainer: HTMLElement): IPoint {\r\n\ttry {\r\n\t\tlet bbox = svgContainer.getBoundingClientRect();\r\n\r\n\t\treturn {\r\n\t\t\t\"x\": point.x + bbox.left,\r\n\t\t\t\"y\": point.y + bbox.top\r\n\t\t};\r\n\t}\r\n\tcatch (e) {\r\n\t\treturn point;\r\n\t}\r\n}\r\n\r\n/**\r\n * Converts document-wide global coordinates to coordinates within specific\r\n * [[Sprite]].\r\n *\r\n * @param point Global coordinates\r\n * @param sprite Sprite\r\n * @return Sprite coordinates\r\n */\r\nexport function documentPointToSprite(point: IPoint, sprite: Sprite): IPoint {\r\n\tif (sprite && sprite.htmlContainer) {\r\n\t\tlet svgPoint: IPoint = documentPointToSvg(point, $type.getValue(sprite.htmlContainer), sprite.svgContainer.cssScale);\r\n\t\treturn svgPointToSprite(svgPoint, sprite);\r\n\t}\r\n\telse {\r\n\t\treturn point;\r\n\t}\r\n}\r\n\r\n/**\r\n * Converts coordinates within [[Sprite]] to global document coordinates.\r\n *\r\n * @param point Sprite coordinates\r\n * @param sprite Sprite\r\n * @return Global coordinates\r\n */\r\nexport function spritePointToDocument(point: IPoint, sprite: Sprite): IPoint {\r\n\tif (sprite && sprite.htmlContainer) {\r\n\t\tlet svgPoint: IPoint = spritePointToSvg(point, sprite);\r\n\t\treturn svgPointToDocument(svgPoint, $type.getValue(sprite.htmlContainer));\r\n\t}\r\n\telse {\r\n\t\treturn point;\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * DEPRECATED FUNCTIONS\r\n * @todo Review and remove\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Returns element's width.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @return Width (px)\r\n * @deprecated Not used anywhere\r\n */\r\nexport function width(element: HTMLElement): number {\r\n\r\n\tlet cs = getComputedStyle(element);\r\n\r\n\tlet paddingX = parseFloat(cs.paddingLeft) + parseFloat(cs.paddingRight);\r\n\tlet borderX = parseFloat(cs.borderLeftWidth) + parseFloat(cs.borderRightWidth);\r\n\r\n\treturn element.clientWidth - paddingX - borderX;\r\n}\r\n\r\n/**\r\n * Returns element's height.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @return Height (px)\r\n * @deprecated Not used anywhere\r\n */\r\nexport function height(element: HTMLElement): number {\r\n\r\n\tlet cs = getComputedStyle(element);\r\n\r\n\tlet paddingY = parseFloat(cs.paddingTop) + parseFloat(cs.paddingBottom);\r\n\tlet borderY = parseFloat(cs.borderTopWidth) + parseFloat(cs.borderBottomWidth);\r\n\r\n\treturn element.clientHeight - paddingY - borderY;\r\n}\r\n\r\n/**\r\n * Returns number of decimals\r\n *\r\n * @ignore Exclude from docs\r\n * @param number Input number\r\n * @return Number of decimals\r\n */\r\nexport function decimalPlaces(number: number): number {\r\n\tlet match = ('' + number).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\r\n\tif (!match) { return 0; }\r\n\treturn Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0));\r\n}\r\n\r\n\r\n/**\r\n * A parsed URL\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport interface Url {\r\n\tprotocol: string;\r\n\tseparator: string;\r\n\tauthority: string;\r\n\tdomain: string;\r\n\tport: string;\r\n\tpath: string;\r\n\tquery: string;\r\n\thash: string;\r\n}\r\n\r\nconst urlRegexp = /^([a-zA-Z][a-zA-Z0-9\\+\\.\\-]*:)?(?:(\\/\\/)([^\\@]+\\@)?([^\\/\\?\\#\\:]*)(\\:[0-9]+)?)?([^\\?\\#]*)(\\?[^\\#]*)?(\\#.*)?$/;\r\n\r\n/**\r\n * Parses a URL\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n// TODO test this\r\nexport function parseUrl(url: string): Url {\r\n\tconst match = urlRegexp.exec(url);\r\n\r\n\treturn {\r\n\t\tprotocol: (match && match[1]) || \"\",\r\n\t\tseparator: (match && match[2]) || \"\",\r\n\t\tauthority: (match && match[3]) || \"\",\r\n\t\tdomain: (match && match[4]) || \"\",\r\n\t\tport: (match && match[5]) || \"\",\r\n\t\tpath: (match && match[6]) || \"\",\r\n\t\tquery: (match && match[7]) || \"\",\r\n\t\thash: (match && match[8]) || \"\"\r\n\t};\r\n}\r\n\r\n/**\r\n * Serializes a Url into a string\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport function serializeUrl(url: Url): string {\r\n\treturn url.protocol + url.separator + url.authority + url.domain + url.port + url.path + url.query + url.hash;\r\n}\r\n\r\n/**\r\n * Checks whether a Url is relative or not\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n// TODO is this correct ?\r\nfunction isRelativeUrl(url: Url): boolean {\r\n\treturn url.protocol === \"\" &&\r\n\t\turl.separator === \"\" &&\r\n\t\turl.authority === \"\" &&\r\n\t\turl.domain === \"\" &&\r\n\t\turl.port === \"\";\r\n}\r\n\r\n/**\r\n * Joins together two URLs, resolving relative URLs correctly\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n// TODO test this\r\nexport function joinUrl(left: string, right: string): string {\r\n\tconst parsedLeft = parseUrl(left);\r\n\tconst parsedRight = parseUrl(right);\r\n\r\n\tif (isRelativeUrl(parsedLeft)) {\r\n\t\tthrow new Error(\"Left URL is not absolute\");\r\n\t}\r\n\r\n\tif (isRelativeUrl(parsedRight)) {\r\n\t\t// TODO is this correct ?\r\n\t\tif (parsedRight.path !== \"\") {\r\n\t\t\tif (parsedRight.path[0] === \"/\") {\r\n\t\t\t\tparsedLeft.path = parsedRight.path;\r\n\r\n\t\t\t\t// TODO is this correct ?\r\n\t\t\t} else {\r\n\t\t\t\tconst leftPath = parsedLeft.path.split(/\\//);\r\n\t\t\t\tconst rightPath = parsedRight.path.split(/\\//);\r\n\r\n\t\t\t\t// TODO is this correct ?\r\n\t\t\t\tif (leftPath.length === 0) {\r\n\t\t\t\t\tif (rightPath.length !== 0) {\r\n\t\t\t\t\t\tleftPath.push(\"\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else if (leftPath.length > 1) {\r\n\t\t\t\t\tleftPath.pop();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$array.pushAll(leftPath, rightPath);\r\n\r\n\t\t\t\tparsedLeft.path = leftPath.join(\"/\");\r\n\r\n\t\t\t\tif (parsedLeft.path !== \"\" && parsedLeft.path[0] !== \"/\") {\r\n\t\t\t\t\tthrow new Error(\"URL path must start with /\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// TODO is this correct ?\r\n\t\tparsedLeft.query = parsedRight.query;\r\n\t\tparsedLeft.hash = parsedRight.hash;\r\n\r\n\t\treturn serializeUrl(parsedLeft);\r\n\r\n\t} else {\r\n\t\treturn serializeUrl(parsedRight);\r\n\t}\r\n}\r\n\r\n/**\r\n * Detects MSIE.\r\n *\r\n * @return Is IE?\r\n */\r\nexport function isIE(): boolean {\r\n\treturn !!(<any>window).MSInputMethodContext && !!(<any>document).documentMode;\r\n}\r\n","/**\r\n * This module defines a [[Validatable]] class which can be used by all\r\n * non-[[Sprite]] classes to use system beats to revalidate themselves.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObjectEvents } from \"../Base\";\r\nimport { IDisposer } from \"../utils/Disposer\";\r\nimport { registry } from \"../Registry\";\r\n\r\n/**\r\n * This module defines a [[Validatable]] class which can be used by all\r\n * non-[[Sprite]] classes to use system update cycle to revalidate themselves.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport class Validatable extends BaseObjectEvents {\r\n\r\n\t/**\r\n\t * Is invalid and should be revalidated?\r\n\t */\r\n\tprivate _validateDisposer: IDisposer | null = null;\r\n\r\n\t/**\r\n\t * Invalidates the element, so that it can re-validate/redraw itself in the\r\n\t * next cycle.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidate(): void {\r\n\t\tif (this._validateDisposer === null) {\r\n\t\t\tthis._validateDisposer = registry.events.on(\"exitframe\", this.validate, this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Validates itself.\r\n\t *\r\n\t * Most probably the extending class will have an overriding `validate()`\r\n\t * method which will do actual work, as well as call this method using\r\n\t * `super.validate()`.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate(): void {\r\n\t\tif (this._validateDisposer !== null) {\r\n\t\t\tthis._validateDisposer.dispose();\r\n\t\t\tthis._validateDisposer = null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic dispose(): void {\r\n\t\tif (this._validateDisposer !== null) {\r\n\t\t\tthis._validateDisposer.dispose();\r\n\t\t\tthis._validateDisposer = null;\r\n\t\t}\r\n\r\n\t\tsuper.dispose();\r\n\t}\r\n}\r\n","/**\r\n * Functionality for adding images in SVG tree.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite, ISpriteProperties, ISpriteAdapters, ISpriteEvents } from \"../Sprite\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $type from \"../utils/Type\";\r\nimport { IRectangle } from \"../defs/IRectangle\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Image]].\r\n */\r\nexport interface IImageProperties extends ISpriteProperties {\r\n\r\n\t/**\r\n\t * A URI of the image.\r\n\t */\r\n\thref?: string;\r\n\r\n\t/**\r\n\t * Sets image `width` in relation to its `height`.\r\n\t */\r\n\twidthRatio?: number;\r\n\r\n\t/**\r\n\t * Sets image `height` in relation to its `width`.\r\n\t */\r\n\theightRatio?: number;\r\n}\r\n\r\n/**\r\n * Defines events for [[Image]].\r\n */\r\nexport interface IImageEvents extends ISpriteEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Image]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IImageAdapters extends ISpriteAdapters, IImageProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Used to add `<image>` elements to SVG.\r\n *\r\n * @see {@link IImageEvents} for a list of available events\r\n * @see {@link IImageAdapters} for a list of available Adapters\r\n */\r\nexport class Image extends Sprite {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IImageProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IImageAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IImageEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"Image\";\r\n\t\tthis.element = this.paper.add(\"image\");\r\n\t\tthis.applyTheme();\r\n\r\n\t\tthis.width = 50;\r\n\t\tthis.height = 50;\r\n\t}\r\n\r\n\t/**\r\n\t * Draws an `<image>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tsuper.draw();\r\n\t\tif (this.href) {\r\n\r\n\t\t\tlet width = this.innerWidth;\r\n\t\t\tlet height = this.innerHeight;\r\n\r\n\t\t\tif ($type.isNumber(this.widthRatio)) {\r\n\t\t\t\twidth = height * this.widthRatio;\r\n\t\t\t\tthis.width = width;\r\n\t\t\t}\r\n\r\n\t\t\tif ($type.isNumber(this.heightRatio)) {\r\n\t\t\t\theight = width * this.heightRatio;\r\n\t\t\t\tthis.height = height;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tthis.element.attr({\r\n\t\t\t\t\"width\": width,\r\n\t\t\t\t\"height\": height\r\n\t\t\t});\r\n\t\t\tthis.element.attrNS($dom.XLINK, \"xlink:href\", this.href);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * An image URI.\r\n\t *\r\n\t * @param value Image URI\r\n\t */\r\n\tpublic set href(value: string) {\r\n\t\tthis.setPropertyValue(\"href\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Image URI\r\n\t */\r\n\tpublic get href(): string {\r\n\t\treturn this.getPropertyValue(\"href\");\r\n\t}\r\n\r\n\t/**\r\n\t * Sets image `width` relatively to its `height`.\r\n\t *\r\n\t * If image's `height = 100` and `widthRatio = 0.5` the actual width will be\r\n\t * `50`.\r\n\t *\r\n\t * @param value Ratio\r\n\t */\r\n\tpublic set widthRatio(value: number) {\r\n\t\tthis.setPropertyValue(\"widthRatio\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Ratio\r\n\t */\r\n\tpublic get widthRatio(): number {\r\n\t\treturn this.getPropertyValue(\"widthRatio\");\r\n\t}\r\n\r\n\t/**\r\n\t * Sets image `height` relatively to its `width`.\r\n\t *\r\n\t * If image's `width = 100` and `heightRatio = 0.5` the actual height will be\r\n\t * `50`.\r\n\t *\r\n\t * @param value Ratio\r\n\t */\r\n\tpublic set heightRatio(value: number) {\r\n\t\tthis.setPropertyValue(\"heightRatio\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Ratio\r\n\t */\r\n\tpublic get heightRatio(): number {\r\n\t\treturn this.getPropertyValue(\"heightRatio\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Returns bounding box (square) for this element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic get bbox(): IRectangle {\r\n\t\treturn {\r\n\t\t\tx: 0,\r\n\t\t\ty: 0,\r\n\t\t\twidth: this.pixelWidth,\r\n\t\t\theight: this.pixelHeight\r\n\t\t};\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Image\"] = Image;\r\n","/**\r\n * Module for a multi-part arched line.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Polyline, IPolylineProperties, IPolylineAdapters, IPolylineEvents } from \"./Polyline\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Polyarc]].\r\n */\r\nexport interface IPolyarcProperties extends IPolylineProperties {\r\n\r\n\t/**\r\n\t * Relative position along the line the control point is. (0-1)\r\n\t *\r\n\t * @default 0.5\r\n\t */\r\n\tcontrolPointPosition: number;\r\n\r\n\t/**\r\n\t * Relative distance of the control point. (0-1)\r\n\t *\r\n\t * Default is half the length of the line. (0.5)\r\n\t *\r\n\t * @default 0.5\r\n\t */\r\n\tcontrolPointDistance: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[Polyarc]].\r\n */\r\nexport interface IPolyarcEvents extends IPolylineEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Polyarc]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IPolyarcAdapters extends IPolylineAdapters, IPolyarcProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Draws a multi-part arched line.\r\n *\r\n * @see {@link IPolyarcEvents} for a list of available events\r\n * @see {@link IPolyarcAdapters} for a list of available Adapters\r\n */\r\nexport class Polyarc extends Polyline {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IPolyarcProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IPolyarcAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IPolyarcEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"Polyarc\";\r\n\r\n\t\tthis.controlPointDistance = 0.5;\r\n\t\tthis.controlPointPosition = 0.5;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Creats and adds an SVG path for the arc.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic makePath(): void {\r\n\t\tthis._distance = 0;\r\n\t\tlet segments = this.segments;\r\n\r\n\t\tif (segments && segments.length > 0) {\r\n\t\t\tlet path: string = \"\";\r\n\t\t\tthis._realSegments = [];\r\n\r\n\t\t\tfor (let i = 0, len = segments.length; i < len; i++) {\r\n\t\t\t\tlet points: IPoint[] = segments[i];\r\n\t\t\t\tlet realPoints: IPoint[] = [];\r\n\t\t\t\tthis._realSegments.push(realPoints);\r\n\t\t\t\tif (points.length > 0) {\r\n\t\t\t\t\tpath += $path.moveTo(points[0]);\r\n\r\n\t\t\t\t\tfor (let p = 1; p < points.length; p++) {\r\n\t\t\t\t\t\tlet pointA: IPoint = points[p - 1];\r\n\t\t\t\t\t\tlet pointB: IPoint = points[p];\r\n\r\n\t\t\t\t\t\tlet distanceAB: number = $math.getDistance(pointB, pointA);\r\n\t\t\t\t\t\tlet cpDistance: number = distanceAB * this.controlPointDistance;\r\n\t\t\t\t\t\tlet controlPointPosition: number = this.controlPointPosition;\r\n\t\t\t\t\t\tlet angle: number = -$math.getAngle(pointA, pointB);\r\n\r\n\t\t\t\t\t\tlet cpx: number = pointA.x + (pointB.x - pointA.x) * controlPointPosition * 0.5 - cpDistance * $math.sin(angle);\r\n\t\t\t\t\t\tlet cpy: number = pointA.y + (pointB.y - pointA.y) * controlPointPosition * 0.5 - cpDistance * $math.cos(angle);\r\n\t\t\t\t\t\tlet controlPoint1: IPoint = { x: cpx, y: cpy };\r\n\r\n\t\t\t\t\t\tlet cpx2: number = pointA.x + (pointB.x - pointA.x) * controlPointPosition * 1.5 - cpDistance * $math.sin(angle);\r\n\t\t\t\t\t\tlet cpy2: number = pointA.y + (pointB.y - pointA.y) * controlPointPosition * 1.5 - cpDistance * $math.cos(angle);\r\n\t\t\t\t\t\tlet controlPoint2: IPoint = { x: cpx2, y: cpy2 };\r\n\r\n\t\t\t\t\t\tpath += $path.cubicCurveTo(pointB, controlPoint1, controlPoint2);\r\n\r\n\t\t\t\t\t\t// we add a lot of points in order to get the position/angle later\r\n\t\t\t\t\t\tlet stepCount: number = Math.ceil(distanceAB);\r\n\t\t\t\t\t\tlet prevPoint: IPoint = pointA;\r\n\t\t\t\t\t\tif (stepCount > 0) {\r\n\t\t\t\t\t\t\tfor (let i: number = 0; i <= stepCount; i++) {\r\n\t\t\t\t\t\t\t\tlet point: IPoint = $math.getPointOnCubicCurve(pointA, pointB, controlPoint1, controlPoint2, i / stepCount);\r\n\t\t\t\t\t\t\t\trealPoints.push(point);\r\n\t\t\t\t\t\t\t\tthis._distance += $math.getDistance(prevPoint, point);\r\n\t\t\t\t\t\t\t\tprevPoint = point;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\trealPoints.push(pointA);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.path = path;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Relative position along the line the control point is. (0-1)\r\n\t *\r\n\t * @default 0.5\r\n\t * @param value Position (0-1)\r\n\t */\r\n\tpublic set controlPointPosition(value: number) {\r\n\t\tthis.setPropertyValue(\"controlPointPosition\", value);\r\n\t\tthis.makePath();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Position (0-1)\r\n\t */\r\n\tpublic get controlPointPosition(): number {\r\n\t\treturn this.getPropertyValue(\"controlPointPosition\");\r\n\t}\r\n\r\n\t/**\r\n\t * Relative distance of the control point. (0-1)\r\n\t *\r\n\t * Default is half the length of the line. (0.5)\r\n\t *\r\n\t * @default 0.5\r\n\t * @param value Distance (0-1)\r\n\t */\r\n\tpublic set controlPointDistance(value: number) {\r\n\t\tthis.setPropertyValue(\"controlPointDistance\", value);\r\n\t\tthis.makePath();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Distance (0-1)\r\n\t */\r\n\tpublic get controlPointDistance(): number {\r\n\t\treturn this.getPropertyValue(\"controlPointDistance\");\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Polyarc\"] = Polyarc;\r\n","/**\r\n * Morpher module contains functionality that allows morphing one polygon to\r\n * another.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { IPoint } from \"../defs/IPoint\";\r\nimport { IRectangle } from \"../defs/IRectangle\";\r\nimport { IMorphable } from \"../defs/IMorphable\";\r\nimport { IAnimatable, Animation, AnimationDisposer } from \"../utils/Animation\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $ease from \"../utils/Ease\";\r\nimport * as $type from \"../utils/Type\";\r\n\r\n\r\n/**\r\n * Morpher can be used to morph one polygon to some other polygon.\r\n */\r\nexport class Morpher extends BaseObject implements IAnimatable {\r\n\r\n\t/**\r\n\t * An element that will be a subject for morphing.\r\n\t */\r\n\tpublic morphable: IMorphable;\r\n\r\n\t/**\r\n\t * [_morphFromPointsReal description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _morphFromPointsReal: $type.Optional<Array<Array<Array<IPoint>>>>;\r\n\r\n\t/**\r\n\t * [_morphToPointsReal description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _morphToPointsReal: $type.Optional<Array<Array<Array<IPoint>>>>;\r\n\r\n\t/**\r\n\t * [_morphToPoints description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _morphToPoints: $type.Optional<Array<Array<Array<IPoint>>>>;\r\n\r\n\t/**\r\n\t * Morph progress (0-1)\r\n\t */\r\n\tprotected _morphProgress: $type.Optional<number>;\r\n\r\n\t/**\r\n\t * List of animations currently running.\r\n\t */\r\n\tprotected _animations: $type.Optional<Array<Animation>>;\r\n\r\n\t/**\r\n\t * A storage for measurements.\r\n\t */\r\n\tprotected _bboxes: IRectangle[] = [];\r\n\r\n\t/**\r\n\t * Duration of the morphing animation in milliseconds.\r\n\t */\r\n\tpublic morphDuration: number = 800;\r\n\r\n\t/**\r\n\t * An easing function to use for morphing animation.\r\n\t *\r\n\t * @see {@link Ease}\r\n\t */\r\n\tpublic morphEasing: (value: number) => number = $ease.cubicOut;\r\n\r\n\t/**\r\n\t * If set to `true`, all separate parts of the multi-part polygon will\r\n\t * morph into a single circle or polygon when using built-in methods\r\n\t * `morphToCircle()` or `morphToPolygon()`.\r\n\t *\r\n\t * Otherwise each separate part of polygon will morph to individual target\r\n\t * circle or polgyon.\r\n\t */\r\n\tpublic morphToSingle: boolean = true;\r\n\r\n\t/**\r\n\t * A ratio to scale morphed object in relation to the source object.\r\n\t */\r\n\tpublic scaleRatio: number = 1;\r\n\r\n\t/**\r\n\t * Constructor.\r\n\t *\r\n\t * @param morphable An object to morph\r\n\t */\r\n\tconstructor(morphable: IMorphable) {\r\n\t\tsuper();\r\n\t\tthis.className = \"Morpher\";\r\n\t\tthis.morphable = morphable;\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Morphs a polygon to another polygon.\r\n\t *\r\n\t * @param toPoints Corner points of the target shape\r\n\t * @param duration Duration in milliseconds\r\n\t * @param easing Easing function\r\n\t * @return Animation\r\n\t */\r\n\tpublic morphToPolygon(toPoints: Array<Array<Array<IPoint>>>, duration?: number, easing?: (value: number) => number): Animation {\r\n\t\tlet points: Array<Array<Array<IPoint>>> = this.morphable.currentPoints;\r\n\t\tif(points && toPoints){\r\n\t\t\tthis.sortPoints(points);\r\n\t\t\tthis.sortPoints(toPoints);\r\n\r\n\t\t\tthis._morphFromPointsReal = [];\r\n\t\t\tthis._morphToPointsReal = [];\r\n\r\n\t\t\tif (!$type.hasValue(duration)) {\r\n\t\t\t\tduration = this.morphDuration;\r\n\t\t\t}\r\n\r\n\t\t\tif (!$type.hasValue(easing)) {\r\n\t\t\t\teasing = this.morphEasing;\r\n\t\t\t}\r\n\r\n\t\t\tthis._morphFromPointsReal = this.normalizePoints(toPoints, points);\r\n\t\t\tthis._morphToPointsReal = this.normalizePoints(points, toPoints);\r\n\r\n\t\t\tthis.morphable.currentPoints = this._morphFromPointsReal;\r\n\r\n\t\t\tlet animation = new Animation(this, { property: \"morphProgress\", from: 0, to: 1 }, duration, easing);\r\n\t\t\tthis._disposers.push(animation);\r\n\t\t\tanimation.start()\r\n\t\t\treturn animation;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [normalizePoints description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param pointsA Point A\r\n\t * @param pointsB Point B\r\n\t * @return Normalized points\r\n\t */\r\n\tpublic normalizePoints(pointsA: Array<Array<Array<IPoint>>>, pointsB: Array<Array<Array<IPoint>>>): Array<Array<Array<IPoint>>> {\r\n\t\tfor (let i = 0, len = pointsA.length; i < len; i++) {\r\n\t\t\tlet surfaceA: Array<IPoint> = pointsA[i][0];\r\n\r\n\t\t\tlet holeA: Array<IPoint> = pointsA[i][1];\r\n\t\t\tlet bboxA: IRectangle = $type.getValue($math.getBBox(surfaceA));\r\n\r\n\t\t\tlet middleX = bboxA.x + bboxA.width;\r\n\t\t\tlet middleY = bboxA.y + bboxA.height;\r\n\r\n\t\t\t// check if we have the same in PointsB\r\n\t\t\tif (!pointsB[i]) {\r\n\t\t\t\tpointsB[i] = [];\r\n\t\t\t}\r\n\r\n\t\t\t// check if we have surface in pointsB\r\n\t\t\tif (surfaceA && !pointsB[i][0]) {\r\n\t\t\t\tpointsB[i][0] = [{ x: middleX, y: middleY }, { x: middleX, y: middleY }];\r\n\t\t\t}\r\n\r\n\t\t\tif (pointsB[i][0]) {\r\n\t\t\t\tpointsB[i][0] = this.addPoints(pointsB[i][0], surfaceA.length);\r\n\r\n\t\t\t\tlet distance = Infinity;\r\n\t\t\t\tlet splitAt = 0;\r\n\r\n\t\t\t\tfor (let a = 0; a < pointsB[i][0].length; a++) {\r\n\t\t\t\t\tlet newDistance = $math.getDistance(pointsB[i][0][a], surfaceA[0]);\r\n\t\t\t\t\tif (newDistance < distance) {\r\n\t\t\t\t\t\tsplitAt = a;\r\n\t\t\t\t\t\tdistance = newDistance;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet partA = pointsB[i][0].slice(0, splitAt);\r\n\t\t\t\tlet partB = pointsB[i][0].slice(splitAt);\r\n\t\t\t\tpointsB[i][0] = partB.concat(partA);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif (holeA) {\r\n\t\t\t\tif (!pointsB[i][1]) {\r\n\t\t\t\t\tpointsB[i][1] = [{ x: middleX, y: middleY }, { x: middleX, y: middleY }];\r\n\t\t\t\t}\r\n\t\t\t\tpointsB[i][1] = this.addPoints(pointsB[i][1], holeA.length);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn pointsB;\r\n\t}\r\n\r\n\t/**\r\n\t * [sortPoints description]\r\n\t *\r\n\t * @ignore Exclude from doc\r\n\t * @todo Description\r\n\t * @param points [description]\r\n\t * @return common bbox of points\r\n\t */\r\n\tpublic sortPoints(points: Array<Array<Array<IPoint>>>): $type.Optional<IRectangle> {\r\n\t\tpoints.sort(function(a, b) {\r\n\t\t\tlet bbox1: IRectangle = $type.getValue($math.getBBox(a[0]));\r\n\t\t\tlet bbox2: IRectangle = $type.getValue($math.getBBox(b[0]));\r\n\r\n\t\t\tif (bbox1.width * bbox1.height > bbox2.width * bbox2.height) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet bboxes: IRectangle[] = [];\r\n\t\tfor (let i = 0, len = points.length; i < len; i++) {\r\n\t\t\tlet surface: IPoint[] = points[i][0];\r\n\t\t\tif (surface) {\r\n\t\t\t\tbboxes.push($type.getValue($math.getBBox(surface)));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn $math.getCommonRectangle(bboxes);\r\n\t}\r\n\r\n\t/**\r\n\t * Morphs polygon to a circle (it is actually a polygon which makes a circle).\r\n\t *\r\n\t * @param radius Target circle radius (px)\r\n\t * @param duration Duration (ms)\r\n\t * @param easing Easing function\r\n\t * @return Animation\r\n\t */\r\n\tpublic morphToCircle(radius?: number, duration?: number, easing?: (value: number) => number): Animation {\r\n\t\tlet points: Array<Array<Array<IPoint>>> = this.morphable.points;\r\n\r\n\t\tlet commonBBox = this.sortPoints(points);\r\n\r\n\t\tthis._morphFromPointsReal = [];\r\n\t\tthis._morphToPointsReal = [];\r\n\r\n\t\tif (!$type.hasValue(duration)) {\r\n\t\t\tduration = this.morphDuration;\r\n\t\t}\r\n\r\n\t\tif (!$type.hasValue(easing)) {\r\n\t\t\teasing = this.morphEasing;\r\n\t\t}\r\n\r\n\t\t// surface\r\n\t\tfor (let i = 0, len = points.length; i < len; i++) {\r\n\t\t\tlet surface: IPoint[] = points[i][0];\r\n\t\t\tlet hole: IPoint[] = points[i][1];\r\n\r\n\t\t\tthis._morphFromPointsReal[i] = [];\r\n\t\t\tthis._morphToPointsReal[i] = [];\r\n\r\n\t\t\tif (surface) {\r\n\r\n\t\t\t\tlet toPoints: IPoint[] = surface;\r\n\t\t\t\tlet fromPoints: IPoint[] = surface;\r\n\t\t\t\tlet bbox: IRectangle = $type.getValue($math.getBBox(fromPoints)) // this._bboxes[i];\r\n\r\n\t\t\t\tif (this.morphToSingle) {\r\n\t\t\t\t\tbbox = $type.getValue(commonBBox);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet middleX: number = bbox.x + bbox.width / 2;\r\n\t\t\t\tlet middleY: number = bbox.y + bbox.height / 2;\r\n\t\t\t\tlet realRadius: $type.Optional<number> = radius;\r\n\t\t\t\tif (!$type.isNumber(realRadius)) {\r\n\t\t\t\t\trealRadius = Math.min(bbox.width / 2, bbox.height / 2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttoPoints = [];\r\n\r\n\t\t\t\t// find angle for the first point\r\n\t\t\t\tlet startAngle: number = $math.getAngle({ x: middleX, y: middleY }, surface[0]);\r\n\t\t\t\tlet count: number = 100;\r\n\r\n\t\t\t\tif (surface.length > count) {\r\n\t\t\t\t\tcount = surface.length;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfromPoints = this.addPoints(surface, count);\r\n\t\t\t\tcount = fromPoints.length; // add Points might increase number a bit\r\n\r\n\t\t\t\tlet angle: number = 360 / (count - 1);\r\n\r\n\t\t\t\tfor (let a: number = 0; a < count; a++) {\r\n\t\t\t\t\tlet realAngle: number = angle * a + startAngle;\r\n\t\t\t\t\tlet pointOnCircle: IPoint = { x: middleX + realRadius * $math.cos(realAngle), y: middleY + realRadius * $math.sin(realAngle) };\r\n\t\t\t\t\ttoPoints[a] = pointOnCircle;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (hole && hole.length > 0) {\r\n\t\t\t\t\tfor (let i = 0, hlen = hole.length; i < hlen; i++) {\r\n\t\t\t\t\t\ttoPoints.push({ x: middleX, y: middleY });\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._morphFromPointsReal[i][0] = fromPoints;\r\n\t\t\t\tthis._morphToPointsReal[i][0] = toPoints;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.morphable.currentPoints = this._morphFromPointsReal;\r\n\r\n\t\tlet animation = new Animation(this, { property: \"morphProgress\", from: 0, to: 1 }, duration, easing);\r\n\t\tthis._disposers.push(animation);\r\n\t\tanimation.start()\r\n\t\treturn animation;\r\n\t}\r\n\r\n\t/**\r\n\t * [addPoints description]\r\n\t *\r\n\t * @ignore Exclude from doc\r\n\t * @todo Description\r\n\t * @param points [description]\r\n\t * @param mustHaveCount [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic addPoints(points: IPoint[], mustHaveCount: number): IPoint[] {\r\n\t\tlet addToSegmentCount: number = Math.round(mustHaveCount / points.length);\r\n\t\tlet newPoints: IPoint[] = [];\r\n\t\tfor (let i = 0, len = points.length; i < len; i++) {\r\n\t\t\tlet point0: IPoint = points[i];\r\n\t\t\tlet point1: IPoint;\r\n\t\t\tif (i == points.length - 1) {\r\n\t\t\t\tpoint1 = points[0];\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tpoint1 = points[i + 1];\r\n\t\t\t}\r\n\r\n\t\t\tnewPoints.push(point0);\r\n\r\n\t\t\tfor (let p: number = 1; p < addToSegmentCount; p++) {\r\n\t\t\t\tlet percent: number = p / addToSegmentCount;\r\n\t\t\t\tlet extraPoint: IPoint = { x: point0.x + (point1.x - point0.x) * percent, y: point0.y + (point1.y - point0.y) * percent }\r\n\t\t\t\tnewPoints.push(extraPoint);\r\n\t\t\t}\r\n\r\n\t\t\t// stop adding in case we already added more than left in original\r\n\t\t\tif (newPoints.length + points.length - i == mustHaveCount) {\r\n\t\t\t\taddToSegmentCount = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (newPoints.length < mustHaveCount && points.length > 0) {\r\n\t\t\tlet lastPoint: IPoint = points[points.length - 1];\r\n\t\t\tfor (let p: number = newPoints.length; p < mustHaveCount; p++) {\r\n\t\t\t\t// add same as last\r\n\t\t\t\tnewPoints.push({ x: lastPoint.x, y: lastPoint.y });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn newPoints;\r\n\t}\r\n\r\n\t/**\r\n\t * Morphs polygon into a rectangular polygon.\r\n\t *\r\n\t * @param width Width of the target rectangle (px)\r\n\t * @param height Height of the target rectangle (px)\r\n\t * @param duration Duration (ms)\r\n\t * @param easing Easing function\r\n\t * @return Animation\r\n\t */\r\n\tpublic morphToRectangle(width?: number, height?: number, duration?: number, easing?: (value: number) => number): Animation {\r\n\t\tlet points: Array<Array<Array<IPoint>>> = this.morphable.points;\r\n\r\n\t\tthis.sortPoints(points);\r\n\r\n\t\tthis._morphFromPointsReal = [];\r\n\t\tthis._morphToPointsReal = [];\r\n\r\n\t\tif (!$type.hasValue(duration)) {\r\n\t\t\tduration = this.morphDuration;\r\n\t\t}\r\n\r\n\t\tif (!$type.hasValue(easing)) {\r\n\t\t\teasing = this.morphEasing;\r\n\t\t}\r\n\r\n\t\t//\t\tlet biggestBBox: IRectangle = this._bboxes[this._biggestIndex];\r\n\r\n\t\t// surface\r\n\t\tfor (let i = 0, len = points.length; i < len; i++) {\r\n\t\t\tlet surface: IPoint[] = points[i][0];\r\n\t\t\tlet hole: IPoint[] = points[i][1];\r\n\r\n\t\t\tthis._morphFromPointsReal[i] = [];\r\n\t\t\tthis._morphToPointsReal[i] = [];\r\n\r\n\t\t\tif (surface) {\r\n\r\n\t\t\t\tlet toPoints: IPoint[] = surface;\r\n\t\t\t\tlet fromPoints: IPoint[] = surface;\r\n\t\t\t\tlet bbox: IRectangle = this._bboxes[i];\r\n\r\n\r\n\t\t\t\t// we only work with first area. TODO: maybe we should find the biggest one?\r\n\t\t\t\tif (this.morphToSingle) {\r\n\t\t\t\t\t//if (i != this._biggestIndex) {\r\n\t\t\t\t\t//\tbbox = { x: biggestBBox.x + biggestBBox.width / 2, y: biggestBBox.y + biggestBBox.height / 2, width: 0, height: 0 };\r\n\t\t\t\t\t//}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet x: number = bbox.x;\r\n\t\t\t\tlet y: number = bbox.y;\r\n\r\n\t\t\t\tlet realWidth: $type.Optional<number> = width;\r\n\t\t\t\tlet realHeight: $type.Optional<number> = height;\r\n\r\n\t\t\t\tif (!$type.isNumber(realWidth)) {\r\n\t\t\t\t\trealWidth = bbox.width;\r\n\t\t\t\t}\r\n\t\t\t\tif (!$type.isNumber(realHeight)) {\r\n\t\t\t\t\trealHeight = bbox.height;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttoPoints = [{ x: x, y: y }, { x: x + realWidth, y: y }, { x: x + realWidth, y: y + realHeight }, { x: x, y: y + realHeight }];\r\n\t\t\t\ttoPoints = this.addPoints(toPoints, surface.length);\r\n\r\n\t\t\t\t// if polygon has less points then count, add\r\n\t\t\t\tif (surface.length < 4) {\r\n\t\t\t\t\tfor (let i = surface.length; i < 4; i++) {\r\n\t\t\t\t\t\ttoPoints.push({ x: surface[i].x, y: surface[i].y });\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (hole && hole.length > 0) {\r\n\t\t\t\t\tlet middleX: number = bbox.x + bbox.width / 2;\r\n\t\t\t\t\tlet middleY: number = bbox.y + bbox.height / 2;\r\n\r\n\t\t\t\t\tfor (let i = 0, hlen = hole.length; i < hlen; i++) {\r\n\t\t\t\t\t\ttoPoints.push({ x: middleX, y: middleY });\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._morphFromPointsReal[i][0] = fromPoints;\r\n\t\t\t\tthis._morphToPointsReal[i][0] = toPoints;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.morphable.currentPoints = this._morphFromPointsReal;\r\n\r\n\t\tlet animation = new Animation(this, { property: \"morphProgress\", from: 0, to: 1 }, duration, easing);\r\n\t\tthis._disposers.push(animation);\r\n\t\tanimation.start()\r\n\t\treturn animation;\r\n\t}\r\n\r\n\t/**\r\n\t * Progress of the morph transition.\r\n\t *\r\n\t * Setting this will also trigger actual transformation.\r\n\t *\r\n\t * @param value Progress (0-1)\r\n\t */\r\n\tpublic set morphProgress(value: $type.Optional<number>) {\r\n\t\tthis._morphProgress = value;\r\n\r\n\t\tlet currentPoints: Array<Array<Array<IPoint>>> = [];\r\n\r\n\t\tif (value != null) {\r\n\t\t\tlet fromPoints: $type.Optional<Array<Array<Array<IPoint>>>> = this._morphFromPointsReal;\r\n\t\t\tlet toPoints: $type.Optional<Array<Array<Array<IPoint>>>> = this._morphToPointsReal;\r\n\r\n\t\t\tif (fromPoints != null && toPoints != null) {\r\n\r\n\t\t\t\tfor (let i = 0, len = fromPoints.length; i < len; i++) {\r\n\r\n\t\t\t\t\tlet currentArea: Array<Array<IPoint>> = [];\r\n\t\t\t\t\tcurrentPoints.push(currentArea);\r\n\r\n\t\t\t\t\tlet surfaceFrom: IPoint[] = fromPoints[i][0];\r\n\t\t\t\t\tlet holeFrom: IPoint[] = fromPoints[i][1];\r\n\r\n\t\t\t\t\tlet surfaceTo: IPoint[] = toPoints[i][0];\r\n\t\t\t\t\tlet holeTo: IPoint[] = toPoints[i][1];\r\n\r\n\t\t\t\t\tif (surfaceFrom && surfaceFrom.length > 0 && surfaceTo && surfaceTo.length > 0) {\r\n\r\n\t\t\t\t\t\tlet currentSurface: IPoint[] = [];\r\n\r\n\t\t\t\t\t\tfor (let i = 0, slen = surfaceFrom.length; i < slen; i++) {\r\n\t\t\t\t\t\t\tlet point0: IPoint = surfaceFrom[i];\r\n\t\t\t\t\t\t\tlet point1: IPoint = surfaceTo[i];\r\n\r\n\t\t\t\t\t\t\tlet currentPoint: IPoint = { x: point0.x + (point1.x * this.scaleRatio - point0.x) * value, y: point0.y + (point1.y * this.scaleRatio - point0.y) * value }\r\n\r\n\t\t\t\t\t\t\tcurrentSurface.push(currentPoint);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcurrentArea[0] = currentSurface;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (holeFrom && holeFrom.length > 0 && holeTo && holeTo.length > 0) {\r\n\t\t\t\t\t\tlet currentHole: IPoint[] = [];\r\n\t\t\t\t\t\tfor (let i = 0, hlen = holeFrom.length; i < hlen; i++) {\r\n\t\t\t\t\t\t\tlet point0: IPoint = holeFrom[i];\r\n\t\t\t\t\t\t\tlet point1: IPoint = holeTo[i];\r\n\r\n\t\t\t\t\t\t\tlet currentPoint: IPoint = { x: point0.x + (point1.x * this.scaleRatio - point0.x) * value, y: point0.y + (point1.y * this.scaleRatio - point0.y) * value }\r\n\r\n\t\t\t\t\t\t\tcurrentHole.push(currentPoint);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcurrentArea[1] = currentHole;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.morphable.currentPoints = currentPoints;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the progress of morph transition.\r\n\t *\r\n\t * @return Progress (0-1)\r\n\t */\r\n\tpublic get morphProgress(): $type.Optional<number> {\r\n\t\treturn this._morphProgress;\r\n\t}\r\n\r\n\t/**\r\n\t * Restores the polygon to its original appearance.\r\n\t *\r\n\t * @param duration Duration (ms)\r\n\t * @param easing Easing function\r\n\t * @return Animation\r\n\t */\r\n\tpublic morphBack(duration?: number, easing?: (value: number) => number): Animation {\r\n\t\tthis._morphToPointsReal = this._morphFromPointsReal;\r\n\t\tthis._morphFromPointsReal = this.morphable.currentPoints;\r\n\r\n\t\tif (!$type.hasValue(duration)) {\r\n\t\t\tduration = this.morphDuration;\r\n\t\t}\r\n\r\n\t\tif (!$type.hasValue(easing)) {\r\n\t\t\teasing = this.morphEasing;\r\n\t\t}\r\n\r\n\t\tlet animation = new Animation(this, { property: \"morphProgress\", from: 0, to: 1 }, duration, easing);\r\n\t\tthis._disposers.push(animation);\r\n\t\tanimation.start()\r\n\t\treturn animation;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a list of morph animations currently being played.\r\n\t *\r\n\t * @return List of animations\r\n\t */\r\n\tpublic get animations(): Array<Animation> {\r\n\t\tif (!this._animations) {\r\n\t\t\tthis._animations = [];\r\n\t\t\tthis._disposers.push(new AnimationDisposer(this._animations));\r\n\t\t}\r\n\t\treturn this._animations;\r\n\t}\r\n\r\n}\r\n","/**\r\n * Polygon module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite, ISpriteProperties, ISpriteAdapters, ISpriteEvents } from \"../Sprite\";\r\nimport { IPoint } from \"../defs/IPoint\";\r\nimport { Morpher } from \"../utils/Morpher\";\r\nimport { IMorphable } from \"../defs/IMorphable\";\r\nimport { registry } from \"../Registry\";\r\nimport * as $path from \"../rendering/Path\";\r\nimport * as $type from \"../utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Polygon]].\r\n */\r\nexport interface IPolygonProperties extends ISpriteProperties {\r\n\r\n\t/**\r\n\t * An array of X/Y coordinates for each elbow of the polygon.\r\n\t */\r\n\tpoints?: Array<Array<Array<IPoint>>>;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[Polygon]].\r\n */\r\nexport interface IPolygonEvents extends ISpriteEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Polygon]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IPolygonAdapters extends ISpriteAdapters, IPolygonProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Draws a polygon.\r\n *\r\n * @see {@link IPolygonEvents} for a list of available events\r\n * @see {@link IPolygonAdapters} for a list of available Adapters\r\n */\r\nexport class Polygon extends Sprite implements IMorphable {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IPolygonProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IPolygonAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IPolygonEvents;\r\n\r\n\t/**\r\n\t * A morpher instance that is used to morph polygon into some other shape.\r\n\t */\r\n\tprotected _morpher: $type.Optional<Morpher>;\r\n\r\n\t/**\r\n\t * Current points that morpher uses. This is needed so that we don't\r\n\t * overwrite polygons original points.\r\n\t */\r\n\tprotected _currentPoints: Array<Array<Array<IPoint>>>;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"Polygon\";\r\n\t\tthis.element = this.paper.add(\"path\");\r\n\t\tthis.shapeRendering = \"auto\";\r\n\t\tthis._currentPoints = [];\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * An array of X/Y coordinates for each elbow of the polygon.\r\n\t *\r\n\t * @todo Example\r\n\t * @param points Polygon points\r\n\t */\r\n\tpublic set points(points: Array<Array<Array<IPoint>>>) {\r\n\t\tthis.setPropertyValue(\"points\", points, true);\r\n\t\tthis._currentPoints = points;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Polygon points\r\n\t */\r\n\tpublic get points(): Array<Array<Array<IPoint>>> {\r\n\t\tlet points = this.getPropertyValue(\"points\");\r\n\t\tlet path = this.path;\r\n\r\n\t\tif (path && (!points || points.length == 0)) {\r\n\r\n\t\t\tlet valueStr = path.slice(1, path.length - 1);\r\n\r\n\t\t\tlet segments: string[] = valueStr.split(\"ZM\");\r\n\r\n\t\t\tfor (let s = 0; s < segments.length; s++) {\r\n\t\t\t\tlet segment = segments[s];\r\n\t\t\t\tif (segment.length > 0) {\r\n\t\t\t\t\tlet areaHole = segment.split(\"M\");\r\n\r\n\t\t\t\t\tlet areaArr = areaHole[0];\r\n\t\t\t\t\tlet holeArr = areaHole[1];\r\n\r\n\t\t\t\t\tif (areaArr && areaArr.length > 0) {\r\n\r\n\t\t\t\t\t\tlet pointsArr = areaArr.split(\"L\");\r\n\t\t\t\t\t\tif (pointsArr.length > 0) {\r\n\r\n\t\t\t\t\t\t\tlet area: IPoint[] = [];\r\n\r\n\t\t\t\t\t\t\tlet areaAndHole: Array<Array<IPoint>> = [area];\r\n\t\t\t\t\t\t\tpoints.push(areaAndHole);\r\n\r\n\t\t\t\t\t\t\tfor (let p = 0; p < pointsArr.length; p++) {\r\n\t\t\t\t\t\t\t\tlet coords = pointsArr[p].split(\",\");\r\n\t\t\t\t\t\t\t\tarea.push({ x: +coords[0], y: +coords[1] });\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (holeArr && holeArr.length > 0) {\r\n\t\t\t\t\t\t\t\tlet pointsArr = holeArr.split(\"L\");\r\n\t\t\t\t\t\t\t\tif (pointsArr.length > 0) {\r\n\t\t\t\t\t\t\t\t\tlet hole: IPoint[] = [];\r\n\t\t\t\t\t\t\t\t\tareaAndHole.push(hole);\r\n\t\t\t\t\t\t\t\t\tfor (let p = pointsArr.length - 1; p >= 0; p--) {\r\n\t\t\t\t\t\t\t\t\t\tlet coords = pointsArr[p].split(\",\");\r\n\t\t\t\t\t\t\t\t\t\thole.push({ x: +coords[0], y: +coords[1] });\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.setPropertyValue(\"points\", points);\r\n\t\t\tthis._currentPoints = points;\r\n\t\t}\r\n\t\treturn points;\r\n\t}\r\n\r\n\t/**\r\n\t * Current points. Used when morphing the element, so that original `points`\r\n\t * are not overwritten.\r\n\t *\r\n\t * @param points Polygon points\r\n\t */\r\n\tpublic set currentPoints(points: Array<Array<Array<IPoint>>>) {\r\n\t\tif (this._currentPoints != points) {\r\n\t\t\tthis._currentPoints = points;\r\n\t\t\tthis.draw();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Polygon points\r\n\t */\r\n\tpublic get currentPoints(): Array<Array<Array<IPoint>>> {\r\n\t\tif((!this._currentPoints || this._currentPoints.length == 0) && this.path){\r\n\t\t\tthis._currentPoints = this.points;\r\n\t\t}\r\n\t\treturn this._currentPoints;\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tlet path: string = \"\";\r\n\t\tlet points: Array<Array<Array<IPoint>>> = this._currentPoints;\r\n\r\n\t\tlet left: $type.Optional<number>;\r\n\t\tlet right: $type.Optional<number>;\r\n\t\tlet top: $type.Optional<number>;\r\n\t\tlet bottom: $type.Optional<number>;\r\n\r\n\t\tif (points.length > 0) {\r\n\t\t\t// separate areas\r\n\t\t\tfor (let i = 0, len = points.length; i < len; i++) {\r\n\t\t\t\t// surface\r\n\t\t\t\tlet surface: IPoint[] = points[i][0];\r\n\t\t\t\tlet hole: IPoint[] = points[i][1];\r\n\r\n\t\t\t\tif (surface && surface.length > 0) {\r\n\t\t\t\t\tlet point: IPoint = surface[0];\r\n\r\n\t\t\t\t\tpath += $path.moveTo(point);\r\n\r\n\t\t\t\t\tfor (let s: number = 0; s < surface.length; s++) {\r\n\t\t\t\t\t\tpoint = surface[s];\r\n\t\t\t\t\t\tpath += $path.lineTo(point);\r\n\r\n\t\t\t\t\t\tif (!$type.isNumber(right) || (right < point.x)) {\r\n\t\t\t\t\t\t\tright = point.x;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (!$type.isNumber(left) || (left > point.x)) {\r\n\t\t\t\t\t\t\tleft = point.x;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!$type.isNumber(top) || (top > point.y)) {\r\n\t\t\t\t\t\t\ttop = point.y;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (!$type.isNumber(bottom) || (bottom < point.y)) {\r\n\t\t\t\t\t\t\tbottom = point.y;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// hole\r\n\t\t\t\tif (hole && hole.length > 0) {\r\n\t\t\t\t\tlet point: IPoint = hole[0];\r\n\t\t\t\t\tpath += $path.moveTo(point);\r\n\r\n\t\t\t\t\tfor (let h = 0, hlen = hole.length; h < hlen; h++) {\r\n\t\t\t\t\t\tpoint = hole[h];\r\n\t\t\t\t\t\tpath += $path.lineTo(point);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (path) {\r\n\t\t\t\tpath += $path.closePath();\r\n\t\t\t}\r\n\r\n\t\t\tthis.bbox.x = left;\r\n\t\t\tthis.bbox.y = top;\r\n\t\t\tthis.bbox.width = right - left;\r\n\t\t\tthis.bbox.height = bottom - top;\r\n\r\n\t\t\tsuper.setPath(path);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected setPath(value: string): boolean {\r\n\t\tif (super.setPath(value)) {\r\n\t\t\tthis.points = [];\r\n\t\t\tthis._bbox = this.group.getBBox();\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Measures element\r\n\t */\r\n\tprotected measureElement(): void {\r\n\r\n\t\t// Overriding to avoid extra measurement.\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * A calculated center point for the shape.\r\n\t *\r\n\t * @readonly\r\n\t * @return Center\r\n\t */\r\n\tpublic get centerPoint(): IPoint {\r\n\t\treturn { x: this.bbox.x + this.bbox.width / 2, y: this.bbox.y + this.bbox.height / 2 };\r\n\t}\r\n\r\n\t/**\r\n\t * A [[Morpher]] instance that is used to morph polygon into some other\r\n\t * shape.\r\n\t *\r\n\t * @readonly\r\n\t * @return Morpher instance\r\n\t */\r\n\tpublic get morpher(): Morpher {\r\n\t\tif (!this._morpher) {\r\n\t\t\tthis._morpher = new Morpher(this);\r\n\t\t\tthis._disposers.push(this._morpher);\r\n\t\t}\r\n\t\treturn this._morpher;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Polygon\"] = Polygon;\r\n","/**\r\n * Preloader module.\r\n *\r\n * Preloader is a progress indicator.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container, IContainerProperties, IContainerAdapters, IContainerEvents } from \"../Container\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { Slice } from \"./Slice\";\r\nimport { Label } from \"./Label\";\r\nimport { registry } from \"../Registry\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Preloader]].\r\n */\r\nexport interface IPreloaderProperties extends IContainerProperties {\r\n\r\n\t/**\r\n\t * Current preload progress. (0-1)\r\n\t *\r\n\t * * 0 - 0%\r\n\t * * 0.5 - 50%\r\n\t * * 1 - 100%\r\n\t */\r\n\tprogress?: number;\r\n\r\n\t/**\r\n\t * Delay display of preloader by X milliseconds.\r\n\t *\r\n\t * When loading starts (`progress` is set to <1) and finishes (`progress` is\r\n\t * set to 1) before `delay` ms, the loader is never shown.\r\n\t *\r\n\t * This is used to avoid brief flashing of the preload for very quick loads.\r\n\t *\r\n\t * @default 1000\r\n\t */\r\n\tdelay?: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[Preloader]].\r\n */\r\nexport interface IPreloaderEvents extends IContainerEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Preloader]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IPreloaderAdapters extends IContainerAdapters, IPreloaderProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A class used to draw and display progress indicator.\r\n *\r\n * @see {@link IPreloaderEvents} for a list of available events\r\n * @see {@link IPreloaderAdapters} for a list of available Adapters\r\n */\r\nexport class Preloader extends Container {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IPreloaderProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IPreloaderAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IPreloaderEvents;\r\n\r\n\t/**\r\n\t * A [[Slice]] element that indicates load progress.\r\n\t *\r\n\t * This can be used to modify appearance of the preloader elements.\r\n\t */\r\n\tpublic progressSlice: Slice;\r\n\r\n\t/**\r\n\t * A [[Slice]] element that shows the full ring. (background for the\r\n\t * `progressSlice`)\r\n\t *\r\n\t * This can be used to modify appearance of the preloader elements.\r\n\t */\r\n\tpublic backgroundSlice: Slice;\r\n\r\n\t/**\r\n\t * Label that displays progress in percent.\r\n\t *\r\n\t * This can be used to modify appearance of the preloader elements.\r\n\t */\r\n\tpublic label: Label;\r\n\r\n\t/**\r\n\t * Logs the timestamp of when the loader was initiated. It will be used to\r\n\t * delay showing of the Preloader so for quick operations it does not even\r\n\t * appear on screen.\r\n\t */\r\n\tprotected _started: $type.Optional<number>;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"Preloader\";\r\n\r\n\t\t// Set dimensions\r\n\t\tthis.width = percent(100);\r\n\t\tthis.height = percent(100);\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\r\n\t\t// Create main container\r\n\t\tlet sliceContainer: Container = this.createChild(Container);\r\n\t\tsliceContainer.shouldClone = false;\r\n\r\n\t\t// Add background (100%) slice\r\n\t\tlet backgroundSlice: Slice = sliceContainer.createChild(Slice);\r\n\t\tbackgroundSlice.shouldClone = false;\r\n\t\tbackgroundSlice.radius = 53;\r\n\t\tbackgroundSlice.arc = 360;\r\n\t\tbackgroundSlice.fill = interfaceColors.getFor(\"fill\");\r\n\t\tbackgroundSlice.fillOpacity = 0.8;\r\n\t\tbackgroundSlice.innerRadius = 42;\r\n\t\tbackgroundSlice.isMeasured = false;\r\n\t\tthis.backgroundSlice = backgroundSlice;\r\n\r\n\t\t// Add progress slice\r\n\t\tlet progressSlice: Slice = sliceContainer.createChild(Slice);\r\n\t\tprogressSlice.shouldClone = false;\r\n\t\tprogressSlice.radius = 50;\r\n\t\tprogressSlice.innerRadius = 45;\r\n\t\tprogressSlice.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n\t\tprogressSlice.fillOpacity = 0.2;\r\n\t\tprogressSlice.isMeasured = false;\r\n\t\tthis.progressSlice = progressSlice;\r\n\r\n\t\t// Add text label element\r\n\t\tlet label: Label = sliceContainer.createChild(Label);\r\n\t\tlabel.shouldClone = false;\r\n\t\tlabel.horizontalCenter = \"middle\";\r\n\t\tlabel.verticalCenter = \"middle\";\r\n\t\tlabel.isMeasured = false;\r\n\t\tlabel.fill = interfaceColors.getFor(\"text\");\r\n\t\tlabel.align = \"center\";\r\n\t\tlabel.valign = \"middle\";\r\n\t\tlabel.fillOpacity = 0.4;\r\n\t\tthis.label = label;\r\n\r\n\t\t// Set defaults\r\n\t\tthis.background.opacity = 1;\r\n\t\tthis.background.fill = interfaceColors.getFor(\"background\");\r\n\t\tthis.contentAlign = \"center\";\r\n\t\tthis.contentValign = \"middle\";\r\n\t\tthis.delay = 300;\r\n\r\n\t\t// Create hidden state\r\n\t\tlet hiddenState = this.states.create(\"hidden\");\r\n\t\thiddenState.properties.opacity = 0;\r\n\r\n\t\t// Hide by default\r\n\t\tthis.visible = false;\r\n\t\tthis.hide(0);\r\n\t\tthis.__disabled = true;\r\n\r\n\t\t// Make it disposable\r\n\t\t// @todo Maybe it's enough to just dispose `sliceContainer`?\r\n\t\tthis._disposers.push(this.backgroundSlice);\r\n\t\tthis._disposers.push(this.progressSlice);\r\n\t\tthis._disposers.push(this.label);\r\n\t\tthis._disposers.push(sliceContainer);\r\n\t}\r\n\r\n\t/**\r\n\t * Current preload progress. (0-1)\r\n\t *\r\n\t * * 0 - 0%\r\n\t * * 0.5 - 50%\r\n\t * * 1 - 100%\r\n\t *\r\n\t * Setting this to a value less than 1, will automatically reveal the\r\n\t * preloader, while setting it to 1 (100%) will hide it.\r\n\t *\r\n\t * @param value Progress (0-1)\r\n\t */\r\n\tpublic set progress(value: number) {\r\n\t\tthis.__disabled = false;\r\n\r\n\t\tthis.validateLayout(); // show not in center without this\r\n\r\n\t\tthis.setPropertyValue(\"progress\", value);\r\n\r\n\t\t/*if (!this.visible && value == 1) {\r\n\t\t\treturn;\r\n\t\t}*/\r\n\r\n\t\tthis.progressSlice.arc = 360 * value;\r\n\r\n\t\tif (this.label) {\r\n\t\t\tthis.label.text = Math.round(value * 100) + \"%\";\r\n\t\t}\r\n\r\n\t\tif (value >= 1) {\r\n\r\n\t\t\t// Cancel the timeout\r\n\t\t\tif (this._started) {\r\n\t\t\t\tthis._started = undefined;\r\n\t\t\t}\r\n\r\n\t\t\t// TODO remove closure ?\r\n\t\t\tregistry.events.once(\"enterframe\", () => {\r\n\t\t\t\tlet animation = this.hide();\r\n\t\t\t\tif (animation && !animation.isFinished()) {\r\n\t\t\t\t\tanimation.events.once(\"animationended\", () => {\r\n\t\t\t\t\t\tthis.__disabled = true;\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.__disabled = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.interactionsEnabled = false;\r\n\t\t\tthis.setPropertyValue(\"progress\", 0);\r\n\t\t}\r\n\t\telse if (value > 0) {\r\n\t\t\tif (this.delay) {\r\n\t\t\t\tif (!this._started) {\r\n\t\t\t\t\tthis._started = new Date().getTime();\r\n\t\t\t\t}\r\n\t\t\t\telse if ((this._started + this.delay) <= new Date().getTime()) {\r\n\t\t\t\t\tthis.__disabled = false;\r\n\t\t\t\t\tthis.show();\r\n\t\t\t\t\tthis.interactionsEnabled = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.__disabled = false;\r\n\t\t\t\tthis.show();\r\n\t\t\t\tthis.interactionsEnabled = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @return Progress (0-1)\r\n\t */\r\n\tpublic get progress(): number {\r\n\t\treturn this.getPropertyValue(\"progress\");\r\n\t}\r\n\r\n\t/**\r\n\t * Delay display of preloader by X milliseconds.\r\n\t *\r\n\t * When loading starts (`progress` is set to <1) and finishes (`progress` is\r\n\t * set to 1) before `delay` ms, the loader is never shown.\r\n\t *\r\n\t * This is used to avoid brief flashing of the preload for very quick loads.\r\n\t *\r\n\t * @default 1000\r\n\t * @param value Delay (ms)\r\n\t */\r\n\tpublic set delay(value: number) {\r\n\t\tthis.setPropertyValue(\"delay\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Delay (ms)\r\n\t */\r\n\tpublic get delay(): number {\r\n\t\treturn this.getPropertyValue(\"delay\");\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Preloader\"] = Preloader;\r\n","/**\r\n * Slider is a scrollbar with just one selection grip.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Scrollbar, IScrollbarProperties, IScrollbarAdapters, IScrollbarEvents } from \"../../core/elements/Scrollbar\";\r\nimport { registry } from \"../Registry\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Slider]].\r\n */\r\nexport interface ISliderProperties extends IScrollbarProperties { }\r\n\r\n/**\r\n * Defines events for [[Slider]].\r\n */\r\nexport interface ISliderEvents extends IScrollbarEvents { }\r\n\r\n/**\r\n * Defines adapters for [[Slider]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ISliderAdapters extends IScrollbarAdapters, ISliderProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates a slider - a version of scrollbar with just one grip.\r\n *\r\n * @see {@link ISliderEvents} for a list of available events\r\n * @see {@link ISliderAdapters} for a list of available Adapters\r\n */\r\nexport class Slider extends Scrollbar {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ISliderProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ISliderAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ISliderEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"Slider\";\r\n\r\n\t\tthis.thumb.opacity = 0;\r\n\t\tthis.thumb.interactionsEnabled = false;\r\n\t\tthis.endGrip.opacity = 0;\r\n\t\tthis.endGrip.interactionsEnabled = false;\r\n\r\n\t\tthis.startGrip.events.on(\"drag\", () => {\r\n\t\t\tthis.endGrip.x = this.startGrip.x;\r\n\t\t\tthis.endGrip.y = this.startGrip.y;\r\n\t\t})\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @return [description]\r\n\t */\r\n\tprotected get __end(): number {\r\n\t\treturn this._start;\r\n\t}\r\n\r\n\tprotected set __end(value: number) {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @return [description]\r\n\t */\r\n\tpublic get end(): number {\r\n\t\treturn this._start;\r\n\t}\r\n\r\n\t/**\r\n\t * Relative position (0-1) of the end grip.\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t */\r\n\tpublic set end(position: number) {\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Relative position (0-1) of the start grip.\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t */\r\n\tpublic set start(position: number) {\r\n\t\tif (!this._isBusy) {\r\n\t\t\tthis.__start = position;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Position (0-1)\r\n\t */\r\n\tpublic get start(): number {\r\n\t\treturn this._start;\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Slider\"] = Slider;\r\n","/**\r\n * Play button functionality.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Button, IButtonProperties, IButtonAdapters, IButtonEvents } from \"./Button\";\r\nimport { RoundedRectangle } from \"./RoundedRectangle\";\r\nimport { registry } from \"../Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { Triangle } from \"./Triangle\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[PlayButton]].\r\n */\r\nexport interface IPlayButtonProperties extends IButtonProperties { }\r\n\r\n/**\r\n * Defines events for [[PlayButton]].\r\n */\r\nexport interface IPlayButtonEvents extends IButtonEvents { }\r\n\r\n/**\r\n * Defines adapters for [[PlayButton]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IPlayButtonAdapters extends IButtonAdapters, IPlayButtonProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates a zoom out button.\r\n *\r\n * @see {@link IPlayButtonEvents} for a list of available events\r\n * @see {@link IPlayButtonAdapters} for a list of available Adapters\r\n */\r\nexport class PlayButton extends Button {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IPlayButtonProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IPlayButtonAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IPlayButtonEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"PlayButton\";\r\n\r\n\t\tthis.padding(12, 12, 12, 12);\r\n\r\n\t\tthis.showSystemTooltip = true;\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\r\n\t\tlet background: RoundedRectangle = this.background;\r\n\t\tbackground.cornerRadius(25, 25, 25, 25);\r\n\t\tbackground.fill = interfaceColors.getFor(\"primaryButton\");\r\n\t\tbackground.stroke = interfaceColors.getFor(\"primaryButtonStroke\");\r\n\t\tbackground.strokeOpacity = 0;\r\n\r\n\t\tbackground.states.getKey(\"hover\").properties.fill = interfaceColors.getFor(\"primaryButtonHover\");\r\n\t\tbackground.states.getKey(\"down\").properties.fill = interfaceColors.getFor(\"primaryButtonActive\");\r\n\r\n\t\t// Create a play icon\r\n\t\tlet playIcon: Triangle = new Triangle();\r\n\t\tplayIcon.direction = \"right\";\r\n\t\tplayIcon.width = 9;\r\n\t\tplayIcon.height = 11;\r\n\t\tplayIcon.marginLeft = 1;\r\n\t\tplayIcon.marginRight = 1;\r\n\t\tplayIcon.horizontalCenter = \"middle\";\r\n\t\tplayIcon.verticalCenter = \"middle\";\r\n\r\n\t\tplayIcon.stroke = interfaceColors.getFor(\"primaryButtonText\");\r\n\t\tplayIcon.fill = playIcon.stroke;\r\n\t\tthis.icon = playIcon;\r\n\r\n\t\t// Create a play icon\r\n\t\tlet stopIcon: RoundedRectangle = new RoundedRectangle();\r\n\t\tstopIcon.width = 11;\r\n\t\tstopIcon.height = 11;\r\n\t\tstopIcon.horizontalCenter = \"middle\";\r\n\t\tstopIcon.verticalCenter = \"middle\";\r\n\t\tstopIcon.cornerRadius(0, 0, 0, 0);\r\n\r\n\t\tstopIcon.stroke = interfaceColors.getFor(\"primaryButtonText\");\r\n\t\tstopIcon.fill = playIcon.stroke;\r\n\r\n\t\tthis.togglable = true;\r\n\r\n\t\tlet activeState = this.states.create(\"active\");\r\n\t\tactiveState.transitionDuration = 0;\r\n\t\tactiveState.properties.icon = stopIcon;\r\n\r\n\t\tthis.defaultState.transitionDuration = 0;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets defaults that instantiate some objects that rely on parent, so they\r\n\t * cannot be set in constructor.\r\n\t */\r\n\tprotected applyInternalDefaults(): void {\r\n\t\tsuper.applyInternalDefaults();\r\n\t\tif (!$type.hasValue(this.readerTitle)) {\r\n\t\t\tthis.readerTitle = this.language.translate(\"Play\");\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PlayButton\"] = PlayButton;\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { RadialGradient } from \"./RadialGradient\";\r\nimport { GradientModifier } from \"./GradientModifier\";\r\nimport { registry } from \"../../Registry\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * This class can be used to modify radial gradient steps, changing visual\r\n * properties like lightness, brightness, opacity of each set.\r\n *\r\n * It can also set offsets for each gradient step.\r\n *\r\n * E.g. if I want to fill a columns in a column series to be a solid fill from\r\n * top to 80% of height, then gradually fades out, I can use the following\r\n * gradient modifier as a `fillModifier`:\r\n *\r\n * ```TypeScript\r\n * let fillModifier = new am4core.LinearGradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JavaScript\r\n * var fillModifier = new am4core.LinearGradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JSON\r\n * \"series\": [{\r\n * \"type\": \"ColumnSeries\",\r\n * \"columns\": {\r\n * \"fillModifier\": {\r\n * \"type\": \"LinearGradientModifier\",\r\n * \"opacities\": [1, 1, 0],\r\n * \"offsets\": [0, 0.8, 1]\r\n * }\r\n * }\r\n * }]\r\n * ```\r\n */\r\nexport class RadialGradientModifier extends GradientModifier {\r\n\t/**\r\n\t * A reference to the gradient instance that this modifier is used for.\r\n\t */\r\n\tpublic gradient: RadialGradient;\r\n\t/**\r\n\t * Constructor.\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"RadialGradientModifier\";\r\n\t\tthis.gradient = new RadialGradient();\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\r\n\tpublic copyFrom(source: this) {\r\n\t\tsuper.copyFrom(source);\r\n\t\tthis.gradient = source.gradient.clone();\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadialGradientModifier\"] = RadialGradientModifier;\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Pattern, PatternProperties } from \"./Pattern\";\r\nimport { AMElement } from \"../AMElement\";\r\nimport { registry } from \"../../Registry\";\r\nimport * as $path from \"../../rendering/Path\";\r\n\r\nexport interface LinePatternProperties extends PatternProperties {\r\n\tgap: number;\r\n};\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Line pattern.\r\n */\r\nexport class LinePattern extends Pattern {\r\n\r\n\t/**\r\n\t * SVG `<line>` element used for pattern.\r\n\t */\r\n\tprotected _line: AMElement;\r\n\r\n\t/**\r\n\t * Defines property types.\r\n\t */\r\n\tpublic _properties!: LinePatternProperties;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.properties[\"gap\"] = 0;\r\n\t\tthis._line = this.paper.add(\"path\");\r\n\t\tthis.addElement(this._line);\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the pattern.\r\n\t */\r\n\tprotected draw(): void {\r\n\t\tsuper.draw();\r\n\t\tif (Math.round(this.rotation / 90) != this.rotation / 90) {\r\n\t\t\tthis.properties[\"shapeRendering\"] = \"auto\";\r\n\t\t}\r\n\t\tif (this._line) {\r\n\t\t\tlet w = this.width;\r\n\t\t\tlet h = this.height;\r\n\r\n\t\t\tlet path = \"\";\r\n\r\n\t\t\tif (!this.gap) {\r\n\t\t\t\tif (Math.round(this.rotation / 90) != this.rotation / 90) {\r\n\t\t\t\t\tpath = $path.moveTo({ x: -w, y: h / 2 }) + $path.lineTo({ x: w * 2, y: h / 2 });\r\n\r\n\t\t\t\t\tthis.properties[\"rotationX\"] = this.width / 2;\r\n\t\t\t\t\tthis.properties[\"rotationY\"] = this.height / 2;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tpath = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: w, y: 0 });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet step = this.gap + this.strokeWidth;\r\n\t\t\t\tlet count = this.height / step;\r\n\r\n\t\t\t\tfor (let i = -count / 2; i < count * 1.5; i++) {\r\n\t\t\t\t\tif (Math.round(this.rotation / 90) != this.rotation / 90) {\r\n\t\t\t\t\t\tpath += $path.moveTo({ x: -w, y: (i + 0.5) * step }) + $path.lineTo({ x: w * 2, y: (i + 0.5) * step });\r\n\r\n\t\t\t\t\t\tthis.properties[\"rotationX\"] = this.width / 2;\r\n\t\t\t\t\t\tthis.properties[\"rotationY\"] = this.height / 2;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tpath += $path.moveTo({ x: -w, y: i * step }) + $path.lineTo({ x: w * 2, y: i * step });\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis._line.attr({ \"d\": path });\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Number of pixels between pattern lines.\r\n\t *\r\n\t * The pattern will automatically draw required number of lines to fill\r\n\t * pattern area maintaining `gap` distance between them.\r\n\t *\r\n\t * 0 (zero) means only single line will be drawn.\r\n\t *\r\n\t * @default 0\r\n\t * @since 4.7.7\r\n\t */\r\n\tpublic set gap(value: number) {\r\n\t\tthis.properties[\"gap\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * @return gap\r\n\t */\r\n\tpublic get gap(): number {\r\n\t\treturn this.properties[\"gap\"];\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LinePattern\"] = LinePattern;\r\n","/**\r\n * Rectangular pattern module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Pattern, PatternProperties } from \"./Pattern\";\r\nimport { AMElement } from \"../AMElement\";\r\nimport { registry } from \"../../Registry\";\r\nimport * as $type from \"../../utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for circle pattern\r\n */\r\nexport interface CirclePatternProperties extends PatternProperties {\r\n\tradius: number;\r\n};\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Circular pattern\r\n */\r\nexport class CirclePattern extends Pattern {\r\n\r\n\t/**\r\n\t * Reference to `<circle>` element used in pattern.\r\n\t */\r\n\tprotected _circle: $type.Optional<AMElement>;\r\n\r\n\t/**\r\n\t * Defines property types.\r\n\t */\r\n\tpublic _properties!: CirclePatternProperties;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.properties[\"radius\"] = 2;\r\n\t\tthis._circle = this.paper.add(\"circle\");\r\n\t\tthis.addElement(this._circle);\r\n\t\tthis.shapeRendering = \"auto\";\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the circle element.\r\n\t */\r\n\tprotected draw(): void {\r\n\t\tsuper.draw();\r\n\t\tif (this._circle) {\r\n\t\t\tthis._circle.attr({ \"r\": this.radius, \"cx\": this.width / 2, \"cy\":this.height / 2});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Circle radius in pixels.\r\n\t *\r\n\t * @param value Radius (px)\r\n\t */\r\n\tpublic set radius(value: number) {\r\n\t\tthis.properties[\"radius\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Radius (px)\r\n\t */\r\n\tpublic get radius(): number {\r\n\t\treturn this.properties[\"radius\"];\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CirclePattern\"] = CirclePattern;\r\n","/**\r\n * Rectangular pattern module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Pattern, PatternProperties } from \"./Pattern\";\r\nimport { AMElement } from \"../AMElement\";\r\nimport { registry } from \"../../Registry\";\r\nimport * as $type from \"../../utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for rectangular pattern\r\n */\r\nexport interface RectPatternProperties extends PatternProperties {\r\n\trectWidth: number;\r\n\trectHeight: number;\r\n};\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Rectangular pattern\r\n */\r\nexport class RectPattern extends Pattern {\r\n\r\n\t/**\r\n\t * Reference to `<rect>` element used in pattern.\r\n\t */\r\n\tprotected _rect: $type.Optional<AMElement>;\r\n\r\n\t/**\r\n\t * Defines property types.\r\n\t */\r\n\tpublic _properties!: RectPatternProperties;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.rectHeight = 1;\r\n\t\tthis.rectWidth = 1;\r\n\t\tthis._rect = this.paper.add(\"rect\");\r\n\t\tthis.addElement(this._rect);\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the rectangular element.\r\n\t */\r\n\tprotected draw(): void {\r\n\t\tsuper.draw();\r\n\t\tthis.properties[\"rotationX\"] = this.width / 2;\r\n\t\tthis.properties[\"rotationY\"] = this.height / 2;\t\t\r\n\t\tif (this._rect) {\r\n\t\t\tthis._rect.attr({ \"width\": this.rectWidth, \"height\": this.rectHeight, \"x\":(this.width - this.rectWidth) / 2, \"y\":(this.height - this.rectHeight) / 2 });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Rectangle width in pixels.\r\n\t *\r\n\t * @param value Width (px)\r\n\t */\r\n\tpublic set rectWidth(value: number) {\r\n\t\tthis.properties[\"rectWidth\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Width (px)\r\n\t */\r\n\tpublic get rectWidth(): number {\r\n\t\treturn this.properties[\"rectWidth\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Rectangle height in pixels.\r\n\t *\r\n\t * @param value Height (px)\r\n\t */\r\n\tpublic set rectHeight(value: number) {\r\n\t\tthis.properties[\"rectHeight\"] = value;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Height (px)\r\n\t */\r\n\tpublic get rectHeight(): number {\r\n\t\treturn this.properties[\"rectHeight\"];\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RectPattern\"] = RectPattern;\r\n","/**\r\n * Module for \"Colorize\" filter.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Filter, FilterProperties } from \"./Filter\";\r\nimport { AMElement } from \"../AMElement\";\r\nimport { Color } from \"../../utils/Color\";\r\nimport { registry } from \"../../Registry\";\r\nimport * as $type from \"../../utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines additional properties relative to the \"Colorize\" filter.\r\n */\r\nexport interface ColorizeFilterProperties extends FilterProperties {\r\n\r\n\t/**\r\n\t * Color.\r\n\t */\r\n\tcolor?: Color;\r\n\r\n\t/**\r\n\t * Intensity. (0-1)\r\n\t *\r\n\t * @default 1\r\n\t */\r\n\tintensity: number;\r\n\r\n};\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates a \"Colorize\" filter.\r\n */\r\nexport class ColorizeFilter extends Filter {\r\n\r\n\t/**\r\n\t * Defines property types.\r\n\t */\r\n\tpublic _properties!: ColorizeFilterProperties;\r\n\r\n\t/**\r\n\t * A storage for Filter property/value pairs.\r\n\t * @see [@link ColorizeFilterProperties]\r\n\t */\r\n\t//public propertyValues: Dictionary<ColorizeFilterProperties, any>;\r\n\r\n\t/**\r\n\t * Reference to the `<feColorMatrix>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic feColorMatrix: AMElement;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"ColorizeFilter\";\r\n\r\n\t\t// Create elements\r\n\t\t// NOTE: we do not need to add each individual element to `_disposers`\r\n\t\t// because `filterPrimitives` has an event handler which automatically adds\r\n\t\t// anything added to it to `_disposers`\r\n\t\tthis.feColorMatrix = this.paper.add(\"feColorMatrix\");\r\n\t\tthis.feColorMatrix.attr({ \"type\": \"matrix\" });\r\n\t\t//this.feColorMatrix.setAttribute(\"in\", \"SourceAlpha\");\r\n\t\tthis.filterPrimitives.push(this.feColorMatrix);\r\n\r\n\t\t// Set default properties\r\n\t\tthis.intensity = 1;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)applies colors to the already existing filter by modifying filyer's\r\n\t * color matrix element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic applyFilter(): void {\r\n\r\n\t\tlet i: number = this.intensity;\r\n\t\tlet ii = 1 - i;\r\n\r\n\t\tlet r: number;\r\n\t\tlet g: number;\r\n\t\tlet b: number;\r\n\r\n\t\tconst color = this.color;\r\n\r\n\t\tif (color && color.rgb) {\r\n\t\t\tr = color.rgb.r / 255 * i;\r\n\t\t\tg = color.rgb.g / 255 * i;\r\n\t\t\tb = color.rgb.b / 255 * i;\r\n\r\n\t\t} else {\r\n\t\t\tr = 0;\r\n\t\t\tg = 0;\r\n\t\t\tb = 0;\r\n\t\t}\r\n\r\n\t\tthis.feColorMatrix.attr({ \"values\": ii + \" 0 0 0 \" + r + \" 0 \" + ii + \" 0 0 \" + g + \" 0 0 \" + ii + \" 0 \" + b + \" 0 0 0 1 0\" });\r\n\t}\r\n\r\n\t/**\r\n\t * Target color to apply to the element.\r\n\t *\r\n\t * Depending on the `intensity`, all colors of the target element will steer\r\n\t * towards this color.\r\n\t *\r\n\t * E.g. setting to `am4core.color(\"greener\")` will make all colors greener.\r\n\t *\r\n\t * @param value Color\r\n\t */\r\n\tpublic set color(value: $type.Optional<Color>) {\r\n\t\tthis.properties[\"color\"] = value;\r\n\t\tthis.applyFilter();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Color\r\n\t */\r\n\tpublic get color(): $type.Optional<Color> {\r\n\t\treturn this.properties[\"color\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Intensity of the color (0-1).\r\n\t *\r\n\t * The bigger the number the more of a `color` target's colors will become.\r\n\t *\r\n\t * 0 means the colors will remain as they are.\r\n\t * 1 means all colors will become the target `color`.\r\n\t *\r\n\t * @default 1\r\n\t * @param value Intensity (0-1)\r\n\t */\r\n\tpublic set intensity(value: number) {\r\n\t\tthis.properties.intensity = value;\r\n\t\tthis.applyFilter();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Intensity (0-1)\r\n\t */\r\n\tpublic get intensity(): number {\r\n\t\treturn this.properties.intensity;\r\n\t}\r\n\r\n}\r\n\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ColorizeFilter\"] = ColorizeFilter;\r\n","/**\r\n * Module for \"Blur\" filter.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Filter, FilterProperties } from \"./Filter\";\r\nimport { AMElement } from \"../AMElement\";\r\nimport { Color } from \"../../utils/Color\";\r\nimport { registry } from \"../../Registry\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines additional properties relative to the \"Blur\" filter.\r\n */\r\nexport interface BlurFilterProperties extends FilterProperties {\r\n\r\n\t/**\r\n\t * Horizontal offset in pixels.\r\n\t *\r\n\t * @ignore Deprecated\r\n\t * @deprecated ?\r\n\t * @todo Remove?\r\n\t */\r\n\tdx?: number;\r\n\r\n\t/**\r\n\t * Vertical offset in pixels.\r\n\t *\r\n\t * @ignore Deprecated\r\n\t * @deprecated ?\r\n\t * @todo Remove?\r\n\t */\r\n\tdy?: number;\r\n\r\n\t/**\r\n\t * Blur value.\r\n\t */\r\n\tblur: number;\r\n\r\n\t/**\r\n\t * Opacity. (0-1)\r\n\t *\r\n\t * @ignore Deprecated\r\n\t * @deprecated ?\r\n\t * @todo Remove?\r\n\t */\r\n\topacity?: number;\r\n\r\n\t/**\r\n\t * Color.\r\n\t *\r\n\t * @ignore Deprecated\r\n\t * @deprecated ?\r\n\t * @todo Remove?\r\n\t */\r\n\tcolor?: Color;\r\n\r\n};\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates a \"Blur\" filter.\r\n */\r\nexport class BlurFilter extends Filter {\r\n\r\n\t/**\r\n\t * Defines property types.\r\n\t */\r\n\tpublic _properties!: BlurFilterProperties;\r\n\r\n\t/**\r\n\t * A storage for Filter property/value pairs.\r\n\t * @see [@link BlurFilterProperties]\r\n\t */\r\n\t//public propertyValues: Dictionary<BlurFilterProperties, any>;\r\n\r\n\t/**\r\n\t * Reference to the `<feGaussianBlur>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic feGaussianBlur: AMElement;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.className = \"BlurFilter\";\r\n\r\n\t\t// Create elements\r\n\t\t// NOTE: we do not need to add each individual element to `_disposers`\r\n\t\t// because `filterPrimitives` has an event handler which automatically adds\r\n\t\t// anything added to it to `_disposers`\r\n\r\n\t\tthis.feGaussianBlur = this.paper.add(\"feGaussianBlur\");\r\n\t\tthis.feGaussianBlur.attr({ \"result\": \"blurOut\", \"in\": \"SourceGraphic\" });\r\n\t\tthis.filterPrimitives.push(this.feGaussianBlur);\r\n\r\n\t\t// Set default properties\r\n\t\tthis.width = 200;\r\n\t\tthis.height = 200;\r\n\t\tthis.blur = 1.5;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Blur value.\r\n\t *\r\n\t * The bigger the value, the blurrier the target element will become.\r\n\t *\r\n\t * @default 1.5\r\n\t * @param value Blur\r\n\t */\r\n\tpublic set blur(value: number) {\r\n\t\tthis.properties.blur = value;\r\n\t\tthis.feGaussianBlur.attr({ \"stdDeviation\": value / this.scale });\r\n\t}\r\n\r\n\t/**\r\n\t * @return Blur\r\n\t */\r\n\tpublic get blur(): number {\r\n\t\treturn this.properties.blur;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"BlurFilter\"] = BlurFilter;\r\n","/**\r\n * Module for \"Focus\" filter.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../../Sprite\";\r\nimport { Filter, FilterProperties } from \"./Filter\";\r\nimport { AMElement } from \"../AMElement\";\r\nimport { Color } from \"../../utils/Color\";\r\nimport { InterfaceColorSet } from \"../../utils/InterfaceColorSet\";\r\nimport * as $type from \"../../utils/Type\";\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines additional properties relative to the \"Focus\" filter.\r\n */\r\nexport interface FocusFilterProperties extends FilterProperties {\r\n\r\n\t/**\r\n\t * Opacity of the outline. (0-1)\r\n\t */\r\n\topacity?: number;\r\n\r\n\t/**\r\n\t * Stroke (outline) color.\r\n\t */\r\n\tstroke?: Color;\r\n\r\n\t/**\r\n\t * Stroke (outline) thickness in pixels.\r\n\t */\r\n\tstrokeWidth?: number;\r\n\r\n\t/**\r\n\t * Stroke (outline) opacity. (0-1)\r\n\t */\r\n\tstrokeOpacity?: number;\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates a \"Focus\" filter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/accessibility/} more about accessibility\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/changing-appearance-of-focused-items/} cusomizing focus appearance\r\n */\r\nexport class FocusFilter extends Filter {\r\n\r\n\t/**\r\n\t * Defines property types.\r\n\t */\r\n\tpublic _properties!: FocusFilterProperties;\r\n\r\n\t/**\r\n\t * A storage for Filter property/value pairs.\r\n\t * @see [@link FocusFilterProperties]\r\n\t */\r\n\t//public propertyValues: Dictionary<FocusFilterProperties, any>;\r\n\r\n\t/**\r\n\t * Reference to the `<feFlood>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic feFlood: AMElement;\r\n\r\n\t/**\r\n\t * Reference to the `<feMorphology>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic feMorphology: AMElement;\r\n\r\n\t/**\r\n\t * Reference to the `<feFlood>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic feColorMatrix: AMElement;\r\n\r\n\t/**\r\n\t * Reference to the `<feComposite>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic feComposite: AMElement;\r\n\r\n\t/**\r\n\t * Reference to the `<feFlood>` element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic feBlend: AMElement;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.className = \"FocusFilter\";\r\n\r\n\t\t// Create elements\r\n\t\t// NOTE: we do not need to add each individual element to `_disposers`\r\n\t\t// because `filterPrimitives` has an event handler which automatically adds\r\n\t\t// anything added to it to `_disposers`\r\n\t\tthis.feFlood = this.paper.add(\"feFlood\");\r\n\t\tthis.feFlood.attr({ \"flood-color\": new InterfaceColorSet().getFor(\"primaryButtonHover\"), \"result\": \"base\" });\r\n\t\tthis.filterPrimitives.push(this.feFlood);\r\n\r\n\t\tthis.feMorphology = this.paper.add(\"feMorphology\");\r\n\t\tthis.feMorphology.attr({ \"result\": \"bigger\", \"in\": \"SourceGraphic\", \"operator\": \"dilate\", \"radius\": \"2\" });\r\n\t\tthis.filterPrimitives.push(this.feMorphology);\r\n\r\n\t\tthis.feColorMatrix = this.paper.add(\"feColorMatrix\");\r\n\t\tthis.feColorMatrix.attr({ \"result\": \"mask\", \"in\": \"bigger\", \"type\": \"matrix\", \"values\": \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0\" });\r\n\t\tthis.filterPrimitives.push(this.feColorMatrix);\r\n\r\n\t\tthis.feComposite = this.paper.add(\"feComposite\");\r\n\t\tthis.feComposite.attr({ \"result\": \"drop\", \"in\": \"base\", \"in2\": \"mask\", \"operator\": \"in\" });\r\n\t\tthis.filterPrimitives.push(this.feComposite);\r\n\r\n\t\tthis.feBlend = this.paper.add(\"feBlend\");\r\n\t\tthis.feBlend.attr({ \"in\": \"SourceGraphic\", \"in2\": \"drop\", \"mode\": \"normal\" });\r\n\t\tthis.filterPrimitives.push(this.feBlend);\r\n\r\n\t\t// Set default properties\r\n\t\tthis.width = 130;\r\n\t\tthis.height = 130;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Stroke (outline) color.\r\n\t *\r\n\t * @param value Color\r\n\t */\r\n\tpublic set stroke(value: $type.Optional<Color>) {\r\n\t\tthis.properties[\"stroke\"] = value;\r\n\t\tthis.feFlood.attr({ \"flood-color\": value });\r\n\t}\r\n\r\n\t/**\r\n\t * @return Color\r\n\t */\r\n\tpublic get stroke(): $type.Optional<Color> {\r\n\t\treturn this.properties[\"stroke\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Stroke (outline) thickness in pixels.\r\n\t *\r\n\t * @param value Outline thickness (px)\r\n\t */\r\n\tpublic set strokeWidth(value: $type.Optional<number>) {\r\n\t\tthis.properties[\"strokeWidth\"] = value;\r\n\t\tthis.feMorphology.attr({ \"radius\": value });\r\n\t}\r\n\r\n\t/**\r\n\t * @return Outline thickness (px)\r\n\t */\r\n\tpublic get strokeWidth(): $type.Optional<number> {\r\n\t\treturn this.properties[\"strokeWidth\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Opacity of the outline. (0-1)\r\n\t *\r\n\t * @param value Outline opacity (0-1)\r\n\t */\r\n\tpublic set opacity(value: $type.Optional<number>) {\r\n\t\tthis.properties[\"opacity\"] = value;\r\n\t\tthis.feColorMatrix.attr({ \"values\": \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \" + value + \" 0\" });\r\n\t}\r\n\r\n\t/**\r\n\t * @return Outline opacity (0-1)\r\n\t */\r\n\tpublic get opacity(): $type.Optional<number> {\r\n\t\treturn this.properties[\"opacity\"];\r\n\t}\r\n\r\n\t/**\r\n\t * Sets filter's target element.\r\n\t *\r\n\t * In addition it also disables built-in focus outline on element this\r\n\t * filter is applied to.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Element filter is being attached to\r\n\t */\r\n\tprotected setSprite(value: Sprite): void {\r\n\t\tif (this._sprite && this._sprite != value) {\r\n\t\t\tthis._sprite.group.removeStyle(\"outline\");\r\n\t\t}\r\n\t\tvalue.group.addStyle({\r\n\t\t\t\"outline\": \"none\"\r\n\t\t});\r\n\t\tsuper.setSprite(value);\r\n\t}\r\n\r\n}\r\n","/**\r\n * This module contains PatternSet object definition\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { BaseObject } from \"../Base\";\r\nimport { Color } from \"./Color\";\r\nimport { InterfaceColorSet } from \"./InterfaceColorSet\";\r\nimport { Pattern } from \"../rendering/fills/Pattern\";\r\nimport { LinePattern } from \"../rendering/fills/LinePattern\";\r\nimport { RectPattern } from \"../rendering/fills/RectPattern\";\r\nimport { CirclePattern } from \"../rendering/fills/CirclePattern\";\r\nimport { registry } from \"../Registry\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines an interable list of distinctive patterns that can be used in\r\n * conjunction to colors to generate various fill patterns.\r\n *\r\n * @important\r\n * @since 4.7.5\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/colors/} for color-related info\r\n */\r\nexport class PatternSet extends BaseObject {\r\n\r\n\t/**\r\n\t * Holds the list of the colors in this set. (preset or auto-generated)\r\n\t */\r\n\tprotected _list: Pattern[] = [];\r\n\r\n\t/**\r\n\t * Current step.\r\n\t */\r\n\tprotected _currentStep: number = 0;\r\n\r\n\t/**\r\n\t * If set to non-zero value, the PatternSet will start iterating patterns from\r\n\t * that particular index, not the first pattern in the list.\r\n\t */\r\n\tprotected _startIndex: number = 0;\r\n\r\n\t/**\r\n\t * Current pass in cycle. Once all patterns in the list are iterated,\r\n\t * iteration restarts from beginning and currentPass is incremented.\r\n\t */\r\n\tprotected _currentPass: number = 0;\r\n\r\n\t/**\r\n\t * A base color. If there are no colors pre-set in the color list, ColorSet\r\n\t * will use this color as a base when generating new ones, applying\r\n\t * `stepOptions` and `passOptions` to this base color.\r\n\t */\r\n\tpublic baseColor: Color = new Color({\r\n\t\tr: 103,\r\n\t\tg: 183,\r\n\t\tb: 220\r\n\t});\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"PatternSet\";\r\n\r\n\t\t// Set base color to be used for pattern elements\r\n\t\tconst interfaceColors = new InterfaceColorSet();\r\n\r\n\t\t// Set default patterns\r\n\t\tthis.list = [\r\n\t\t\tthis.getLinePattern(1000, 45, 1, 6),\r\n\t\t\tthis.getRectPattern(10, 0, 4),\r\n\t\t\tthis.getLinePattern(1000, -45, 1, 6),\r\n\t\t\tthis.getCirclePattern(11, 2, true),\r\n\t\t\tthis.getLinePattern(6, 90, 1),\r\n\t\t\tthis.getRectPattern(12, 45, 6, true),\r\n\t\t\tthis.getLinePattern(6, 0, 1),\r\n\t\t\tthis.getRectPattern(7, 0, 4),\r\n\t\t\tthis.getLinePattern(1000, 45, 2, 3, \"4,2\"),\r\n\t\t\tthis.getCirclePattern(9, 3, false),\r\n\t\t\tthis.getLinePattern(1000, -45, 2, 3, \"4,2\"),\r\n\t\t\tthis.getRectPattern(10, 45, Math.sqrt(50)),\r\n\t\t\tthis.getLinePattern(1000, -45, 2, 1),\r\n\t\t\tthis.getRectPattern(10, 0, 9),\r\n\t\t\tthis.getLinePattern(1000, 45, 2, 1),\r\n\t\t\tthis.getLinePattern(1000, 0, 3, 1),\r\n\t\t\tthis.getRectPattern(10, 45, 10),\r\n\t\t\tthis.getLinePattern(1000, 90, 3, 1)\r\n\t\t];\r\n\r\n\t\tthis.baseColor = interfaceColors.getFor(\"stroke\");\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\tpublic getLinePattern(size: number, rotation: number, thickness: number, gap?: number, strokeDashArray?: string): LinePattern {\r\n\t\tlet pattern = new LinePattern();\r\n\t\tpattern.width = size;\r\n\t\tpattern.height = size;\r\n\t\tpattern.stroke = this.baseColor;\r\n\t\tpattern.gap = gap;\r\n\t\tpattern.strokeDasharray = strokeDashArray;\r\n\t\tpattern.strokeWidth = thickness;\r\n\t\tpattern.rotation = rotation;\r\n\t\treturn pattern;\r\n\t}\r\n\r\n\tpublic getRectPattern(size: number, rotation: number, thickness: number, outline?:boolean): RectPattern {\r\n\t\tlet pattern = new RectPattern();\r\n\t\tpattern.width = size;\r\n\t\tpattern.height = size;\r\n\t\tpattern.rectWidth = thickness;\r\n\t\tpattern.rectHeight = thickness;\r\n\r\n\t\tif(outline){\r\n\t\t\tpattern.stroke = this.baseColor;\r\n\t\t\tpattern.strokeWidth = 1;\r\n\t\t\tpattern.fillOpacity = 0;\r\n\t\t}\r\n\t\telse{\r\n\t\t\tpattern.fill = this.baseColor;\r\n\t\t\tpattern.strokeWidth = 0;\r\n\t\t}\r\n\r\n\t\tif(rotation != 0){\r\n\t\t\tpattern.shapeRendering = \"auto\";\r\n\t\t}\r\n\r\n\t\tpattern.rotation = rotation;\r\n\t\treturn pattern;\r\n\t}\r\n\r\n\tpublic getCirclePattern(size: number, radius: number, outline:boolean): CirclePattern {\r\n\t\tlet pattern = new CirclePattern();\r\n\t\tpattern.width = size;\r\n\t\tpattern.height = size;\r\n\t\tpattern.shapeRendering = \"auto\";\r\n\t\tpattern.radius = radius;\r\n\t\tif(outline){\r\n\t\t\tpattern.stroke = this.baseColor;\r\n\t\t\tpattern.strokeWidth = 1;\r\n\t\t\tpattern.fillOpacity = 0;\r\n\t\t}\r\n\t\telse{\r\n\t\t\tpattern.fill = this.baseColor;\r\n\t\t\tpattern.strokeWidth = 0;\r\n\t\t}\r\n\t\treturn pattern;\r\n\t}\r\n\r\n\t/**\r\n\t * List of pre-defined patterns to be used in set.\r\n\t *\r\n\t * @param value Pattern list\r\n\t */\r\n\tpublic set list(value: Pattern[]) {\r\n\t\tthis._list = value;\r\n\t\tthis.reset();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Pattern list\r\n\t */\r\n\tpublic get list(): Pattern[] {\r\n\t\treturn this._list;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the next pattern in list.\r\n\t *\r\n\t * @return Pattern\r\n\t */\r\n\tpublic next(): Pattern {\r\n\t\tconst pattern = this.getIndex(this.currentStep);\r\n\t\tthis._currentStep++;\r\n\t\treturn pattern;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a color at specific index in the list.\r\n\t *\r\n\t * @param i Index\r\n\t * @return Pattern\r\n\t */\r\n\tpublic getIndex(i: number): Pattern {\r\n\t\tlet pattern;\r\n\t\twhile (this.list.length <= i) {\r\n\t\t\tthis.generatePatterns();\r\n\t\t}\r\n\t\tpattern = this.list[i];\r\n\t\treturn pattern.clone();\r\n\t}\r\n\r\n\t/**\r\n\t * Generates a new set of patterns.\r\n\t */\r\n\tprivate generatePatterns(): void {\r\n\t\tconst count = this.list.length / (this._currentPass + 1);\r\n\t\tthis._currentPass++;\r\n\t\tfor (let i = 0; i < count; i++) {\r\n\t\t\tthis.list.push(this.list[i].clone());\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Resets internal iterator.\r\n\t *\r\n\t * Calling `next()` after this will return the very first color in the color\r\n\t * list, even if it was already returned before.\r\n\t */\r\n\tpublic reset(): void {\r\n\t\tthis._currentStep = this._startIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets current color iteration. You can use this property to skip some\r\n\t * colors from iteration. E.g. setting it to `10` will skip first ten\r\n\t * colors.\r\n\t *\r\n\t * Please note that the number is zero-based.\r\n\t *\r\n\t * @param value Step\r\n\t */\r\n\tpublic set currentStep(value: number) {\r\n\t\tthis._currentStep = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Step\r\n\t */\r\n\tpublic get currentStep(): number {\r\n\t\treturn this._currentStep;\r\n\t}\r\n\r\n\t/**\r\n\t * If set to non-zero value, the ColorSet will start iterating colors from\r\n\t * that particular index, not the first color in the list.\r\n\t *\r\n\t * @default 0\r\n\t * @param value Index\r\n\t */\r\n\tpublic set startIndex(value: number) {\r\n\t\tthis._startIndex = value;\r\n\t\tthis.reset();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Index\r\n\t */\r\n\tpublic get startIndex(): number {\r\n\t\treturn this._startIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\t// if (config) {\r\n\r\n\t\t// \t// Set up axis ranges\r\n\t\t// \tif ($type.hasValue(config.list) && $type.isArray(config.list)) {\r\n\t\t// \t\tfor (let i = 0, len = config.list.length; i < len; i++) {\r\n\t\t// \t\t\tif (!(config.list[i] instanceof Color)) {\r\n\t\t// \t\t\t\tconfig.list[i] = color(config.list[i]);\r\n\t\t// \t\t\t}\r\n\t\t// \t\t}\r\n\t\t// \t}\r\n\t\t// }\r\n\t\tsuper.processConfig(config);\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PatternSet\"] = PatternSet;","/**\r\n * A plugin base class.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Optional } from \"./Type\";\r\nimport { IDisposer } from \"./Disposer\";\r\nimport { Sprite } from \"../Sprite\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\nexport interface IPlugin extends IDisposer {\r\n\ttarget: Optional<Sprite>;\r\n\tinit(): void;\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * This is a base class that provides core functionality for plugins.\r\n *\r\n * The easiest way to start off with a new plugin is to extend this class.\r\n *\r\n * It will provide all the mandatory functionality, such as disposers.\r\n *\r\n * @since 4.2.2\r\n */\r\nexport class Plugin implements IPlugin {\r\n\r\n\r\n\t/**\r\n\t * A target object plugin is for.\r\n\t */\r\n\tpublic target: Optional<Sprite>;\r\n\r\n\t/**\r\n\t * Is this object disposed?\r\n\t */\r\n\tprotected _disposed: boolean = false;\r\n\r\n\t/**\r\n\t * List of IDisposer which will be disposed when the BaseObject is disposed.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _disposers: Array<IDisposer> = [];\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\t// Nothing to do here\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates series with required events and adapters used to hijack its\r\n\t * data.\r\n\t */\r\n\tpublic init(): void {\r\n\t\t// Does nothing\r\n\t\t// Override it\r\n\t}\r\n\r\n\t/**\r\n\t * Returns if this element is already disposed.\r\n\t *\r\n\t * @return Is disposed?\r\n\t */\r\n\tpublic isDisposed(): boolean {\r\n\t\treturn this._disposed;\r\n\t}\r\n\r\n\t/**\r\n\t * Disposes this object and related stuff.\r\n\t */\r\n\tpublic dispose(): void {\r\n\t\tif (!this._disposed) {\r\n\t\t\tthis._disposed = true;\r\n\r\n\t\t\tconst a = this._disposers;\r\n\r\n\t\t\tthis._disposers = <any>null;\r\n\r\n\t\t\twhile (a.length !== 0) {\r\n\t\t\t\tconst disposer = a.shift();\r\n\t\t\t\tdisposer.dispose();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}\r\n","/**\r\n * AmChartsLogo module.\r\n *\r\n * AmChartsLogo shows amCharts logo for non-commercial users of a library.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container, IContainerProperties, IContainerAdapters, IContainerEvents } from \"../Container\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { Polyspline } from \"./Polyspline\";\r\nimport { color } from \"../utils/Color\";\r\nimport { LinearGradient } from \"../rendering/fills/LinearGradient\";\r\nimport { DesaturateFilter } from \"../rendering/filters/DesaturateFilter\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[AmChartsLogo]].\r\n * @ignore Exclude from docs\r\n */\r\nexport interface IAmChartsLogoProperties extends IContainerProperties { }\r\n\r\n/**\r\n * Defines events for [[AmChartsLogo]].\r\n * @ignore Exclude from docs\r\n */\r\nexport interface IAmChartsLogoEvents extends IContainerEvents { }\r\n\r\n/**\r\n * Defines adapters for [[AmChartsLogo]].\r\n *\r\n * @see {@link Adapter}\r\n * @ignore Exclude from docs\r\n */\r\nexport interface IAmChartsLogoAdapters extends IContainerAdapters, IAmChartsLogoProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A class used to draw and display progress indicator.\r\n *\r\n * @see {@link IAmChartsLogoEvents} for a list of available events\r\n * @see {@link IAmChartsLogoAdapters} for a list of available Adapters\r\n * @ignore Exclude from docs\r\n */\r\nexport class AmChartsLogo extends Container {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IAmChartsLogoProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IAmChartsLogoAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IAmChartsLogoEvents;\r\n\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"AmChartsLogo\";\r\n\r\n\t\tthis.valign = \"bottom\";\r\n\r\n\t\tlet d = 0.3;\r\n\t\tthis.opacity = 0.3;\r\n\t\tthis.defaultState.properties.opacity = 0.4;\r\n\t\tthis.url = \"https://www.amcharts.com/\";\r\n\t\tthis.urlTarget = \"_blank\";\r\n\r\n\t\tthis.showSystemTooltip = true;\r\n\t\tthis.readerTitle = \"Chart created using amCharts library\";\r\n\t\tthis.width = 220 * d;\r\n\t\tthis.height = 70 * d;\r\n\t\tthis.background.opacity = 0;\r\n\r\n\t\tlet aColor = color(\"#474758\");\r\n\t\tif (new InterfaceColorSet().getFor(\"background\").alternative.hex == \"#ffffff\") {\r\n\t\t\taColor = color(\"#ffffff\");\r\n\t\t}\r\n\r\n\t\tlet aGradient = new LinearGradient();\r\n\r\n\t\taGradient.addColor(aColor);\r\n\t\taGradient.addColor(aColor, 1, 0.75);\r\n\t\taGradient.addColor(color(\"#3cabff\"), 1, 0.755);\r\n\t\taGradient.rotation = -10;\r\n\r\n\t\tlet aStroke = aGradient;\r\n\r\n\t\tlet m = this.createChild(Polyspline)\r\n\t\tm.shouldClone = false;\r\n\t\tm.isMeasured = false;\r\n\t\tm.segments = [[{ x: 50 * d, y: 50 * d }, { x: 90 * d, y: 50 * d }, { x: 120 * d, y: 20 * d }, { x: 135 * d, y: 35 * d }, { x: 150 * d, y: 20 * d }, { x: 180 * d, y: 50 * d }, { x: 200 * d, y: 50 * d }]]\r\n\t\tm.strokeWidth = 6 * d;\r\n\t\tm.tensionX = 0.8;\r\n\t\tm.tensionY = 1;\r\n\r\n\t\tm.stroke = color(\"#3cabff\");\r\n\r\n\t\tlet a = this.createChild(Polyspline);\r\n\t\ta.shouldClone = false;\r\n\t\ta.isMeasured = false;\r\n\t\ta.segments = [[{ x: 20 * d, y: 50 * d }, { x: 50 * d, y: 50 * d }, { x: 90 * d, y: 12 * d }, { x: 133 * d, y: 50 * d }, { x: 170 * d, y: 50 * d }, { x: 200 * d, y: 50 * d }]]\r\n\t\ta.strokeWidth = 6 * d;\r\n\t\ta.tensionX = 0.75;\r\n\t\ta.tensionY = 1;\r\n\t\ta.stroke = aStroke;\r\n\r\n\t\tthis._disposers.push(a);\r\n\r\n\t\tlet desaturateFilter = new DesaturateFilter();\r\n\t\tthis.filters.push(desaturateFilter);\r\n\r\n\t\tlet desaturateFilterHover = new DesaturateFilter();\r\n\t\tdesaturateFilterHover.saturation = 1;\r\n\r\n\t\tlet hoverState = this.states.create(\"hover\");\r\n\t\thoverState.properties.opacity = 1;\r\n\t\thoverState.filters.push(desaturateFilterHover);\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n}\r\n","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { system } from \"../System\";\r\nimport { registry } from \"../Registry\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { Container } from \"../Container\";\r\nimport { Component } from \"../Component\";\r\nimport { Paper } from \"../rendering/Paper\";\r\nimport { SVGContainer, svgContainers } from \"../rendering/SVGContainer\";\r\nimport { FocusFilter } from \"../rendering/filters/FocusFilter\";\r\nimport { Preloader } from \"../elements/Preloader\";\r\nimport { AmChartsLogo } from \"../elements/AmChartsLogo\";\r\nimport { ITheme } from \"../../themes/ITheme\";\r\nimport { Tooltip } from \"../elements/Tooltip\";\r\nimport { Disposer, MultiDisposer } from \"../utils/Disposer\";\r\nimport { percent } from \"./Percent\";\r\nimport { options } from \"../Options\";\r\nimport * as $array from \"./Array\";\r\nimport * as $type from \"./Type\";\r\nimport * as $dom from \"./DOM\";\r\nimport * as $utils from \"./Utils\";\r\nimport * as $log from \"./Log\";\r\n\r\n/**\r\n * ============================================================================\r\n * INSTANTIATION FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates all HTML and SVG containers needed for the chart instance, as well\r\n * as the new [[Sprite]] (as specified in `classType` parameter).\r\n *\r\n * @param htmlElement A container to creat elements in\r\n * @param classType A class definition of the new element to create\r\n * @return Newly-created Sprite object\r\n */\r\nfunction createChild<T extends Sprite>(htmlElement: $type.Optional<HTMLElement | string>, classType: { new(): T; }): T {\r\n\tlet htmlContainer = $dom.getElement(htmlElement);\r\n\r\n\tif (htmlContainer) {\r\n\r\n\t\thtmlContainer.innerHTML = \"\";\r\n\t\t//htmlContainer.style.overflow = \"hidden\";\r\n\r\n\t\tlet svgDiv = new SVGContainer(htmlContainer);\r\n\t\tlet paper = new Paper(svgDiv.SVGContainer, \"svg-\" + (svgContainers.length - 1));\r\n\r\n\t\t// the approach with masks is chosen because overflow:visible is set on SVG element in order tooltips could go outside\r\n\t\t// svg area - this is often needed when working with small charts.\r\n\r\n\t\t// main container which holds content container and tooltips container\r\n\t\tlet container = new Container();\r\n\t\tcontainer.htmlContainer = htmlContainer;\r\n\t\tcontainer.svgContainer = svgDiv;\r\n\t\tcontainer.width = percent(100);\r\n\t\tcontainer.height = percent(100);\r\n\t\tcontainer.background.fillOpacity = 0;\r\n\t\tcontainer.paper = paper;\r\n\t\tpaper.append(container.group);\r\n\r\n\t\t// this is set from parent container, but this one doesn't have, so do it manually.\r\n\t\tcontainer.relativeWidth = 1;\r\n\t\tcontainer.relativeHeight = 1;\r\n\r\n\t\tsvgDiv.container = container;\r\n\r\n\t\t// creating classType instance\r\n\t\tlet sprite = container.createChild(classType);\r\n\t\tsprite.topParent = container;\r\n\t\tlet uid = sprite.uid;\r\n\r\n\t\tregistry.invalidSprites[uid] = [];\r\n\t\tregistry.invalidDatas[uid] = [];\r\n\t\tregistry.invalidPositions[uid] = [];\r\n\t\tregistry.invalidLayouts[uid] = [];\r\n\r\n\t\tcontainer.baseId = uid;\r\n\r\n\t\tsprite.isBaseSprite = true;\r\n\t\tsprite.focusFilter = new FocusFilter();\r\n\t\tregistry.baseSprites.push(sprite);\r\n\t\tregistry.baseSpritesByUid[uid] = sprite;\r\n\r\n\t\tsprite.maskRectangle = { x: 0, y: 0, width: Math.max(svgDiv.width, 0), height: Math.max(svgDiv.height, 0) };\r\n\r\n\t\t// this solves issues with display:none, as all children are measured as 0x0\r\n\t\tcontainer.events.on(\"maxsizechanged\", (event) => {\r\n\t\t\tif (event.previousWidth == 0 || event.previousHeight == 0) {\r\n\t\t\t\tcontainer.deepInvalidate();\r\n\t\t\t}\r\n\t\t\tif (sprite.maskRectangle) {\r\n\t\t\t\tsprite.maskRectangle = { x: 0, y: 0, width: Math.max(svgDiv.width, 0), height: Math.max(svgDiv.height, 0) };\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet loopTimer: number | null = null;\r\n\r\n\t\t// Checks to see whether the chart was properly disposed or not\r\n\t\tconst loop = () => {\r\n\t\t\tif (!sprite.isDisposed()) {\r\n\t\t\t\tif ($dom.getRoot(sprite.dom) == null) {\r\n\t\t\t\t\t$log.warn(\"Chart was not disposed\", sprite.uid);\r\n\t\t\t\t\tloopTimer = null;\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tloopTimer = window.setTimeout(loop, 1000);\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\t\t\t\tloopTimer = null;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tloop();\r\n\r\n\t\tsprite.addDisposer(new Disposer(() => {\r\n\t\t\tif (loopTimer !== null) {\r\n\t\t\t\tclearTimeout(loopTimer);\r\n\t\t\t}\r\n\t\t\t$array.remove(registry.baseSprites, sprite);\r\n\t\t\tregistry.baseSpritesByUid[sprite.uid] = undefined;\r\n\t\t}));\r\n\r\n\t\t// TODO figure out a better way of doing this\r\n\t\tsprite.addDisposer(container);\r\n\r\n\t\t// tooltip container\r\n\t\tlet tooltipContainer: Container = container.createChild(Container);\r\n\t\ttooltipContainer.topParent = container;\r\n\t\ttooltipContainer.width = percent(100);\r\n\t\ttooltipContainer.height = percent(100);\r\n\t\ttooltipContainer.isMeasured = false;\r\n\t\tcontainer.tooltipContainer = tooltipContainer;\r\n\r\n\t\tsprite.tooltip = new Tooltip();\r\n\t\tsprite.tooltip.hide(0);\r\n\t\tsprite.tooltip.setBounds({ x: 0, y: 0, width: tooltipContainer.maxWidth, height: tooltipContainer.maxHeight });\r\n\r\n\t\ttooltipContainer.events.on(\"maxsizechanged\", () => {\r\n\t\t\t$type.getValue(sprite.tooltip).setBounds({ x: 0, y: 0, width: tooltipContainer.maxWidth, height: tooltipContainer.maxHeight });\r\n\t\t}, undefined, false)\r\n\r\n\t\t//@todo: maybe we don't need to create one by default but only on request?\r\n\r\n\t\tlet preloader = new Preloader();\r\n\t\tpreloader.events.on(\"inited\", () => {\r\n\t\t\tpreloader.__disabled = true;\r\n\t\t}, undefined, false);\r\n\t\tcontainer.preloader = preloader;\r\n\r\n\t\t//if (!options.commercialLicense) {\r\n\t\tif (sprite instanceof Container && !sprite.hasLicense()) {\r\n\t\t\tlet logo = tooltipContainer.createChild(AmChartsLogo);\r\n\t\t\ttooltipContainer.events.on(\"maxsizechanged\", (ev) => {\r\n\t\t\t\tif ((tooltipContainer.maxWidth <= 100) || (tooltipContainer.maxHeight <= 50)) {\r\n\t\t\t\t\tlogo.hide();\r\n\t\t\t\t}\r\n\t\t\t\telse if (logo.isHidden || logo.isHiding) {\r\n\t\t\t\t\tlogo.show();\r\n\t\t\t\t}\r\n\t\t\t}, undefined, false);\r\n\t\t\tsprite.logo = logo;\r\n\t\t\tlogo.align = \"left\";\r\n\t\t\tlogo.valign = \"bottom\";\r\n\t\t}\r\n\r\n\t\t$utils.used(sprite.numberFormatter); // need to create one.\r\n\r\n\t\t// Set this as an autonomouse instance\r\n\t\t// Controls like Preloader, Export will use this.\r\n\t\tcontainer.isStandaloneInstance = true;\r\n\r\n\t\tif (options.onlyShowOnViewport) {\r\n\t\t\tif (!$dom.isElementInViewport(htmlContainer, options.viewportTarget)) {\r\n\t\t\t\tsprite.__disabled = true;\r\n\t\t\t\tsprite.tooltipContainer.__disabled = true;\r\n\r\n\t\t\t\tlet disposers = [\r\n\t\t\t\t\t$dom.addEventListener(window, \"DOMContentLoaded\", function() { viewPortHandler(sprite); }),\r\n\t\t\t\t\t$dom.addEventListener(window, \"load\", function() { viewPortHandler(sprite); }),\r\n\t\t\t\t\t$dom.addEventListener(window, \"resize\", function() { viewPortHandler(sprite); }),\r\n\t\t\t\t\t$dom.addEventListener(window, \"scroll\", function() { viewPortHandler(sprite); })\r\n\t\t\t\t];\r\n\r\n\t\t\t\tif (options.viewportTarget) {\r\n\t\t\t\t\tdisposers.push($dom.addEventListener(options.viewportTarget, \"resize\", function() { viewPortHandler(sprite); }));\r\n\t\t\t\t\tdisposers.push($dom.addEventListener(options.viewportTarget, \"scroll\", function() { viewPortHandler(sprite); }));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet disposer = new MultiDisposer(disposers);\r\n\r\n\t\t\t\tsprite.addDisposer(disposer);\r\n\t\t\t\tsprite.vpDisposer = disposer;\r\n\t\t\t}\r\n\t\t\telse if (options.queue) {\r\n\t\t\t\taddToQueue(sprite);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (options.queue) {\r\n\t\t\taddToQueue(sprite);\r\n\t\t}\r\n\r\n\t\treturn sprite;\r\n\t}\r\n\telse {\r\n\t\tsystem.log(\"html container not found\");\r\n\t\tthrow new Error(\"html container not found\");\r\n\t}\r\n}\r\n\r\n/**\r\n * Disposes all of the currently active charts.\r\n */\r\nexport function disposeAllCharts(): void {\r\n\twhile (registry.baseSprites.length !== 0) {\r\n\t\tregistry.baseSprites.pop().dispose();\r\n\t}\r\n}\r\n\r\nexport function addToQueue(sprite: Sprite) {\r\n\tif (registry.queue.indexOf(sprite) == -1) {\r\n\t\tsprite.__disabled = true;\r\n\t\tsprite.tooltipContainer.__disabled = true;\r\n\t\tsprite.events.disableType(\"appeared\");\r\n\r\n\t\tif (registry.queue.length == 0) {\r\n\t\t\tqueueHandler(sprite);\r\n\t\t}\r\n\r\n\t\tsprite.addDisposer(new Disposer(() => {\r\n\t\t\tremoveFromQueue(sprite);\r\n\t\t}))\r\n\r\n\t\tregistry.queue.push(sprite);\r\n\t}\r\n}\r\n\r\nexport function removeFromQueue(sprite: Sprite) {\r\n\tlet index = registry.queue.indexOf(sprite);\r\n\tif (index >= 0) {\r\n\t\tregistry.queue.splice(registry.queue.indexOf(sprite), 1);\r\n\t\tlet nextSprite = registry.queue[index];\r\n\t\tif (nextSprite) {\r\n\t\t\tqueueHandler(nextSprite);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function viewPortHandler(sprite: Sprite) {\r\n\tif (sprite.__disabled && $dom.isElementInViewport(sprite.htmlContainer, options.viewportTarget)) {\r\n\r\n\t\tif (sprite.vpDisposer) {\r\n\t\t\tsprite.vpDisposer.dispose();\r\n\t\t}\r\n\r\n\t\taddToQueue(sprite);\r\n\t}\r\n}\r\n\r\nexport function queueHandler(sprite: Sprite) {\r\n\tsprite.__disabled = false;\r\n\tsprite.tooltipContainer.__disabled = false;\r\n\tsprite.events.enableType(\"appeared\");\r\n\r\n\tif (sprite.showOnInit) {\r\n\t\tsprite.events.on(\"appeared\", () => {\r\n\t\t\tremoveFromQueue(sprite);\r\n\t\t})\r\n\t}\r\n\r\n\tif (sprite.vpDisposer) {\r\n\t\tsprite.vpDisposer.dispose();\r\n\t}\r\n\r\n\tif (sprite instanceof Component) {\r\n\t\tsprite.invalidateData();\r\n\t\tsprite.reinit();\r\n\r\n\t\tsprite.events.once(\"datavalidated\", () => {\r\n\t\t\tif (sprite.showOnInit) {\r\n\t\t\t\tsprite.appear();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tremoveFromQueue(sprite);\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\telse {\r\n\t\tif (sprite.showOnInit) {\r\n\t\t\tsprite.appear();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tremoveFromQueue(sprite);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * A shortcut to creating a chart instance.\r\n *\r\n * The first argument is either a reference to or an id of a DOM element to be\r\n * used as a container for the chart.\r\n *\r\n * The second argument is the type reference of the chart type. (for plain\r\n * JavaScript users this can also be a string indicating chart type)\r\n *\r\n * ```TypeScript\r\n * let chart = am4core.create(\"chartdiv\", am4charts.PieChart);\r\n * ```\r\n * ```JavaScript\r\n * // Can pass in chart type reference like this:\r\n * var chart = am4core.create(\"chartdiv\", am4charts.PieChart);\r\n *\r\n * // ... or chart class type as a string:\r\n * var chart = am4core.create(\"chartdiv\", \"PieChart\");\r\n * ```\r\n *\r\n * @param htmlElement Reference or id of the target container element\r\n * @param classType Class type of the target chart type\r\n * @return Chart instance\r\n */\r\nexport function create<T extends Sprite>(htmlElement: $type.Optional<HTMLElement | string>, classType: { new(): T; }): T {\r\n\r\n\t// This is a nasty hack for the benefit of vanilla JS users, who do not\r\n\t// enjoy benefits of type-check anyway.\r\n\t// We're allowing passing in a name of the class rather than type reference\r\n\t// itself.\r\n\tlet classError: $type.Optional<Error>;\r\n\tif ($type.isString(classType)) {\r\n\t\tif ($type.hasValue(registry.registeredClasses[classType])) {\r\n\t\t\tclassType = registry.registeredClasses[classType];\r\n\t\t}\r\n\t\telse {\r\n\t\t\tclassType = registry.registeredClasses[\"Container\"];\r\n\t\t\tclassError = new Error(\"Class [\" + classType + \"] is not loaded.\");\r\n\t\t}\r\n\t}\r\n\r\n\t// Create the chart\r\n\tlet chart = createChild(htmlElement, classType);\r\n\r\n\t// Error?\r\n\tif (classError) {\r\n\t\tchart.raiseCriticalError(classError);\r\n\t}\r\n\r\n\treturn chart;\r\n\r\n}\r\n\r\n/**\r\n * A shortcut to creating a chart from a config object.\r\n *\r\n * Example:\r\n *\r\n * ```TypeScript\r\n * let chart am4core.createFromConfig({ ... }, \"chartdiv\", am4charts.XYChart );\r\n * ```\r\n * ```JavaScript\r\n * var chart am4core.createFromConfig({ ... }, \"chartdiv\", \"XYChart\" );\r\n * ```\r\n *\r\n * If `chartType` parameter is not supplied it must be set in a config object,\r\n * via reference to chart type, e.g.:\r\n *\r\n * ```TypeScript\r\n * {\r\n * \"type\": am4charts.XYChart,\r\n * // ...\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * {\r\n * \"type\": am4charts.XYChart,\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * Or via string: (if you are using JavaScript)\r\n *\r\n * ```TypeScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * // ...\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * A `container` can either be a reference to an HTML container to put chart\r\n * in, or it's unique id.\r\n *\r\n * If `container` is not specified, it must be included in the config object:\r\n *\r\n * ```TypeScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * \"container\": \"chartdiv\",\r\n * // ...\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * \"container\": \"chartdiv\",\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @param config Config object in property/value pairs\r\n * @param htmlElement Container reference or ID\r\n * @param objectType Chart type\r\n * @return A newly created chart instance\r\n * @todo Throw exception if type is not correct\r\n */\r\nexport function createFromConfig(config: { [index: string]: any }, htmlElement?: string | HTMLElement, classType?: { new(): Sprite; } | string): Sprite {\r\n\r\n\t// Extract chart type from config if necessary\r\n\tif (!$type.hasValue(classType)) {\r\n\t\tclassType = config.type;\r\n\t\tdelete config.type;\r\n\t}\r\n\r\n\t// Extract element from config if necessary\r\n\tif (!$type.hasValue(htmlElement)) {\r\n\t\thtmlElement = config.container;\r\n\t\tdelete config.container;\r\n\t}\r\n\r\n\t// Check if we need to extract actual type reference\r\n\tlet finalType;\r\n\tlet classError: $type.Optional<Error>;\r\n\tif ($type.isString(classType) && $type.hasValue(registry.registeredClasses[classType])) {\r\n\t\tfinalType = registry.registeredClasses[classType];\r\n\t}\r\n\telse if (typeof classType !== \"function\") {\r\n\t\tfinalType = Container;\r\n\t\tclassError = new Error(\"Class [\" + classType + \"] is not loaded.\");\r\n\t}\r\n\telse {\r\n\t\tfinalType = classType;\r\n\t}\r\n\r\n\t// Create the chart\r\n\tlet chart = createChild(htmlElement, finalType);\r\n\r\n\t// Set config\r\n\tif (classError) {\r\n\t\tchart.raiseCriticalError(classError);\r\n\t}\r\n\telse {\r\n\t\tchart.config = config;\r\n\t}\r\n\r\n\treturn chart;\r\n\r\n}\r\n\r\n/**\r\n * Applies a theme to System, and subsequently all chart instances created\r\n * from that point forward.\r\n *\r\n * amCharts supports multiple themes. Calling `useTheme` multiple times will\r\n * make the System apply multiple themes, rather than overwrite previously\r\n * set one.\r\n *\r\n * This enables combining features from multiple themes on the same chart.\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * am4core.useTheme(am4themes.material);\r\n * am4core.useTheme(am4themes.animated);\r\n * ```\r\n * ```JavaScript\r\n * am4core.useTheme(am4themes.material);\r\n * am4core.useTheme(am4themes.animated);\r\n * ```\r\n *\r\n * The above will apply both the Material color and animation options to all\r\n * charts created.\r\n *\r\n * @param value A reference to a theme\r\n */\r\nexport function useTheme(value: ITheme): void {\r\n\tif (registry.themes.indexOf(value) === -1) {\r\n\t\tregistry.themes.push(value);\r\n\t}\r\n}\r\n\r\n/**\r\n * Removes a theme from \"active themes\" list, so it won't get applied to any\r\n * charts created subsequently.\r\n *\r\n * @param value A reference to a theme\r\n */\r\nexport function unuseTheme(value: ITheme): void {\r\n\t$array.remove(registry.themes, value);\r\n}\r\n\r\n/**\r\n * Removes all \"active\" themes. Any charts created subsequently will not have\r\n * any theme applied to them.\r\n */\r\nexport function unuseAllThemes(): void {\r\n\tregistry.themes = [];\r\n}\r\n\r\n/**\r\n * Adds a license, e.g.:\r\n *\r\n * ```TypeScript\r\n * am4core.addLicense(\"xxxxxxxx\");\r\n * ```\r\n * ```JavaScript\r\n * am4core.addLicense(\"xxxxxxxx\");\r\n * ```\r\n *\r\n * Multiple licenses can be added to cover for multiple products.\r\n *\r\n * @since 4.5.16\r\n * @param license License key\r\n */\r\nexport function addLicense(license: string): void {\r\n\toptions.licenses.push(license);\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { addTracingExtensions, getMainCarrier } from '@sentry/core';\nimport type { Integration, IntegrationClass } from '@sentry/types';\nimport { dynamicRequire, isNodeEnv, loadModule } from '@sentry/utils';\n\n/**\n * @private\n */\nfunction _autoloadDatabaseIntegrations(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n\n const packageToIntegrationMapping: Record<string, () => Integration> = {\n mongodb() {\n const integration = dynamicRequire(module, './node/integrations/mongo') as {\n Mongo: IntegrationClass<Integration>;\n };\n return new integration.Mongo();\n },\n mongoose() {\n const integration = dynamicRequire(module, './node/integrations/mongo') as {\n Mongo: IntegrationClass<Integration>;\n };\n return new integration.Mongo();\n },\n mysql() {\n const integration = dynamicRequire(module, './node/integrations/mysql') as {\n Mysql: IntegrationClass<Integration>;\n };\n return new integration.Mysql();\n },\n pg() {\n const integration = dynamicRequire(module, './node/integrations/postgres') as {\n Postgres: IntegrationClass<Integration>;\n };\n return new integration.Postgres();\n },\n };\n\n const mappedPackages = Object.keys(packageToIntegrationMapping)\n .filter(moduleName => !!loadModule(moduleName))\n .map(pkg => {\n try {\n return packageToIntegrationMapping[pkg]();\n } catch (e) {\n return undefined;\n }\n })\n .filter(p => p) as Integration[];\n\n if (mappedPackages.length > 0) {\n carrier.__SENTRY__.integrations = [...(carrier.__SENTRY__.integrations || []), ...mappedPackages];\n }\n}\n\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nexport function addExtensionMethods(): void {\n addTracingExtensions();\n\n // Detect and automatically load specified integrations.\n if (isNodeEnv()) {\n _autoloadDatabaseIntegrations();\n }\n}\n","export const DEFAULT_ENVIRONMENT = 'production';\n","import type { Event, EventHint, EventProcessor } from '@sentry/types';\nimport { SyncPromise, getGlobalSingleton, isThenable, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\n\n/**\n * Returns the global event processors.\n * @deprecated Global event processors will be removed in v8.\n */\nexport function getGlobalEventProcessors(): EventProcessor[] {\n return getGlobalSingleton<EventProcessor[]>('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @deprecated Use `addEventProcessor` instead. Global event processors will be removed in v8.\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n // eslint-disable-next-line deprecation/deprecation\n getGlobalEventProcessors().push(callback);\n}\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nexport function notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint: EventHint,\n index: number = 0,\n): PromiseLike<Event | null> {\n return new SyncPromise<Event | null>((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n\n DEBUG_BUILD && processor.id && result === null && logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n}\n","import type {\n Breadcrumb,\n BreadcrumbHint,\n CaptureContext,\n CheckIn,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n FinishedCheckIn,\n MonitorConfig,\n Primitive,\n Scope as ScopeInterface,\n Session,\n SessionContext,\n Severity,\n SeverityLevel,\n Span,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport { GLOBAL_OBJ, isThenable, logger, timestampInSeconds, uuid4 } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { Hub } from './hub';\nimport { runWithAsyncContext } from './hub';\nimport { getCurrentHub, getIsolationScope } from './hub';\nimport type { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport type { ExclusiveEventHintOrCaptureContext } from './utils/prepareEvent';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent';\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\nexport function captureException(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n exception: any,\n hint?: ExclusiveEventHintOrCaptureContext,\n): string {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().captureException(exception, parseEventHintOrCaptureContext(hint));\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param captureContext Define the level of the message or pass in additional data to attach to the message.\n * @returns the id of the captured message.\n */\nexport function captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n captureContext?: CaptureContext | Severity | SeverityLevel,\n): string {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param exception The event to send to Sentry.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\nexport function captureEvent(event: Event, hint?: EventHint): string {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n *\n * @deprecated Use getCurrentScope() directly.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function configureScope(callback: (scope: Scope) => void): ReturnType<Hub['configureScope']> {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): ReturnType<Hub['addBreadcrumb']> {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().addBreadcrumb(breadcrumb, hint);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, deprecation/deprecation\nexport function setContext(name: string, context: { [key: string]: any } | null): ReturnType<Hub['setContext']> {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setExtras(extras: Extras): ReturnType<Hub['setExtras']> {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setExtra(key: string, extra: Extra): ReturnType<Hub['setExtra']> {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setTags(tags: { [key: string]: Primitive }): ReturnType<Hub['setTags']> {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setTag(key: string, value: Primitive): ReturnType<Hub['setTag']> {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setUser(user: User | null): ReturnType<Hub['setUser']> {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n */\nexport function withScope<T>(callback: (scope: Scope) => T): T;\n/**\n * Set the given scope as the active scope in the callback.\n */\nexport function withScope<T>(scope: ScopeInterface | undefined, callback: (scope: Scope) => T): T;\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nexport function withScope<T>(\n ...rest: [callback: (scope: Scope) => T] | [scope: ScopeInterface | undefined, callback: (scope: Scope) => T]\n): T {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n\n // If a scope is defined, we want to make this the active scope instead of the default one\n if (rest.length === 2) {\n const [scope, callback] = rest;\n if (!scope) {\n // eslint-disable-next-line deprecation/deprecation\n return hub.withScope(callback);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return hub.withScope(() => {\n // eslint-disable-next-line deprecation/deprecation\n hub.getStackTop().scope = scope as Scope;\n return callback(scope as Scope);\n });\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return hub.withScope(rest[0]);\n}\n\n/**\n * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n *\n * @param callback The callback in which the passed isolation scope is active. (Note: In environments without async\n * context strategy, the currently active isolation scope may change within execution of the callback.)\n * @returns The same value that `callback` returns.\n */\nexport function withIsolationScope<T>(callback: (isolationScope: Scope) => T): T {\n return runWithAsyncContext(() => {\n return callback(getIsolationScope());\n });\n}\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback.\n *\n * @param span Spans started in the context of the provided callback will be children of this span.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nexport function withActiveSpan<T>(span: Span, callback: (scope: Scope) => T): T {\n return withScope(scope => {\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(span);\n return callback(scope);\n });\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\nexport function startTransaction(\n context: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n // eslint-disable-next-line deprecation/deprecation\n): ReturnType<Hub['startTransaction']> {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function captureCheckIn(checkIn: CheckIn, upsertMonitorConfig?: MonitorConfig): string {\n const scope = getCurrentScope();\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && logger.warn('Cannot capture check-in. No client defined.');\n } else if (!client.captureCheckIn) {\n DEBUG_BUILD && logger.warn('Cannot capture check-in. Client does not support sending check-ins.');\n } else {\n return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n }\n\n return uuid4();\n}\n\n/**\n * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes.\n *\n * @param monitorSlug The distinct slug of the monitor.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nexport function withMonitor<T>(\n monitorSlug: CheckIn['monitorSlug'],\n callback: () => T,\n upsertMonitorConfig?: MonitorConfig,\n): T {\n const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n const now = timestampInSeconds();\n\n function finishCheckIn(status: FinishedCheckIn['status']): void {\n captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n }\n\n let maybePromiseResult: T;\n try {\n maybePromiseResult = callback();\n } catch (e) {\n finishCheckIn('error');\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n Promise.resolve(maybePromiseResult).then(\n () => {\n finishCheckIn('ok');\n },\n () => {\n finishCheckIn('error');\n },\n );\n } else {\n finishCheckIn('ok');\n }\n\n return maybePromiseResult;\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport async function flush(timeout?: number): Promise<boolean> {\n const client = getClient();\n if (client) {\n return client.flush(timeout);\n }\n DEBUG_BUILD && logger.warn('Cannot flush events. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport async function close(timeout?: number): Promise<boolean> {\n const client = getClient();\n if (client) {\n return client.close(timeout);\n }\n DEBUG_BUILD && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId(): string | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().lastEventId();\n}\n\n/**\n * Get the currently active client.\n */\nexport function getClient<C extends Client>(): C | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().getClient<C>();\n}\n\n/**\n * Returns true if Sentry has been properly initialized.\n */\nexport function isInitialized(): boolean {\n return !!getClient();\n}\n\n/**\n * Get the currently active scope.\n */\nexport function getCurrentScope(): Scope {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().getScope();\n}\n\n/**\n * Start a session on the current isolation scope.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns the new active session\n */\nexport function startSession(context?: SessionContext): Session {\n const client = getClient();\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n user: currentScope.getUser() || isolationScope.getUser(),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = isolationScope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n\n endSession();\n\n // Afterwards we set the new session on the scope\n isolationScope.setSession(session);\n\n // TODO (v8): Remove this and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n currentScope.setSession(session);\n\n return session;\n}\n\n/**\n * End the session on the current isolation scope.\n */\nexport function endSession(): void {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n\n const session = currentScope.getSession() || isolationScope.getSession();\n if (session) {\n closeSession(session);\n }\n _sendSessionUpdate();\n\n // the session is over; take it off of the scope\n isolationScope.setSession();\n\n // TODO (v8): Remove this and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n currentScope.setSession();\n}\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate(): void {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n const client = getClient();\n // TODO (v8): Remove currentScope and only use the isolation scope(?).\n // For v7 though, we can't \"soft-break\" people using getCurrentHub().getScope().setSession()\n const session = currentScope.getSession() || isolationScope.getSession();\n if (session && client && client.captureSession) {\n client.captureSession(session);\n }\n}\n\n/**\n * Sends the current session on the scope to Sentry\n *\n * @param end If set the session will be marked as exited and removed from the scope.\n * Defaults to `false`.\n */\nexport function captureSession(end: boolean = false): void {\n // both send the update and pull the session from the scope\n if (end) {\n endSession();\n return;\n }\n\n // only send the update\n _sendSessionUpdate();\n}\n","/* eslint-disable max-lines */\nimport type {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Primitive,\n Session,\n SessionContext,\n Severity,\n SeverityLevel,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport {\n GLOBAL_OBJ,\n consoleSandbox,\n dateTimestampInSeconds,\n getGlobalSingleton,\n isThenable,\n logger,\n uuid4,\n} from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\nimport { SDK_VERSION } from './version';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = parseFloat(SDK_VERSION);\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\nexport interface RunWithAsyncContextOptions {\n /** Whether to reuse an existing async context if one exists. Defaults to false. */\n reuseExisting?: boolean;\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Strategy used to track async context.\n */\nexport interface AsyncContextStrategy {\n /**\n * Gets the current async context. Returns undefined if there is no current async context.\n */\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub: () => Hub | undefined;\n /**\n * Runs the supplied callback in its own async context.\n */\n runWithAsyncContext<T>(callback: () => T, options: RunWithAsyncContextOptions): T;\n}\n\n/**\n * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n client?: Client;\n scope: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: {\n // eslint-disable-next-line deprecation/deprecation\n hub?: Hub;\n acs?: AsyncContextStrategy;\n /**\n * Extra Hub properties injected by various SDKs\n */\n integrations?: Integration[];\n extensions?: {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n/**\n * @deprecated The `Hub` class will be removed in version 8 of the SDK in favour of `Scope` and `Client` objects.\n *\n * If you previously used the `Hub` class directly, replace it with `Scope` and `Client` objects. More information:\n * - [Multiple Sentry Instances](https://docs.sentry.io/platforms/javascript/best-practices/multiple-sentry-instances/)\n * - [Browser Extensions](https://docs.sentry.io/platforms/javascript/best-practices/browser-extensions/)\n *\n * Some of our APIs are typed with the Hub class instead of the interface (e.g. `getCurrentHub`). Most of them are deprecated\n * themselves and will also be removed in version 8. More information:\n * - [Migration Guide](https://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md#deprecate-hub)\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n private _isolationScope: Scope;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n *\n * @deprecated Instantiation of Hub objects is deprecated and the constructor will be removed in version 8 of the SDK.\n *\n * If you are currently using the Hub for multi-client use like so:\n *\n * ```\n * // OLD\n * const hub = new Hub();\n * hub.bindClient(client);\n * makeMain(hub)\n * ```\n *\n * instead initialize the client as follows:\n *\n * ```\n * // NEW\n * Sentry.withIsolationScope(() => {\n * Sentry.setCurrentClient(client);\n * client.init();\n * });\n * ```\n *\n * If you are using the Hub to capture events like so:\n *\n * ```\n * // OLD\n * const client = new Client();\n * const hub = new Hub(client);\n * hub.captureException()\n * ```\n *\n * instead capture isolated events as follows:\n *\n * ```\n * // NEW\n * const client = new Client();\n * const scope = new Scope();\n * scope.setClient(client);\n * scope.captureException();\n * ```\n */\n public constructor(\n client?: Client,\n scope?: Scope,\n isolationScope?: Scope,\n private readonly _version: number = API_VERSION,\n ) {\n let assignedScope;\n if (!scope) {\n assignedScope = new Scope();\n assignedScope.setClient(client);\n } else {\n assignedScope = scope;\n }\n\n let assignedIsolationScope;\n if (!isolationScope) {\n assignedIsolationScope = new Scope();\n assignedIsolationScope.setClient(client);\n } else {\n assignedIsolationScope = isolationScope;\n }\n\n this._stack = [{ scope: assignedScope }];\n\n if (client) {\n // eslint-disable-next-line deprecation/deprecation\n this.bindClient(client);\n }\n\n this._isolationScope = assignedIsolationScope;\n }\n\n /**\n * Checks if this hub's version is older than the given version.\n *\n * @param version A version number to compare to.\n * @return True if the given version is newer; otherwise false.\n *\n * @deprecated This will be removed in v8.\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * This binds the given client to the current scope.\n * @param client An SDK client (client) instance.\n *\n * @deprecated Use `initAndBind()` directly, or `setCurrentClient()` and/or `client.init()` instead.\n */\n public bindClient(client?: Client): void {\n // eslint-disable-next-line deprecation/deprecation\n const top = this.getStackTop();\n top.client = client;\n top.scope.setClient(client);\n // eslint-disable-next-line deprecation/deprecation\n if (client && client.setupIntegrations) {\n // eslint-disable-next-line deprecation/deprecation\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `withScope` instead.\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n // eslint-disable-next-line deprecation/deprecation\n const scope = this.getScope().clone();\n // eslint-disable-next-line deprecation/deprecation\n this.getStack().push({\n // eslint-disable-next-line deprecation/deprecation\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `withScope` instead.\n */\n public popScope(): boolean {\n // eslint-disable-next-line deprecation/deprecation\n if (this.getStack().length <= 1) return false;\n // eslint-disable-next-line deprecation/deprecation\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.withScope()` instead.\n */\n public withScope<T>(callback: (scope: Scope) => T): T {\n // eslint-disable-next-line deprecation/deprecation\n const scope = this.pushScope();\n\n let maybePromiseResult: T;\n try {\n maybePromiseResult = callback(scope);\n } catch (e) {\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n // @ts-expect-error - isThenable returns the wrong type\n return maybePromiseResult.then(\n res => {\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n return res;\n },\n e => {\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n throw e;\n },\n );\n }\n\n // eslint-disable-next-line deprecation/deprecation\n this.popScope();\n return maybePromiseResult;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.getClient()` instead.\n */\n public getClient<C extends Client>(): C | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return this.getStackTop().client as C;\n }\n\n /**\n * Returns the scope of the top stack.\n *\n * @deprecated Use `Sentry.getCurrentScope()` instead.\n */\n public getScope(): Scope {\n // eslint-disable-next-line deprecation/deprecation\n return this.getStackTop().scope;\n }\n\n /**\n * @deprecated Use `Sentry.getIsolationScope()` instead.\n */\n public getIsolationScope(): Scope {\n return this._isolationScope;\n }\n\n /**\n * Returns the scope stack for domains or the process.\n * @deprecated This will be removed in v8.\n */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /**\n * Returns the topmost scope layer in the order domain > local > process.\n * @deprecated This will be removed in v8.\n */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.captureException()` instead.\n */\n public captureException(exception: unknown, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error('Sentry syntheticException');\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().captureException(exception, {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.captureMessage()` instead.\n */\n public captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n ): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error(message);\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().captureMessage(message, level, {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.captureEvent()` instead.\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (!event.type) {\n this._lastEventId = eventId;\n }\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().captureEvent(event, { ...hint, event_id: eventId });\n return eventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated This will be removed in v8.\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `Sentry.addBreadcrumb()` instead.\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n\n if (!client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n if (client.emit) {\n client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n }\n\n // TODO(v8): I know this comment doesn't make much sense because the hub will be deprecated but I still wanted to\n // write it down. In theory, we would have to add the breadcrumbs to the isolation scope here, however, that would\n // duplicate all of the breadcrumbs. There was the possibility of adding breadcrumbs to both, the isolation scope\n // and the normal scope, and deduplicating it down the line in the event processing pipeline. However, that would\n // have been very fragile, because the breadcrumb objects would have needed to keep their identity all throughout\n // the event processing pipeline.\n // In the new implementation, the top level `Sentry.addBreadcrumb()` should ONLY write to the isolation scope.\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setUser()` instead.\n */\n public setUser(user: User | null): void {\n // TODO(v8): The top level `Sentry.setUser()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setUser(user);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setUser(user);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setTags()` instead.\n */\n public setTags(tags: { [key: string]: Primitive }): void {\n // TODO(v8): The top level `Sentry.setTags()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setTags(tags);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setTags(tags);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setExtras()` instead.\n */\n public setExtras(extras: Extras): void {\n // TODO(v8): The top level `Sentry.setExtras()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setExtras(extras);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setExtras(extras);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setTag()` instead.\n */\n public setTag(key: string, value: Primitive): void {\n // TODO(v8): The top level `Sentry.setTag()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setTag(key, value);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setTag(key, value);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setExtra()` instead.\n */\n public setExtra(key: string, extra: Extra): void {\n // TODO(v8): The top level `Sentry.setExtra()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setExtra(key, extra);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.setContext()` instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setContext(name: string, context: { [key: string]: any } | null): void {\n // TODO(v8): The top level `Sentry.setContext()` function should write ONLY to the isolation scope.\n // eslint-disable-next-line deprecation/deprecation\n this.getScope().setContext(name, context);\n // eslint-disable-next-line deprecation/deprecation\n this.getIsolationScope().setContext(name, context);\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `getScope()` directly.\n */\n public configureScope(callback: (scope: Scope) => void): void {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line deprecation/deprecation\n public run(callback: (hub: Hub) => void): void {\n // eslint-disable-next-line deprecation/deprecation\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n // eslint-disable-next-line deprecation/deprecation\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `Sentry.getClient().getIntegrationByName()` instead.\n */\n public getIntegration<T extends Integration>(integration: IntegrationClass<T>): T | null {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n if (!client) return null;\n try {\n // eslint-disable-next-line deprecation/deprecation\n return client.getIntegration(integration);\n } catch (_oO) {\n DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.end()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\n public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n const result = this._callExtensionMethod<Transaction>('startTransaction', context, customSamplingContext);\n\n if (DEBUG_BUILD && !result) {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n if (!client) {\n logger.warn(\n \"Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'\",\n );\n } else {\n logger.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':\nSentry.addTracingExtensions();\nSentry.init({...});\n`);\n }\n }\n\n return result;\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `spanToTraceHeader()` instead.\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use top level `captureSession` instead.\n */\n public captureSession(endSession: boolean = false): void {\n // both send the update and pull the session from the scope\n if (endSession) {\n // eslint-disable-next-line deprecation/deprecation\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n * @deprecated Use top level `endSession` instead.\n */\n public endSession(): void {\n // eslint-disable-next-line deprecation/deprecation\n const layer = this.getStackTop();\n const scope = layer.scope;\n const session = scope.getSession();\n if (session) {\n closeSession(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n scope.setSession();\n }\n\n /**\n * @inheritDoc\n * @deprecated Use top level `startSession` instead.\n */\n public startSession(context?: SessionContext): Session {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n user: scope.getUser(),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n // eslint-disable-next-line deprecation/deprecation\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n\n return session;\n }\n\n /**\n * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n * when Tracing is used.\n *\n * @deprecated Use top-level `getClient().getOptions().sendDefaultPii` instead. This function\n * only unnecessarily increased API surface but only wrapped accessing the option.\n */\n public shouldSendDefaultPii(): boolean {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n const options = client && client.getOptions();\n return Boolean(options && options.sendDefaultPii);\n }\n\n /**\n * Sends the current Session on the scope\n */\n private _sendSessionUpdate(): void {\n // eslint-disable-next-line deprecation/deprecation\n const { scope, client } = this.getStackTop();\n\n const session = scope.getSession();\n if (session && client && client.captureSession) {\n client.captureSession(session);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-expect-error Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _callExtensionMethod<T>(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n DEBUG_BUILD && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return GLOBAL_OBJ;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n *\n * @deprecated Use `setCurrentClient()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n *\n * @deprecated Use the respective replacement method directly instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n const hub = registry.__SENTRY__.acs.getCurrentHub();\n\n if (hub) {\n return hub;\n }\n }\n\n // Return hub that lives on a global object\n return getGlobalHub(registry);\n}\n\n/**\n * Get the currently active isolation scope.\n * The isolation scope is active for the current exection context,\n * meaning that it will remain stable for the same Hub.\n */\nexport function getIsolationScope(): Scope {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentHub().getIsolationScope();\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction getGlobalHub(registry: Carrier = getMainCarrier()): Hub {\n // If there's no hub, or its an old API, assign a new one\n\n if (\n !hasHubOnCarrier(registry) ||\n // eslint-disable-next-line deprecation/deprecation\n getHubFromCarrier(registry).isOlderThan(API_VERSION)\n ) {\n // eslint-disable-next-line deprecation/deprecation\n setHubOnCarrier(registry, new Hub());\n }\n\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * If the carrier does not contain a hub, a new hub is created with the global hub client and scope.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function ensureHubOnCarrier(carrier: Carrier, parent: Hub = getGlobalHub()): void {\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (\n !hasHubOnCarrier(carrier) ||\n // eslint-disable-next-line deprecation/deprecation\n getHubFromCarrier(carrier).isOlderThan(API_VERSION)\n ) {\n // eslint-disable-next-line deprecation/deprecation\n const client = parent.getClient();\n // eslint-disable-next-line deprecation/deprecation\n const scope = parent.getScope();\n // eslint-disable-next-line deprecation/deprecation\n const isolationScope = parent.getIsolationScope();\n // eslint-disable-next-line deprecation/deprecation\n setHubOnCarrier(carrier, new Hub(client, scope.clone(), isolationScope.clone()));\n }\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nexport function setAsyncContextStrategy(strategy: AsyncContextStrategy | undefined): void {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n registry.__SENTRY__ = registry.__SENTRY__ || {};\n registry.__SENTRY__.acs = strategy;\n}\n\n/**\n * Runs the supplied callback in its own async context. Async Context strategies are defined per SDK.\n *\n * @param callback The callback to run in its own async context\n * @param options Options to pass to the async context strategy\n * @returns The result of the callback\n */\nexport function runWithAsyncContext<T>(callback: () => T, options: RunWithAsyncContextOptions = {}): T {\n const registry = getMainCarrier();\n\n if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n return registry.__SENTRY__.acs.runWithAsyncContext(callback, options);\n }\n\n // if there was no strategy, fallback to just calling the callback\n return callback();\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n // eslint-disable-next-line deprecation/deprecation\n return getGlobalSingleton<Hub>('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n","import type { MeasurementUnit, Span } from '@sentry/types';\nimport type { MetricSummary } from '@sentry/types';\nimport type { Primitive } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\nimport { getActiveSpan } from '../tracing';\nimport type { MetricType } from './types';\n\n/**\n * key: bucketKey\n * value: [exportKey, MetricSummary]\n */\ntype MetricSummaryStorage = Map<string, [string, MetricSummary]>;\n\nlet SPAN_METRIC_SUMMARY: WeakMap<Span, MetricSummaryStorage> | undefined;\n\nfunction getMetricStorageForSpan(span: Span): MetricSummaryStorage | undefined {\n return SPAN_METRIC_SUMMARY ? SPAN_METRIC_SUMMARY.get(span) : undefined;\n}\n\n/**\n * Fetches the metric summary if it exists for the passed span\n */\nexport function getMetricSummaryJsonForSpan(span: Span): Record<string, Array<MetricSummary>> | undefined {\n const storage = getMetricStorageForSpan(span);\n\n if (!storage) {\n return undefined;\n }\n const output: Record<string, Array<MetricSummary>> = {};\n\n for (const [, [exportKey, summary]] of storage) {\n if (!output[exportKey]) {\n output[exportKey] = [];\n }\n\n output[exportKey].push(dropUndefinedKeys(summary));\n }\n\n return output;\n}\n\n/**\n * Updates the metric summary on the currently active span\n */\nexport function updateMetricSummaryOnActiveSpan(\n metricType: MetricType,\n sanitizedName: string,\n value: number,\n unit: MeasurementUnit,\n tags: Record<string, Primitive>,\n bucketKey: string,\n): void {\n const span = getActiveSpan();\n if (span) {\n const storage = getMetricStorageForSpan(span) || new Map<string, [string, MetricSummary]>();\n\n const exportKey = `${metricType}:${sanitizedName}@${unit}`;\n const bucketItem = storage.get(bucketKey);\n\n if (bucketItem) {\n const [, summary] = bucketItem;\n storage.set(bucketKey, [\n exportKey,\n {\n min: Math.min(summary.min, value),\n max: Math.max(summary.max, value),\n count: (summary.count += 1),\n sum: (summary.sum += value),\n tags: summary.tags,\n },\n ]);\n } else {\n storage.set(bucketKey, [\n exportKey,\n {\n min: value,\n max: value,\n count: 1,\n sum: value,\n tags,\n },\n ]);\n }\n\n if (!SPAN_METRIC_SUMMARY) {\n SPAN_METRIC_SUMMARY = new WeakMap();\n }\n\n SPAN_METRIC_SUMMARY.set(span, storage);\n }\n}\n","/* eslint-disable max-lines */\nimport type {\n Attachment,\n Breadcrumb,\n CaptureContext,\n Client,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n PropagationContext,\n RequestSession,\n Scope as ScopeInterface,\n ScopeContext,\n ScopeData,\n Session,\n Severity,\n SeverityLevel,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport { dateTimestampInSeconds, isPlainObject, logger, uuid4 } from '@sentry/utils';\n\nimport { getGlobalEventProcessors, notifyEventProcessors } from './eventProcessors';\nimport { updateSession } from './session';\nimport { applyScopeDataToEvent } from './utils/applyScopeDataToEvent';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * The global scope is kept in this module.\n * When accessing this via `getGlobalScope()` we'll make sure to set one if none is currently present.\n */\nlet globalScope: ScopeInterface | undefined;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void>;\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[];\n\n /** User */\n protected _user: User;\n\n /** Tags */\n protected _tags: { [key: string]: Primitive };\n\n /** Extra */\n protected _extra: Extras;\n\n /** Contexts */\n protected _contexts: Contexts;\n\n /** Attachments */\n protected _attachments: Attachment[];\n\n /** Propagation Context for distributed tracing */\n protected _propagationContext: PropagationContext;\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n protected _sdkProcessingMetadata: { [key: string]: unknown };\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n // eslint-disable-next-line deprecation/deprecation\n protected _level?: Severity | SeverityLevel;\n\n /**\n * Transaction Name\n */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /** Request Mode Session Status */\n protected _requestSession?: RequestSession;\n\n /** The client on this scope */\n protected _client?: Client;\n\n // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n public constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n this._propagationContext = generatePropagationContext();\n }\n\n /**\n * Inherit values from the parent scope.\n * @deprecated Use `scope.clone()` and `new Scope()` instead.\n */\n public static clone(scope?: Scope): Scope {\n return scope ? scope.clone() : new Scope();\n }\n\n /**\n * Clone this scope instance.\n */\n public clone(): Scope {\n const newScope = new Scope();\n newScope._breadcrumbs = [...this._breadcrumbs];\n newScope._tags = { ...this._tags };\n newScope._extra = { ...this._extra };\n newScope._contexts = { ...this._contexts };\n newScope._user = this._user;\n newScope._level = this._level;\n newScope._span = this._span;\n newScope._session = this._session;\n newScope._transactionName = this._transactionName;\n newScope._fingerprint = this._fingerprint;\n newScope._eventProcessors = [...this._eventProcessors];\n newScope._requestSession = this._requestSession;\n newScope._attachments = [...this._attachments];\n newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n newScope._propagationContext = { ...this._propagationContext };\n newScope._client = this._client;\n\n return newScope;\n }\n\n /** Update the client on the scope. */\n public setClient(client: Client | undefined): void {\n this._client = client;\n }\n\n /**\n * Get the client assigned to this scope.\n *\n * It is generally recommended to use the global function `Sentry.getClient()` instead, unless you know what you are doing.\n */\n public getClient(): Client | undefined {\n return this._client;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n // If null is passed we want to unset everything, but still define keys,\n // so that later down in the pipeline any existing values are cleared.\n this._user = user || {\n email: undefined,\n id: undefined,\n ip_address: undefined,\n segment: undefined,\n username: undefined,\n };\n\n if (this._session) {\n updateSession(this._session, { user });\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public getRequestSession(): RequestSession | undefined {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n public setRequestSession(requestSession?: RequestSession): this {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel,\n ): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the transaction name on the scope for future events.\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Sets the Span on the scope.\n * @param span Span\n * @deprecated Instead of setting a span on a scope, use `startSpan()`/`startSpanManual()` instead.\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Returns the `Span` if there is one.\n * @deprecated Use `getActiveSpan()` instead.\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * Returns the `Transaction` attached to the scope (if there is one).\n * @deprecated You should not rely on the transaction, but just use `startSpan()` APIs instead.\n */\n public getTransaction(): Transaction | undefined {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this._span;\n // Cannot replace with getRootSpan because getRootSpan returns a span, not a transaction\n // Also, this method will be removed anyway.\n // eslint-disable-next-line deprecation/deprecation\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext;\n\n if (scopeToMerge instanceof Scope) {\n const scopeData = scopeToMerge.getScopeData();\n\n this._tags = { ...this._tags, ...scopeData.tags };\n this._extra = { ...this._extra, ...scopeData.extra };\n this._contexts = { ...this._contexts, ...scopeData.contexts };\n if (scopeData.user && Object.keys(scopeData.user).length) {\n this._user = scopeData.user;\n }\n if (scopeData.level) {\n this._level = scopeData.level;\n }\n if (scopeData.fingerprint.length) {\n this._fingerprint = scopeData.fingerprint;\n }\n if (scopeToMerge.getRequestSession()) {\n this._requestSession = scopeToMerge.getRequestSession();\n }\n if (scopeData.propagationContext) {\n this._propagationContext = scopeData.propagationContext;\n }\n } else if (isPlainObject(scopeToMerge)) {\n const scopeContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...scopeContext.tags };\n this._extra = { ...this._extra, ...scopeContext.extra };\n this._contexts = { ...this._contexts, ...scopeContext.contexts };\n if (scopeContext.user) {\n this._user = scopeContext.user;\n }\n if (scopeContext.level) {\n this._level = scopeContext.level;\n }\n if (scopeContext.fingerprint) {\n this._fingerprint = scopeContext.fingerprint;\n }\n if (scopeContext.requestSession) {\n this._requestSession = scopeContext.requestSession;\n }\n if (scopeContext.propagationContext) {\n this._propagationContext = scopeContext.propagationContext;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n this._propagationContext = generatePropagationContext();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n\n const breadcrumbs = this._breadcrumbs;\n breadcrumbs.push(mergedBreadcrumb);\n this._breadcrumbs = breadcrumbs.length > maxCrumbs ? breadcrumbs.slice(-maxCrumbs) : breadcrumbs;\n\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getLastBreadcrumb(): Breadcrumb | undefined {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addAttachment(attachment: Attachment): this {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n * @deprecated Use `getScopeData()` instead.\n */\n public getAttachments(): Attachment[] {\n const data = this.getScopeData();\n\n return data.attachments;\n }\n\n /**\n * @inheritDoc\n */\n public clearAttachments(): this {\n this._attachments = [];\n return this;\n }\n\n /** @inheritDoc */\n public getScopeData(): ScopeData {\n const {\n _breadcrumbs,\n _attachments,\n _contexts,\n _tags,\n _extra,\n _user,\n _level,\n _fingerprint,\n _eventProcessors,\n _propagationContext,\n _sdkProcessingMetadata,\n _transactionName,\n _span,\n } = this;\n\n return {\n breadcrumbs: _breadcrumbs,\n attachments: _attachments,\n contexts: _contexts,\n tags: _tags,\n extra: _extra,\n user: _user,\n level: _level,\n fingerprint: _fingerprint || [],\n eventProcessors: _eventProcessors,\n propagationContext: _propagationContext,\n sdkProcessingMetadata: _sdkProcessingMetadata,\n transactionName: _transactionName,\n span: _span,\n };\n }\n\n /**\n * Applies data from the scope to the event and runs all event processors on it.\n *\n * @param event Event\n * @param hint Object containing additional information about the original exception, for use by the event processors.\n * @hidden\n * @deprecated Use `applyScopeDataToEvent()` directly\n */\n public applyToEvent(\n event: Event,\n hint: EventHint = {},\n additionalEventProcessors: EventProcessor[] = [],\n ): PromiseLike<Event | null> {\n applyScopeDataToEvent(event, this.getScopeData());\n\n // TODO (v8): Update this order to be: Global > Client > Scope\n const eventProcessors: EventProcessor[] = [\n ...additionalEventProcessors,\n // eslint-disable-next-line deprecation/deprecation\n ...getGlobalEventProcessors(),\n ...this._eventProcessors,\n ];\n\n return notifyEventProcessors(eventProcessors, event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setPropagationContext(context: PropagationContext): this {\n this._propagationContext = context;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getPropagationContext(): PropagationContext {\n return this._propagationContext;\n }\n\n /**\n * Capture an exception for this scope.\n *\n * @param exception The exception to capture.\n * @param hint Optinal additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\n public captureException(exception: unknown, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture exception!');\n return eventId;\n }\n\n const syntheticException = new Error('Sentry syntheticException');\n\n this._client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * Capture a message for this scope.\n *\n * @param message The message to capture.\n * @param level An optional severity level to report the message with.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured message.\n */\n public captureMessage(message: string, level?: SeverityLevel, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture message!');\n return eventId;\n }\n\n const syntheticException = new Error(message);\n\n this._client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n this,\n );\n\n return eventId;\n }\n\n /**\n * Captures a manually created event for this scope and sends it to Sentry.\n *\n * @param exception The event to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n\n if (!this._client) {\n logger.warn('No client configured on scope - will not capture event!');\n return eventId;\n }\n\n this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n\n return eventId;\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n}\n\n/**\n * Get the global scope.\n * This scope is applied to _all_ events.\n */\nexport function getGlobalScope(): ScopeInterface {\n if (!globalScope) {\n globalScope = new Scope();\n }\n\n return globalScope;\n}\n\n/**\n * This is mainly needed for tests.\n * DO NOT USE this, as this is an internal API and subject to change.\n * @hidden\n */\nexport function setGlobalScope(scope: ScopeInterface | undefined): void {\n globalScope = scope;\n}\n\nfunction generatePropagationContext(): PropagationContext {\n return {\n traceId: uuid4(),\n spanId: uuid4().substring(16),\n };\n}\n","/**\n * Use this attribute to represent the source of a span.\n * Should be one of: custom, url, route, view, component, task, unknown\n *\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source';\n\n/**\n * Use this attribute to represent the sample rate used for a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate';\n\n/**\n * Use this attribute to represent the operation of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/**\n * The id of the profile that this span occured in.\n */\nexport const SEMANTIC_ATTRIBUTE_PROFILE_ID = 'profile_id';\n","import type { SerializedSession, Session, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nexport function makeSession(context?: Omit<SessionContext, 'started' | 'status'>): Session {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session: Session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nexport function updateSession(session: Session, context: SessionContext = {}): void {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.abnormal_mechanism) {\n session.abnormal_mechanism = context.abnormal_mechanism;\n }\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nexport function closeSession(session: Session, status?: Exclude<SessionStatus, 'ok'>): void {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session: Session): SerializedSession {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n abnormal_mechanism: session.abnormal_mechanism,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n","import type { Client, DynamicSamplingContext, Scope, Span, Transaction } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getClient, getCurrentScope } from '../exports';\nimport { getRootSpan } from '../utils/getRootSpan';\nimport { spanIsSampled, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatches the `createDsc` lifecycle hook as a side effect.\n */\nexport function getDynamicSamplingContextFromClient(\n trace_id: string,\n client: Client,\n scope?: Scope,\n): DynamicSamplingContext {\n const options = client.getOptions();\n\n const { publicKey: public_key } = client.getDsn() || {};\n // TODO(v8): Remove segment from User\n // eslint-disable-next-line deprecation/deprecation\n const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n const dsc = dropUndefinedKeys({\n environment: options.environment || DEFAULT_ENVIRONMENT,\n release: options.release,\n user_segment,\n public_key,\n trace_id,\n }) as DynamicSamplingContext;\n\n client.emit && client.emit('createDsc', dsc);\n\n return dsc;\n}\n\n/**\n * A Span with a frozen dynamic sampling context.\n */\ntype TransactionWithV7FrozenDsc = Transaction & { _frozenDynamicSamplingContext?: DynamicSamplingContext };\n\n/**\n * Creates a dynamic sampling context from a span (and client and scope)\n *\n * @param span the span from which a few values like the root span name and sample rate are extracted.\n *\n * @returns a dynamic sampling context\n */\nexport function getDynamicSamplingContextFromSpan(span: Span): Readonly<Partial<DynamicSamplingContext>> {\n const client = getClient();\n if (!client) {\n return {};\n }\n\n // passing emit=false here to only emit later once the DSC is actually populated\n const dsc = getDynamicSamplingContextFromClient(spanToJSON(span).trace_id || '', client, getCurrentScope());\n\n // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n const txn = getRootSpan(span) as TransactionWithV7FrozenDsc | undefined;\n if (!txn) {\n return dsc;\n }\n\n // TODO (v8): Remove v7FrozenDsc as a Transaction will no longer have _frozenDynamicSamplingContext\n // For now we need to avoid breaking users who directly created a txn with a DSC, where this field is still set.\n // @see Transaction class constructor\n const v7FrozenDsc = txn && txn._frozenDynamicSamplingContext;\n if (v7FrozenDsc) {\n return v7FrozenDsc;\n }\n\n // TODO (v8): Replace txn.metadata with txn.attributes[]\n // We can't do this yet because attributes aren't always set yet.\n // eslint-disable-next-line deprecation/deprecation\n const { sampleRate: maybeSampleRate, source } = txn.metadata;\n if (maybeSampleRate != null) {\n dsc.sample_rate = `${maybeSampleRate}`;\n }\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const jsonSpan = spanToJSON(txn);\n\n // after JSON conversion, txn.name becomes jsonSpan.description\n if (source && source !== 'url') {\n dsc.transaction = jsonSpan.description;\n }\n\n dsc.sampled = String(spanIsSampled(txn));\n\n client.emit && client.emit('createDsc', dsc);\n\n return dsc;\n}\n","import {\n addGlobalErrorInstrumentationHandler,\n addGlobalUnhandledRejectionInstrumentationHandler,\n logger,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { SpanStatusType } from './spanstatus';\nimport { getActiveTransaction } from './utils';\n\nlet errorsInstrumented = false;\n\n/**\n * Configures global error listeners\n */\nexport function registerErrorInstrumentation(): void {\n if (errorsInstrumented) {\n return;\n }\n\n errorsInstrumented = true;\n addGlobalErrorInstrumentationHandler(errorCallback);\n addGlobalUnhandledRejectionInstrumentationHandler(errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback(): void {\n // eslint-disable-next-line deprecation/deprecation\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const status: SpanStatusType = 'internal_error';\n DEBUG_BUILD && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n\n// The function name will be lost when bundling but we need to be able to identify this listener later to maintain the\n// node.js default exit behaviour\nerrorCallback.tag = 'sentry_tracingErrorCallback';\n","import type { ClientOptions, CustomSamplingContext, TransactionContext } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Hub } from '../hub';\nimport { getMainCarrier } from '../hub';\nimport { spanToTraceHeader } from '../utils/spanUtils';\nimport { registerErrorInstrumentation } from './errors';\nimport { IdleTransaction } from './idletransaction';\nimport { sampleTransaction } from './sampling';\nimport { Transaction } from './transaction';\n\n/** Returns all trace headers that are currently on the top scope. */\n// eslint-disable-next-line deprecation/deprecation\nfunction traceHeaders(this: Hub): { [key: string]: string } {\n // eslint-disable-next-line deprecation/deprecation\n const scope = this.getScope();\n // eslint-disable-next-line deprecation/deprecation\n const span = scope.getSpan();\n\n return span\n ? {\n 'sentry-trace': spanToTraceHeader(span),\n }\n : {};\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n // eslint-disable-next-line deprecation/deprecation\n this: Hub,\n transactionContext: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): Transaction {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n const options: Partial<ClientOptions> = (client && client.getOptions()) || {};\n\n const configInstrumenter = options.instrumenter || 'sentry';\n const transactionInstrumenter = transactionContext.instrumenter || 'sentry';\n\n if (configInstrumenter !== transactionInstrumenter) {\n DEBUG_BUILD &&\n logger.error(\n `A transaction was started with instrumenter=\\`${transactionInstrumenter}\\`, but the SDK is configured with the \\`${configInstrumenter}\\` instrumenter.\nThe transaction will not be sampled. Please use the ${configInstrumenter} instrumentation to start transactions.`,\n );\n\n // eslint-disable-next-line deprecation/deprecation\n transactionContext.sampled = false;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n let transaction = new Transaction(transactionContext, this);\n transaction = sampleTransaction(transaction, options, {\n name: transactionContext.name,\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n attributes: {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.data,\n ...transactionContext.attributes,\n },\n ...customSamplingContext,\n });\n if (transaction.isRecording()) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nexport function startIdleTransaction(\n // eslint-disable-next-line deprecation/deprecation\n hub: Hub,\n transactionContext: TransactionContext,\n idleTimeout: number,\n finalTimeout: number,\n onScope?: boolean,\n customSamplingContext?: CustomSamplingContext,\n heartbeatInterval?: number,\n delayAutoFinishUntilSignal: boolean = false,\n): IdleTransaction {\n // eslint-disable-next-line deprecation/deprecation\n const client = hub.getClient();\n const options: Partial<ClientOptions> = (client && client.getOptions()) || {};\n\n // eslint-disable-next-line deprecation/deprecation\n let transaction = new IdleTransaction(\n transactionContext,\n hub,\n idleTimeout,\n finalTimeout,\n heartbeatInterval,\n onScope,\n delayAutoFinishUntilSignal,\n );\n transaction = sampleTransaction(transaction, options, {\n name: transactionContext.name,\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n attributes: {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.data,\n ...transactionContext.attributes,\n },\n ...customSamplingContext,\n });\n if (transaction.isRecording()) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Adds tracing extensions to the global hub.\n */\nexport function addTracingExtensions(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n\n registerErrorInstrumentation();\n}\n","/* eslint-disable max-lines */\nimport type { SpanTimeInput, TransactionContext } from '@sentry/types';\nimport { logger, timestampInSeconds } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Hub } from '../hub';\nimport { spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils';\nimport type { Span } from './span';\nimport { SpanRecorder } from './span';\nimport { Transaction } from './transaction';\n\nexport const TRACING_DEFAULTS = {\n idleTimeout: 1000,\n finalTimeout: 30000,\n heartbeatInterval: 5000,\n};\n\nconst FINISH_REASON_TAG = 'finishReason';\n\nconst IDLE_TRANSACTION_FINISH_REASONS = [\n 'heartbeatFailed',\n 'idleTimeout',\n 'documentHidden',\n 'finalTimeout',\n 'externalFinish',\n 'cancelled',\n];\n\n/**\n * @inheritDoc\n */\nexport class IdleTransactionSpanRecorder extends SpanRecorder {\n public constructor(\n private readonly _pushActivity: (id: string) => void,\n private readonly _popActivity: (id: string) => void,\n public transactionSpanId: string,\n maxlen?: number,\n ) {\n super(maxlen);\n }\n\n /**\n * @inheritDoc\n */\n public add(span: Span): void {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanContext().spanId !== this.transactionSpanId) {\n // We patch span.end() to pop an activity after setting an endTimestamp.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const originalEnd = span.end;\n span.end = (...rest: unknown[]) => {\n this._popActivity(span.spanContext().spanId);\n return originalEnd.apply(span, rest);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (spanToJSON(span).timestamp === undefined) {\n this._pushActivity(span.spanContext().spanId);\n }\n }\n\n super.add(span);\n }\n}\n\nexport type BeforeFinishCallback = (transactionSpan: IdleTransaction, endTimestamp: number) => void;\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nexport class IdleTransaction extends Transaction {\n // Activities store a list of active spans\n public activities: Record<string, boolean>;\n // Track state of activities in previous heartbeat\n private _prevHeartbeatString: string | undefined;\n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n private _heartbeatCounter: number;\n\n // We should not use heartbeat if we finished a transaction\n private _finished: boolean;\n\n // Idle timeout was canceled and we should finish the transaction with the last span end.\n private _idleTimeoutCanceledPermanently: boolean;\n\n private readonly _beforeFinishCallbacks: BeforeFinishCallback[];\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n private _idleTimeoutID: ReturnType<typeof setTimeout> | undefined;\n\n private _finishReason: (typeof IDLE_TRANSACTION_FINISH_REASONS)[number];\n\n private _autoFinishAllowed: boolean;\n\n /**\n * @deprecated Transactions will be removed in v8. Use spans instead.\n */\n public constructor(\n transactionContext: TransactionContext,\n // eslint-disable-next-line deprecation/deprecation\n private readonly _idleHub: Hub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n private readonly _idleTimeout: number = TRACING_DEFAULTS.idleTimeout,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n private readonly _finalTimeout: number = TRACING_DEFAULTS.finalTimeout,\n private readonly _heartbeatInterval: number = TRACING_DEFAULTS.heartbeatInterval,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n private readonly _onScope: boolean = false,\n /**\n * When set to `true`, will disable the idle timeout (`_idleTimeout` option) and heartbeat mechanisms (`_heartbeatInterval`\n * option) until the `sendAutoFinishSignal()` method is called. The final timeout mechanism (`_finalTimeout` option)\n * will not be affected by this option, meaning the transaction will definitely be finished when the final timeout is\n * reached, no matter what this option is configured to.\n *\n * Defaults to `false`.\n */\n delayAutoFinishUntilSignal: boolean = false,\n ) {\n super(transactionContext, _idleHub);\n\n this.activities = {};\n this._heartbeatCounter = 0;\n this._finished = false;\n this._idleTimeoutCanceledPermanently = false;\n this._beforeFinishCallbacks = [];\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[4];\n this._autoFinishAllowed = !delayAutoFinishUntilSignal;\n\n if (_onScope) {\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n DEBUG_BUILD && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanContext().spanId}`);\n // eslint-disable-next-line deprecation/deprecation\n _idleHub.getScope().setSpan(this);\n }\n\n if (!delayAutoFinishUntilSignal) {\n this._restartIdleTimeout();\n }\n\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[3];\n this.end();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n public end(endTimestamp?: SpanTimeInput): string | undefined {\n const endTimestampInS = spanTimeInputToSeconds(endTimestamp);\n\n this._finished = true;\n this.activities = {};\n\n // eslint-disable-next-line deprecation/deprecation\n if (this.op === 'ui.action.click') {\n this.setAttribute(FINISH_REASON_TAG, this._finishReason);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n if (this.spanRecorder) {\n DEBUG_BUILD &&\n // eslint-disable-next-line deprecation/deprecation\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestampInS * 1000).toISOString(), this.op);\n\n for (const callback of this._beforeFinishCallbacks) {\n callback(this, endTimestampInS);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span: Span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanContext().spanId === this.spanContext().spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!spanToJSON(span).timestamp) {\n span.setStatus('cancelled');\n span.end(endTimestampInS);\n DEBUG_BUILD &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n const { start_timestamp: startTime, timestamp: endTime } = spanToJSON(span);\n const spanStartedBeforeTransactionFinish = startTime && startTime < endTimestampInS;\n\n // Add a delta with idle timeout so that we prevent false positives\n const timeoutWithMarginOfError = (this._finalTimeout + this._idleTimeout) / 1000;\n const spanEndedBeforeFinalTimeout = endTime && startTime && endTime - startTime < timeoutWithMarginOfError;\n\n if (DEBUG_BUILD) {\n const stringifiedSpan = JSON.stringify(span, undefined, 2);\n if (!spanStartedBeforeTransactionFinish) {\n logger.log('[Tracing] discarding Span since it happened after Transaction was finished', stringifiedSpan);\n } else if (!spanEndedBeforeFinalTimeout) {\n logger.log('[Tracing] discarding Span since it finished after Transaction final timeout', stringifiedSpan);\n }\n }\n\n return spanStartedBeforeTransactionFinish && spanEndedBeforeFinalTimeout;\n });\n\n DEBUG_BUILD && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n DEBUG_BUILD && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n // eslint-disable-next-line deprecation/deprecation\n const scope = this._idleHub.getScope();\n // eslint-disable-next-line deprecation/deprecation\n if (scope.getTransaction() === this) {\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(undefined);\n }\n }\n\n return super.end(endTimestamp);\n }\n\n /**\n * Register a callback function that gets executed before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n public registerBeforeFinishCallback(callback: BeforeFinishCallback): void {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public initSpanRecorder(maxlen?: number): void {\n // eslint-disable-next-line deprecation/deprecation\n if (!this.spanRecorder) {\n const pushActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n const popActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanContext().spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n DEBUG_BUILD && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idle timeout, if there is one.\n * @param restartOnChildSpanChange Default is `true`.\n * If set to false the transaction will end\n * with the last child span.\n */\n public cancelIdleTimeout(\n endTimestamp?: Parameters<IdleTransaction['end']>[0],\n {\n restartOnChildSpanChange,\n }: {\n restartOnChildSpanChange?: boolean;\n } = {\n restartOnChildSpanChange: true,\n },\n ): void {\n this._idleTimeoutCanceledPermanently = restartOnChildSpanChange === false;\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n\n if (Object.keys(this.activities).length === 0 && this._idleTimeoutCanceledPermanently) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.end(endTimestamp);\n }\n }\n }\n\n /**\n * Temporary method used to externally set the transaction's `finishReason`\n *\n * ** WARNING**\n * This is for the purpose of experimentation only and will be removed in the near future, do not use!\n *\n * @internal\n *\n */\n public setFinishReason(reason: string): void {\n this._finishReason = reason;\n }\n\n /**\n * Permits the IdleTransaction to automatically end itself via the idle timeout and heartbeat mechanisms when the `delayAutoFinishUntilSignal` option was set to `true`.\n */\n public sendAutoFinishSignal(): void {\n if (!this._autoFinishAllowed) {\n DEBUG_BUILD && logger.log('[Tracing] Received finish signal for idle transaction.');\n this._restartIdleTimeout();\n this._autoFinishAllowed = true;\n }\n }\n\n /**\n * Restarts idle timeout, if there is no running idle timeout it will start one.\n */\n private _restartIdleTimeout(endTimestamp?: Parameters<IdleTransaction['end']>[0]): void {\n this.cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[1];\n this.end(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n private _pushActivity(spanId: string): void {\n this.cancelIdleTimeout(undefined, { restartOnChildSpanChange: !this._idleTimeoutCanceledPermanently });\n DEBUG_BUILD && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n private _popActivity(spanId: string): void {\n if (this.activities[spanId]) {\n DEBUG_BUILD && logger.log(`[Tracing] popActivity ${spanId}`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n const endTimestamp = timestampInSeconds();\n if (this._idleTimeoutCanceledPermanently) {\n if (this._autoFinishAllowed) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.end(endTimestamp);\n }\n } else {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampInSeconds is in seconds, timeout is in ms\n this._restartIdleTimeout(endTimestamp + this._idleTimeout / 1000);\n }\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n private _beat(): void {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n const heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter++;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n if (this._autoFinishAllowed) {\n DEBUG_BUILD && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[0];\n this.end();\n }\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n private _pingHeartbeat(): void {\n DEBUG_BUILD && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, this._heartbeatInterval);\n }\n}\n","import type { Options, SamplingContext } from '@sentry/types';\nimport { isNaN, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE } from '../semanticAttributes';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled';\nimport { spanToJSON } from '../utils/spanUtils';\nimport type { Transaction } from './transaction';\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * This method muttes the given `transaction` and will set the `sampled` value on it.\n * It returns the same transaction, for convenience.\n */\nexport function sampleTransaction<T extends Transaction>(\n transaction: T,\n options: Pick<Options, 'tracesSampleRate' | 'tracesSampler' | 'enableTracing'>,\n samplingContext: SamplingContext,\n): T {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n // eslint-disable-next-line deprecation/deprecation\n if (transaction.sampled !== undefined) {\n // eslint-disable-next-line deprecation/deprecation\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(transaction.sampled));\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` nor `enableTracing` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(sampleRate));\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n } else if (typeof options.tracesSampleRate !== 'undefined') {\n sampleRate = options.tracesSampleRate;\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(sampleRate));\n } else {\n // When `enableTracing === true`, we use a sample rate of 100%\n sampleRate = 1;\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, sampleRate);\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n DEBUG_BUILD && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n DEBUG_BUILD &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = Math.random() < (sampleRate as number | boolean);\n\n // if we're not going to keep it, we're done\n // eslint-disable-next-line deprecation/deprecation\n if (!transaction.sampled) {\n DEBUG_BUILD &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n DEBUG_BUILD &&\n // eslint-disable-next-line deprecation/deprecation\n logger.log(`[Tracing] starting ${transaction.op} transaction - ${spanToJSON(transaction).description}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nexport function isValidSampleRate(rate: unknown): boolean {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n DEBUG_BUILD &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n DEBUG_BUILD &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n","/* eslint-disable max-lines */\nimport type {\n Instrumenter,\n Measurements,\n Primitive,\n Span as SpanInterface,\n SpanAttributeValue,\n SpanAttributes,\n SpanContext,\n SpanContextData,\n SpanJSON,\n SpanOrigin,\n SpanTimeInput,\n TraceContext,\n Transaction,\n} from '@sentry/types';\nimport { dropUndefinedKeys, logger, timestampInSeconds, uuid4 } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { getMetricSummaryJsonForSpan } from '../metrics/metric-summary';\nimport {\n SEMANTIC_ATTRIBUTE_PROFILE_ID,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n} from '../semanticAttributes';\nimport { getRootSpan } from '../utils/getRootSpan';\nimport {\n TRACE_FLAG_NONE,\n TRACE_FLAG_SAMPLED,\n spanTimeInputToSeconds,\n spanToJSON,\n spanToTraceContext,\n spanToTraceHeader,\n} from '../utils/spanUtils';\nimport type { SpanStatusType } from './spanstatus';\nimport { setHttpStatus } from './spanstatus';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nexport class SpanRecorder {\n public spans: Span[];\n\n private readonly _maxlen: number;\n\n public constructor(maxlen: number = 1000) {\n this._maxlen = maxlen;\n this.spans = [];\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n public add(span: Span): void {\n if (this.spans.length > this._maxlen) {\n // eslint-disable-next-line deprecation/deprecation\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nexport class Span implements SpanInterface {\n /**\n * Tags for the span.\n * @deprecated Use `spanToJSON(span).atttributes` instead.\n */\n public tags: { [key: string]: Primitive };\n\n /**\n * Data for the span.\n * @deprecated Use `spanToJSON(span).atttributes` instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public data: { [key: string]: any };\n\n /**\n * List of spans that were finalized\n *\n * @deprecated This property will no longer be public. Span recording will be handled internally.\n */\n public spanRecorder?: SpanRecorder;\n\n /**\n * @inheritDoc\n * @deprecated Use top level `Sentry.getRootSpan()` instead\n */\n public transaction?: Transaction;\n\n /**\n * The instrumenter that created this span.\n *\n * TODO (v8): This can probably be replaced by an `instanceOf` check of the span class.\n * the instrumenter can only be sentry or otel so we can check the span instance\n * to verify which one it is and remove this field entirely.\n *\n * @deprecated This field will be removed.\n */\n public instrumenter: Instrumenter;\n\n protected _traceId: string;\n protected _spanId: string;\n protected _parentSpanId?: string | undefined;\n protected _sampled: boolean | undefined;\n protected _name?: string | undefined;\n protected _attributes: SpanAttributes;\n /** Epoch timestamp in seconds when the span started. */\n protected _startTime: number;\n /** Epoch timestamp in seconds when the span ended. */\n protected _endTime?: number | undefined;\n /** Internal keeper of the status */\n protected _status?: SpanStatusType | string | undefined;\n protected _exclusiveTime?: number;\n\n protected _measurements: Measurements;\n\n private _logMessage?: string;\n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(spanContext: SpanContext = {}) {\n this._traceId = spanContext.traceId || uuid4();\n this._spanId = spanContext.spanId || uuid4().substring(16);\n this._startTime = spanContext.startTimestamp || timestampInSeconds();\n // eslint-disable-next-line deprecation/deprecation\n this.tags = spanContext.tags ? { ...spanContext.tags } : {};\n // eslint-disable-next-line deprecation/deprecation\n this.data = spanContext.data ? { ...spanContext.data } : {};\n // eslint-disable-next-line deprecation/deprecation\n this.instrumenter = spanContext.instrumenter || 'sentry';\n\n this._attributes = {};\n this.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanContext.origin || 'manual',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: spanContext.op,\n ...spanContext.attributes,\n });\n\n // eslint-disable-next-line deprecation/deprecation\n this._name = spanContext.name || spanContext.description;\n\n if (spanContext.parentSpanId) {\n this._parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this._sampled = spanContext.sampled;\n }\n if (spanContext.status) {\n this._status = spanContext.status;\n }\n if (spanContext.endTimestamp) {\n this._endTime = spanContext.endTimestamp;\n }\n if (spanContext.exclusiveTime !== undefined) {\n this._exclusiveTime = spanContext.exclusiveTime;\n }\n this._measurements = spanContext.measurements ? { ...spanContext.measurements } : {};\n }\n\n // This rule conflicts with another eslint rule :(\n /* eslint-disable @typescript-eslint/member-ordering */\n\n /**\n * An alias for `description` of the Span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public get name(): string {\n return this._name || '';\n }\n\n /**\n * Update the name of the span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public set name(name: string) {\n this.updateName(name);\n }\n\n /**\n * Get the description of the Span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public get description(): string | undefined {\n return this._name;\n }\n\n /**\n * Get the description of the Span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public set description(description: string | undefined) {\n this._name = description;\n }\n\n /**\n * The ID of the trace.\n * @deprecated Use `spanContext().traceId` instead.\n */\n public get traceId(): string {\n return this._traceId;\n }\n\n /**\n * The ID of the trace.\n * @deprecated You cannot update the traceId of a span after span creation.\n */\n public set traceId(traceId: string) {\n this._traceId = traceId;\n }\n\n /**\n * The ID of the span.\n * @deprecated Use `spanContext().spanId` instead.\n */\n public get spanId(): string {\n return this._spanId;\n }\n\n /**\n * The ID of the span.\n * @deprecated You cannot update the spanId of a span after span creation.\n */\n public set spanId(spanId: string) {\n this._spanId = spanId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `startSpan` functions instead.\n */\n public set parentSpanId(string) {\n this._parentSpanId = string;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToJSON(span).parent_span_id` instead.\n */\n public get parentSpanId(): string | undefined {\n return this._parentSpanId;\n }\n\n /**\n * Was this span chosen to be sent as part of the sample?\n * @deprecated Use `isRecording()` instead.\n */\n public get sampled(): boolean | undefined {\n return this._sampled;\n }\n\n /**\n * Was this span chosen to be sent as part of the sample?\n * @deprecated You cannot update the sampling decision of a span after span creation.\n */\n public set sampled(sampled: boolean | undefined) {\n this._sampled = sampled;\n }\n\n /**\n * Attributes for the span.\n * @deprecated Use `spanToJSON(span).atttributes` instead.\n */\n public get attributes(): SpanAttributes {\n return this._attributes;\n }\n\n /**\n * Attributes for the span.\n * @deprecated Use `setAttributes()` instead.\n */\n public set attributes(attributes: SpanAttributes) {\n this._attributes = attributes;\n }\n\n /**\n * Timestamp in seconds (epoch time) indicating when the span started.\n * @deprecated Use `spanToJSON()` instead.\n */\n public get startTimestamp(): number {\n return this._startTime;\n }\n\n /**\n * Timestamp in seconds (epoch time) indicating when the span started.\n * @deprecated In v8, you will not be able to update the span start time after creation.\n */\n public set startTimestamp(startTime: number) {\n this._startTime = startTime;\n }\n\n /**\n * Timestamp in seconds when the span ended.\n * @deprecated Use `spanToJSON()` instead.\n */\n public get endTimestamp(): number | undefined {\n return this._endTime;\n }\n\n /**\n * Timestamp in seconds when the span ended.\n * @deprecated Set the end time via `span.end()` instead.\n */\n public set endTimestamp(endTime: number | undefined) {\n this._endTime = endTime;\n }\n\n /**\n * The status of the span.\n *\n * @deprecated Use `spanToJSON().status` instead to get the status.\n */\n public get status(): SpanStatusType | string | undefined {\n return this._status;\n }\n\n /**\n * The status of the span.\n *\n * @deprecated Use `.setStatus()` instead to set or update the status.\n */\n public set status(status: SpanStatusType | string | undefined) {\n this._status = status;\n }\n\n /**\n * Operation of the span\n *\n * @deprecated Use `spanToJSON().op` to read the op instead.\n */\n public get op(): string | undefined {\n return this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] as string | undefined;\n }\n\n /**\n * Operation of the span\n *\n * @deprecated Use `startSpan()` functions to set or `span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'op')\n * to update the span instead.\n */\n public set op(op: string | undefined) {\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, op);\n }\n\n /**\n * The origin of the span, giving context about what created the span.\n *\n * @deprecated Use `spanToJSON().origin` to read the origin instead.\n */\n public get origin(): SpanOrigin | undefined {\n return this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined;\n }\n\n /**\n * The origin of the span, giving context about what created the span.\n *\n * @deprecated Use `startSpan()` functions to set the origin instead.\n */\n public set origin(origin: SpanOrigin | undefined) {\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, origin);\n }\n\n /* eslint-enable @typescript-eslint/member-ordering */\n\n /** @inheritdoc */\n public spanContext(): SpanContextData {\n const { _spanId: spanId, _traceId: traceId, _sampled: sampled } = this;\n return {\n spanId,\n traceId,\n traceFlags: sampled ? TRACE_FLAG_SAMPLED : TRACE_FLAG_NONE,\n };\n }\n\n /**\n * Creates a new `Span` while setting the current `Span.id` as `parentSpanId`.\n * Also the `sampled` decision will be inherited.\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\n public startChild(\n spanContext?: Pick<SpanContext, Exclude<keyof SpanContext, 'sampled' | 'traceId' | 'parentSpanId'>>,\n ): SpanInterface {\n const childSpan = new Span({\n ...spanContext,\n parentSpanId: this._spanId,\n sampled: this._sampled,\n traceId: this._traceId,\n });\n\n // eslint-disable-next-line deprecation/deprecation\n childSpan.spanRecorder = this.spanRecorder;\n // eslint-disable-next-line deprecation/deprecation\n if (childSpan.spanRecorder) {\n // eslint-disable-next-line deprecation/deprecation\n childSpan.spanRecorder.add(childSpan);\n }\n\n const rootSpan = getRootSpan(this);\n // TODO: still set span.transaction here until we have a more permanent solution\n // Probably similarly to the weakmap we hold in node-experimental\n // eslint-disable-next-line deprecation/deprecation\n childSpan.transaction = rootSpan as Transaction;\n\n if (DEBUG_BUILD && rootSpan) {\n const opStr = (spanContext && spanContext.op) || '< unknown op >';\n const nameStr = spanToJSON(childSpan).description || '< unknown name >';\n const idStr = rootSpan.spanContext().spanId;\n\n const logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n logger.log(logMessage);\n this._logMessage = logMessage;\n }\n\n return childSpan;\n }\n\n /**\n * Sets the tag attribute on the current span.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key Tag key\n * @param value Tag value\n * @deprecated Use `setAttribute()` instead.\n */\n public setTag(key: string, value: Primitive): this {\n // eslint-disable-next-line deprecation/deprecation\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * Sets the data attribute on the current span\n * @param key Data key\n * @param value Data value\n * @deprecated Use `setAttribute()` instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setData(key: string, value: any): this {\n // eslint-disable-next-line deprecation/deprecation\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /** @inheritdoc */\n public setAttribute(key: string, value: SpanAttributeValue | undefined): void {\n if (value === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._attributes[key];\n } else {\n this._attributes[key] = value;\n }\n }\n\n /** @inheritdoc */\n public setAttributes(attributes: SpanAttributes): void {\n Object.keys(attributes).forEach(key => this.setAttribute(key, attributes[key]));\n }\n\n /**\n * @inheritDoc\n */\n public setStatus(value: SpanStatusType): this {\n this._status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n * @deprecated Use top-level `setHttpStatus()` instead.\n */\n public setHttpStatus(httpStatus: number): this {\n setHttpStatus(this, httpStatus);\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @deprecated Use `.updateName()` instead.\n */\n public setName(name: string): void {\n this.updateName(name);\n }\n\n /**\n * @inheritDoc\n */\n public updateName(name: string): this {\n this._name = name;\n return this;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToJSON(span).status === 'ok'` instead.\n */\n public isSuccess(): boolean {\n return this._status === 'ok';\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `.end()` instead.\n */\n public finish(endTimestamp?: number): void {\n return this.end(endTimestamp);\n }\n\n /** @inheritdoc */\n public end(endTimestamp?: SpanTimeInput): void {\n // If already ended, skip\n if (this._endTime) {\n return;\n }\n const rootSpan = getRootSpan(this);\n if (\n DEBUG_BUILD &&\n // Don't call this for transactions\n rootSpan &&\n rootSpan.spanContext().spanId !== this._spanId\n ) {\n const logMessage = this._logMessage;\n if (logMessage) {\n logger.log((logMessage as string).replace('Starting', 'Finishing'));\n }\n }\n\n this._endTime = spanTimeInputToSeconds(endTimestamp);\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToTraceHeader()` instead.\n */\n public toTraceparent(): string {\n return spanToTraceHeader(this);\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToJSON()` or access the fields directly instead.\n */\n public toContext(): SpanContext {\n return dropUndefinedKeys({\n data: this._getData(),\n description: this._name,\n endTimestamp: this._endTime,\n // eslint-disable-next-line deprecation/deprecation\n op: this.op,\n parentSpanId: this._parentSpanId,\n sampled: this._sampled,\n spanId: this._spanId,\n startTimestamp: this._startTime,\n status: this._status,\n // eslint-disable-next-line deprecation/deprecation\n tags: this.tags,\n traceId: this._traceId,\n });\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Update the fields directly instead.\n */\n public updateWithContext(spanContext: SpanContext): this {\n // eslint-disable-next-line deprecation/deprecation\n this.data = spanContext.data || {};\n // eslint-disable-next-line deprecation/deprecation\n this._name = spanContext.name || spanContext.description;\n this._endTime = spanContext.endTimestamp;\n // eslint-disable-next-line deprecation/deprecation\n this.op = spanContext.op;\n this._parentSpanId = spanContext.parentSpanId;\n this._sampled = spanContext.sampled;\n this._spanId = spanContext.spanId || this._spanId;\n this._startTime = spanContext.startTimestamp || this._startTime;\n this._status = spanContext.status;\n // eslint-disable-next-line deprecation/deprecation\n this.tags = spanContext.tags || {};\n this._traceId = spanContext.traceId || this._traceId;\n\n return this;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToTraceContext()` util function instead.\n */\n public getTraceContext(): TraceContext {\n return spanToTraceContext(this);\n }\n\n /**\n * Get JSON representation of this span.\n *\n * @hidden\n * @internal This method is purely for internal purposes and should not be used outside\n * of SDK code. If you need to get a JSON representation of a span,\n * use `spanToJSON(span)` instead.\n */\n public getSpanJSON(): SpanJSON {\n return dropUndefinedKeys({\n data: this._getData(),\n description: this._name,\n op: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] as string | undefined,\n parent_span_id: this._parentSpanId,\n span_id: this._spanId,\n start_timestamp: this._startTime,\n status: this._status,\n // eslint-disable-next-line deprecation/deprecation\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this._endTime,\n trace_id: this._traceId,\n origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined,\n _metrics_summary: getMetricSummaryJsonForSpan(this),\n profile_id: this._attributes[SEMANTIC_ATTRIBUTE_PROFILE_ID] as string | undefined,\n exclusive_time: this._exclusiveTime,\n measurements: Object.keys(this._measurements).length > 0 ? this._measurements : undefined,\n });\n }\n\n /** @inheritdoc */\n public isRecording(): boolean {\n return !this._endTime && !!this._sampled;\n }\n\n /**\n * Convert the object to JSON.\n * @deprecated Use `spanToJSON(span)` instead.\n */\n public toJSON(): SpanJSON {\n return this.getSpanJSON();\n }\n\n /**\n * Get the merged data for this span.\n * For now, this combines `data` and `attributes` together,\n * until eventually we can ingest `attributes` directly.\n */\n private _getData():\n | {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n }\n | undefined {\n // eslint-disable-next-line deprecation/deprecation\n const { data, _attributes: attributes } = this;\n\n const hasData = Object.keys(data).length > 0;\n const hasAttributes = Object.keys(attributes).length > 0;\n\n if (!hasData && !hasAttributes) {\n return undefined;\n }\n\n if (hasData && hasAttributes) {\n return {\n ...data,\n ...attributes,\n };\n }\n\n return hasData ? data : attributes;\n }\n}\n","import type { Span } from '@sentry/types';\n\n/** The status of an Span.\n *\n * @deprecated Use string literals - if you require type casting, cast to SpanStatusType type\n */\nexport enum SpanStatus {\n /** The operation completed successfully. */\n Ok = 'ok',\n /** Deadline expired before operation could complete. */\n DeadlineExceeded = 'deadline_exceeded',\n /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n Unauthenticated = 'unauthenticated',\n /** 403 Forbidden */\n PermissionDenied = 'permission_denied',\n /** 404 Not Found. Some requested entity (file or directory) was not found. */\n NotFound = 'not_found',\n /** 429 Too Many Requests */\n ResourceExhausted = 'resource_exhausted',\n /** Client specified an invalid argument. 4xx. */\n InvalidArgument = 'invalid_argument',\n /** 501 Not Implemented */\n Unimplemented = 'unimplemented',\n /** 503 Service Unavailable */\n Unavailable = 'unavailable',\n /** Other/generic 5xx. */\n InternalError = 'internal_error',\n /** Unknown. Any non-standard HTTP status code. */\n UnknownError = 'unknown_error',\n /** The operation was cancelled (typically by the user). */\n Cancelled = 'cancelled',\n /** Already exists (409) */\n AlreadyExists = 'already_exists',\n /** Operation was rejected because the system is not in a state required for the operation's */\n FailedPrecondition = 'failed_precondition',\n /** The operation was aborted, typically due to a concurrency issue. */\n Aborted = 'aborted',\n /** Operation was attempted past the valid range. */\n OutOfRange = 'out_of_range',\n /** Unrecoverable data loss or corruption */\n DataLoss = 'data_loss',\n}\n\nexport type SpanStatusType =\n /** The operation completed successfully. */\n | 'ok'\n /** Deadline expired before operation could complete. */\n | 'deadline_exceeded'\n /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n | 'unauthenticated'\n /** 403 Forbidden */\n | 'permission_denied'\n /** 404 Not Found. Some requested entity (file or directory) was not found. */\n | 'not_found'\n /** 429 Too Many Requests */\n | 'resource_exhausted'\n /** Client specified an invalid argument. 4xx. */\n | 'invalid_argument'\n /** 501 Not Implemented */\n | 'unimplemented'\n /** 503 Service Unavailable */\n | 'unavailable'\n /** Other/generic 5xx. */\n | 'internal_error'\n /** Unknown. Any non-standard HTTP status code. */\n | 'unknown_error'\n /** The operation was cancelled (typically by the user). */\n | 'cancelled'\n /** Already exists (409) */\n | 'already_exists'\n /** Operation was rejected because the system is not in a state required for the operation's */\n | 'failed_precondition'\n /** The operation was aborted, typically due to a concurrency issue. */\n | 'aborted'\n /** Operation was attempted past the valid range. */\n | 'out_of_range'\n /** Unrecoverable data loss or corruption */\n | 'data_loss';\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport function getSpanStatusFromHttpCode(httpStatus: number): SpanStatusType {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @deprecated Use {@link spanStatusFromHttpCode} instead.\n * This export will be removed in v8 as the signature contains a typo.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport const spanStatusfromHttpCode = getSpanStatusFromHttpCode;\n\n/**\n * Sets the Http status attributes on the current span based on the http code.\n * Additionally, the span's status is updated, depending on the http code.\n */\nexport function setHttpStatus(span: Span, httpStatus: number): void {\n // TODO (v8): Remove these calls\n // Relay does not require us to send the status code as a tag\n // For now, just because users might expect it to land as a tag we keep sending it.\n // Same with data.\n // In v8, we replace both, simply with\n // span.setAttribute('http.response.status_code', httpStatus);\n\n // eslint-disable-next-line deprecation/deprecation\n span.setTag('http.status_code', String(httpStatus));\n // eslint-disable-next-line deprecation/deprecation\n span.setData('http.response.status_code', httpStatus);\n\n const spanStatus = getSpanStatusFromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n span.setStatus(spanStatus);\n }\n}\n","import { isThenable } from '@sentry/utils';\n\n/**\n * Wrap a callback function with error handling.\n * If an error is thrown, it will be passed to the `onError` callback and re-thrown.\n *\n * If the return value of the function is a promise, it will be handled with `maybeHandlePromiseRejection`.\n *\n * If an `onFinally` callback is provided, this will be called when the callback has finished\n * - so if it returns a promise, once the promise resolved/rejected,\n * else once the callback has finished executing.\n * The `onFinally` callback will _always_ be called, no matter if an error was thrown or not.\n */\nexport function handleCallbackErrors<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Fn extends () => any,\n>(\n fn: Fn,\n onError: (error: unknown) => void,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onFinally: () => void = () => {},\n): ReturnType<Fn> {\n let maybePromiseResult: ReturnType<Fn>;\n try {\n maybePromiseResult = fn();\n } catch (e) {\n onError(e);\n onFinally();\n throw e;\n }\n\n return maybeHandlePromiseRejection(maybePromiseResult, onError, onFinally);\n}\n\n/**\n * Maybe handle a promise rejection.\n * This expects to be given a value that _may_ be a promise, or any other value.\n * If it is a promise, and it rejects, it will call the `onError` callback.\n * Other than this, it will generally return the given value as-is.\n */\nfunction maybeHandlePromiseRejection<MaybePromise>(\n value: MaybePromise,\n onError: (error: unknown) => void,\n onFinally: () => void,\n): MaybePromise {\n if (isThenable(value)) {\n // @ts-expect-error - the isThenable check returns the \"wrong\" type here\n return value.then(\n res => {\n onFinally();\n return res;\n },\n e => {\n onError(e);\n onFinally();\n throw e;\n },\n );\n }\n\n onFinally();\n return value;\n}\n","import type { Scope, Span, SpanTimeInput, StartSpanOptions, TransactionContext } from '@sentry/types';\n\nimport { addNonEnumerableProperty, dropUndefinedKeys, logger, tracingContextFromHeaders } from '@sentry/utils';\nimport { getDynamicSamplingContextFromSpan } from '.';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { getCurrentScope, withScope } from '../exports';\nimport type { Hub } from '../hub';\nimport { runWithAsyncContext } from '../hub';\nimport { getIsolationScope } from '../hub';\nimport { getCurrentHub } from '../hub';\nimport type { Scope as ScopeClass } from '../scope';\nimport { handleCallbackErrors } from '../utils/handleCallbackErrors';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled';\nimport { spanIsSampled, spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n *\n * This function is meant to be used internally and may break at any time. Use at your own risk.\n *\n * @internal\n * @private\n *\n * @deprecated Use `startSpan` instead.\n */\nexport function trace<T>(\n context: TransactionContext,\n callback: (span?: Span) => T,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onError: (error: unknown, span?: Span) => void = () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n afterFinish: () => void = () => {},\n): T {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n const scope = getCurrentScope();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const spanContext = normalizeContext(context);\n const activeSpan = createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: false,\n scope,\n });\n\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(activeSpan);\n\n return handleCallbackErrors(\n () => callback(activeSpan),\n error => {\n activeSpan && activeSpan.setStatus('internal_error');\n onError(error, activeSpan);\n },\n () => {\n activeSpan && activeSpan.end();\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(parentSpan);\n afterFinish();\n },\n );\n}\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getSpan()`, as long as the function is executed while the scope is active.\n *\n * If you want to create a span that is not set as active, use {@link startInactiveSpan}.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nexport function startSpan<T>(context: StartSpanOptions, callback: (span: Span | undefined) => T): T {\n const spanContext = normalizeContext(context);\n\n return runWithAsyncContext(() => {\n return withScope(context.scope, scope => {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n const activeSpan = shouldSkipSpan\n ? undefined\n : createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: context.forceTransaction,\n scope,\n });\n\n return handleCallbackErrors(\n () => callback(activeSpan),\n () => {\n // Only update the span status if it hasn't been changed yet\n if (activeSpan) {\n const { status } = spanToJSON(activeSpan);\n if (!status || status === 'ok') {\n activeSpan.setStatus('internal_error');\n }\n }\n },\n () => activeSpan && activeSpan.end(),\n );\n });\n });\n}\n\n/**\n * @deprecated Use {@link startSpan} instead.\n */\nexport const startActiveSpan = startSpan;\n\n/**\n * Similar to `Sentry.startSpan`. Wraps a function with a transaction/span, but does not finish the span\n * after the function is done automatically. You'll have to call `span.end()` manually.\n *\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nexport function startSpanManual<T>(\n context: StartSpanOptions,\n callback: (span: Span | undefined, finish: () => void) => T,\n): T {\n const spanContext = normalizeContext(context);\n\n return runWithAsyncContext(() => {\n return withScope(context.scope, scope => {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n const activeSpan = shouldSkipSpan\n ? undefined\n : createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: context.forceTransaction,\n scope,\n });\n\n function finishAndSetSpan(): void {\n activeSpan && activeSpan.end();\n }\n\n return handleCallbackErrors(\n () => callback(activeSpan, finishAndSetSpan),\n () => {\n // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n if (activeSpan && activeSpan.isRecording()) {\n const { status } = spanToJSON(activeSpan);\n if (!status || status === 'ok') {\n activeSpan.setStatus('internal_error');\n }\n }\n },\n );\n });\n });\n}\n\n/**\n * Creates a span. This span is not set as active, so will not get automatic instrumentation spans\n * as children or be able to be accessed via `Sentry.getSpan()`.\n *\n * If you want to create a span that is set as active, use {@link startSpan}.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate` or `tracesSampler`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nexport function startInactiveSpan(context: StartSpanOptions): Span | undefined {\n if (!hasTracingEnabled()) {\n return undefined;\n }\n\n const spanContext = normalizeContext(context);\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n const parentSpan = context.scope\n ? // eslint-disable-next-line deprecation/deprecation\n context.scope.getSpan()\n : getActiveSpan();\n\n const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n\n if (shouldSkipSpan) {\n return undefined;\n }\n\n const scope = context.scope || getCurrentScope();\n\n // Even though we don't actually want to make this span active on the current scope,\n // we need to make it active on a temporary scope that we use for event processing\n // as otherwise, it won't pick the correct span for the event when processing it\n const temporaryScope = (scope as ScopeClass).clone();\n\n return createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: context.forceTransaction,\n scope: temporaryScope,\n });\n}\n\n/**\n * Returns the currently active span.\n */\nexport function getActiveSpan(): Span | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentScope().getSpan();\n}\n\ninterface ContinueTrace {\n /**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers,\n * or in the browser from `<meta name=\"sentry-trace\">` and `<meta name=\"baggage\">` HTML tags.\n *\n * @deprecated Use the version of this function taking a callback as second parameter instead:\n *\n * ```\n * Sentry.continueTrace(sentryTrace: '...', baggage: '...' }, () => {\n * // ...\n * })\n * ```\n *\n */\n ({\n sentryTrace,\n baggage,\n }: {\n // eslint-disable-next-line deprecation/deprecation\n sentryTrace: Parameters<typeof tracingContextFromHeaders>[0];\n // eslint-disable-next-line deprecation/deprecation\n baggage: Parameters<typeof tracingContextFromHeaders>[1];\n }): Partial<TransactionContext>;\n\n /**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers, or in the browser from `<meta name=\"sentry-trace\">`\n * and `<meta name=\"baggage\">` HTML tags.\n *\n * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically\n * be attached to the incoming trace.\n *\n * Deprecation notice: In the next major version of the SDK the provided callback will not receive a transaction\n * context argument.\n */\n <V>(\n {\n sentryTrace,\n baggage,\n }: {\n // eslint-disable-next-line deprecation/deprecation\n sentryTrace: Parameters<typeof tracingContextFromHeaders>[0];\n // eslint-disable-next-line deprecation/deprecation\n baggage: Parameters<typeof tracingContextFromHeaders>[1];\n },\n // TODO(v8): Remove parameter from this callback.\n callback: (transactionContext: Partial<TransactionContext>) => V,\n ): V;\n}\n\nexport const continueTrace: ContinueTrace = <V>(\n {\n sentryTrace,\n baggage,\n }: {\n // eslint-disable-next-line deprecation/deprecation\n sentryTrace: Parameters<typeof tracingContextFromHeaders>[0];\n // eslint-disable-next-line deprecation/deprecation\n baggage: Parameters<typeof tracingContextFromHeaders>[1];\n },\n callback?: (transactionContext: Partial<TransactionContext>) => V,\n): V | Partial<TransactionContext> => {\n // TODO(v8): Change this function so it doesn't do anything besides setting the propagation context on the current scope:\n /*\n return withScope((scope) => {\n const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n scope.setPropagationContext(propagationContext);\n return callback();\n })\n */\n\n const currentScope = getCurrentScope();\n\n // eslint-disable-next-line deprecation/deprecation\n const { traceparentData, dynamicSamplingContext, propagationContext } = tracingContextFromHeaders(\n sentryTrace,\n baggage,\n );\n\n currentScope.setPropagationContext(propagationContext);\n\n if (DEBUG_BUILD && traceparentData) {\n logger.log(`[Tracing] Continuing trace ${traceparentData.traceId}.`);\n }\n\n const transactionContext: Partial<TransactionContext> = {\n ...traceparentData,\n metadata: dropUndefinedKeys({\n dynamicSamplingContext,\n }),\n };\n\n if (!callback) {\n return transactionContext;\n }\n\n return runWithAsyncContext(() => {\n return callback(transactionContext);\n });\n};\n\nfunction createChildSpanOrTransaction(\n // eslint-disable-next-line deprecation/deprecation\n hub: Hub,\n {\n parentSpan,\n spanContext,\n forceTransaction,\n scope,\n }: {\n parentSpan: Span | undefined;\n spanContext: TransactionContext;\n forceTransaction?: boolean;\n scope: Scope;\n },\n): Span | undefined {\n if (!hasTracingEnabled()) {\n return undefined;\n }\n\n const isolationScope = getIsolationScope();\n\n let span: Span | undefined;\n if (parentSpan && !forceTransaction) {\n // eslint-disable-next-line deprecation/deprecation\n span = parentSpan.startChild(spanContext);\n } else if (parentSpan) {\n // If we forced a transaction but have a parent span, make sure to continue from the parent span, not the scope\n const dsc = getDynamicSamplingContextFromSpan(parentSpan);\n const { traceId, spanId: parentSpanId } = parentSpan.spanContext();\n const sampled = spanIsSampled(parentSpan);\n\n // eslint-disable-next-line deprecation/deprecation\n span = hub.startTransaction({\n traceId,\n parentSpanId,\n parentSampled: sampled,\n ...spanContext,\n metadata: {\n dynamicSamplingContext: dsc,\n // eslint-disable-next-line deprecation/deprecation\n ...spanContext.metadata,\n },\n });\n } else {\n const { traceId, dsc, parentSpanId, sampled } = {\n ...isolationScope.getPropagationContext(),\n ...scope.getPropagationContext(),\n };\n\n // eslint-disable-next-line deprecation/deprecation\n span = hub.startTransaction({\n traceId,\n parentSpanId,\n parentSampled: sampled,\n ...spanContext,\n metadata: {\n dynamicSamplingContext: dsc,\n // eslint-disable-next-line deprecation/deprecation\n ...spanContext.metadata,\n },\n });\n }\n\n // We always set this as active span on the scope\n // In the case of this being an inactive span, we ensure to pass a detached scope in here in the first place\n // But by having this here, we can ensure that the lookup through `getCapturedScopesOnSpan` results in the correct scope & span combo\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(span);\n\n setCapturedScopesOnSpan(span, scope, isolationScope);\n\n return span;\n}\n\n/**\n * This converts StartSpanOptions to TransactionContext.\n * For the most part (for now) we accept the same options,\n * but some of them need to be transformed.\n *\n * Eventually the StartSpanOptions will be more aligned with OpenTelemetry.\n */\nfunction normalizeContext(context: StartSpanOptions): TransactionContext {\n if (context.startTime) {\n const ctx: TransactionContext & { startTime?: SpanTimeInput } = { ...context };\n ctx.startTimestamp = spanTimeInputToSeconds(context.startTime);\n delete ctx.startTime;\n return ctx;\n }\n\n return context;\n}\n\nconst SCOPE_ON_START_SPAN_FIELD = '_sentryScope';\nconst ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope';\n\ntype SpanWithScopes = Span & {\n [SCOPE_ON_START_SPAN_FIELD]?: Scope;\n [ISOLATION_SCOPE_ON_START_SPAN_FIELD]?: Scope;\n};\n\nfunction setCapturedScopesOnSpan(span: Span | undefined, scope: Scope, isolationScope: Scope): void {\n if (span) {\n addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, isolationScope);\n addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope);\n }\n}\n\n/**\n * Grabs the scope and isolation scope off a span that were active when the span was started.\n */\nexport function getCapturedScopesOnSpan(span: Span): { scope?: Scope; isolationScope?: Scope } {\n return {\n scope: (span as SpanWithScopes)[SCOPE_ON_START_SPAN_FIELD],\n isolationScope: (span as SpanWithScopes)[ISOLATION_SCOPE_ON_START_SPAN_FIELD],\n };\n}\n","import type {\n Context,\n Contexts,\n DynamicSamplingContext,\n MeasurementUnit,\n SpanTimeInput,\n Transaction as TransactionInterface,\n TransactionContext,\n TransactionEvent,\n TransactionMetadata,\n} from '@sentry/types';\nimport { dropUndefinedKeys, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Hub } from '../hub';\nimport { getCurrentHub } from '../hub';\nimport { getMetricSummaryJsonForSpan } from '../metrics/metric-summary';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes';\nimport { spanTimeInputToSeconds, spanToJSON, spanToTraceContext } from '../utils/spanUtils';\nimport { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { Span as SpanClass, SpanRecorder } from './span';\nimport { getCapturedScopesOnSpan } from './trace';\n\n/** JSDoc */\nexport class Transaction extends SpanClass implements TransactionInterface {\n /**\n * The reference to the current hub.\n */\n // eslint-disable-next-line deprecation/deprecation\n public _hub: Hub;\n\n protected _name: string;\n\n private _contexts: Contexts;\n\n private _trimEnd?: boolean | undefined;\n\n // DO NOT yet remove this property, it is used in a hack for v7 backwards compatibility.\n private _frozenDynamicSamplingContext: Readonly<Partial<DynamicSamplingContext>> | undefined;\n\n private _metadata: Partial<TransactionMetadata>;\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n *\n * @deprecated Transactions will be removed in v8. Use spans instead.\n */\n // eslint-disable-next-line deprecation/deprecation\n public constructor(transactionContext: TransactionContext, hub?: Hub) {\n super(transactionContext);\n this._contexts = {};\n\n // eslint-disable-next-line deprecation/deprecation\n this._hub = hub || getCurrentHub();\n\n this._name = transactionContext.name || '';\n\n this._metadata = {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.metadata,\n };\n\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n // TODO (v8): Replace this with another way to set the root span\n // eslint-disable-next-line deprecation/deprecation\n this.transaction = this;\n\n // If Dynamic Sampling Context is provided during the creation of the transaction, we freeze it as it usually means\n // there is incoming Dynamic Sampling Context. (Either through an incoming request, a baggage meta-tag, or other means)\n const incomingDynamicSamplingContext = this._metadata.dynamicSamplingContext;\n if (incomingDynamicSamplingContext) {\n // We shallow copy this in case anything writes to the original reference of the passed in `dynamicSamplingContext`\n this._frozenDynamicSamplingContext = { ...incomingDynamicSamplingContext };\n }\n }\n\n // This sadly conflicts with the getter/setter ordering :(\n /* eslint-disable @typescript-eslint/member-ordering */\n\n /**\n * Getter for `name` property.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public get name(): string {\n return this._name;\n }\n\n /**\n * Setter for `name` property, which also sets `source` as custom.\n * @deprecated Use `updateName()` and `setMetadata()` instead.\n */\n public set name(newName: string) {\n // eslint-disable-next-line deprecation/deprecation\n this.setName(newName);\n }\n\n /**\n * Get the metadata for this transaction.\n * @deprecated Use `spanGetMetadata(transaction)` instead.\n */\n public get metadata(): TransactionMetadata {\n // We merge attributes in for backwards compatibility\n return {\n // Defaults\n // eslint-disable-next-line deprecation/deprecation\n source: 'custom',\n spanMetadata: {},\n\n // Legacy metadata\n ...this._metadata,\n\n // From attributes\n ...(this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] && {\n source: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] as TransactionMetadata['source'],\n }),\n ...(this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] && {\n sampleRate: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] as TransactionMetadata['sampleRate'],\n }),\n };\n }\n\n /**\n * Update the metadata for this transaction.\n * @deprecated Use `spanGetMetadata(transaction)` instead.\n */\n public set metadata(metadata: TransactionMetadata) {\n this._metadata = metadata;\n }\n\n /* eslint-enable @typescript-eslint/member-ordering */\n\n /**\n * Setter for `name` property, which also sets `source` on the metadata.\n *\n * @deprecated Use `.updateName()` and `.setAttribute()` instead.\n */\n public setName(name: string, source: TransactionMetadata['source'] = 'custom'): void {\n this._name = name;\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source);\n }\n\n /** @inheritdoc */\n public updateName(name: string): this {\n this._name = name;\n return this;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n public initSpanRecorder(maxlen: number = 1000): void {\n // eslint-disable-next-line deprecation/deprecation\n if (!this.spanRecorder) {\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.add(this);\n }\n\n /**\n * Set the context of a transaction event.\n * @deprecated Use either `.setAttribute()`, or set the context on the scope before creating the transaction.\n */\n public setContext(key: string, context: Context | null): void {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use top-level `setMeasurement()` instead.\n */\n public setMeasurement(name: string, value: number, unit: MeasurementUnit = ''): void {\n this._measurements[name] = { value, unit };\n }\n\n /**\n * Store metadata on this transaction.\n * @deprecated Use attributes or store data on the scope instead.\n */\n public setMetadata(newMetadata: Partial<TransactionMetadata>): void {\n this._metadata = { ...this._metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n public end(endTimestamp?: SpanTimeInput): string | undefined {\n const timestampInS = spanTimeInputToSeconds(endTimestamp);\n const transaction = this._finishTransaction(timestampInS);\n if (!transaction) {\n return undefined;\n }\n // eslint-disable-next-line deprecation/deprecation\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n public toContext(): TransactionContext {\n // eslint-disable-next-line deprecation/deprecation\n const spanContext = super.toContext();\n\n return dropUndefinedKeys({\n ...spanContext,\n name: this._name,\n trimEnd: this._trimEnd,\n });\n }\n\n /**\n * @inheritDoc\n */\n public updateWithContext(transactionContext: TransactionContext): this {\n // eslint-disable-next-line deprecation/deprecation\n super.updateWithContext(transactionContext);\n\n this._name = transactionContext.name || '';\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @experimental\n *\n * @deprecated Use top-level `getDynamicSamplingContextFromSpan` instead.\n */\n public getDynamicSamplingContext(): Readonly<Partial<DynamicSamplingContext>> {\n return getDynamicSamplingContextFromSpan(this);\n }\n\n /**\n * Override the current hub with a new one.\n * Used if you want another hub to finish the transaction.\n *\n * @internal\n */\n // eslint-disable-next-line deprecation/deprecation\n public setHub(hub: Hub): void {\n this._hub = hub;\n }\n\n /**\n * Get the profile id of the transaction.\n */\n public getProfileId(): string | undefined {\n if (this._contexts !== undefined && this._contexts['profile'] !== undefined) {\n return this._contexts['profile'].profile_id as string;\n }\n return undefined;\n }\n\n /**\n * Finish the transaction & prepare the event to send to Sentry.\n */\n protected _finishTransaction(endTimestamp?: number): TransactionEvent | undefined {\n // This transaction is already finished, so we should not flush it again.\n if (this._endTime !== undefined) {\n return undefined;\n }\n\n if (!this._name) {\n DEBUG_BUILD && logger.warn('Transaction has no name, falling back to `<unlabeled transaction>`.');\n this._name = '<unlabeled transaction>';\n }\n\n // just sets the end timestamp\n super.end(endTimestamp);\n\n // eslint-disable-next-line deprecation/deprecation\n const client = this._hub.getClient();\n if (client && client.emit) {\n client.emit('finishTransaction', this);\n }\n\n if (this._sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n DEBUG_BUILD && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n if (client) {\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return undefined;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const finishedSpans = this.spanRecorder\n ? // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.spans.filter(span => span !== this && spanToJSON(span).timestamp)\n : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n const endTimes = finishedSpans.map(span => spanToJSON(span).timestamp).filter(Boolean) as number[];\n this._endTime = endTimes.reduce((prev, current) => {\n return prev > current ? prev : current;\n });\n }\n\n const { scope: capturedSpanScope, isolationScope: capturedSpanIsolationScope } = getCapturedScopesOnSpan(this);\n\n // eslint-disable-next-line deprecation/deprecation\n const { metadata } = this;\n // eslint-disable-next-line deprecation/deprecation\n const { source } = metadata;\n\n const transaction: TransactionEvent = {\n contexts: {\n ...this._contexts,\n // We don't want to override trace context\n trace: spanToTraceContext(this),\n },\n // TODO: Pass spans serialized via `spanToJSON()` here instead in v8.\n spans: finishedSpans,\n start_timestamp: this._startTime,\n // eslint-disable-next-line deprecation/deprecation\n tags: this.tags,\n timestamp: this._endTime,\n transaction: this._name,\n type: 'transaction',\n sdkProcessingMetadata: {\n ...metadata,\n capturedSpanScope,\n capturedSpanIsolationScope,\n ...dropUndefinedKeys({\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(this),\n }),\n },\n _metrics_summary: getMetricSummaryJsonForSpan(this),\n ...(source && {\n transaction_info: {\n source,\n },\n }),\n };\n\n const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n DEBUG_BUILD &&\n logger.log(\n '[Measurements] Adding measurements to transaction',\n JSON.stringify(this._measurements, undefined, 2),\n );\n transaction.measurements = this._measurements;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n DEBUG_BUILD && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this._name}.`);\n\n return transaction;\n }\n}\n","import type { Transaction } from '@sentry/types';\nimport { extractTraceparentData as _extractTraceparentData } from '@sentry/utils';\n\nimport type { Hub } from '../hub';\nimport { getCurrentHub } from '../hub';\n\n/**\n * Grabs active transaction off scope.\n *\n * @deprecated You should not rely on the transaction, but just use `startSpan()` APIs instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getActiveTransaction<T extends Transaction>(maybeHub?: Hub): T | undefined {\n // eslint-disable-next-line deprecation/deprecation\n const hub = maybeHub || getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const scope = hub.getScope();\n // eslint-disable-next-line deprecation/deprecation\n return scope.getTransaction() as T | undefined;\n}\n\n// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\n\n/**\n * The `extractTraceparentData` function and `TRACEPARENT_REGEXP` constant used\n * to be declared in this file. It was later moved into `@sentry/utils` as part of a\n * move to remove `@sentry/tracing` dependencies from `@sentry/node` (`extractTraceparentData`\n * is the only tracing function used by `@sentry/node`).\n *\n * These exports are kept here for backwards compatability's sake.\n *\n * See https://github.com/getsentry/sentry-javascript/issues/4642 for more details.\n *\n * @deprecated Import this function from `@sentry/utils` instead\n */\nexport const extractTraceparentData = _extractTraceparentData;\n","import type { Breadcrumb, Event, ScopeData, Span } from '@sentry/types';\nimport { arrayify, dropUndefinedKeys } from '@sentry/utils';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext';\nimport { getRootSpan } from './getRootSpan';\nimport { spanToJSON, spanToTraceContext } from './spanUtils';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nexport function applyScopeDataToEvent(event: Event, data: ScopeData): void {\n const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n // Apply general data\n applyDataToEvent(event, data);\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (span) {\n applySpanToEvent(event, span);\n }\n\n applyFingerprintToEvent(event, fingerprint);\n applyBreadcrumbsToEvent(event, breadcrumbs);\n applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nexport function mergeScopeData(data: ScopeData, mergeData: ScopeData): void {\n const {\n extra,\n tags,\n user,\n contexts,\n level,\n sdkProcessingMetadata,\n breadcrumbs,\n fingerprint,\n eventProcessors,\n attachments,\n propagationContext,\n // eslint-disable-next-line deprecation/deprecation\n transactionName,\n span,\n } = mergeData;\n\n mergeAndOverwriteScopeData(data, 'extra', extra);\n mergeAndOverwriteScopeData(data, 'tags', tags);\n mergeAndOverwriteScopeData(data, 'user', user);\n mergeAndOverwriteScopeData(data, 'contexts', contexts);\n mergeAndOverwriteScopeData(data, 'sdkProcessingMetadata', sdkProcessingMetadata);\n\n if (level) {\n data.level = level;\n }\n\n if (transactionName) {\n // eslint-disable-next-line deprecation/deprecation\n data.transactionName = transactionName;\n }\n\n if (span) {\n data.span = span;\n }\n\n if (breadcrumbs.length) {\n data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n }\n\n if (fingerprint.length) {\n data.fingerprint = [...data.fingerprint, ...fingerprint];\n }\n\n if (eventProcessors.length) {\n data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n }\n\n if (attachments.length) {\n data.attachments = [...data.attachments, ...attachments];\n }\n\n data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nexport function mergeAndOverwriteScopeData<\n Prop extends 'extra' | 'tags' | 'user' | 'contexts' | 'sdkProcessingMetadata',\n Data extends ScopeData,\n>(data: Data, prop: Prop, mergeVal: Data[Prop]): void {\n if (mergeVal && Object.keys(mergeVal).length) {\n // Clone object\n data[prop] = { ...data[prop] };\n for (const key in mergeVal) {\n if (Object.prototype.hasOwnProperty.call(mergeVal, key)) {\n data[prop][key] = mergeVal[key];\n }\n }\n }\n}\n\n/** Exported only for tests */\nexport function mergeArray<Prop extends 'breadcrumbs' | 'fingerprint'>(\n event: Event,\n prop: Prop,\n mergeVal: ScopeData[Prop],\n): void {\n const prevVal = event[prop];\n // If we are not merging any new values,\n // we only need to proceed if there was an empty array before (as we want to replace it with undefined)\n if (!mergeVal.length && (!prevVal || prevVal.length)) {\n return;\n }\n\n const merged = [...(prevVal || []), ...mergeVal] as ScopeData[Prop];\n event[prop] = merged.length ? merged : undefined;\n}\n\nfunction applyDataToEvent(event: Event, data: ScopeData): void {\n const {\n extra,\n tags,\n user,\n contexts,\n level,\n // eslint-disable-next-line deprecation/deprecation\n transactionName,\n } = data;\n\n const cleanedExtra = dropUndefinedKeys(extra);\n if (cleanedExtra && Object.keys(cleanedExtra).length) {\n event.extra = { ...cleanedExtra, ...event.extra };\n }\n\n const cleanedTags = dropUndefinedKeys(tags);\n if (cleanedTags && Object.keys(cleanedTags).length) {\n event.tags = { ...cleanedTags, ...event.tags };\n }\n\n const cleanedUser = dropUndefinedKeys(user);\n if (cleanedUser && Object.keys(cleanedUser).length) {\n event.user = { ...cleanedUser, ...event.user };\n }\n\n const cleanedContexts = dropUndefinedKeys(contexts);\n if (cleanedContexts && Object.keys(cleanedContexts).length) {\n event.contexts = { ...cleanedContexts, ...event.contexts };\n }\n\n if (level) {\n event.level = level;\n }\n\n if (transactionName) {\n event.transaction = transactionName;\n }\n}\n\nfunction applyBreadcrumbsToEvent(event: Event, breadcrumbs: Breadcrumb[]): void {\n const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event: Event, sdkProcessingMetadata: ScopeData['sdkProcessingMetadata']): void {\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n ...sdkProcessingMetadata,\n };\n}\n\nfunction applySpanToEvent(event: Event, span: Span): void {\n event.contexts = { trace: spanToTraceContext(span), ...event.contexts };\n const rootSpan = getRootSpan(span);\n if (rootSpan) {\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n ...event.sdkProcessingMetadata,\n };\n const transactionName = spanToJSON(rootSpan).description;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n}\n\n/**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\nfunction applyFingerprintToEvent(event: Event, fingerprint: ScopeData['fingerprint'] | undefined): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n // If we have something on the scope, then merge it with event\n if (fingerprint) {\n event.fingerprint = event.fingerprint.concat(fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n}\n","import type { Span } from '@sentry/types';\n\n/**\n * Returns the root span of a given span.\n *\n * As long as we use `Transaction`s internally, the returned root span\n * will be a `Transaction` but be aware that this might change in the future.\n *\n * If the given span has no root span or transaction, `undefined` is returned.\n */\nexport function getRootSpan(span: Span): Span | undefined {\n // TODO (v8): Remove this check and just return span\n // eslint-disable-next-line deprecation/deprecation\n return span.transaction;\n}\n","import type { Options } from '@sentry/types';\n\nimport { getClient } from '../exports';\n\n// Treeshakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean | undefined;\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nexport function hasTracingEnabled(\n maybeOptions?: Pick<Options, 'tracesSampleRate' | 'tracesSampler' | 'enableTracing'> | undefined,\n): boolean {\n if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n return false;\n }\n\n const client = getClient();\n const options = maybeOptions || (client && client.getOptions());\n return !!options && (options.enableTracing || 'tracesSampleRate' in options || 'tracesSampler' in options);\n}\n","import type {\n CaptureContext,\n Client,\n ClientOptions,\n Event,\n EventHint,\n Scope as ScopeInterface,\n ScopeContext,\n StackFrame,\n StackParser,\n} from '@sentry/types';\nimport { GLOBAL_OBJ, addExceptionMechanism, dateTimestampInSeconds, normalize, truncate, uuid4 } from '@sentry/utils';\n\nimport { DEFAULT_ENVIRONMENT } from '../constants';\nimport { getGlobalEventProcessors, notifyEventProcessors } from '../eventProcessors';\nimport { Scope, getGlobalScope } from '../scope';\nimport { applyScopeDataToEvent, mergeScopeData } from './applyScopeDataToEvent';\nimport { spanToJSON } from './spanUtils';\n\n/**\n * This type makes sure that we get either a CaptureContext, OR an EventHint.\n * It does not allow mixing them, which could lead to unexpected outcomes, e.g. this is disallowed:\n * { user: { id: '123' }, mechanism: { handled: false } }\n */\nexport type ExclusiveEventHintOrCaptureContext =\n | (CaptureContext & Partial<{ [key in keyof EventHint]: never }>)\n | (EventHint & Partial<{ [key in keyof ScopeContext]: never }>);\n\n/**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * Note: This also triggers callbacks for `addGlobalEventProcessor`, but not `beforeSend`.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n * @hidden\n */\nexport function prepareEvent(\n options: ClientOptions,\n event: Event,\n hint: EventHint,\n scope?: Scope,\n client?: Client,\n isolationScope?: Scope,\n): PromiseLike<Event | null> {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = options;\n const prepared: Event = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n applyClientOptions(prepared, options);\n applyIntegrationsMetadata(prepared, integrations);\n\n // Only put debug IDs onto frames for error events.\n if (event.type === undefined) {\n applyDebugIds(prepared, options.stackParser);\n }\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n const finalScope = getFinalScope(scope, hint.captureContext);\n\n if (hint.mechanism) {\n addExceptionMechanism(prepared, hint.mechanism);\n }\n\n const clientEventProcessors = client && client.getEventProcessors ? client.getEventProcessors() : [];\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n // Merge scope data together\n const data = getGlobalScope().getScopeData();\n\n if (isolationScope) {\n const isolationData = isolationScope.getScopeData();\n mergeScopeData(data, isolationData);\n }\n\n if (finalScope) {\n const finalScopeData = finalScope.getScopeData();\n mergeScopeData(data, finalScopeData);\n }\n\n const attachments = [...(hint.attachments || []), ...data.attachments];\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\n applyScopeDataToEvent(prepared, data);\n\n // TODO (v8): Update this order to be: Global > Client > Scope\n const eventProcessors = [\n ...clientEventProcessors,\n // eslint-disable-next-line deprecation/deprecation\n ...getGlobalEventProcessors(),\n // Run scope event processors _after_ all other processors\n ...data.eventProcessors,\n ];\n\n const result = notifyEventProcessors(eventProcessors, prepared, hint);\n\n return result.then(evt => {\n if (evt) {\n // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n // any new data\n applyDebugMeta(evt);\n }\n\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n}\n\n/**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event: Event, options: ClientOptions): void {\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : DEFAULT_ENVIRONMENT;\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n const exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n}\n\nconst debugIdStackParserCache = new WeakMap<StackParser, Map<string, StackFrame[]>>();\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nexport function applyDebugIds(event: Event, stackParser: StackParser): void {\n const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n\n if (!debugIdMap) {\n return;\n }\n\n let debugIdStackFramesCache: Map<string, StackFrame[]>;\n const cachedDebugIdStackFrameCache = debugIdStackParserCache.get(stackParser);\n if (cachedDebugIdStackFrameCache) {\n debugIdStackFramesCache = cachedDebugIdStackFrameCache;\n } else {\n debugIdStackFramesCache = new Map<string, StackFrame[]>();\n debugIdStackParserCache.set(stackParser, debugIdStackFramesCache);\n }\n\n // Build a map of filename -> debug_id\n const filenameDebugIdMap = Object.keys(debugIdMap).reduce<Record<string, string>>((acc, debugIdStackTrace) => {\n let parsedStack: StackFrame[];\n const cachedParsedStack = debugIdStackFramesCache.get(debugIdStackTrace);\n if (cachedParsedStack) {\n parsedStack = cachedParsedStack;\n } else {\n parsedStack = stackParser(debugIdStackTrace);\n debugIdStackFramesCache.set(debugIdStackTrace, parsedStack);\n }\n\n for (let i = parsedStack.length - 1; i >= 0; i--) {\n const stackFrame = parsedStack[i];\n if (stackFrame.filename) {\n acc[stackFrame.filename] = debugIdMap[debugIdStackTrace];\n break;\n }\n }\n return acc;\n }, {});\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event!.exception!.values!.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace!.frames!.forEach(frame => {\n if (frame.filename) {\n frame.debug_id = filenameDebugIdMap[frame.filename];\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nexport function applyDebugMeta(event: Event): void {\n // Extract debug IDs and filenames from the stack frames on the event.\n const filenameDebugIdMap: Record<string, string> = {};\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception!.values!.forEach(exception => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n exception.stacktrace!.frames!.forEach(frame => {\n if (frame.debug_id) {\n if (frame.abs_path) {\n filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n } else if (frame.filename) {\n filenameDebugIdMap[frame.filename] = frame.debug_id;\n }\n delete frame.debug_id;\n }\n });\n });\n } catch (e) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n\n if (Object.keys(filenameDebugIdMap).length === 0) {\n return;\n }\n\n // Fill debug_meta information\n event.debug_meta = event.debug_meta || {};\n event.debug_meta.images = event.debug_meta.images || [];\n const images = event.debug_meta.images;\n Object.keys(filenameDebugIdMap).forEach(filename => {\n images.push({\n type: 'sourcemap',\n code_file: filename,\n debug_id: filenameDebugIdMap[filename],\n });\n });\n}\n\n/**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\nfunction applyIntegrationsMetadata(event: Event, integrationNames: string[]): void {\n if (integrationNames.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\n }\n}\n\n/**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\nfunction normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n if (!event) {\n return null;\n }\n\n const normalized: Event = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n const data = spanToJSON(span).data;\n\n if (data) {\n // This is a bit weird, as we generally have `Span` instances here, but to be safe we do not assume so\n // eslint-disable-next-line deprecation/deprecation\n span.data = normalize(data, depth, maxBreadth);\n }\n\n return span;\n });\n }\n\n return normalized;\n}\n\nfunction getFinalScope(scope: Scope | undefined, captureContext: CaptureContext | undefined): Scope | undefined {\n if (!captureContext) {\n return scope;\n }\n\n const finalScope = scope ? scope.clone() : new Scope();\n finalScope.update(captureContext);\n return finalScope;\n}\n\n/**\n * Parse either an `EventHint` directly, or convert a `CaptureContext` to an `EventHint`.\n * This is used to allow to update method signatures that used to accept a `CaptureContext` but should now accept an `EventHint`.\n */\nexport function parseEventHintOrCaptureContext(\n hint: ExclusiveEventHintOrCaptureContext | undefined,\n): EventHint | undefined {\n if (!hint) {\n return undefined;\n }\n\n // If you pass a Scope or `() => Scope` as CaptureContext, we just return this as captureContext\n if (hintIsScopeOrFunction(hint)) {\n return { captureContext: hint };\n }\n\n if (hintIsScopeContext(hint)) {\n return {\n captureContext: hint,\n };\n }\n\n return hint;\n}\n\nfunction hintIsScopeOrFunction(\n hint: CaptureContext | EventHint,\n): hint is ScopeInterface | ((scope: ScopeInterface) => ScopeInterface) {\n return hint instanceof Scope || typeof hint === 'function';\n}\n\ntype ScopeContextProperty = keyof ScopeContext;\nconst captureContextKeys: readonly ScopeContextProperty[] = [\n 'user',\n 'level',\n 'extra',\n 'contexts',\n 'tags',\n 'fingerprint',\n 'requestSession',\n 'propagationContext',\n] as const;\n\nfunction hintIsScopeContext(hint: Partial<ScopeContext> | EventHint): hint is Partial<ScopeContext> {\n return Object.keys(hint).some(key => captureContextKeys.includes(key as ScopeContextProperty));\n}\n","import type { Span, SpanJSON, SpanTimeInput, TraceContext } from '@sentry/types';\nimport { dropUndefinedKeys, generateSentryTraceHeader, timestampInSeconds } from '@sentry/utils';\nimport type { Span as SpanClass } from '../tracing/span';\n\n// These are aligned with OpenTelemetry trace flags\nexport const TRACE_FLAG_NONE = 0x0;\nexport const TRACE_FLAG_SAMPLED = 0x1;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n */\nexport function spanToTraceContext(span: Span): TraceContext {\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n const { data, op, parent_span_id, status, tags, origin } = spanToJSON(span);\n\n return dropUndefinedKeys({\n data,\n op,\n parent_span_id,\n span_id,\n status,\n tags,\n trace_id,\n origin,\n });\n}\n\n/**\n * Convert a Span to a Sentry trace header.\n */\nexport function spanToTraceHeader(span: Span): string {\n const { traceId, spanId } = span.spanContext();\n const sampled = spanIsSampled(span);\n return generateSentryTraceHeader(traceId, spanId, sampled);\n}\n\n/**\n * Convert a span time input intp a timestamp in seconds.\n */\nexport function spanTimeInputToSeconds(input: SpanTimeInput | undefined): number {\n if (typeof input === 'number') {\n return ensureTimestampInSeconds(input);\n }\n\n if (Array.isArray(input)) {\n // See {@link HrTime} for the array-based time format\n return input[0] + input[1] / 1e9;\n }\n\n if (input instanceof Date) {\n return ensureTimestampInSeconds(input.getTime());\n }\n\n return timestampInSeconds();\n}\n\n/**\n * Converts a timestamp to second, if it was in milliseconds, or keeps it as second.\n */\nfunction ensureTimestampInSeconds(timestamp: number): number {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Convert a span to a JSON representation.\n * Note that all fields returned here are optional and need to be guarded against.\n *\n * Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).\n * This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.\n * And `spanToJSON` needs the Span class from `span.ts` to check here.\n * TODO v8: When we remove the deprecated stuff from `span.ts`, we can remove the circular dependency again.\n */\nexport function spanToJSON(span: Span): Partial<SpanJSON> {\n if (spanIsSpanClass(span)) {\n return span.getSpanJSON();\n }\n\n // Fallback: We also check for `.toJSON()` here...\n // eslint-disable-next-line deprecation/deprecation\n if (typeof span.toJSON === 'function') {\n // eslint-disable-next-line deprecation/deprecation\n return span.toJSON();\n }\n\n return {};\n}\n\n/**\n * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof.\n * :( So instead we approximate this by checking if it has the `getSpanJSON` method.\n */\nfunction spanIsSpanClass(span: Span): span is SpanClass {\n return typeof (span as SpanClass).getSpanJSON === 'function';\n}\n\n/**\n * Returns true if a span is sampled.\n * In most cases, you should just use `span.isRecording()` instead.\n * However, this has a slightly different semantic, as it also returns false if the span is finished.\n * So in the case where this distinction is important, use this method.\n */\nexport function spanIsSampled(span: Span): boolean {\n // We align our trace flags with the ones OpenTelemetry use\n // So we also check for sampled the same way they do.\n const { traceFlags } = span.spanContext();\n // eslint-disable-next-line no-bitwise\n return Boolean(traceFlags & TRACE_FLAG_SAMPLED);\n}\n","export const SDK_VERSION = '7.120.3';\n","import type { DynamicSamplingContext } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { isString } from './is';\nimport { logger } from './logger';\n\nexport const BAGGAGE_HEADER_NAME = 'baggage';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nexport const MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nexport function baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader: string | string[] | number | null | undefined | boolean,\n): Partial<DynamicSamplingContext> | undefined {\n if (!isString(baggageHeader) && !Array.isArray(baggageHeader)) {\n return undefined;\n }\n\n // Intermediary object to store baggage key value pairs of incoming baggage headers on.\n // It is later used to read Sentry-DSC-values from.\n let baggageObject: Readonly<Record<string, string>> = {};\n\n if (Array.isArray(baggageHeader)) {\n // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n baggageObject = baggageHeader.reduce<Record<string, string>>((acc, curr) => {\n const currBaggageObject = baggageHeaderToObject(curr);\n for (const key of Object.keys(currBaggageObject)) {\n acc[key] = currBaggageObject[key];\n }\n return acc;\n }, {});\n } else {\n // Return undefined if baggage header is an empty string (technically an empty baggage header is not spec conform but\n // this is how we choose to handle it)\n if (!baggageHeader) {\n return undefined;\n }\n\n baggageObject = baggageHeaderToObject(baggageHeader);\n }\n\n // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n const dynamicSamplingContext = Object.entries(baggageObject).reduce<Record<string, string>>((acc, [key, value]) => {\n if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n acc[nonPrefixedKey] = value;\n }\n return acc;\n }, {});\n\n // Only return a dynamic sampling context object if there are keys in it.\n // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n if (Object.keys(dynamicSamplingContext).length > 0) {\n return dynamicSamplingContext as Partial<DynamicSamplingContext>;\n } else {\n return undefined;\n }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nexport function dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext?: Partial<DynamicSamplingContext>,\n): string | undefined {\n if (!dynamicSamplingContext) {\n return undefined;\n }\n\n // Prefix all DSC keys with \"sentry-\" and put them into a new object\n const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce<Record<string, string>>(\n (acc, [dscKey, dscValue]) => {\n if (dscValue) {\n acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n }\n return acc;\n },\n {},\n );\n\n return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader: string): Record<string, string> {\n return baggageHeader\n .split(',')\n .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))\n .reduce<Record<string, string>>((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object: Record<string, string>): string | undefined {\n if (Object.keys(object).length === 0) {\n // An empty baggage header is not spec compliant: We return undefined.\n return undefined;\n }\n\n return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n DEBUG_BUILD &&\n logger.warn(\n `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n );\n return baggageHeader;\n } else {\n return newBaggageHeader;\n }\n }, '');\n}\n","import { isString } from './is';\nimport { getGlobalObject } from './worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject<Window>();\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\ntype SimpleNode = {\n parentNode: SimpleNode;\n} | null;\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(\n elem: unknown,\n options: string[] | { keyAttrs?: string[]; maxStringLength?: number } = {},\n): string {\n if (!elem) {\n return '<unknown>';\n }\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds maxStringLength\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '<unknown>';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown, keyAttrs?: string[]): string {\n const elem = el as {\n tagName?: string;\n id?: string;\n className?: string;\n getAttribute(key: string): string;\n };\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n // @ts-expect-error WINDOW has HTMLElement\n if (WINDOW.HTMLElement) {\n // If using the component name annotation plugin, this value may be available on the DOM node\n if (elem instanceof HTMLElement && elem.dataset && elem.dataset['sentryComponent']) {\n return elem.dataset['sentryComponent'];\n }\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n try {\n return WINDOW.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement<Element>('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getDomElement<E = any>(selector: string): E | null {\n if (WINDOW.document && WINDOW.document.querySelector) {\n return WINDOW.document.querySelector(selector) as unknown as E;\n }\n return null;\n}\n\n/**\n * Given a DOM element, traverses up the tree until it finds the first ancestor node\n * that has the `data-sentry-component` attribute. This attribute is added at build-time\n * by projects that have the component name annotation plugin installed.\n *\n * @returns a string representation of the component for the provided DOM element, or `null` if not found\n */\nexport function getComponentName(elem: unknown): string | null {\n // @ts-expect-error WINDOW has HTMLElement\n if (!WINDOW.HTMLElement) {\n return null;\n }\n\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) {\n if (!currentElem) {\n return null;\n }\n\n if (currentElem instanceof HTMLElement && currentElem.dataset['sentryComponent']) {\n return currentElem.dataset['sentryComponent'];\n }\n\n currentElem = currentElem.parentNode;\n }\n\n return null;\n}\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\nexport type SdkSource = 'npm' | 'cdn' | 'loader';\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nexport function getSDKSource(): SdkSource {\n // @ts-expect-error __SENTRY_SDK_SOURCE__ is injected by rollup during build process\n return __SENTRY_SDK_SOURCE__;\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport { logger } from '../logger';\nimport { getFunctionName } from '../stacktrace';\n\nexport type InstrumentHandlerType = 'console' | 'dom' | 'fetch' | 'history' | 'xhr' | 'error' | 'unhandledrejection';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type InstrumentHandlerCallback = (data: any) => void;\n\n// We keep the handlers globally\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Add a handler function. */\nexport function addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void {\n handlers[type] = handlers[type] || [];\n (handlers[type] as InstrumentHandlerCallback[]).push(handler);\n}\n\n/**\n * Reset all instrumentation handlers.\n * This can be used by tests to ensure we have a clean slate of instrumentation handlers.\n */\nexport function resetInstrumentationHandlers(): void {\n Object.keys(handlers).forEach(key => {\n handlers[key as InstrumentHandlerType] = undefined;\n });\n}\n\n/** Maybe run an instrumentation function, unless it was already called. */\nexport function maybeInstrument(type: InstrumentHandlerType, instrumentFn: () => void): void {\n if (!instrumented[type]) {\n instrumentFn();\n instrumented[type] = true;\n }\n}\n\n/** Trigger handlers for a given instrumentation type. */\nexport function triggerHandlers(type: InstrumentHandlerType, data: unknown): void {\n const typeHandlers = type && handlers[type];\n if (!typeHandlers) {\n return;\n }\n\n for (const handler of typeHandlers) {\n try {\n handler(data);\n } catch (e) {\n DEBUG_BUILD &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n","import type { HandlerDataError } from '@sentry/types';\n\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nlet _oldOnErrorHandler: (typeof GLOBAL_OBJ)['onerror'] | null = null;\n\n/**\n * Add an instrumentation handler for when an error is captured by the global error handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalErrorInstrumentationHandler(handler: (data: HandlerDataError) => void): void {\n const type = 'error';\n addHandler(type, handler);\n maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError(): void {\n _oldOnErrorHandler = GLOBAL_OBJ.onerror;\n\n GLOBAL_OBJ.onerror = function (\n msg: string | object,\n url?: string,\n line?: number,\n column?: number,\n error?: Error,\n ): boolean {\n const handlerData: HandlerDataError = {\n column,\n error,\n line,\n msg,\n url,\n };\n triggerHandlers('error', handlerData);\n\n if (_oldOnErrorHandler && !_oldOnErrorHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n\n GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { HandlerDataUnhandledRejection } from '@sentry/types';\n\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nlet _oldOnUnhandledRejectionHandler: (typeof GLOBAL_OBJ)['onunhandledrejection'] | null = null;\n\n/**\n * Add an instrumentation handler for when an unhandled promise rejection is captured.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalUnhandledRejectionInstrumentationHandler(\n handler: (data: HandlerDataUnhandledRejection) => void,\n): void {\n const type = 'unhandledrejection';\n addHandler(type, handler);\n maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection;\n\n GLOBAL_OBJ.onunhandledrejection = function (e: any): boolean {\n const handlerData: HandlerDataUnhandledRejection = e;\n triggerHandlers('unhandledrejection', handlerData);\n\n if (_oldOnUnhandledRejectionHandler && !_oldOnUnhandledRejectionHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n\n GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport type { ParameterizedString, PolymorphicEvent, Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): wat is Error {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat: unknown, className: string): boolean {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): wat is string {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given string is parameterized\n * {@link isParameterizedString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isParameterizedString(wat: unknown): wat is ParameterizedString {\n return (\n typeof wat === 'object' &&\n wat !== null &&\n '__sentry_template_string__' in wat &&\n '__sentry_template_values__' in wat\n );\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal, or a class instance.\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record<string, unknown> {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike<any> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isNaN(wat: unknown): boolean {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\ninterface VueViewModel {\n // Vue3\n __isVue?: boolean;\n // Vue2\n _isVue?: boolean;\n}\n/**\n * Checks whether given value's type is a Vue ViewModel.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isVueViewModel(wat: unknown): boolean {\n // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n return !!(typeof wat === 'object' && wat !== null && ((wat as VueViewModel).__isVue || (wat as VueViewModel)._isVue));\n}\n","import type { ConsoleLevel } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { GLOBAL_OBJ } from './worldwide';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nexport const CONSOLE_LEVELS: readonly ConsoleLevel[] = [\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'log',\n 'assert',\n 'trace',\n] as const;\n\ntype LoggerMethod = (...args: unknown[]) => void;\ntype LoggerConsoleMethods = Record<ConsoleLevel, LoggerMethod>;\n\n/** This may be mutated by the console instrumentation. */\nexport const originalConsoleMethods: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key in ConsoleLevel]?: (...args: any[]) => void;\n} = {};\n\n/** JSDoc */\ninterface Logger extends LoggerConsoleMethods {\n disable(): void;\n enable(): void;\n isEnabled(): boolean;\n}\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox<T>(callback: () => T): T {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const console = GLOBAL_OBJ.console as Console;\n const wrappedFuncs: Partial<LoggerConsoleMethods> = {};\n\n const wrappedLevels = Object.keys(originalConsoleMethods) as ConsoleLevel[];\n\n // Restore all wrapped console methods\n wrappedLevels.forEach(level => {\n const originalConsoleMethod = originalConsoleMethods[level] as LoggerMethod;\n wrappedFuncs[level] = console[level] as LoggerMethod | undefined;\n console[level] = originalConsoleMethod;\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n wrappedLevels.forEach(level => {\n console[level] = wrappedFuncs[level] as LoggerMethod;\n });\n }\n}\n\nfunction makeLogger(): Logger {\n let enabled = false;\n const logger: Partial<Logger> = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n isEnabled: () => enabled,\n };\n\n if (DEBUG_BUILD) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args: any[]) => {\n if (enabled) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger as Logger;\n}\n\nexport const logger = makeLogger();\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\nimport { GLOBAL_OBJ } from './worldwide';\n\ninterface CryptoInternal {\n getRandomValues(array: Uint8Array): Uint8Array;\n randomUUID?(): string;\n}\n\n/** An interface for common properties on global */\ninterface CryptoGlobal {\n msCrypto?: CryptoInternal;\n crypto?: CryptoInternal;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const gbl = GLOBAL_OBJ as typeof GLOBAL_OBJ & CryptoGlobal;\n const crypto = gbl.crypto || gbl.msCrypto;\n\n let getRandomByte = (): number => Math.random() * 16;\n try {\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n if (crypto && crypto.getRandomValues) {\n getRandomByte = () => {\n // crypto.getRandomValues might return undefined instead of the typed array\n // in old Chromium versions (e.g. 23.0.1235.0 (151422))\n // However, `typedArray` is still filled in-place.\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues#typedarray\n const typedArray = new Uint8Array(1);\n crypto.getRandomValues(typedArray);\n return typedArray[0];\n };\n }\n } catch (_) {\n // some runtimes can crash invoking crypto\n // https://github.com/getsentry/sentry-javascript/issues/8935\n }\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] as unknown as string) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c as unknown as number) ^ ((getRandomByte() & 15) >> ((c as unknown as number) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '<unknown>';\n }\n return eventId || '<unknown>';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial<Mechanism>): void {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n if (frame.lineno === undefined) {\n return;\n }\n\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception as any).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nexport function arrayify<T = unknown>(maybeArray: T | T[]): T[] {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nexport function loadModule<T>(moduleName: string): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n","import type { Primitive } from '@sentry/types';\n\nimport { isNaN, isSyntheticEvent, isVueViewModel } from './is';\nimport type { MemoFunc } from './memo';\nimport { memoBuilder } from './memo';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName } from './stacktrace';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray<T> = { [key: string]: T };\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function normalize(input: unknown, depth: number = 100, maxProperties: number = +Infinity): any {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nexport function normalizeToSize<T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized as T;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key: string,\n value: unknown,\n depth: number = +Infinity,\n maxProperties: number = +Infinity,\n memo: MemoFunc = memoBuilder(),\n): Primitive | ObjOrArray<unknown> {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (\n value == null || // this matches null and undefined -> eqeq not eqeqeq\n (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))\n ) {\n return value as Primitive;\n }\n\n const stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value as ObjOrArray<unknown>)['__sentry_skip_normalization__']) {\n return value as ObjOrArray<unknown>;\n }\n\n // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n // We keep a certain amount of depth.\n // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n const remainingDepth =\n typeof (value as ObjOrArray<unknown>)['__sentry_override_normalization_depth__'] === 'number'\n ? ((value as ObjOrArray<unknown>)['__sentry_override_normalization_depth__'] as number)\n : depth;\n\n // We're also done if we've reached the max depth\n if (remainingDepth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n const valueWithToJSON = value as unknown & { toJSON?: () => unknown };\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n const normalized = (Array.isArray(value) ? [] : {}) as ObjOrArray<unknown>;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n const visitable = convertToPlainObject(value as ObjOrArray<unknown>);\n\n for (const visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n numAdded++;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n/**\n * @deprecated This export will be removed in v8.\n */\nexport { visit as walk };\n\n/* eslint-disable complexity */\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key: unknown,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value: Exclude<unknown, string | number | boolean | null>,\n): string {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n if (isVueViewModel(value)) {\n return '[VueViewModel]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n const objName = getConstructorName(value);\n\n // Handle HTML Elements\n if (/^HTML(\\w*)Element$/.test(objName)) {\n return `[HTMLElement: ${objName}]`;\n }\n\n return `[object ${objName}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value: unknown): string {\n const prototype: Prototype | null = Object.getPrototypeOf(value);\n\n return prototype ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n\n/**\n * Normalizes URLs in exceptions and stacktraces to a base path so Sentry can fingerprint\n * across platforms and working directory.\n *\n * @param url The URL to be normalized.\n * @param basePath The application base path.\n * @returns The normalized URL.\n */\nexport function normalizeUrlToBase(url: string, basePath: string): string {\n const escapedBase = basePath\n // Backslash to forward\n .replace(/\\\\/g, '/')\n // Escape RegExp special characters\n .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n\n let newUrl = url;\n try {\n newUrl = decodeURI(url);\n } catch (_Oo) {\n // Sometime this breaks\n }\n return (\n newUrl\n .replace(/\\\\/g, '/')\n .replace(/webpack:\\/?/g, '') // Remove intermediate base path\n // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor\n .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///')\n );\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type MemoFunc = [\n // memoize\n (obj: any) => boolean,\n // unmemoize\n (obj: any) => void,\n];\n\n/**\n * Helper to decycle json objects\n */\nexport function memoBuilder(): MemoFunc {\n const hasWeakSet = typeof WeakSet === 'function';\n const inner: any = hasWeakSet ? new WeakSet() : [];\n function memoize(obj: any): boolean {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inner.length; i++) {\n const value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj: any): void {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { DEBUG_BUILD } from './debug-build';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { logger } from './logger';\nimport { truncate } from './string';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, <other\n * args>)` or `origMethod.apply(this, [<other args>])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacementFactory(original) as WrappedFunction;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n markFunctionWrapped(wrapped, original);\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nexport function addNonEnumerableProperty(obj: object, name: string, value: unknown): void {\n try {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n } catch (o_O) {\n DEBUG_BUILD && logger.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\n }\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n try {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n } catch (o_O) {} // eslint-disable-line no-empty\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nexport function getOriginalFunction(func: WrappedFunction): WrappedFunction | undefined {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nexport function convertToPlainObject<V>(\n value: V,\n):\n | {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n }\n | {\n [ownProps: string]: unknown;\n message: string;\n name: string;\n stack?: string;\n }\n | V {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj: {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n } = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target: unknown): string {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '<unknown>';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: unknown): { [key: string]: unknown } {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps: { [key: string]: unknown } = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj as Record<string, unknown>)[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nexport function extractExceptionKeysForMessage(exception: Record<string, unknown>, maxLength: number = 40): string {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nexport function dropUndefinedKeys<T>(inputValue: T): T {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map<unknown, unknown>();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys<T>(inputValue: T, memoizationMap: Map<unknown, unknown>): T {\n if (isPojo(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: { [key: string]: any } = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue as T;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: unknown[] = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item: unknown) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue as unknown as T;\n }\n\n return inputValue;\n}\n\nfunction isPojo(input: unknown): input is Record<string, unknown> {\n if (!isPlainObject(input)) {\n return false;\n }\n\n try {\n const name = (Object.getPrototypeOf(input) as { constructor: { name: string } }).constructor.name;\n return !name || name === 'Object';\n } catch {\n return true;\n }\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nexport function objectify(wat: unknown): typeof Object {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat as any).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n","import type { StackFrame, StackLineParser, StackParser } from '@sentry/types';\n\nimport type { GetModuleFn } from './node-stack-trace';\nimport { filenameIsInApp, node } from './node-stack-trace';\n\nexport { filenameIsInApp };\n\nconst STACKTRACE_FRAME_LIMIT = 50;\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack: string, skipFirst: number = 0): StackFrame[] => {\n const frames: StackFrame[] = [];\n const lines = stack.split('\\n');\n\n for (let i = skipFirst; i < lines.length; i++) {\n const line = lines[i];\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n continue;\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue;\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT) {\n break;\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: ReadonlyArray<StackFrame>): StackFrame[] {\n if (!stack.length) {\n return [];\n }\n\n const localStack = Array.from(stack);\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (/sentryWrapped/.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n\n // Reversing in the middle of the procedure allows us to just pop the values off the stack\n localStack.reverse();\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n\n // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n // is produced within the hub itself, making it:\n //\n // Sentry.captureException()\n // getCurrentHub().captureException()\n //\n // instead of just the top `Sentry` call itself.\n // This forces us to possibly strip an additional frame in the exact same was as above.\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n }\n\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n ...frame,\n filename: frame.filename || localStack[localStack.length - 1].filename,\n function: frame.function || '?',\n }));\n}\n\nconst defaultFunctionName = '<anonymous>';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nexport function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser {\n return [90, node(getModule)];\n}\n","import { isRegExp, isString, isVueViewModel } from './is';\n\nexport { escapeStringForRegex } from './vendor/escapeStringForRegex';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n // console warnings. This happens when a Vue template is rendered with\n // an undeclared variable, which we try to stringify, ultimately causing\n // Vue to issue another warning which repeats indefinitely.\n // see: https://github.com/getsentry/sentry-javascript/pull/8981\n if (isVueViewModel(value)) {\n output.push('[VueViewModel]');\n } else {\n output.push(String(value));\n }\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nexport function isMatchingPattern(\n value: string,\n pattern: RegExp | string,\n requireExactStringMatch: boolean = false,\n): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (isString(pattern)) {\n return requireExactStringMatch ? value === pattern : value.includes(pattern);\n }\n\n return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nexport function stringMatchesSomePattern(\n testString: string,\n patterns: Array<string | RegExp> = [],\n requireExactStringMatch: boolean = false,\n): boolean {\n return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n /** Pending */\n PENDING = 0,\n /** Resolved / OK */\n RESOLVED = 1,\n /** Rejected / Error */\n REJECTED = 2,\n}\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike<void>;\nexport function resolvedSyncPromise<T>(value: T | PromiseLike<T>): PromiseLike<T>;\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise<T>(value?: T | PromiseLike<T>): PromiseLike<T> {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise<T = never>(reason?: any): PromiseLike<T> {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise<T> implements PromiseLike<T> {\n private _state: States;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]>;\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike<T> | null) => void, reject: (reason?: any) => void) => void,\n ) {\n this._state = States.PENDING;\n this._handlers = [];\n\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,\n ): PromiseLike<TResult1 | TResult2> {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n public catch<TResult = never>(\n onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null,\n ): PromiseLike<T | TResult> {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally<TResult>(onfinally?: (() => void) | null): PromiseLike<TResult> {\n return new SyncPromise<TResult>((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val as unknown as any);\n });\n });\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike<T> | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike<T> | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike<T>).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value as unknown as any);\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };\n}\n\nexport { SyncPromise };\n","import { GLOBAL_OBJ } from './worldwide';\n\nconst ONE_SECOND_IN_MS = 1000;\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n *\n * TODO(v8): Return type should be rounded.\n */\nexport function dateTimestampInSeconds(): number {\n return Date.now() / ONE_SECOND_IN_MS;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction createUnixTimestampInSecondsFunc(): () => number {\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & { performance?: Performance };\n if (!performance || !performance.now) {\n return dateTimestampInSeconds;\n }\n\n // Some browser and environments don't have a timeOrigin, so we fallback to\n // using Date.now() to compute the starting time.\n const approxStartingTimeOrigin = Date.now() - performance.now();\n const timeOrigin = performance.timeOrigin == undefined ? approxStartingTimeOrigin : performance.timeOrigin;\n\n // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current\n // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed.\n //\n // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the\n // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and\n // correct for this.\n // See: https://github.com/getsentry/sentry-javascript/issues/2590\n // See: https://github.com/mdn/content/issues/4713\n // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6\n return () => {\n return (timeOrigin + performance.now()) / ONE_SECOND_IN_MS;\n };\n}\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds = createUnixTimestampInSecondsFunc();\n\n/**\n * Re-exported with an old name for backwards-compatibility.\n * TODO (v8): Remove this\n *\n * @deprecated Use `timestampInSeconds` instead.\n */\nexport const timestampWithMs = timestampInSeconds;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport let _browserPerformanceTimeOriginMode: string;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n","import type { PropagationContext, TraceparentData } from '@sentry/types';\n\nimport { baggageHeaderToDynamicSamplingContext } from './baggage';\nimport { uuid4 } from './misc';\n\n// eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor -- RegExp is used for readability here\nexport const TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nexport function extractTraceparentData(traceparent?: string): TraceparentData | undefined {\n if (!traceparent) {\n return undefined;\n }\n\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n if (!matches) {\n return undefined;\n }\n\n let parentSampled: boolean | undefined;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n}\n\n/**\n * Create tracing context from incoming headers.\n *\n * @deprecated Use `propagationContextFromHeaders` instead.\n */\n// TODO(v8): Remove this function\nexport function tracingContextFromHeaders(\n sentryTrace: Parameters<typeof extractTraceparentData>[0],\n baggage: Parameters<typeof baggageHeaderToDynamicSamplingContext>[0],\n): {\n traceparentData: ReturnType<typeof extractTraceparentData>;\n dynamicSamplingContext: ReturnType<typeof baggageHeaderToDynamicSamplingContext>;\n propagationContext: PropagationContext;\n} {\n const traceparentData = extractTraceparentData(sentryTrace);\n const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n const { traceId, parentSpanId, parentSampled } = traceparentData || {};\n\n if (!traceparentData) {\n return {\n traceparentData,\n dynamicSamplingContext: undefined,\n propagationContext: {\n traceId: traceId || uuid4(),\n spanId: uuid4().substring(16),\n },\n };\n } else {\n return {\n traceparentData,\n dynamicSamplingContext: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n propagationContext: {\n traceId: traceId || uuid4(),\n parentSpanId: parentSpanId || uuid4().substring(16),\n spanId: uuid4().substring(16),\n sampled: parentSampled,\n dsc: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n },\n };\n }\n}\n\n/**\n * Create a propagation context from incoming headers.\n */\nexport function propagationContextFromHeaders(\n sentryTrace: string | undefined,\n baggage: string | number | boolean | string[] | null | undefined,\n): PropagationContext {\n const traceparentData = extractTraceparentData(sentryTrace);\n const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n const { traceId, parentSpanId, parentSampled } = traceparentData || {};\n\n if (!traceparentData) {\n return {\n traceId: traceId || uuid4(),\n spanId: uuid4().substring(16),\n };\n } else {\n return {\n traceId: traceId || uuid4(),\n parentSpanId: parentSpanId || uuid4().substring(16),\n spanId: uuid4().substring(16),\n sampled: parentSampled,\n dsc: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n };\n }\n}\n\n/**\n * Create sentry-trace header from span context values.\n */\nexport function generateSentryTraceHeader(\n traceId: string = uuid4(),\n spanId: string = uuid4().substring(16),\n sampled?: boolean,\n): string {\n let sampledString = '';\n if (sampled !== undefined) {\n sampledString = sampled ? '-1' : '-0';\n }\n return `${traceId}-${spanId}${sampledString}`;\n}\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n *\n * Note: This file was originally called `global.ts`, but was changed to unblock users which might be doing\n * string replaces with bundlers like Vite for `global` (would break imports that rely on importing from utils/src/global).\n *\n * Why worldwide?\n *\n * Why not?\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Integration } from '@sentry/types';\n\nimport type { SdkSource } from './env';\n\n/** Internal global with common properties and Sentry extensions */\nexport interface InternalGlobal {\n navigator?: { userAgent?: string };\n console: Console;\n Sentry?: {\n Integrations?: Integration[];\n };\n onerror?: {\n (event: object | string, source?: string, lineno?: number, colno?: number, error?: Error): any;\n __SENTRY_INSTRUMENTED__?: true;\n __SENTRY_LOADER__?: true;\n };\n onunhandledrejection?: {\n (event: unknown): boolean;\n __SENTRY_INSTRUMENTED__?: true;\n __SENTRY_LOADER__?: true;\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n SENTRY_SDK_SOURCE?: SdkSource;\n /**\n * Debug IDs are indirectly injected by Sentry CLI or bundler plugins to directly reference a particular source map\n * for resolving of a source file. The injected code will place an entry into the record for each loaded bundle/JS\n * file.\n */\n _sentryDebugIds?: Record<string, string>;\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n extensions?: {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n /**\n * Raw module metadata that is injected by bundler plugins.\n *\n * Keys are `error.stack` strings, values are the metadata.\n */\n _sentryModuleMetadata?: Record<string, any>;\n}\n\n// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj: { Math?: Math }): any | undefined {\n return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nexport const GLOBAL_OBJ: InternalGlobal =\n (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n // eslint-disable-next-line no-restricted-globals\n (typeof window == 'object' && isGlobalObj(window)) ||\n (typeof self == 'object' && isGlobalObj(self)) ||\n (typeof global == 'object' && isGlobalObj(global)) ||\n (function (this: any) {\n return this;\n })() ||\n {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8\n */\nexport function getGlobalObject<T>(): T & InternalGlobal {\n return GLOBAL_OBJ as T & InternalGlobal;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton<T>(name: keyof InternalGlobal['__SENTRY__'], creator: () => T, obj?: unknown): T {\n const gbl = (obj || GLOBAL_OBJ) as InternalGlobal;\n const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n","'use strict';\n\n/**\n * Copyright Marc J. Schmidt. See the LICENSE file at the top-level\n * directory of this distribution and at\n * https://github.com/marcj/css-element-queries/blob/master/LICENSE.\n */\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(factory);\n } else if (typeof exports === \"object\") {\n module.exports = factory();\n } else {\n root.ResizeSensor = factory();\n }\n}(typeof window !== 'undefined' ? window : this, function () {\n\n // Make sure it does not throw in a SSR (Server Side Rendering) situation\n if (typeof window === \"undefined\") {\n return null;\n }\n // https://github.com/Semantic-Org/Semantic-UI/issues/3855\n // https://github.com/marcj/css-element-queries/issues/257\n var globalWindow = typeof window != 'undefined' && window.Math == Math\n ? window\n : typeof self != 'undefined' && self.Math == Math\n ? self\n : Function('return this')();\n // Only used for the dirty checking, so the event callback count is limited to max 1 call per fps per sensor.\n // In combination with the event based resize sensor this saves cpu time, because the sensor is too fast and\n // would generate too many unnecessary events.\n var requestAnimationFrame = globalWindow.requestAnimationFrame ||\n globalWindow.mozRequestAnimationFrame ||\n globalWindow.webkitRequestAnimationFrame ||\n function (fn) {\n return globalWindow.setTimeout(fn, 20);\n };\n\n /**\n * Iterate over each of the provided element(s).\n *\n * @param {HTMLElement|HTMLElement[]} elements\n * @param {Function} callback\n */\n function forEachElement(elements, callback){\n var elementsType = Object.prototype.toString.call(elements);\n var isCollectionTyped = ('[object Array]' === elementsType\n || ('[object NodeList]' === elementsType)\n || ('[object HTMLCollection]' === elementsType)\n || ('[object Object]' === elementsType)\n || ('undefined' !== typeof jQuery && elements instanceof jQuery) //jquery\n || ('undefined' !== typeof Elements && elements instanceof Elements) //mootools\n );\n var i = 0, j = elements.length;\n if (isCollectionTyped) {\n for (; i < j; i++) {\n callback(elements[i]);\n }\n } else {\n callback(elements);\n }\n }\n\n /**\n * Get element size\n * @param {HTMLElement} element\n * @returns {Object} {width, height}\n */\n function getElementSize(element) {\n if (!element.getBoundingClientRect) {\n return {\n width: element.offsetWidth,\n height: element.offsetHeight\n }\n }\n\n var rect = element.getBoundingClientRect();\n return {\n width: Math.round(rect.width),\n height: Math.round(rect.height)\n }\n }\n\n /**\n * Apply CSS styles to element.\n *\n * @param {HTMLElement} element\n * @param {Object} style\n */\n function setStyle(element, style) {\n Object.keys(style).forEach(function(key) {\n element.style[key] = style[key];\n });\n }\n\n /**\n * Class for dimension change detection.\n *\n * @param {Element|Element[]|Elements|jQuery} element\n * @param {Function} callback\n *\n * @constructor\n */\n var ResizeSensor = function(element, callback) {\n /**\n *\n * @constructor\n */\n function EventQueue() {\n var q = [];\n this.add = function(ev) {\n q.push(ev);\n };\n\n var i, j;\n this.call = function(sizeInfo) {\n for (i = 0, j = q.length; i < j; i++) {\n q[i].call(this, sizeInfo);\n }\n };\n\n this.remove = function(ev) {\n var newQueue = [];\n for(i = 0, j = q.length; i < j; i++) {\n if(q[i] !== ev) newQueue.push(q[i]);\n }\n q = newQueue;\n };\n\n this.length = function() {\n return q.length;\n }\n }\n\n /**\n *\n * @param {HTMLElement} element\n * @param {Function} resized\n */\n function attachResizeEvent(element, resized) {\n if (!element) return;\n if (element.resizedAttached) {\n element.resizedAttached.add(resized);\n return;\n }\n\n element.resizedAttached = new EventQueue();\n element.resizedAttached.add(resized);\n\n element.resizeSensor = document.createElement('div');\n element.resizeSensor.dir = 'ltr';\n element.resizeSensor.className = 'resize-sensor';\n\n var style = {\n pointerEvents: 'none',\n position: 'absolute',\n left: '0px',\n top: '0px',\n right: '0px',\n bottom: '0px',\n overflow: 'hidden',\n zIndex: '-1',\n visibility: 'hidden',\n maxWidth: '100%'\n };\n var styleChild = {\n position: 'absolute',\n left: '0px',\n top: '0px',\n transition: '0s',\n };\n\n setStyle(element.resizeSensor, style);\n\n var expand = document.createElement('div');\n expand.className = 'resize-sensor-expand';\n setStyle(expand, style);\n\n var expandChild = document.createElement('div');\n setStyle(expandChild, styleChild);\n expand.appendChild(expandChild);\n\n var shrink = document.createElement('div');\n shrink.className = 'resize-sensor-shrink';\n setStyle(shrink, style);\n\n var shrinkChild = document.createElement('div');\n setStyle(shrinkChild, styleChild);\n setStyle(shrinkChild, { width: '200%', height: '200%' });\n shrink.appendChild(shrinkChild);\n\n element.resizeSensor.appendChild(expand);\n element.resizeSensor.appendChild(shrink);\n element.appendChild(element.resizeSensor);\n\n var computedStyle = window.getComputedStyle(element);\n var position = computedStyle ? computedStyle.getPropertyValue('position') : null;\n if ('absolute' !== position && 'relative' !== position && 'fixed' !== position) {\n element.style.position = 'relative';\n }\n\n var dirty, rafId;\n var size = getElementSize(element);\n var lastWidth = 0;\n var lastHeight = 0;\n var initialHiddenCheck = true;\n var lastAnimationFrame = 0;\n\n var resetExpandShrink = function () {\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n expandChild.style.width = (width + 10) + 'px';\n expandChild.style.height = (height + 10) + 'px';\n\n expand.scrollLeft = width + 10;\n expand.scrollTop = height + 10;\n\n shrink.scrollLeft = width + 10;\n shrink.scrollTop = height + 10;\n };\n\n var reset = function() {\n // Check if element is hidden\n if (initialHiddenCheck) {\n var invisible = element.offsetWidth === 0 && element.offsetHeight === 0;\n if (invisible) {\n // Check in next frame\n if (!lastAnimationFrame){\n lastAnimationFrame = requestAnimationFrame(function(){\n lastAnimationFrame = 0;\n\n reset();\n });\n }\n\n return;\n } else {\n // Stop checking\n initialHiddenCheck = false;\n }\n }\n\n resetExpandShrink();\n };\n element.resizeSensor.resetSensor = reset;\n\n var onResized = function() {\n rafId = 0;\n\n if (!dirty) return;\n\n lastWidth = size.width;\n lastHeight = size.height;\n\n if (element.resizedAttached) {\n element.resizedAttached.call(size);\n }\n };\n\n var onScroll = function() {\n size = getElementSize(element);\n dirty = size.width !== lastWidth || size.height !== lastHeight;\n\n if (dirty && !rafId) {\n rafId = requestAnimationFrame(onResized);\n }\n\n reset();\n };\n\n var addEvent = function(el, name, cb) {\n if (el.attachEvent) {\n el.attachEvent('on' + name, cb);\n } else {\n el.addEventListener(name, cb);\n }\n };\n\n addEvent(expand, 'scroll', onScroll);\n addEvent(shrink, 'scroll', onScroll);\n\n // Fix for custom Elements\n requestAnimationFrame(reset);\n }\n\n forEachElement(element, function(elem){\n attachResizeEvent(elem, callback);\n });\n\n this.detach = function(ev) {\n ResizeSensor.detach(element, ev);\n };\n\n this.reset = function() {\n element.resizeSensor.resetSensor();\n };\n };\n\n ResizeSensor.reset = function(element) {\n forEachElement(element, function(elem){\n elem.resizeSensor.resetSensor();\n });\n };\n\n ResizeSensor.detach = function(element, ev) {\n forEachElement(element, function(elem){\n if (!elem) return;\n if(elem.resizedAttached && typeof ev === \"function\"){\n elem.resizedAttached.remove(ev);\n if(elem.resizedAttached.length()) return;\n }\n if (elem.resizeSensor) {\n if (elem.contains(elem.resizeSensor)) {\n elem.removeChild(elem.resizeSensor);\n }\n delete elem.resizeSensor;\n delete elem.resizedAttached;\n }\n });\n };\n\n if (typeof MutationObserver !== \"undefined\") {\n var observer = new MutationObserver(function (mutations) {\n for (var i in mutations) {\n if (mutations.hasOwnProperty(i)) {\n var items = mutations[i].addedNodes;\n for (var j = 0; j < items.length; j++) {\n if (items[j].resizeSensor) {\n ResizeSensor.reset(items[j]);\n }\n }\n }\n }\n });\n\n document.addEventListener(\"DOMContentLoaded\", function (event) {\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n }\n\n return ResizeSensor;\n\n}));\n","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n var dayOfMonth = date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nexport default function addQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var months = amount * 3;\n return addMonths(dirtyDate, months);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport default function endOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nexport default function getDate(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = date.getDate();\n return dayOfMonth;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return startOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport default function getISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport default function getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport default function getMinutes(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var minutes = date.getMinutes();\n return minutes;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport default function getMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n return month;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nexport default function getQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var quarter = Math.floor(date.getMonth() / 3) + 1;\n return quarter;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport default function getSeconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds();\n return seconds;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nexport default function getTime(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n return timestamp;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyLeftDate);\n var dateRight = toDate(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}","import startOfQuarter from \"../startOfQuarter/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same quarter (and year)?\n *\n * @description\n * Are the given dates in the same quarter (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\nexport default function isSameQuarter(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft);\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight);\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> false\n *\n * @example\n * // For date equal to interval start:\n * isWithinInterval(date, { start, end: date }) // => true\n *\n * @example\n * // For date equal to interval end:\n * isWithinInterval(date, { start: date, end }) // => true\n */\nexport default function isWithinInterval(dirtyDate, interval) {\n requiredArgs(2, arguments);\n var time = toDate(dirtyDate).getTime();\n var startTime = toDate(interval.start).getTime();\n var endTime = toDate(interval.end).getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n return time >= startTime && time <= endTime;\n}","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * const result = max([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\nexport default function max(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray;\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n if (result === undefined || result < currentDate || isNaN(Number(currentDate))) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name min\n * @category Common Helpers\n * @summary Returns the earliest of the given dates.\n *\n * @description\n * Returns the earliest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} - the earliest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the earliest?\n * const result = min([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\nexport default function min(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray;\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n if (result === undefined || result > currentDate || isNaN(currentDate.getDate())) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nfunction _createForOfIteratorHelper(r, e) {\n var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (!t) {\n if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) {\n t && (r = t);\n var _n = 0,\n F = function F() {};\n return {\n s: F,\n n: function n() {\n return _n >= r.length ? {\n done: !0\n } : {\n done: !1,\n value: r[_n++]\n };\n },\n e: function e(r) {\n throw r;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var o,\n a = !0,\n u = !1;\n return {\n s: function s() {\n t = t.call(r);\n },\n n: function n() {\n var r = t.next();\n return a = r.done, r;\n },\n e: function e(r) {\n u = !0, o = r;\n },\n f: function f() {\n try {\n a || null == t[\"return\"] || t[\"return\"]();\n } finally {\n if (u) throw o;\n }\n }\n };\n}\nexport { _createForOfIteratorHelper as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","function _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nexport { _isNativeReflectConstruct as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nfunction _createSuper(t) {\n var r = isNativeReflectConstruct();\n return function () {\n var e,\n o = getPrototypeOf(t);\n if (r) {\n var s = getPrototypeOf(this).constructor;\n e = Reflect.construct(o, arguments, s);\n } else e = o.apply(this, arguments);\n return possibleConstructorReturn(this, e);\n };\n}\nexport { _createSuper as default };","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","import _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar TIMEZONE_UNIT_PRIORITY = 10;\nexport var Setter = /*#__PURE__*/function () {\n function Setter() {\n _classCallCheck(this, Setter);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", 0);\n }\n _createClass(Setter, [{\n key: \"validate\",\n value: function validate(_utcDate, _options) {\n return true;\n }\n }]);\n return Setter;\n}();\nexport var ValueSetter = /*#__PURE__*/function (_Setter) {\n _inherits(ValueSetter, _Setter);\n var _super = _createSuper(ValueSetter);\n function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n var _this;\n _classCallCheck(this, ValueSetter);\n _this = _super.call(this);\n _this.value = value;\n _this.validateValue = validateValue;\n _this.setValue = setValue;\n _this.priority = priority;\n if (subPriority) {\n _this.subPriority = subPriority;\n }\n return _this;\n }\n _createClass(ValueSetter, [{\n key: \"validate\",\n value: function validate(utcDate, options) {\n return this.validateValue(utcDate, this.value, options);\n }\n }, {\n key: \"set\",\n value: function set(utcDate, flags, options) {\n return this.setValue(utcDate, flags, this.value, options);\n }\n }]);\n return ValueSetter;\n}(Setter);\nexport var DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n _inherits(DateToSystemTimezoneSetter, _Setter2);\n var _super2 = _createSuper(DateToSystemTimezoneSetter);\n function DateToSystemTimezoneSetter() {\n var _this2;\n _classCallCheck(this, DateToSystemTimezoneSetter);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n _defineProperty(_assertThisInitialized(_this2), \"subPriority\", -1);\n return _this2;\n }\n _createClass(DateToSystemTimezoneSetter, [{\n key: \"set\",\n value: function set(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n }\n }]);\n return DateToSystemTimezoneSetter;\n}(Setter);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ValueSetter } from \"./Setter.js\";\nexport var Parser = /*#__PURE__*/function () {\n function Parser() {\n _classCallCheck(this, Parser);\n _defineProperty(this, \"incompatibleTokens\", void 0);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", void 0);\n }\n _createClass(Parser, [{\n key: \"run\",\n value: function run(dateString, token, match, options) {\n var result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n return {\n setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n rest: result.rest\n };\n }\n }, {\n key: \"validate\",\n value: function validate(_utcDate, _value, _options) {\n return true;\n }\n }]);\n return Parser;\n}();","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nexport var EraParser = /*#__PURE__*/function (_Parser) {\n _inherits(EraParser, _Parser);\n var _super = _createSuper(EraParser);\n function EraParser() {\n var _this;\n _classCallCheck(this, EraParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 140);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['R', 'u', 't', 'T']);\n return _this;\n }\n _createClass(EraParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n // A, B\n case 'GGGGG':\n return match.era(dateString, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(dateString, {\n width: 'wide'\n }) || match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return EraParser;\n}(Parser);","export var numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nexport var timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};","import { millisecondsInHour, millisecondsInMinute, millisecondsInSecond } from \"../../constants/index.js\";\nimport { numericPatterns } from \"./constants.js\";\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest\n };\n}\nexport function parseNumericPattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseTimezonePattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: dateString.slice(1)\n };\n }\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case 'morning':\n return 4;\n case 'evening':\n return 17;\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n return isCommonEra ? result : 1 - result;\n}\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport var YearParser = /*#__PURE__*/function (_Parser) {\n _inherits(YearParser, _Parser);\n var _super = _createSuper(YearParser);\n function YearParser() {\n var _this;\n _classCallCheck(this, YearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(YearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n switch (token) {\n case 'y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n var currentYear = date.getUTCFullYear();\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return YearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits, normalizeTwoDigitYear, mapValue } from \"../utils.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\n// Local week-numbering year\nexport var LocalWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekYearParser, _Parser);\n var _super = _createSuper(LocalWeekYearParser);\n function LocalWeekYearParser() {\n var _this;\n _classCallCheck(this, LocalWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n switch (token) {\n case 'Y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'Yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n }]);\n return LocalWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week-numbering year\nexport var ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekYearParser, _Parser);\n var _super = _createSuper(ISOWeekYearParser);\n function ISOWeekYearParser() {\n var _this;\n _classCallCheck(this, ISOWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'R') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n }\n }]);\n return ISOWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nexport var ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ExtendedYearParser, _Parser);\n var _super = _createSuper(ExtendedYearParser);\n function ExtendedYearParser() {\n var _this;\n _classCallCheck(this, ExtendedYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ExtendedYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'u') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ExtendedYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var QuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(QuarterParser, _Parser);\n var _super = _createSuper(QuarterParser);\n function QuarterParser() {\n var _this;\n _classCallCheck(this, QuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(QuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return QuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneQuarterParser, _Parser);\n var _super = _createSuper(StandAloneQuarterParser);\n function StandAloneQuarterParser() {\n var _this;\n _classCallCheck(this, StandAloneQuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneQuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneQuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nexport var MonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(MonthParser, _Parser);\n var _super = _createSuper(MonthParser);\n function MonthParser() {\n var _this;\n _classCallCheck(this, MonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n return _this;\n }\n _createClass(MonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'MM':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return MonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, mapValue } from \"../utils.js\";\nexport var StandAloneMonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneMonthParser, _Parser);\n var _super = _createSuper(StandAloneMonthParser);\n function StandAloneMonthParser() {\n var _this;\n _classCallCheck(this, StandAloneMonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneMonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'LL':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneMonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\"; // Local week of year\nexport var LocalWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekParser, _Parser);\n var _super = _createSuper(LocalWeekParser);\n function LocalWeekParser() {\n var _this;\n _classCallCheck(this, LocalWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'wo':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n }\n }]);\n return LocalWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week of year\nexport var ISOWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekParser, _Parser);\n var _super = _createSuper(ISOWeekParser);\n function ISOWeekParser() {\n var _this;\n _classCallCheck(this, ISOWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'Io':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value));\n }\n }]);\n return ISOWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// Day of the month\nexport var DateParser = /*#__PURE__*/function (_Parser) {\n _inherits(DateParser, _Parser);\n var _super = _createSuper(DateParser);\n function DateParser() {\n var _this;\n _classCallCheck(this, DateParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subPriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DateParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, dateString);\n case 'do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DateParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, isLeapYearIndex } from \"../utils.js\";\nexport var DayOfYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayOfYearParser, _Parser);\n var _super = _createSuper(DayOfYearParser);\n function DayOfYearParser() {\n var _this;\n _classCallCheck(this, DayOfYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subpriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayOfYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case 'Do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayOfYearParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function setUTCDay(dirtyDate, dirtyDay, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Day of week\nexport var DayParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayParser, _Parser);\n var _super = _createSuper(DayParser);\n function DayParser() {\n var _this;\n _classCallCheck(this, DayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Local day of week\nexport var LocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalDayParser, _Parser);\n var _super = _createSuper(LocalDayParser);\n function LocalDayParser() {\n var _this;\n _classCallCheck(this, LocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']);\n return _this;\n }\n _createClass(LocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'eo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'eee':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return LocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Stand-alone local day of week\nexport var StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneLocalDayParser, _Parser);\n var _super = _createSuper(StandAloneLocalDayParser);\n function StandAloneLocalDayParser() {\n var _this;\n _classCallCheck(this, StandAloneLocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneLocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'co':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'ccc':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneLocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\"; // ISO day of week\nexport var ISODayParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISODayParser, _Parser);\n var _super = _createSuper(ISODayParser);\n function ISODayParser() {\n var _this;\n _classCallCheck(this, ISODayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISODayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case 'io':\n return match.ordinalNumber(dateString, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return mapValue(match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // T\n case 'iiiii':\n return mapValue(match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tu\n case 'iiiiii':\n return mapValue(match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tuesday\n case 'iiii':\n default:\n return mapValue(match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date = setUTCISODay(date, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ISODayParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n if (day % 7 === 0) {\n day = day - 7;\n }\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMParser, _Parser);\n var _super = _createSuper(AMPMParser);\n function AMPMParser() {\n var _this;\n _classCallCheck(this, AMPMParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['b', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaaa':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMMidnightParser, _Parser);\n var _super = _createSuper(AMPMMidnightParser);\n function AMPMMidnightParser() {\n var _this;\n _classCallCheck(this, AMPMMidnightParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMMidnightParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbbb':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMMidnightParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\"; // in the morning, in the afternoon, in the evening, at night\nexport var DayPeriodParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayPeriodParser, _Parser);\n var _super = _createSuper(DayPeriodParser);\n function DayPeriodParser() {\n var _this;\n _classCallCheck(this, DayPeriodParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 't', 'T']);\n return _this;\n }\n _createClass(DayPeriodParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBBB':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return DayPeriodParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1to12Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1to12Parser, _Parser);\n var _super = _createSuper(Hour1to12Parser);\n function Hour1to12Parser() {\n var _this;\n _classCallCheck(this, Hour1to12Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['H', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour1to12Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case 'ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour1to12Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0to23Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0to23Parser, _Parser);\n var _super = _createSuper(Hour0to23Parser);\n function Hour0to23Parser() {\n var _this;\n _classCallCheck(this, Hour0to23Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0to23Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case 'Ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n }\n }]);\n return Hour0to23Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0To11Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0To11Parser, _Parser);\n var _super = _createSuper(Hour0To11Parser);\n function Hour0To11Parser() {\n var _this;\n _classCallCheck(this, Hour0To11Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['h', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0To11Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case 'Ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour0To11Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1To24Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1To24Parser, _Parser);\n var _super = _createSuper(Hour1To24Parser);\n function Hour1To24Parser() {\n var _this;\n _classCallCheck(this, Hour1To24Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'H', 'K', 't', 'T']);\n return _this;\n }\n _createClass(Hour1To24Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case 'ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n }\n }]);\n return Hour1To24Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var MinuteParser = /*#__PURE__*/function (_Parser) {\n _inherits(MinuteParser, _Parser);\n var _super = _createSuper(MinuteParser);\n function MinuteParser() {\n var _this;\n _classCallCheck(this, MinuteParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 60);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(MinuteParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, dateString);\n case 'mo':\n return match.ordinalNumber(dateString, {\n unit: 'minute'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n }\n }]);\n return MinuteParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var SecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(SecondParser, _Parser);\n var _super = _createSuper(SecondParser);\n function SecondParser() {\n var _this;\n _classCallCheck(this, SecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 50);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(SecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, dateString);\n case 'so':\n return match.ordinalNumber(dateString, {\n unit: 'second'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCSeconds(value, 0);\n return date;\n }\n }]);\n return SecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nexport var FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(FractionOfSecondParser, _Parser);\n var _super = _createSuper(FractionOfSecondParser);\n function FractionOfSecondParser() {\n var _this;\n _classCallCheck(this, FractionOfSecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 30);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(FractionOfSecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n var valueCallback = function valueCallback(value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMilliseconds(value);\n return date;\n }\n }]);\n return FractionOfSecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601. +00:00 is `'Z'`)\nexport var ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneWithZParser, _Parser);\n var _super = _createSuper(ISOTimezoneWithZParser);\n function ISOTimezoneWithZParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneWithZParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'x']);\n return _this;\n }\n _createClass(ISOTimezoneWithZParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneWithZParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601)\nexport var ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneParser, _Parser);\n var _super = _createSuper(ISOTimezoneParser);\n function ISOTimezoneParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'X']);\n return _this;\n }\n _createClass(ISOTimezoneParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampSecondsParser, _Parser);\n var _super = _createSuper(TimestampSecondsParser);\n function TimestampSecondsParser() {\n var _this;\n _classCallCheck(this, TimestampSecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 40);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampSecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampSecondsParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampMillisecondsParser, _Parser);\n var _super = _createSuper(TimestampMillisecondsParser);\n function TimestampMillisecondsParser() {\n var _this;\n _classCallCheck(this, TimestampMillisecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 20);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampMillisecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampMillisecondsParser;\n}(Parser);","import { EraParser } from \"./EraParser.js\";\nimport { YearParser } from \"./YearParser.js\";\nimport { LocalWeekYearParser } from \"./LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./ExtendedYearParser.js\";\nimport { QuarterParser } from \"./QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./MonthParser.js\";\nimport { StandAloneMonthParser } from \"./StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./ISOWeekParser.js\";\nimport { DateParser } from \"./DateParser.js\";\nimport { DayOfYearParser } from \"./DayOfYearParser.js\";\nimport { DayParser } from \"./DayParser.js\";\nimport { LocalDayParser } from \"./LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./ISODayParser.js\";\nimport { AMPMParser } from \"./AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./Hour1To24Parser.js\";\nimport { MinuteParser } from \"./MinuteParser.js\";\nimport { SecondParser } from \"./SecondParser.js\";\nimport { FractionOfSecondParser } from \"./FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./TimestampMillisecondsParser.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nexport var parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser()\n};","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createForOfIteratorHelper from \"@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { DateToSystemTimezoneSetter } from \"./_lib/Setter.js\";\nimport { parsers } from \"./_lib/parsers/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [new DateToSystemTimezoneSetter()];\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n var _iterator = _createForOfIteratorHelper(tokens),\n _step;\n try {\n var _loop = function _loop() {\n var token = _step.value;\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = usedTokens.find(function (usedToken) {\n return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n });\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length > 0) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n if (!parseResult) {\n return {\n v: new Date(NaN)\n };\n }\n setters.push(parseResult.setter);\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return {\n v: new Date(NaN)\n };\n }\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ret = _loop();\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n\n // Check if the remaining input contains something other than whitespace\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var setter = _step2.value;\n if (!setter.validate(utcDate, subFnOptions)) {\n return new Date(NaN);\n }\n var result = setter.set(utcDate, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n utcDate = result[0];\n assign(flags, result[1]);\n // Result is date\n } else {\n utcDate = result;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return utcDate;\n}\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, options) {\n var _options$additionalDi;\n requiredArgs(1, arguments);\n var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n var dateStrings = splitDateString(argument);\n var date;\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time);\n // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name set\n * @category Common Helpers\n * @summary Set date values to a given date.\n *\n * @description\n * Set date values to a given date.\n *\n * Sets time values to date from object `values`.\n * A value is not set if it is undefined or null or doesn't exist in `values`.\n *\n * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts\n * to use native `Date#setX` methods. If you use this function, you may not want to include the\n * other `setX` functions that date-fns provides if you are concerned about the bundle size.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Object} values - an object with options\n * @param {Number} [values.year] - the number of years to be set\n * @param {Number} [values.month] - the number of months to be set\n * @param {Number} [values.date] - the number of days to be set\n * @param {Number} [values.hours] - the number of hours to be set\n * @param {Number} [values.minutes] - the number of minutes to be set\n * @param {Number} [values.seconds] - the number of seconds to be set\n * @param {Number} [values.milliseconds] - the number of milliseconds to be set\n * @returns {Date} the new date with options set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `values` must be an object\n *\n * @example\n * // Transform 1 September 2014 into 20 October 2015 in a single line:\n * const result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })\n * //=> Tue Oct 20 2015 00:00:00\n *\n * @example\n * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:\n * const result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })\n * //=> Mon Sep 01 2014 12:23:45\n */\nexport default function set(dirtyDate, values) {\n requiredArgs(2, arguments);\n if (_typeof(values) !== 'object' || values === null) {\n throw new RangeError('values parameter must be an object');\n }\n var date = toDate(dirtyDate);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n if (values.year != null) {\n date.setFullYear(values.year);\n }\n if (values.month != null) {\n date = setMonth(date, values.month);\n }\n if (values.date != null) {\n date.setDate(toInteger(values.date));\n }\n if (values.hours != null) {\n date.setHours(toInteger(values.hours));\n }\n if (values.minutes != null) {\n date.setMinutes(toInteger(values.minutes));\n }\n if (values.seconds != null) {\n date.setSeconds(toInteger(values.seconds));\n }\n if (values.milliseconds != null) {\n date.setMilliseconds(toInteger(values.milliseconds));\n }\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport default function setMonth(dirtyDate, dirtyMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * const result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\nexport default function setQuarter(dirtyDate, dirtyQuarter) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var quarter = toInteger(dirtyQuarter);\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1;\n var diff = quarter - oldQuarter;\n return setMonth(date, date.getMonth() + diff * 3);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport default function setYear(dirtyDate, dirtyYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var year = toInteger(dirtyYear);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n date.setFullYear(year);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport default function startOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3;\n date.setMonth(month, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport default function startOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var cleanDate = toDate(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addQuarters from \"../addQuarters/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * const result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nexport default function subQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addQuarters(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport default function subWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addWeeks(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addYears from \"../addYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport default function subYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addYears(dirtyDate, -amount);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar moveBlockInContentState = require(\"./moveBlockInContentState\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar ContentBlockRecord = experimentalTreeDataSupport ? ContentBlockNode : ContentBlock;\nvar List = Immutable.List,\n Repeat = Immutable.Repeat;\nvar AtomicBlockUtils = {\n insertAtomicBlock: function insertAtomicBlock(editorState, entityKey, character) {\n var contentState = editorState.getCurrentContent();\n var selectionState = editorState.getSelection();\n var afterRemoval = DraftModifier.removeRange(contentState, selectionState, 'backward');\n var targetSelection = afterRemoval.getSelectionAfter();\n var afterSplit = DraftModifier.splitBlock(afterRemoval, targetSelection);\n var insertionTarget = afterSplit.getSelectionAfter();\n var asAtomicBlock = DraftModifier.setBlockType(afterSplit, insertionTarget, 'atomic');\n var charData = CharacterMetadata.create({\n entity: entityKey\n });\n var atomicBlockConfig = {\n key: generateRandomKey(),\n type: 'atomic',\n text: character,\n characterList: List(Repeat(charData, character.length))\n };\n var atomicDividerBlockConfig = {\n key: generateRandomKey(),\n type: 'unstyled'\n };\n\n if (experimentalTreeDataSupport) {\n atomicBlockConfig = _objectSpread({}, atomicBlockConfig, {\n nextSibling: atomicDividerBlockConfig.key\n });\n atomicDividerBlockConfig = _objectSpread({}, atomicDividerBlockConfig, {\n prevSibling: atomicBlockConfig.key\n });\n }\n\n var fragmentArray = [new ContentBlockRecord(atomicBlockConfig), new ContentBlockRecord(atomicDividerBlockConfig)];\n var fragment = BlockMapBuilder.createFromArray(fragmentArray);\n var withAtomicBlock = DraftModifier.replaceWithFragment(asAtomicBlock, insertionTarget, fragment);\n var newContent = withAtomicBlock.merge({\n selectionBefore: selectionState,\n selectionAfter: withAtomicBlock.getSelectionAfter().set('hasFocus', true)\n });\n return EditorState.push(editorState, newContent, 'insert-fragment');\n },\n moveAtomicBlock: function moveAtomicBlock(editorState, atomicBlock, targetRange, insertionMode) {\n var contentState = editorState.getCurrentContent();\n var selectionState = editorState.getSelection();\n var withMovedAtomicBlock;\n\n if (insertionMode === 'before' || insertionMode === 'after') {\n var targetBlock = contentState.getBlockForKey(insertionMode === 'before' ? targetRange.getStartKey() : targetRange.getEndKey());\n withMovedAtomicBlock = moveBlockInContentState(contentState, atomicBlock, targetBlock, insertionMode);\n } else {\n var afterRemoval = DraftModifier.removeRange(contentState, targetRange, 'backward');\n var selectionAfterRemoval = afterRemoval.getSelectionAfter();\n\n var _targetBlock = afterRemoval.getBlockForKey(selectionAfterRemoval.getFocusKey());\n\n if (selectionAfterRemoval.getStartOffset() === 0) {\n withMovedAtomicBlock = moveBlockInContentState(afterRemoval, atomicBlock, _targetBlock, 'before');\n } else if (selectionAfterRemoval.getEndOffset() === _targetBlock.getLength()) {\n withMovedAtomicBlock = moveBlockInContentState(afterRemoval, atomicBlock, _targetBlock, 'after');\n } else {\n var afterSplit = DraftModifier.splitBlock(afterRemoval, selectionAfterRemoval);\n var selectionAfterSplit = afterSplit.getSelectionAfter();\n\n var _targetBlock2 = afterSplit.getBlockForKey(selectionAfterSplit.getFocusKey());\n\n withMovedAtomicBlock = moveBlockInContentState(afterSplit, atomicBlock, _targetBlock2, 'before');\n }\n }\n\n var newContent = withMovedAtomicBlock.merge({\n selectionBefore: selectionState,\n selectionAfter: withMovedAtomicBlock.getSelectionAfter().set('hasFocus', true)\n });\n return EditorState.push(editorState, newContent, 'move-block');\n }\n};\nmodule.exports = AtomicBlockUtils;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Immutable = require(\"immutable\");\n\nvar OrderedMap = Immutable.OrderedMap;\nvar BlockMapBuilder = {\n createFromArray: function createFromArray(blocks) {\n return OrderedMap(blocks.map(function (block) {\n return [block.getKey(), block];\n }));\n }\n};\nmodule.exports = BlockMapBuilder;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar getOwnObjectValues = require(\"./getOwnObjectValues\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n Repeat = Immutable.Repeat,\n Record = Immutable.Record;\n\nvar returnTrue = function returnTrue() {\n return true;\n};\n\nvar defaultLeafRange = {\n start: null,\n end: null\n};\nvar LeafRange = Record(defaultLeafRange);\nvar defaultDecoratorRange = {\n start: null,\n end: null,\n decoratorKey: null,\n leaves: null\n};\nvar DecoratorRange = Record(defaultDecoratorRange);\nvar BlockTree = {\n /**\n * Generate a block tree for a given ContentBlock/decorator pair.\n */\n generate: function generate(contentState, block, decorator) {\n var textLength = block.getLength();\n\n if (!textLength) {\n return List.of(new DecoratorRange({\n start: 0,\n end: 0,\n decoratorKey: null,\n leaves: List.of(new LeafRange({\n start: 0,\n end: 0\n }))\n }));\n }\n\n var leafSets = [];\n var decorations = decorator ? decorator.getDecorations(block, contentState) : List(Repeat(null, textLength));\n var chars = block.getCharacterList();\n findRangesImmutable(decorations, areEqual, returnTrue, function (start, end) {\n leafSets.push(new DecoratorRange({\n start: start,\n end: end,\n decoratorKey: decorations.get(start),\n leaves: generateLeaves(chars.slice(start, end).toList(), start)\n }));\n });\n return List(leafSets);\n },\n fromJS: function fromJS(_ref) {\n var leaves = _ref.leaves,\n other = _objectWithoutPropertiesLoose(_ref, [\"leaves\"]);\n\n return new DecoratorRange(_objectSpread({}, other, {\n leaves: leaves != null ? List(Array.isArray(leaves) ? leaves : getOwnObjectValues(leaves)).map(function (leaf) {\n return LeafRange(leaf);\n }) : null\n }));\n }\n};\n/**\n * Generate LeafRange records for a given character list.\n */\n\nfunction generateLeaves(characters, offset) {\n var leaves = [];\n var inlineStyles = characters.map(function (c) {\n return c.getStyle();\n }).toList();\n findRangesImmutable(inlineStyles, areEqual, returnTrue, function (start, end) {\n leaves.push(new LeafRange({\n start: start + offset,\n end: end + offset\n }));\n });\n return List(leaves);\n}\n\nfunction areEqual(a, b) {\n return a === b;\n}\n\nmodule.exports = BlockTree;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar _require = require(\"immutable\"),\n Map = _require.Map,\n OrderedSet = _require.OrderedSet,\n Record = _require.Record; // Immutable.map is typed such that the value for every key in the map\n// must be the same type\n\n\nvar EMPTY_SET = OrderedSet();\nvar defaultRecord = {\n style: EMPTY_SET,\n entity: null\n};\nvar CharacterMetadataRecord = Record(defaultRecord);\n\nvar CharacterMetadata = /*#__PURE__*/function (_CharacterMetadataRec) {\n _inheritsLoose(CharacterMetadata, _CharacterMetadataRec);\n\n function CharacterMetadata() {\n return _CharacterMetadataRec.apply(this, arguments) || this;\n }\n\n var _proto = CharacterMetadata.prototype;\n\n _proto.getStyle = function getStyle() {\n return this.get('style');\n };\n\n _proto.getEntity = function getEntity() {\n return this.get('entity');\n };\n\n _proto.hasStyle = function hasStyle(style) {\n return this.getStyle().includes(style);\n };\n\n CharacterMetadata.applyStyle = function applyStyle(record, style) {\n var withStyle = record.set('style', record.getStyle().add(style));\n return CharacterMetadata.create(withStyle);\n };\n\n CharacterMetadata.removeStyle = function removeStyle(record, style) {\n var withoutStyle = record.set('style', record.getStyle().remove(style));\n return CharacterMetadata.create(withoutStyle);\n };\n\n CharacterMetadata.applyEntity = function applyEntity(record, entityKey) {\n var withEntity = record.getEntity() === entityKey ? record : record.set('entity', entityKey);\n return CharacterMetadata.create(withEntity);\n }\n /**\n * Use this function instead of the `CharacterMetadata` constructor.\n * Since most content generally uses only a very small number of\n * style/entity permutations, we can reuse these objects as often as\n * possible.\n */\n ;\n\n CharacterMetadata.create = function create(config) {\n if (!config) {\n return EMPTY;\n }\n\n var defaultConfig = {\n style: EMPTY_SET,\n entity: null\n }; // Fill in unspecified properties, if necessary.\n\n var configMap = Map(defaultConfig).merge(config);\n var existing = pool.get(configMap);\n\n if (existing) {\n return existing;\n }\n\n var newCharacter = new CharacterMetadata(configMap);\n pool = pool.set(configMap, newCharacter);\n return newCharacter;\n };\n\n CharacterMetadata.fromJS = function fromJS(_ref) {\n var style = _ref.style,\n entity = _ref.entity;\n return new CharacterMetadata({\n style: Array.isArray(style) ? OrderedSet(style) : style,\n entity: Array.isArray(entity) ? OrderedSet(entity) : entity\n });\n };\n\n return CharacterMetadata;\n}(CharacterMetadataRecord);\n\nvar EMPTY = new CharacterMetadata();\nvar pool = Map([[Map(defaultRecord), EMPTY]]);\nCharacterMetadata.EMPTY = EMPTY;\nmodule.exports = CharacterMetadata;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List;\nvar DELIMITER = '.';\n/**\n * A CompositeDraftDecorator traverses through a list of DraftDecorator\n * instances to identify sections of a ContentBlock that should be rendered\n * in a \"decorated\" manner. For example, hashtags, mentions, and links may\n * be intended to stand out visually, be rendered as anchors, etc.\n *\n * The list of decorators supplied to the constructor will be used in the\n * order they are provided. This allows the caller to specify a priority for\n * string matching, in case of match collisions among decorators.\n *\n * For instance, I may have a link with a `#` in its text. Though this section\n * of text may match our hashtag decorator, it should not be treated as a\n * hashtag. I should therefore list my link DraftDecorator\n * before my hashtag DraftDecorator when constructing this composite\n * decorator instance.\n *\n * Thus, when a collision like this is encountered, the earlier match is\n * preserved and the new match is discarded.\n */\n\nvar CompositeDraftDecorator = /*#__PURE__*/function () {\n function CompositeDraftDecorator(decorators) {\n _defineProperty(this, \"_decorators\", void 0);\n\n // Copy the decorator array, since we use this array order to determine\n // precedence of decoration matching. If the array is mutated externally,\n // we don't want to be affected here.\n this._decorators = decorators.slice();\n }\n\n var _proto = CompositeDraftDecorator.prototype;\n\n _proto.getDecorations = function getDecorations(block, contentState) {\n var decorations = Array(block.getText().length).fill(null);\n\n this._decorators.forEach(function (\n /*object*/\n decorator,\n /*number*/\n ii) {\n var counter = 0;\n var strategy = decorator.strategy;\n\n var callback = function callback(\n /*number*/\n start,\n /*number*/\n end) {\n // Find out if any of our matching range is already occupied\n // by another decorator. If so, discard the match. Otherwise, store\n // the component key for rendering.\n if (canOccupySlice(decorations, start, end)) {\n occupySlice(decorations, start, end, ii + DELIMITER + counter);\n counter++;\n }\n };\n\n strategy(block, callback, contentState);\n });\n\n return List(decorations);\n };\n\n _proto.getComponentForKey = function getComponentForKey(key) {\n var componentKey = parseInt(key.split(DELIMITER)[0], 10);\n return this._decorators[componentKey].component;\n };\n\n _proto.getPropsForKey = function getPropsForKey(key) {\n var componentKey = parseInt(key.split(DELIMITER)[0], 10);\n return this._decorators[componentKey].props;\n };\n\n return CompositeDraftDecorator;\n}();\n/**\n * Determine whether we can occupy the specified slice of the decorations\n * array.\n */\n\n\nfunction canOccupySlice(decorations, start, end) {\n for (var ii = start; ii < end; ii++) {\n if (decorations[ii] != null) {\n return false;\n }\n }\n\n return true;\n}\n/**\n * Splice the specified component into our decoration array at the desired\n * range.\n */\n\n\nfunction occupySlice(targetArr, start, end, componentKey) {\n for (var ii = start; ii < end; ii++) {\n targetArr[ii] = componentKey;\n }\n}\n\nmodule.exports = CompositeDraftDecorator;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n Map = Immutable.Map,\n OrderedSet = Immutable.OrderedSet,\n Record = Immutable.Record,\n Repeat = Immutable.Repeat;\nvar EMPTY_SET = OrderedSet();\nvar defaultRecord = {\n key: '',\n type: 'unstyled',\n text: '',\n characterList: List(),\n depth: 0,\n data: Map()\n};\nvar ContentBlockRecord = Record(defaultRecord);\n\nvar decorateCharacterList = function decorateCharacterList(config) {\n if (!config) {\n return config;\n }\n\n var characterList = config.characterList,\n text = config.text;\n\n if (text && !characterList) {\n config.characterList = List(Repeat(CharacterMetadata.EMPTY, text.length));\n }\n\n return config;\n};\n\nvar ContentBlock = /*#__PURE__*/function (_ContentBlockRecord) {\n _inheritsLoose(ContentBlock, _ContentBlockRecord);\n\n function ContentBlock(config) {\n return _ContentBlockRecord.call(this, decorateCharacterList(config)) || this;\n }\n\n var _proto = ContentBlock.prototype;\n\n _proto.getKey = function getKey() {\n return this.get('key');\n };\n\n _proto.getType = function getType() {\n return this.get('type');\n };\n\n _proto.getText = function getText() {\n return this.get('text');\n };\n\n _proto.getCharacterList = function getCharacterList() {\n return this.get('characterList');\n };\n\n _proto.getLength = function getLength() {\n return this.getText().length;\n };\n\n _proto.getDepth = function getDepth() {\n return this.get('depth');\n };\n\n _proto.getData = function getData() {\n return this.get('data');\n };\n\n _proto.getInlineStyleAt = function getInlineStyleAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getStyle() : EMPTY_SET;\n };\n\n _proto.getEntityAt = function getEntityAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getEntity() : null;\n }\n /**\n * Execute a callback for every contiguous range of styles within the block.\n */\n ;\n\n _proto.findStyleRanges = function findStyleRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualStyle, filterFn, callback);\n }\n /**\n * Execute a callback for every contiguous range of entities within the block.\n */\n ;\n\n _proto.findEntityRanges = function findEntityRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualEntity, filterFn, callback);\n };\n\n return ContentBlock;\n}(ContentBlockRecord);\n\nfunction haveEqualStyle(charA, charB) {\n return charA.getStyle() === charB.getStyle();\n}\n\nfunction haveEqualEntity(charA, charB) {\n return charA.getEntity() === charB.getEntity();\n}\n\nmodule.exports = ContentBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This file is a fork of ContentBlock adding support for nesting references by\n * providing links to children, parent, prevSibling, and nextSibling.\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n Map = Immutable.Map,\n OrderedSet = Immutable.OrderedSet,\n Record = Immutable.Record,\n Repeat = Immutable.Repeat;\nvar EMPTY_SET = OrderedSet();\nvar defaultRecord = {\n parent: null,\n characterList: List(),\n data: Map(),\n depth: 0,\n key: '',\n text: '',\n type: 'unstyled',\n children: List(),\n prevSibling: null,\n nextSibling: null\n};\n\nvar haveEqualStyle = function haveEqualStyle(charA, charB) {\n return charA.getStyle() === charB.getStyle();\n};\n\nvar haveEqualEntity = function haveEqualEntity(charA, charB) {\n return charA.getEntity() === charB.getEntity();\n};\n\nvar decorateCharacterList = function decorateCharacterList(config) {\n if (!config) {\n return config;\n }\n\n var characterList = config.characterList,\n text = config.text;\n\n if (text && !characterList) {\n config.characterList = List(Repeat(CharacterMetadata.EMPTY, text.length));\n }\n\n return config;\n};\n\nvar ContentBlockNode = /*#__PURE__*/function (_ref) {\n _inheritsLoose(ContentBlockNode, _ref);\n\n function ContentBlockNode() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultRecord;\n\n /* eslint-disable-next-line constructor-super */\n return _ref.call(this, decorateCharacterList(props)) || this;\n }\n\n var _proto = ContentBlockNode.prototype;\n\n _proto.getKey = function getKey() {\n return this.get('key');\n };\n\n _proto.getType = function getType() {\n return this.get('type');\n };\n\n _proto.getText = function getText() {\n return this.get('text');\n };\n\n _proto.getCharacterList = function getCharacterList() {\n return this.get('characterList');\n };\n\n _proto.getLength = function getLength() {\n return this.getText().length;\n };\n\n _proto.getDepth = function getDepth() {\n return this.get('depth');\n };\n\n _proto.getData = function getData() {\n return this.get('data');\n };\n\n _proto.getInlineStyleAt = function getInlineStyleAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getStyle() : EMPTY_SET;\n };\n\n _proto.getEntityAt = function getEntityAt(offset) {\n var character = this.getCharacterList().get(offset);\n return character ? character.getEntity() : null;\n };\n\n _proto.getChildKeys = function getChildKeys() {\n return this.get('children');\n };\n\n _proto.getParentKey = function getParentKey() {\n return this.get('parent');\n };\n\n _proto.getPrevSiblingKey = function getPrevSiblingKey() {\n return this.get('prevSibling');\n };\n\n _proto.getNextSiblingKey = function getNextSiblingKey() {\n return this.get('nextSibling');\n };\n\n _proto.findStyleRanges = function findStyleRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualStyle, filterFn, callback);\n };\n\n _proto.findEntityRanges = function findEntityRanges(filterFn, callback) {\n findRangesImmutable(this.getCharacterList(), haveEqualEntity, filterFn, callback);\n };\n\n return ContentBlockNode;\n}(Record(defaultRecord));\n\nmodule.exports = ContentBlockNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getOwnObjectValues = require(\"./getOwnObjectValues\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar sanitizeDraftText = require(\"./sanitizeDraftText\");\n\nvar List = Immutable.List,\n Record = Immutable.Record,\n Repeat = Immutable.Repeat,\n ImmutableMap = Immutable.Map,\n OrderedMap = Immutable.OrderedMap;\nvar defaultRecord = {\n entityMap: null,\n blockMap: null,\n selectionBefore: null,\n selectionAfter: null\n};\nvar ContentStateRecord = Record(defaultRecord);\n/* $FlowFixMe[signature-verification-failure] Supressing a `signature-\n * verification-failure` error here. TODO: T65949050 Clean up the branch for\n * this GK */\n\nvar ContentBlockNodeRecord = gkx('draft_tree_data_support') ? ContentBlockNode : ContentBlock;\n\nvar ContentState = /*#__PURE__*/function (_ContentStateRecord) {\n _inheritsLoose(ContentState, _ContentStateRecord);\n\n function ContentState() {\n return _ContentStateRecord.apply(this, arguments) || this;\n }\n\n var _proto = ContentState.prototype;\n\n _proto.getEntityMap = function getEntityMap() {\n // TODO: update this when we fully remove DraftEntity\n return DraftEntity;\n };\n\n _proto.getBlockMap = function getBlockMap() {\n return this.get('blockMap');\n };\n\n _proto.getSelectionBefore = function getSelectionBefore() {\n return this.get('selectionBefore');\n };\n\n _proto.getSelectionAfter = function getSelectionAfter() {\n return this.get('selectionAfter');\n };\n\n _proto.getBlockForKey = function getBlockForKey(key) {\n var block = this.getBlockMap().get(key);\n return block;\n };\n\n _proto.getKeyBefore = function getKeyBefore(key) {\n return this.getBlockMap().reverse().keySeq().skipUntil(function (v) {\n return v === key;\n }).skip(1).first();\n };\n\n _proto.getKeyAfter = function getKeyAfter(key) {\n return this.getBlockMap().keySeq().skipUntil(function (v) {\n return v === key;\n }).skip(1).first();\n };\n\n _proto.getBlockAfter = function getBlockAfter(key) {\n return this.getBlockMap().skipUntil(function (_, k) {\n return k === key;\n }).skip(1).first();\n };\n\n _proto.getBlockBefore = function getBlockBefore(key) {\n return this.getBlockMap().reverse().skipUntil(function (_, k) {\n return k === key;\n }).skip(1).first();\n };\n\n _proto.getBlocksAsArray = function getBlocksAsArray() {\n return this.getBlockMap().toArray();\n };\n\n _proto.getFirstBlock = function getFirstBlock() {\n return this.getBlockMap().first();\n };\n\n _proto.getLastBlock = function getLastBlock() {\n return this.getBlockMap().last();\n };\n\n _proto.getPlainText = function getPlainText(delimiter) {\n return this.getBlockMap().map(function (block) {\n return block ? block.getText() : '';\n }).join(delimiter || '\\n');\n };\n\n _proto.getLastCreatedEntityKey = function getLastCreatedEntityKey() {\n // TODO: update this when we fully remove DraftEntity\n return DraftEntity.__getLastCreatedEntityKey();\n };\n\n _proto.hasText = function hasText() {\n var blockMap = this.getBlockMap();\n return blockMap.size > 1 || // make sure that there are no zero width space chars\n escape(blockMap.first().getText()).replace(/%u200B/g, '').length > 0;\n };\n\n _proto.createEntity = function createEntity(type, mutability, data) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__create(type, mutability, data);\n\n return this;\n };\n\n _proto.mergeEntityData = function mergeEntityData(key, toMerge) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__mergeData(key, toMerge);\n\n return this;\n };\n\n _proto.replaceEntityData = function replaceEntityData(key, newData) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__replaceData(key, newData);\n\n return this;\n };\n\n _proto.addEntity = function addEntity(instance) {\n // TODO: update this when we fully remove DraftEntity\n DraftEntity.__add(instance);\n\n return this;\n };\n\n _proto.getEntity = function getEntity(key) {\n // TODO: update this when we fully remove DraftEntity\n return DraftEntity.__get(key);\n };\n\n _proto.getAllEntities = function getAllEntities() {\n return DraftEntity.__getAll();\n };\n\n _proto.loadWithEntities = function loadWithEntities(entities) {\n return DraftEntity.__loadWithEntities(entities);\n };\n\n ContentState.createFromBlockArray = function createFromBlockArray( // TODO: update flow type when we completely deprecate the old entity API\n blocks, entityMap) {\n // TODO: remove this when we completely deprecate the old entity API\n var theBlocks = Array.isArray(blocks) ? blocks : blocks.contentBlocks;\n var blockMap = BlockMapBuilder.createFromArray(theBlocks);\n var selectionState = blockMap.isEmpty() ? new SelectionState() : SelectionState.createEmpty(blockMap.first().getKey());\n return new ContentState({\n blockMap: blockMap,\n entityMap: entityMap || DraftEntity,\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n };\n\n ContentState.createFromText = function createFromText(text) {\n var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : /\\r\\n?|\\n/g;\n var strings = text.split(delimiter);\n var blocks = strings.map(function (block) {\n block = sanitizeDraftText(block);\n return new ContentBlockNodeRecord({\n key: generateRandomKey(),\n text: block,\n type: 'unstyled',\n characterList: List(Repeat(CharacterMetadata.EMPTY, block.length))\n });\n });\n return ContentState.createFromBlockArray(blocks);\n };\n\n ContentState.fromJS = function fromJS(state) {\n return new ContentState(_objectSpread({}, state, {\n blockMap: OrderedMap(state.blockMap).map(ContentState.createContentBlockFromJS),\n selectionBefore: new SelectionState(state.selectionBefore),\n selectionAfter: new SelectionState(state.selectionAfter)\n }));\n };\n\n ContentState.createContentBlockFromJS = function createContentBlockFromJS(block) {\n var characterList = block.characterList;\n return new ContentBlockNodeRecord(_objectSpread({}, block, {\n data: ImmutableMap(block.data),\n characterList: characterList != null ? List((Array.isArray(characterList) ? characterList : getOwnObjectValues(characterList)).map(function (c) {\n return CharacterMetadata.fromJS(c);\n })) : undefined\n }));\n };\n\n return ContentState;\n}(ContentStateRecord);\n\nmodule.exports = ContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar _require = require(\"immutable\"),\n Map = _require.Map;\n\nvar ContentStateInlineStyle = {\n add: function add(contentState, selectionState, inlineStyle) {\n return modifyInlineStyle(contentState, selectionState, inlineStyle, true);\n },\n remove: function remove(contentState, selectionState, inlineStyle) {\n return modifyInlineStyle(contentState, selectionState, inlineStyle, false);\n }\n};\n\nfunction modifyInlineStyle(contentState, selectionState, inlineStyle, addOrRemove) {\n var blockMap = contentState.getBlockMap();\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset();\n var newBlocks = blockMap.skipUntil(function (_, k) {\n return k === startKey;\n }).takeUntil(function (_, k) {\n return k === endKey;\n }).concat(Map([[endKey, blockMap.get(endKey)]])).map(function (block, blockKey) {\n var sliceStart;\n var sliceEnd;\n\n if (startKey === endKey) {\n sliceStart = startOffset;\n sliceEnd = endOffset;\n } else {\n sliceStart = blockKey === startKey ? startOffset : 0;\n sliceEnd = blockKey === endKey ? endOffset : block.getLength();\n }\n\n var chars = block.getCharacterList();\n var current;\n\n while (sliceStart < sliceEnd) {\n current = chars.get(sliceStart);\n chars = chars.set(sliceStart, addOrRemove ? CharacterMetadata.applyStyle(current, inlineStyle) : CharacterMetadata.removeStyle(current, inlineStyle));\n sliceStart++;\n }\n\n return block.set('characterList', chars);\n });\n return contentState.merge({\n blockMap: blockMap.merge(newBlocks),\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n}\n\nmodule.exports = ContentStateInlineStyle;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar getWindowForNode = require(\"./getWindowForNode\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar Map = Immutable.Map;\n// Heavily based on Prosemirror's DOMObserver https://github.com/ProseMirror/prosemirror-view/blob/master/src/domobserver.js\nvar DOM_OBSERVER_OPTIONS = {\n subtree: true,\n characterData: true,\n childList: true,\n characterDataOldValue: false,\n attributes: false\n}; // IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\n\nvar USE_CHAR_DATA = UserAgent.isBrowser('IE <= 11');\n\nvar DOMObserver = /*#__PURE__*/function () {\n function DOMObserver(container) {\n var _this = this;\n\n _defineProperty(this, \"observer\", void 0);\n\n _defineProperty(this, \"container\", void 0);\n\n _defineProperty(this, \"mutations\", void 0);\n\n _defineProperty(this, \"onCharData\", void 0);\n\n this.container = container;\n this.mutations = Map();\n var containerWindow = getWindowForNode(container);\n\n if (containerWindow.MutationObserver && !USE_CHAR_DATA) {\n this.observer = new containerWindow.MutationObserver(function (mutations) {\n return _this.registerMutations(mutations);\n });\n } else {\n this.onCharData = function (e) {\n !(e.target instanceof Node) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected target to be an instance of Node') : invariant(false) : void 0;\n\n _this.registerMutation({\n type: 'characterData',\n target: e.target\n });\n };\n }\n }\n\n var _proto = DOMObserver.prototype;\n\n _proto.start = function start() {\n if (this.observer) {\n this.observer.observe(this.container, DOM_OBSERVER_OPTIONS);\n } else {\n /* $FlowFixMe[incompatible-call] (>=0.68.0 site=www,mobile) This event\n * type is not defined by Flow's standard library */\n this.container.addEventListener('DOMCharacterDataModified', this.onCharData);\n }\n };\n\n _proto.stopAndFlushMutations = function stopAndFlushMutations() {\n var observer = this.observer;\n\n if (observer) {\n this.registerMutations(observer.takeRecords());\n observer.disconnect();\n } else {\n /* $FlowFixMe[incompatible-call] (>=0.68.0 site=www,mobile) This event\n * type is not defined by Flow's standard library */\n this.container.removeEventListener('DOMCharacterDataModified', this.onCharData);\n }\n\n var mutations = this.mutations;\n this.mutations = Map();\n return mutations;\n };\n\n _proto.registerMutations = function registerMutations(mutations) {\n for (var i = 0; i < mutations.length; i++) {\n this.registerMutation(mutations[i]);\n }\n };\n\n _proto.getMutationTextContent = function getMutationTextContent(mutation) {\n var type = mutation.type,\n target = mutation.target,\n removedNodes = mutation.removedNodes;\n\n if (type === 'characterData') {\n // When `textContent` is '', there is a race condition that makes\n // getting the offsetKey from the target not possible.\n // These events are also followed by a `childList`, which is the one\n // we are able to retrieve the offsetKey and apply the '' text.\n if (target.textContent !== '') {\n // IE 11 considers the enter keypress that concludes the composition\n // as an input char. This strips that newline character so the draft\n // state does not receive spurious newlines.\n if (USE_CHAR_DATA) {\n return target.textContent.replace('\\n', '');\n }\n\n return target.textContent;\n }\n } else if (type === 'childList') {\n if (removedNodes && removedNodes.length) {\n // `characterData` events won't happen or are ignored when\n // removing the last character of a leaf node, what happens\n // instead is a `childList` event with a `removedNodes` array.\n // For this case the textContent should be '' and\n // `DraftModifier.replaceText` will make sure the content is\n // updated properly.\n return '';\n } else if (target.textContent !== '') {\n // Typing Chinese in an empty block in MS Edge results in a\n // `childList` event with non-empty textContent.\n // See https://github.com/facebook/draft-js/issues/2082\n return target.textContent;\n }\n }\n\n return null;\n };\n\n _proto.registerMutation = function registerMutation(mutation) {\n var textContent = this.getMutationTextContent(mutation);\n\n if (textContent != null) {\n var offsetKey = nullthrows(findAncestorOffsetKey(mutation.target));\n this.mutations = this.mutations.set(offsetKey, textContent);\n }\n };\n\n return DOMObserver;\n}();\n\nmodule.exports = DOMObserver;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar _require = require(\"immutable\"),\n Map = _require.Map;\n\nvar UL_WRAP = React.createElement(\"ul\", {\n className: cx('public/DraftStyleDefault/ul')\n});\nvar OL_WRAP = React.createElement(\"ol\", {\n className: cx('public/DraftStyleDefault/ol')\n});\nvar PRE_WRAP = React.createElement(\"pre\", {\n className: cx('public/DraftStyleDefault/pre')\n});\nvar DefaultDraftBlockRenderMap = Map({\n 'header-one': {\n element: 'h1'\n },\n 'header-two': {\n element: 'h2'\n },\n 'header-three': {\n element: 'h3'\n },\n 'header-four': {\n element: 'h4'\n },\n 'header-five': {\n element: 'h5'\n },\n 'header-six': {\n element: 'h6'\n },\n section: {\n element: 'section'\n },\n article: {\n element: 'article'\n },\n 'unordered-list-item': {\n element: 'li',\n wrapper: UL_WRAP\n },\n 'ordered-list-item': {\n element: 'li',\n wrapper: OL_WRAP\n },\n blockquote: {\n element: 'blockquote'\n },\n atomic: {\n element: 'figure'\n },\n 'code-block': {\n element: 'pre',\n wrapper: PRE_WRAP\n },\n unstyled: {\n element: 'div',\n aliasedElements: ['p']\n }\n});\nmodule.exports = DefaultDraftBlockRenderMap;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nmodule.exports = {\n BOLD: {\n fontWeight: 'bold'\n },\n CODE: {\n fontFamily: 'monospace',\n wordWrap: 'break-word'\n },\n ITALIC: {\n fontStyle: 'italic'\n },\n STRIKETHROUGH: {\n textDecoration: 'line-through'\n },\n UNDERLINE: {\n textDecoration: 'underline'\n }\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n */\n'use strict';\n\nvar AtomicBlockUtils = require(\"./AtomicBlockUtils\");\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar CompositeDraftDecorator = require(\"./CompositeDraftDecorator\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentState = require(\"./ContentState\");\n\nvar DefaultDraftBlockRenderMap = require(\"./DefaultDraftBlockRenderMap\");\n\nvar DefaultDraftInlineStyle = require(\"./DefaultDraftInlineStyle\");\n\nvar DraftEditor = require(\"./DraftEditor.react\");\n\nvar DraftEditorBlock = require(\"./DraftEditorBlock.react\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftEntityInstance = require(\"./DraftEntityInstance\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar KeyBindingUtil = require(\"./KeyBindingUtil\");\n\nvar RawDraftContentState = require(\"./RawDraftContentState\");\n\nvar RichTextEditorUtil = require(\"./RichTextEditorUtil\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar convertFromDraftStateToRaw = require(\"./convertFromDraftStateToRaw\");\n\nvar convertFromRawToDraftState = require(\"./convertFromRawToDraftState\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getDefaultKeyBinding = require(\"./getDefaultKeyBinding\");\n\nvar getVisibleSelectionRect = require(\"./getVisibleSelectionRect\");\n\nvar convertFromHTML = require(\"./convertFromHTMLToContentBlocks\");\n\nvar DraftPublic = {\n Editor: DraftEditor,\n EditorBlock: DraftEditorBlock,\n EditorState: EditorState,\n CompositeDecorator: CompositeDraftDecorator,\n Entity: DraftEntity,\n EntityInstance: DraftEntityInstance,\n BlockMapBuilder: BlockMapBuilder,\n CharacterMetadata: CharacterMetadata,\n ContentBlock: ContentBlock,\n ContentState: ContentState,\n RawDraftContentState: RawDraftContentState,\n SelectionState: SelectionState,\n AtomicBlockUtils: AtomicBlockUtils,\n KeyBindingUtil: KeyBindingUtil,\n Modifier: DraftModifier,\n RichUtils: RichTextEditorUtil,\n DefaultDraftBlockRenderMap: DefaultDraftBlockRenderMap,\n DefaultDraftInlineStyle: DefaultDraftInlineStyle,\n convertFromHTML: convertFromHTML,\n convertFromRaw: convertFromRawToDraftState,\n convertToRaw: convertFromDraftStateToRaw,\n genKey: generateRandomKey,\n getDefaultKeyBinding: getDefaultKeyBinding,\n getVisibleSelectionRect: getVisibleSelectionRect\n};\nmodule.exports = DraftPublic;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @preventMunge\n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DefaultDraftBlockRenderMap = require(\"./DefaultDraftBlockRenderMap\");\n\nvar DefaultDraftInlineStyle = require(\"./DefaultDraftInlineStyle\");\n\nvar DraftEditorCompositionHandler = require(\"./DraftEditorCompositionHandler\");\n\nvar DraftEditorContents = require(\"./DraftEditorContents.react\");\n\nvar DraftEditorDragHandler = require(\"./DraftEditorDragHandler\");\n\nvar DraftEditorEditHandler = require(\"./DraftEditorEditHandler\");\n\nvar flushControlled = require(\"./DraftEditorFlushControlled\");\n\nvar DraftEditorPlaceholder = require(\"./DraftEditorPlaceholder.react\");\n\nvar DraftEffects = require(\"./DraftEffects\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar React = require(\"react\");\n\nvar Scroll = require(\"fbjs/lib/Scroll\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getDefaultKeyBinding = require(\"./getDefaultKeyBinding\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar gkx = require(\"./gkx\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar isIE = UserAgent.isBrowser('IE'); // IE does not support the `input` event on contentEditable, so we can't\n// observe spellcheck behavior.\n\nvar allowSpellCheck = !isIE; // Define a set of handler objects to correspond to each possible `mode`\n// of editor behavior.\n\nvar handlerMap = {\n edit: DraftEditorEditHandler,\n composite: DraftEditorCompositionHandler,\n drag: DraftEditorDragHandler,\n cut: null,\n render: null\n};\nvar didInitODS = false;\n\nvar UpdateDraftEditorFlags = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(UpdateDraftEditorFlags, _React$Component);\n\n function UpdateDraftEditorFlags() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = UpdateDraftEditorFlags.prototype;\n\n _proto.render = function render() {\n return null;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this._update();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this._update();\n };\n\n _proto._update = function _update() {\n var editor = this.props.editor;\n /**\n * Sometimes a render triggers a 'focus' or other event, and that will\n * schedule a second render pass.\n * In order to make sure the second render pass gets the latest editor\n * state, we update it here.\n * Example:\n * render #1\n * +\n * |\n * | cWU -> Nothing ... latestEditorState = STALE_STATE :(\n * |\n * | render -> this.props.editorState = FRESH_STATE\n * | + *and* set latestEditorState = FRESH_STATE\n * |\n * | |\n * | +--> triggers 'focus' event, calling 'handleFocus' with latestEditorState\n * | +\n * | |\n * +>cdU -> latestEditorState = FRESH_STATE | the 'handleFocus' call schedules render #2\n * | with latestEditorState, which is FRESH_STATE\n * |\n * render #2 <--------------------------------------+\n * +\n * |\n * | cwU -> nothing updates\n * |\n * | render -> this.props.editorState = FRESH_STATE which was passed in above\n * |\n * +>cdU fires and resets latestEditorState = FRESH_STATE\n * ---\n * Note that if we don't set latestEditorState in 'render' in the above\n * diagram, then STALE_STATE gets passed to render #2.\n */\n\n editor._latestEditorState = this.props.editorState;\n /**\n * The reason we set this 'blockSelectEvents' flag is that IE will fire a\n * 'selectionChange' event when we programmatically change the selection,\n * meaning it would trigger a new select event while we are in the middle\n * of updating.\n * We found that the 'selection.addRange' was what triggered the stray\n * selectionchange event in IE.\n * To be clear - we have not been able to reproduce specific bugs related\n * to this stray selection event, but have recorded logs that some\n * conditions do cause it to get bumped into during editOnSelect.\n */\n\n editor._blockSelectEvents = true;\n };\n\n return UpdateDraftEditorFlags;\n}(React.Component);\n/**\n * `DraftEditor` is the root editor component. It composes a `contentEditable`\n * div, and provides a wide variety of useful function props for managing the\n * state of the editor. See `DraftEditorProps` for details.\n */\n\n\nvar DraftEditor = /*#__PURE__*/function (_React$Component2) {\n _inheritsLoose(DraftEditor, _React$Component2);\n\n /**\n * Define proxies that can route events to the current handler.\n */\n function DraftEditor(props) {\n var _this;\n\n _this = _React$Component2.call(this, props) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"_blockSelectEvents\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_clipboard\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_handler\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_dragCount\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_internalDrag\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_editorKey\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_placeholderAccessibilityID\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_latestEditorState\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_latestCommittedEditorState\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_pendingStateFromBeforeInput\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onBeforeInput\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onBlur\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onCharacterData\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onCompositionEnd\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onCompositionStart\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onCopy\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onCut\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onDragEnd\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onDragOver\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onDragStart\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onDrop\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onInput\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onFocus\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onKeyDown\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onKeyPress\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onKeyUp\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onMouseDown\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onMouseUp\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onPaste\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onSelect\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"editor\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"editorContainer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"focus\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"blur\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"setMode\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"exitCurrentMode\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"restoreEditorDOM\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"setClipboard\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"getClipboard\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"getEditorKey\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"update\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"onDragEnter\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"onDragLeave\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_handleEditorContainerRef\", function (node) {\n _this.editorContainer = node; // Instead of having a direct ref on the child, we'll grab it here.\n // This is safe as long as the rendered structure is static (which it is).\n // This lets the child support ref={props.editorRef} without merging refs.\n\n _this.editor = node !== null ? node.firstChild : null;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"focus\", function (scrollPosition) {\n var editorState = _this.props.editorState;\n var alreadyHasFocus = editorState.getSelection().getHasFocus();\n var editorNode = _this.editor;\n\n if (!editorNode) {\n // once in a while people call 'focus' in a setTimeout, and the node has\n // been deleted, so it can be null in that case.\n return;\n }\n\n var scrollParent = Style.getScrollParent(editorNode);\n\n var _ref = scrollPosition || getScrollPosition(scrollParent),\n x = _ref.x,\n y = _ref.y;\n\n !isHTMLElement(editorNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'editorNode is not an HTMLElement') : invariant(false) : void 0;\n editorNode.focus(); // Restore scroll position\n\n if (scrollParent === window) {\n window.scrollTo(x, y);\n } else {\n Scroll.setTop(scrollParent, y);\n } // On Chrome and Safari, calling focus on contenteditable focuses the\n // cursor at the first character. This is something you don't expect when\n // you're clicking on an input element but not directly on a character.\n // Put the cursor back where it was before the blur.\n\n\n if (!alreadyHasFocus) {\n _this.update(EditorState.forceSelection(editorState, editorState.getSelection()));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"blur\", function () {\n var editorNode = _this.editor;\n\n if (!editorNode) {\n return;\n }\n\n !isHTMLElement(editorNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'editorNode is not an HTMLElement') : invariant(false) : void 0;\n editorNode.blur();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setMode\", function (mode) {\n var _this$props = _this.props,\n onPaste = _this$props.onPaste,\n onCut = _this$props.onCut,\n onCopy = _this$props.onCopy;\n\n var editHandler = _objectSpread({}, handlerMap.edit);\n\n if (onPaste) {\n /* $FlowFixMe[incompatible-type] (>=0.117.0 site=www,mobile) This comment\n * suppresses an error found when Flow v0.117 was deployed. To see the\n * error delete this comment and run Flow. */\n editHandler.onPaste = onPaste;\n }\n\n if (onCut) {\n editHandler.onCut = onCut;\n }\n\n if (onCopy) {\n editHandler.onCopy = onCopy;\n }\n\n var handler = _objectSpread({}, handlerMap, {\n edit: editHandler\n });\n\n _this._handler = handler[mode];\n });\n\n _defineProperty(_assertThisInitialized(_this), \"exitCurrentMode\", function () {\n _this.setMode('edit');\n });\n\n _defineProperty(_assertThisInitialized(_this), \"restoreEditorDOM\", function (scrollPosition) {\n _this.setState({\n contentsKey: _this.state.contentsKey + 1\n }, function () {\n _this.focus(scrollPosition);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setClipboard\", function (clipboard) {\n _this._clipboard = clipboard;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getClipboard\", function () {\n return _this._clipboard;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"update\", function (editorState) {\n _this._latestEditorState = editorState;\n\n _this.props.onChange(editorState);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDragEnter\", function () {\n _this._dragCount++;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDragLeave\", function () {\n _this._dragCount--;\n\n if (_this._dragCount === 0) {\n _this.exitCurrentMode();\n }\n });\n\n _this._blockSelectEvents = false;\n _this._clipboard = null;\n _this._handler = null;\n _this._dragCount = 0;\n _this._editorKey = props.editorKey || generateRandomKey();\n _this._placeholderAccessibilityID = 'placeholder-' + _this._editorKey;\n _this._latestEditorState = props.editorState;\n _this._latestCommittedEditorState = props.editorState;\n _this._onBeforeInput = _this._buildHandler('onBeforeInput');\n _this._onBlur = _this._buildHandler('onBlur');\n _this._onCharacterData = _this._buildHandler('onCharacterData');\n _this._onCompositionEnd = _this._buildHandler('onCompositionEnd');\n _this._onCompositionStart = _this._buildHandler('onCompositionStart');\n _this._onCopy = _this._buildHandler('onCopy');\n _this._onCut = _this._buildHandler('onCut');\n _this._onDragEnd = _this._buildHandler('onDragEnd');\n _this._onDragOver = _this._buildHandler('onDragOver');\n _this._onDragStart = _this._buildHandler('onDragStart');\n _this._onDrop = _this._buildHandler('onDrop');\n _this._onInput = _this._buildHandler('onInput');\n _this._onFocus = _this._buildHandler('onFocus');\n _this._onKeyDown = _this._buildHandler('onKeyDown');\n _this._onKeyPress = _this._buildHandler('onKeyPress');\n _this._onKeyUp = _this._buildHandler('onKeyUp');\n _this._onMouseDown = _this._buildHandler('onMouseDown');\n _this._onMouseUp = _this._buildHandler('onMouseUp');\n _this._onPaste = _this._buildHandler('onPaste');\n _this._onSelect = _this._buildHandler('onSelect');\n\n _this.getEditorKey = function () {\n return _this._editorKey;\n };\n\n if (process.env.NODE_ENV !== \"production\") {\n ['onDownArrow', 'onEscape', 'onLeftArrow', 'onRightArrow', 'onTab', 'onUpArrow'].forEach(function (propName) {\n if (props.hasOwnProperty(propName)) {\n // eslint-disable-next-line no-console\n console.warn(\"Supplying an `\".concat(propName, \"` prop to `DraftEditor` has \") + 'been deprecated. If your handler needs access to the keyboard ' + 'event, supply a custom `keyBindingFn` prop that falls back to ' + 'the default one (eg. https://is.gd/wHKQ3W).');\n }\n });\n } // See `restoreEditorDOM()`.\n\n\n _this.state = {\n contentsKey: 0\n };\n return _this;\n }\n /**\n * Build a method that will pass the event to the specified handler method.\n * This allows us to look up the correct handler function for the current\n * editor mode, if any has been specified.\n */\n\n\n var _proto2 = DraftEditor.prototype;\n\n _proto2._buildHandler = function _buildHandler(eventName) {\n var _this2 = this;\n\n // Wrap event handlers in `flushControlled`. In sync mode, this is\n // effectively a no-op. In async mode, this ensures all updates scheduled\n // inside the handler are flushed before React yields to the browser.\n return function (e) {\n if (!_this2.props.readOnly) {\n var method = _this2._handler && _this2._handler[eventName];\n\n if (method) {\n if (flushControlled) {\n flushControlled(function () {\n return method(_this2, e);\n });\n } else {\n method(_this2, e);\n }\n }\n }\n };\n };\n\n _proto2._showPlaceholder = function _showPlaceholder() {\n return !!this.props.placeholder && !this.props.editorState.isInCompositionMode() && !this.props.editorState.getCurrentContent().hasText();\n };\n\n _proto2._renderPlaceholder = function _renderPlaceholder() {\n if (this._showPlaceholder()) {\n var placeHolderProps = {\n text: nullthrows(this.props.placeholder),\n editorState: this.props.editorState,\n textAlignment: this.props.textAlignment,\n accessibilityID: this._placeholderAccessibilityID\n };\n /* $FlowFixMe[incompatible-type] (>=0.112.0 site=www,mobile) This comment\n * suppresses an error found when Flow v0.112 was deployed. To see the\n * error delete this comment and run Flow. */\n\n return React.createElement(DraftEditorPlaceholder, placeHolderProps);\n }\n\n return null;\n }\n /**\n * returns ariaDescribedBy prop with '{{editor_id_placeholder}}' replaced with\n * the DOM id of the placeholder (if it exists)\n * @returns aria-describedby attribute value\n */\n ;\n\n _proto2._renderARIADescribedBy = function _renderARIADescribedBy() {\n var describedBy = this.props.ariaDescribedBy || '';\n var placeholderID = this._showPlaceholder() ? this._placeholderAccessibilityID : '';\n return describedBy.replace('{{editor_id_placeholder}}', placeholderID) || undefined;\n };\n\n _proto2.render = function render() {\n var _this$props2 = this.props,\n blockRenderMap = _this$props2.blockRenderMap,\n blockRendererFn = _this$props2.blockRendererFn,\n blockStyleFn = _this$props2.blockStyleFn,\n customStyleFn = _this$props2.customStyleFn,\n customStyleMap = _this$props2.customStyleMap,\n editorState = _this$props2.editorState,\n preventScroll = _this$props2.preventScroll,\n readOnly = _this$props2.readOnly,\n textAlignment = _this$props2.textAlignment,\n textDirectionality = _this$props2.textDirectionality;\n var rootClass = cx({\n 'DraftEditor/root': true,\n 'DraftEditor/alignLeft': textAlignment === 'left',\n 'DraftEditor/alignRight': textAlignment === 'right',\n 'DraftEditor/alignCenter': textAlignment === 'center'\n });\n var contentStyle = {\n outline: 'none',\n // fix parent-draggable Safari bug. #1326\n userSelect: 'text',\n WebkitUserSelect: 'text',\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word'\n }; // The aria-expanded and aria-haspopup properties should only be rendered\n // for a combobox.\n\n /* $FlowFixMe[prop-missing] (>=0.68.0 site=www,mobile) This comment\n * suppresses an error found when Flow v0.68 was deployed. To see the error\n * delete this comment and run Flow. */\n\n var ariaRole = this.props.role || 'textbox';\n var ariaExpanded = ariaRole === 'combobox' ? !!this.props.ariaExpanded : null;\n var editorContentsProps = {\n blockRenderMap: blockRenderMap,\n blockRendererFn: blockRendererFn,\n blockStyleFn: blockStyleFn,\n customStyleMap: _objectSpread({}, DefaultDraftInlineStyle, customStyleMap),\n customStyleFn: customStyleFn,\n editorKey: this._editorKey,\n editorState: editorState,\n preventScroll: preventScroll,\n textDirectionality: textDirectionality\n };\n return React.createElement(\"div\", {\n className: rootClass\n }, this._renderPlaceholder(), React.createElement(\"div\", {\n className: cx('DraftEditor/editorContainer'),\n ref: this._handleEditorContainerRef\n }, React.createElement(\"div\", {\n \"aria-activedescendant\": readOnly ? null : this.props.ariaActiveDescendantID,\n \"aria-autocomplete\": readOnly ? null : this.props.ariaAutoComplete,\n \"aria-controls\": readOnly ? null : this.props.ariaControls,\n \"aria-describedby\": this._renderARIADescribedBy(),\n \"aria-expanded\": readOnly ? null : ariaExpanded,\n \"aria-label\": this.props.ariaLabel,\n \"aria-labelledby\": this.props.ariaLabelledBy,\n \"aria-multiline\": this.props.ariaMultiline,\n \"aria-owns\": readOnly ? null : this.props.ariaOwneeID,\n autoCapitalize: this.props.autoCapitalize,\n autoComplete: this.props.autoComplete,\n autoCorrect: this.props.autoCorrect,\n className: cx({\n // Chrome's built-in translation feature mutates the DOM in ways\n // that Draft doesn't expect (ex: adding <font> tags inside\n // DraftEditorLeaf spans) and causes problems. We add notranslate\n // here which makes its autotranslation skip over this subtree.\n notranslate: !readOnly,\n 'public/DraftEditor/content': true\n }),\n contentEditable: !readOnly,\n \"data-testid\": this.props.webDriverTestID,\n onBeforeInput: this._onBeforeInput,\n onBlur: this._onBlur,\n onCompositionEnd: this._onCompositionEnd,\n onCompositionStart: this._onCompositionStart,\n onCopy: this._onCopy,\n onCut: this._onCut,\n onDragEnd: this._onDragEnd,\n onDragEnter: this.onDragEnter,\n onDragLeave: this.onDragLeave,\n onDragOver: this._onDragOver,\n onDragStart: this._onDragStart,\n onDrop: this._onDrop,\n onFocus: this._onFocus,\n onInput: this._onInput,\n onKeyDown: this._onKeyDown,\n onKeyPress: this._onKeyPress,\n onKeyUp: this._onKeyUp,\n onMouseUp: this._onMouseUp,\n onPaste: this._onPaste,\n onSelect: this._onSelect,\n ref: this.props.editorRef,\n role: readOnly ? null : ariaRole,\n spellCheck: allowSpellCheck && this.props.spellCheck,\n style: contentStyle,\n suppressContentEditableWarning: true,\n tabIndex: this.props.tabIndex\n }, React.createElement(UpdateDraftEditorFlags, {\n editor: this,\n editorState: editorState\n }), React.createElement(DraftEditorContents, _extends({}, editorContentsProps, {\n key: 'contents' + this.state.contentsKey\n })))));\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n this._blockSelectEvents = false;\n\n if (!didInitODS && gkx('draft_ods_enabled')) {\n didInitODS = true;\n DraftEffects.initODS();\n }\n\n this.setMode('edit');\n /**\n * IE has a hardcoded \"feature\" that attempts to convert link text into\n * anchors in contentEditable DOM. This breaks the editor's expectations of\n * the DOM, and control is lost. Disable it to make IE behave.\n * See: http://blogs.msdn.com/b/ieinternals/archive/2010/09/15/\n * ie9-beta-minor-change-list.aspx\n */\n\n if (isIE) {\n // editor can be null after mounting\n // https://stackoverflow.com/questions/44074747/componentdidmount-called-before-ref-callback\n if (!this.editor) {\n global.execCommand('AutoUrlDetect', false, false);\n } else {\n this.editor.ownerDocument.execCommand('AutoUrlDetect', false, false);\n }\n }\n };\n\n _proto2.componentDidUpdate = function componentDidUpdate() {\n this._blockSelectEvents = false;\n this._latestEditorState = this.props.editorState;\n this._latestCommittedEditorState = this.props.editorState;\n }\n /**\n * Used via `this.focus()`.\n *\n * Force focus back onto the editor node.\n *\n * We attempt to preserve scroll position when focusing. You can also pass\n * a specified scroll position (for cases like `cut` behavior where it should\n * be restored to a known position).\n */\n ;\n\n return DraftEditor;\n}(React.Component);\n\n_defineProperty(DraftEditor, \"defaultProps\", {\n ariaDescribedBy: '{{editor_id_placeholder}}',\n blockRenderMap: DefaultDraftBlockRenderMap,\n blockRendererFn: function blockRendererFn() {\n return null;\n },\n blockStyleFn: function blockStyleFn() {\n return '';\n },\n keyBindingFn: getDefaultKeyBinding,\n readOnly: false,\n spellCheck: false,\n stripPastedStyles: false\n});\n\nmodule.exports = DraftEditor;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DraftEditorLeaf = require(\"./DraftEditorLeaf.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar Scroll = require(\"fbjs/lib/Scroll\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar UnicodeBidi = require(\"fbjs/lib/UnicodeBidi\");\n\nvar UnicodeBidiDirection = require(\"fbjs/lib/UnicodeBidiDirection\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar getElementPosition = require(\"fbjs/lib/getElementPosition\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar getViewportDimensions = require(\"fbjs/lib/getViewportDimensions\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar SCROLL_BUFFER = 10;\n\n/**\n * Return whether a block overlaps with either edge of the `SelectionState`.\n */\nvar isBlockOnSelectionEdge = function isBlockOnSelectionEdge(selection, key) {\n return selection.getAnchorKey() === key || selection.getFocusKey() === key;\n};\n/**\n * The default block renderer for a `DraftEditor` component.\n *\n * A `DraftEditorBlock` is able to render a given `ContentBlock` to its\n * appropriate decorator and inline style components.\n */\n\n\nvar DraftEditorBlock = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorBlock, _React$Component);\n\n function DraftEditorBlock() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"_node\", void 0);\n\n return _this;\n }\n\n var _proto = DraftEditorBlock.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return this.props.block !== nextProps.block || this.props.tree !== nextProps.tree || this.props.direction !== nextProps.direction || isBlockOnSelectionEdge(nextProps.selection, nextProps.block.getKey()) && nextProps.forceSelection;\n }\n /**\n * When a block is mounted and overlaps the selection state, we need to make\n * sure that the cursor is visible to match native behavior. This may not\n * be the case if the user has pressed `RETURN` or pasted some content, since\n * programmatically creating these new blocks and setting the DOM selection\n * will miss out on the browser natively scrolling to that position.\n *\n * To replicate native behavior, if the block overlaps the selection state\n * on mount, force the scroll position. Check the scroll state of the scroll\n * parent, and adjust it to align the entire block to the bottom of the\n * scroll parent.\n */\n ;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.props.preventScroll) {\n return;\n }\n\n var selection = this.props.selection;\n var endKey = selection.getEndKey();\n\n if (!selection.getHasFocus() || endKey !== this.props.block.getKey()) {\n return;\n }\n\n var blockNode = this._node;\n\n if (blockNode == null) {\n return;\n }\n\n var scrollParent = Style.getScrollParent(blockNode);\n var scrollPosition = getScrollPosition(scrollParent);\n var scrollDelta;\n\n if (scrollParent === window) {\n var nodePosition = getElementPosition(blockNode);\n var nodeBottom = nodePosition.y + nodePosition.height;\n var viewportHeight = getViewportDimensions().height;\n scrollDelta = nodeBottom - viewportHeight;\n\n if (scrollDelta > 0) {\n window.scrollTo(scrollPosition.x, scrollPosition.y + scrollDelta + SCROLL_BUFFER);\n }\n } else {\n !isHTMLElement(blockNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'blockNode is not an HTMLElement') : invariant(false) : void 0;\n var blockBottom = blockNode.offsetHeight + blockNode.offsetTop;\n var pOffset = scrollParent.offsetTop + scrollParent.offsetHeight;\n var scrollBottom = pOffset + scrollPosition.y;\n scrollDelta = blockBottom - scrollBottom;\n\n if (scrollDelta > 0) {\n Scroll.setTop(scrollParent, Scroll.getTop(scrollParent) + scrollDelta + SCROLL_BUFFER);\n }\n }\n };\n\n _proto._renderChildren = function _renderChildren() {\n var _this2 = this;\n\n var block = this.props.block;\n var blockKey = block.getKey();\n var text = block.getText();\n var lastLeafSet = this.props.tree.size - 1;\n var hasSelection = isBlockOnSelectionEdge(this.props.selection, blockKey);\n return this.props.tree.map(function (leafSet, ii) {\n var leavesForLeafSet = leafSet.get('leaves'); // T44088704\n\n if (leavesForLeafSet.size === 0) {\n return null;\n }\n\n var lastLeaf = leavesForLeafSet.size - 1;\n var leaves = leavesForLeafSet.map(function (leaf, jj) {\n var offsetKey = DraftOffsetKey.encode(blockKey, ii, jj);\n var start = leaf.get('start');\n var end = leaf.get('end');\n return React.createElement(DraftEditorLeaf, {\n key: offsetKey,\n offsetKey: offsetKey,\n block: block,\n start: start,\n selection: hasSelection ? _this2.props.selection : null,\n forceSelection: _this2.props.forceSelection,\n text: text.slice(start, end),\n styleSet: block.getInlineStyleAt(start),\n customStyleMap: _this2.props.customStyleMap,\n customStyleFn: _this2.props.customStyleFn,\n isLast: ii === lastLeafSet && jj === lastLeaf\n });\n }).toArray();\n var decoratorKey = leafSet.get('decoratorKey');\n\n if (decoratorKey == null) {\n return leaves;\n }\n\n if (!_this2.props.decorator) {\n return leaves;\n }\n\n var decorator = nullthrows(_this2.props.decorator);\n var DecoratorComponent = decorator.getComponentForKey(decoratorKey);\n\n if (!DecoratorComponent) {\n return leaves;\n }\n\n var decoratorProps = decorator.getPropsForKey(decoratorKey);\n var decoratorOffsetKey = DraftOffsetKey.encode(blockKey, ii, 0);\n var start = leavesForLeafSet.first().get('start');\n var end = leavesForLeafSet.last().get('end');\n var decoratedText = text.slice(start, end);\n var entityKey = block.getEntityAt(leafSet.get('start')); // Resetting dir to the same value on a child node makes Chrome/Firefox\n // confused on cursor movement. See http://jsfiddle.net/d157kLck/3/\n\n var dir = UnicodeBidiDirection.getHTMLDirIfDifferent(UnicodeBidi.getDirection(decoratedText), _this2.props.direction);\n var commonProps = {\n contentState: _this2.props.contentState,\n decoratedText: decoratedText,\n dir: dir,\n start: start,\n end: end,\n blockKey: blockKey,\n entityKey: entityKey,\n offsetKey: decoratorOffsetKey\n };\n return React.createElement(DecoratorComponent, _extends({}, decoratorProps, commonProps, {\n key: decoratorOffsetKey\n }), leaves);\n }).toArray();\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props = this.props,\n direction = _this$props.direction,\n offsetKey = _this$props.offsetKey;\n var className = cx({\n 'public/DraftStyleDefault/block': true,\n 'public/DraftStyleDefault/ltr': direction === 'LTR',\n 'public/DraftStyleDefault/rtl': direction === 'RTL'\n });\n return React.createElement(\"div\", {\n \"data-offset-key\": offsetKey,\n className: className,\n ref: function ref(_ref) {\n return _this3._node = _ref;\n }\n }, this._renderChildren());\n };\n\n return DraftEditorBlock;\n}(React.Component);\n\nmodule.exports = DraftEditorBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This file is a fork of DraftEditorBlock.react.js and DraftEditorContents.react.js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DraftEditorNode = require(\"./DraftEditorNode.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar Scroll = require(\"fbjs/lib/Scroll\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar getElementPosition = require(\"fbjs/lib/getElementPosition\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar getViewportDimensions = require(\"fbjs/lib/getViewportDimensions\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar SCROLL_BUFFER = 10;\nvar List = Immutable.List; // we should harden up the bellow flow types to make them more strict\n\n/**\n * Return whether a block overlaps with either edge of the `SelectionState`.\n */\nvar isBlockOnSelectionEdge = function isBlockOnSelectionEdge(selection, key) {\n return selection.getAnchorKey() === key || selection.getFocusKey() === key;\n};\n/**\n * We will use this helper to identify blocks that need to be wrapped but have siblings that\n * also share the same wrapper element, this way we can do the wrapping once the last sibling\n * is added.\n */\n\n\nvar shouldNotAddWrapperElement = function shouldNotAddWrapperElement(block, contentState) {\n var nextSiblingKey = block.getNextSiblingKey();\n return nextSiblingKey ? contentState.getBlockForKey(nextSiblingKey).getType() === block.getType() : false;\n};\n\nvar applyWrapperElementToSiblings = function applyWrapperElementToSiblings(wrapperTemplate, Element, nodes) {\n var wrappedSiblings = []; // we check back until we find a sibling that does not have same wrapper\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = nodes.reverse()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var sibling = _step.value;\n\n if (sibling.type !== Element) {\n break;\n }\n\n wrappedSiblings.push(sibling);\n } // we now should remove from acc the wrappedSiblings and add them back under same wrap\n\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n nodes.splice(nodes.indexOf(wrappedSiblings[0]), wrappedSiblings.length + 1);\n var childrenIs = wrappedSiblings.reverse();\n var key = childrenIs[0].key;\n nodes.push(React.cloneElement(wrapperTemplate, {\n key: \"\".concat(key, \"-wrap\"),\n 'data-offset-key': DraftOffsetKey.encode(key, 0, 0)\n }, childrenIs));\n return nodes;\n};\n\nvar getDraftRenderConfig = function getDraftRenderConfig(block, blockRenderMap) {\n var configForType = blockRenderMap.get(block.getType()) || blockRenderMap.get('unstyled');\n var wrapperTemplate = configForType.wrapper;\n var Element = configForType.element || blockRenderMap.get('unstyled').element;\n return {\n Element: Element,\n wrapperTemplate: wrapperTemplate\n };\n};\n\nvar getCustomRenderConfig = function getCustomRenderConfig(block, blockRendererFn) {\n var customRenderer = blockRendererFn(block);\n\n if (!customRenderer) {\n return {};\n }\n\n var CustomComponent = customRenderer.component,\n customProps = customRenderer.props,\n customEditable = customRenderer.editable;\n return {\n CustomComponent: CustomComponent,\n customProps: customProps,\n customEditable: customEditable\n };\n};\n\nvar getElementPropsConfig = function getElementPropsConfig(block, editorKey, offsetKey, blockStyleFn, customConfig, ref) {\n var elementProps = {\n 'data-block': true,\n 'data-editor': editorKey,\n 'data-offset-key': offsetKey,\n key: block.getKey(),\n ref: ref\n };\n var customClass = blockStyleFn(block);\n\n if (customClass) {\n elementProps.className = customClass;\n }\n\n if (customConfig.customEditable !== undefined) {\n elementProps = _objectSpread({}, elementProps, {\n contentEditable: customConfig.customEditable,\n suppressContentEditableWarning: true\n });\n }\n\n return elementProps;\n};\n\nvar DraftEditorBlockNode = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorBlockNode, _React$Component);\n\n function DraftEditorBlockNode() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"wrapperRef\", React.createRef());\n\n return _this;\n }\n\n var _proto = DraftEditorBlockNode.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var _this$props = this.props,\n block = _this$props.block,\n direction = _this$props.direction,\n tree = _this$props.tree;\n var isContainerNode = !block.getChildKeys().isEmpty();\n var blockHasChanged = block !== nextProps.block || tree !== nextProps.tree || direction !== nextProps.direction || isBlockOnSelectionEdge(nextProps.selection, nextProps.block.getKey()) && nextProps.forceSelection; // if we have children at this stage we always re-render container nodes\n // else if its a root node we avoid re-rendering by checking for block updates\n\n return isContainerNode || blockHasChanged;\n }\n /**\n * When a block is mounted and overlaps the selection state, we need to make\n * sure that the cursor is visible to match native behavior. This may not\n * be the case if the user has pressed `RETURN` or pasted some content, since\n * programatically creating these new blocks and setting the DOM selection\n * will miss out on the browser natively scrolling to that position.\n *\n * To replicate native behavior, if the block overlaps the selection state\n * on mount, force the scroll position. Check the scroll state of the scroll\n * parent, and adjust it to align the entire block to the bottom of the\n * scroll parent.\n */\n ;\n\n _proto.componentDidMount = function componentDidMount() {\n var selection = this.props.selection;\n var endKey = selection.getEndKey();\n\n if (!selection.getHasFocus() || endKey !== this.props.block.getKey()) {\n return;\n }\n\n var blockNode = this.wrapperRef.current;\n\n if (!blockNode) {\n // This Block Node was rendered without a wrapper element.\n return;\n }\n\n var scrollParent = Style.getScrollParent(blockNode);\n var scrollPosition = getScrollPosition(scrollParent);\n var scrollDelta;\n\n if (scrollParent === window) {\n var nodePosition = getElementPosition(blockNode);\n var nodeBottom = nodePosition.y + nodePosition.height;\n var viewportHeight = getViewportDimensions().height;\n scrollDelta = nodeBottom - viewportHeight;\n\n if (scrollDelta > 0) {\n window.scrollTo(scrollPosition.x, scrollPosition.y + scrollDelta + SCROLL_BUFFER);\n }\n } else {\n !isHTMLElement(blockNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'blockNode is not an HTMLElement') : invariant(false) : void 0;\n var htmlBlockNode = blockNode;\n var blockBottom = htmlBlockNode.offsetHeight + htmlBlockNode.offsetTop;\n var scrollBottom = scrollParent.offsetHeight + scrollPosition.y;\n scrollDelta = blockBottom - scrollBottom;\n\n if (scrollDelta > 0) {\n Scroll.setTop(scrollParent, Scroll.getTop(scrollParent) + scrollDelta + SCROLL_BUFFER);\n }\n }\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n block = _this$props2.block,\n blockRenderMap = _this$props2.blockRenderMap,\n blockRendererFn = _this$props2.blockRendererFn,\n blockStyleFn = _this$props2.blockStyleFn,\n contentState = _this$props2.contentState,\n decorator = _this$props2.decorator,\n editorKey = _this$props2.editorKey,\n editorState = _this$props2.editorState,\n customStyleFn = _this$props2.customStyleFn,\n customStyleMap = _this$props2.customStyleMap,\n direction = _this$props2.direction,\n forceSelection = _this$props2.forceSelection,\n selection = _this$props2.selection,\n tree = _this$props2.tree;\n var children = null;\n\n if (block.children.size) {\n children = block.children.reduce(function (acc, key) {\n var offsetKey = DraftOffsetKey.encode(key, 0, 0);\n var child = contentState.getBlockForKey(key);\n var customConfig = getCustomRenderConfig(child, blockRendererFn);\n var Component = customConfig.CustomComponent || DraftEditorBlockNode;\n\n var _getDraftRenderConfig = getDraftRenderConfig(child, blockRenderMap),\n Element = _getDraftRenderConfig.Element,\n wrapperTemplate = _getDraftRenderConfig.wrapperTemplate;\n\n var elementProps = getElementPropsConfig(child, editorKey, offsetKey, blockStyleFn, customConfig, null);\n\n var childProps = _objectSpread({}, _this2.props, {\n tree: editorState.getBlockTree(key),\n blockProps: customConfig.customProps,\n offsetKey: offsetKey,\n block: child\n });\n\n acc.push(React.createElement(Element, elementProps, React.createElement(Component, childProps)));\n\n if (!wrapperTemplate || shouldNotAddWrapperElement(child, contentState)) {\n return acc;\n } // if we are here it means we are the last block\n // that has a wrapperTemplate so we should wrap itself\n // and all other previous siblings that share the same wrapper\n\n\n applyWrapperElementToSiblings(wrapperTemplate, Element, acc);\n return acc;\n }, []);\n }\n\n var blockKey = block.getKey();\n var offsetKey = DraftOffsetKey.encode(blockKey, 0, 0);\n var customConfig = getCustomRenderConfig(block, blockRendererFn);\n var Component = customConfig.CustomComponent;\n var blockNode = Component != null ? React.createElement(Component, _extends({}, this.props, {\n tree: editorState.getBlockTree(blockKey),\n blockProps: customConfig.customProps,\n offsetKey: offsetKey,\n block: block\n })) : React.createElement(DraftEditorNode, {\n block: block,\n children: children,\n contentState: contentState,\n customStyleFn: customStyleFn,\n customStyleMap: customStyleMap,\n decorator: decorator,\n direction: direction,\n forceSelection: forceSelection,\n hasSelection: isBlockOnSelectionEdge(selection, blockKey),\n selection: selection,\n tree: tree\n });\n\n if (block.getParentKey()) {\n return blockNode;\n }\n\n var _getDraftRenderConfig2 = getDraftRenderConfig(block, blockRenderMap),\n Element = _getDraftRenderConfig2.Element;\n\n var elementProps = getElementPropsConfig(block, editorKey, offsetKey, blockStyleFn, customConfig, this.wrapperRef); // root block nodes needs to be wrapped\n\n return React.createElement(Element, elementProps, blockNode);\n };\n\n return DraftEditorBlockNode;\n}(React.Component);\n\nmodule.exports = DraftEditorBlockNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DOMObserver = require(\"./DOMObserver\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar editOnSelect = require(\"./editOnSelect\");\n\nvar getContentEditableContainer = require(\"./getContentEditableContainer\");\n\nvar getDraftEditorSelection = require(\"./getDraftEditorSelection\");\n\nvar getEntityKeyForSelection = require(\"./getEntityKeyForSelection\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar isIE = UserAgent.isBrowser('IE');\n/**\n * Millisecond delay to allow `compositionstart` to fire again upon\n * `compositionend`.\n *\n * This is used for Korean input to ensure that typing can continue without\n * the editor trying to render too quickly. More specifically, Safari 7.1+\n * triggers `compositionstart` a little slower than Chrome/FF, which\n * leads to composed characters being resolved and re-render occurring\n * sooner than we want.\n */\n\nvar RESOLVE_DELAY = 20;\n/**\n * A handful of variables used to track the current composition and its\n * resolution status. These exist at the module level because it is not\n * possible to have compositions occurring in multiple editors simultaneously,\n * and it simplifies state management with respect to the DraftEditor component.\n */\n\nvar resolved = false;\nvar stillComposing = false;\nvar domObserver = null;\n\nfunction startDOMObserver(editor) {\n if (!domObserver) {\n domObserver = new DOMObserver(getContentEditableContainer(editor));\n domObserver.start();\n }\n}\n\nvar DraftEditorCompositionHandler = {\n /**\n * A `compositionstart` event has fired while we're still in composition\n * mode. Continue the current composition session to prevent a re-render.\n */\n onCompositionStart: function onCompositionStart(editor) {\n stillComposing = true;\n startDOMObserver(editor);\n },\n\n /**\n * Attempt to end the current composition session.\n *\n * Defer handling because browser will still insert the chars into active\n * element after `compositionend`. If a `compositionstart` event fires\n * before `resolveComposition` executes, our composition session will\n * continue.\n *\n * The `resolved` flag is useful because certain IME interfaces fire the\n * `compositionend` event multiple times, thus queueing up multiple attempts\n * at handling the composition. Since handling the same composition event\n * twice could break the DOM, we only use the first event. Example: Arabic\n * Google Input Tools on Windows 8.1 fires `compositionend` three times.\n */\n onCompositionEnd: function onCompositionEnd(editor) {\n resolved = false;\n stillComposing = false;\n setTimeout(function () {\n if (!resolved) {\n DraftEditorCompositionHandler.resolveComposition(editor);\n }\n }, RESOLVE_DELAY);\n },\n onSelect: editOnSelect,\n\n /**\n * In Safari, keydown events may fire when committing compositions. If\n * the arrow keys are used to commit, prevent default so that the cursor\n * doesn't move, otherwise it will jump back noticeably on re-render.\n */\n onKeyDown: function onKeyDown(editor, e) {\n if (!stillComposing) {\n // If a keydown event is received after compositionend but before the\n // 20ms timer expires (ex: type option-E then backspace, or type A then\n // backspace in 2-Set Korean), we should immediately resolve the\n // composition and reinterpret the key press in edit mode.\n DraftEditorCompositionHandler.resolveComposition(editor);\n\n editor._onKeyDown(e);\n\n return;\n }\n\n if (e.which === Keys.RIGHT || e.which === Keys.LEFT) {\n e.preventDefault();\n }\n },\n\n /**\n * Keypress events may fire when committing compositions. In Firefox,\n * pressing RETURN commits the composition and inserts extra newline\n * characters that we do not want. `preventDefault` allows the composition\n * to be committed while preventing the extra characters.\n */\n onKeyPress: function onKeyPress(_editor, e) {\n if (e.which === Keys.RETURN) {\n e.preventDefault();\n }\n },\n\n /**\n * Attempt to insert composed characters into the document.\n *\n * If we are still in a composition session, do nothing. Otherwise, insert\n * the characters into the document and terminate the composition session.\n *\n * If no characters were composed -- for instance, the user\n * deleted all composed characters and committed nothing new --\n * force a re-render. We also re-render when the composition occurs\n * at the beginning of a leaf, to ensure that if the browser has\n * created a new text node for the composition, we will discard it.\n *\n * Resetting innerHTML will move focus to the beginning of the editor,\n * so we update to force it back to the correct place.\n */\n resolveComposition: function resolveComposition(editor) {\n if (stillComposing) {\n return;\n }\n\n var mutations = nullthrows(domObserver).stopAndFlushMutations();\n domObserver = null;\n resolved = true;\n var editorState = EditorState.set(editor._latestEditorState, {\n inCompositionMode: false\n });\n editor.exitCurrentMode();\n\n if (!mutations.size) {\n editor.update(editorState);\n return;\n } // TODO, check if Facebook still needs this flag or if it could be removed.\n // Since there can be multiple mutations providing a `composedChars` doesn't\n // apply well on this new model.\n // if (\n // gkx('draft_handlebeforeinput_composed_text') &&\n // editor.props.handleBeforeInput &&\n // isEventHandled(\n // editor.props.handleBeforeInput(\n // composedChars,\n // editorState,\n // event.timeStamp,\n // ),\n // )\n // ) {\n // return;\n // }\n\n\n var contentState = editorState.getCurrentContent();\n mutations.forEach(function (composedChars, offsetKey) {\n var _DraftOffsetKey$decod = DraftOffsetKey.decode(offsetKey),\n blockKey = _DraftOffsetKey$decod.blockKey,\n decoratorKey = _DraftOffsetKey$decod.decoratorKey,\n leafKey = _DraftOffsetKey$decod.leafKey;\n\n var _editorState$getBlock = editorState.getBlockTree(blockKey).getIn([decoratorKey, 'leaves', leafKey]),\n start = _editorState$getBlock.start,\n end = _editorState$getBlock.end;\n\n var replacementRange = editorState.getSelection().merge({\n anchorKey: blockKey,\n focusKey: blockKey,\n anchorOffset: start,\n focusOffset: end,\n isBackward: false\n });\n var entityKey = getEntityKeyForSelection(contentState, replacementRange);\n var currentStyle = contentState.getBlockForKey(blockKey).getInlineStyleAt(start);\n contentState = DraftModifier.replaceText(contentState, replacementRange, composedChars, currentStyle, entityKey); // We need to update the editorState so the leaf node ranges are properly\n // updated and multiple mutations are correctly applied.\n\n editorState = EditorState.set(editorState, {\n currentContent: contentState\n });\n }); // When we apply the text changes to the ContentState, the selection always\n // goes to the end of the field, but it should just stay where it is\n // after compositionEnd.\n\n var documentSelection = getDraftEditorSelection(editorState, getContentEditableContainer(editor));\n var compositionEndSelectionState = documentSelection.selectionState;\n editor.restoreEditorDOM(); // See:\n // - https://github.com/facebook/draft-js/issues/2093\n // - https://github.com/facebook/draft-js/pull/2094\n // Apply this fix only in IE for now. We can test it in\n // other browsers in the future to ensure no regressions\n\n var editorStateWithUpdatedSelection = isIE ? EditorState.forceSelection(editorState, compositionEndSelectionState) : EditorState.acceptSelection(editorState, compositionEndSelectionState);\n editor.update(EditorState.push(editorStateWithUpdatedSelection, contentState, 'insert-characters'));\n }\n};\nmodule.exports = DraftEditorCompositionHandler;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftEditorBlock = require(\"./DraftEditorBlock.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar joinClasses = require(\"fbjs/lib/joinClasses\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\n/**\n * Provide default styling for list items. This way, lists will be styled with\n * proper counters and indentation even if the caller does not specify\n * their own styling at all. If more than five levels of nesting are needed,\n * the necessary CSS classes can be provided via `blockStyleFn` configuration.\n */\nvar getListItemClasses = function getListItemClasses(type, depth, shouldResetCount, direction) {\n return cx({\n 'public/DraftStyleDefault/unorderedListItem': type === 'unordered-list-item',\n 'public/DraftStyleDefault/orderedListItem': type === 'ordered-list-item',\n 'public/DraftStyleDefault/reset': shouldResetCount,\n 'public/DraftStyleDefault/depth0': depth === 0,\n 'public/DraftStyleDefault/depth1': depth === 1,\n 'public/DraftStyleDefault/depth2': depth === 2,\n 'public/DraftStyleDefault/depth3': depth === 3,\n 'public/DraftStyleDefault/depth4': depth >= 4,\n 'public/DraftStyleDefault/listLTR': direction === 'LTR',\n 'public/DraftStyleDefault/listRTL': direction === 'RTL'\n });\n};\n/**\n * `DraftEditorContents` is the container component for all block components\n * rendered for a `DraftEditor`. It is optimized to aggressively avoid\n * re-rendering blocks whenever possible.\n *\n * This component is separate from `DraftEditor` because certain props\n * (for instance, ARIA props) must be allowed to update without affecting\n * the contents of the editor.\n */\n\n\nvar DraftEditorContents = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorContents, _React$Component);\n\n function DraftEditorContents() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = DraftEditorContents.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var prevEditorState = this.props.editorState;\n var nextEditorState = nextProps.editorState;\n var prevDirectionMap = prevEditorState.getDirectionMap();\n var nextDirectionMap = nextEditorState.getDirectionMap(); // Text direction has changed for one or more blocks. We must re-render.\n\n if (prevDirectionMap !== nextDirectionMap) {\n return true;\n }\n\n var didHaveFocus = prevEditorState.getSelection().getHasFocus();\n var nowHasFocus = nextEditorState.getSelection().getHasFocus();\n\n if (didHaveFocus !== nowHasFocus) {\n return true;\n }\n\n var nextNativeContent = nextEditorState.getNativelyRenderedContent();\n var wasComposing = prevEditorState.isInCompositionMode();\n var nowComposing = nextEditorState.isInCompositionMode(); // If the state is unchanged or we're currently rendering a natively\n // rendered state, there's nothing new to be done.\n\n if (prevEditorState === nextEditorState || nextNativeContent !== null && nextEditorState.getCurrentContent() === nextNativeContent || wasComposing && nowComposing) {\n return false;\n }\n\n var prevContent = prevEditorState.getCurrentContent();\n var nextContent = nextEditorState.getCurrentContent();\n var prevDecorator = prevEditorState.getDecorator();\n var nextDecorator = nextEditorState.getDecorator();\n return wasComposing !== nowComposing || prevContent !== nextContent || prevDecorator !== nextDecorator || nextEditorState.mustForceSelection();\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n blockRenderMap = _this$props.blockRenderMap,\n blockRendererFn = _this$props.blockRendererFn,\n blockStyleFn = _this$props.blockStyleFn,\n customStyleMap = _this$props.customStyleMap,\n customStyleFn = _this$props.customStyleFn,\n editorState = _this$props.editorState,\n editorKey = _this$props.editorKey,\n preventScroll = _this$props.preventScroll,\n textDirectionality = _this$props.textDirectionality;\n var content = editorState.getCurrentContent();\n var selection = editorState.getSelection();\n var forceSelection = editorState.mustForceSelection();\n var decorator = editorState.getDecorator();\n var directionMap = nullthrows(editorState.getDirectionMap());\n var blocksAsArray = content.getBlocksAsArray();\n var processedBlocks = [];\n var currentDepth = null;\n var lastWrapperTemplate = null;\n\n for (var ii = 0; ii < blocksAsArray.length; ii++) {\n var _block = blocksAsArray[ii];\n\n var key = _block.getKey();\n\n var blockType = _block.getType();\n\n var customRenderer = blockRendererFn(_block);\n var CustomComponent = void 0,\n customProps = void 0,\n customEditable = void 0;\n\n if (customRenderer) {\n CustomComponent = customRenderer.component;\n customProps = customRenderer.props;\n customEditable = customRenderer.editable;\n }\n\n var direction = textDirectionality ? textDirectionality : directionMap.get(key);\n var offsetKey = DraftOffsetKey.encode(key, 0, 0);\n var componentProps = {\n contentState: content,\n block: _block,\n blockProps: customProps,\n blockStyleFn: blockStyleFn,\n customStyleMap: customStyleMap,\n customStyleFn: customStyleFn,\n decorator: decorator,\n direction: direction,\n forceSelection: forceSelection,\n offsetKey: offsetKey,\n preventScroll: preventScroll,\n selection: selection,\n tree: editorState.getBlockTree(key)\n };\n var configForType = blockRenderMap.get(blockType) || blockRenderMap.get('unstyled');\n var wrapperTemplate = configForType.wrapper;\n var Element = configForType.element || blockRenderMap.get('unstyled').element;\n\n var depth = _block.getDepth();\n\n var _className = '';\n\n if (blockStyleFn) {\n _className = blockStyleFn(_block);\n } // List items are special snowflakes, since we handle nesting and\n // counters manually.\n\n\n if (Element === 'li') {\n var shouldResetCount = lastWrapperTemplate !== wrapperTemplate || currentDepth === null || depth > currentDepth;\n _className = joinClasses(_className, getListItemClasses(blockType, depth, shouldResetCount, direction));\n }\n\n var Component = CustomComponent || DraftEditorBlock;\n var childProps = {\n className: _className,\n 'data-block': true,\n 'data-editor': editorKey,\n 'data-offset-key': offsetKey,\n key: key\n };\n\n if (customEditable !== undefined) {\n childProps = _objectSpread({}, childProps, {\n contentEditable: customEditable,\n suppressContentEditableWarning: true\n });\n }\n\n var child = React.createElement(Element, childProps,\n /* $FlowFixMe[incompatible-type] (>=0.112.0 site=www,mobile) This\n * comment suppresses an error found when Flow v0.112 was deployed. To\n * see the error delete this comment and run Flow. */\n React.createElement(Component, _extends({}, componentProps, {\n key: key\n })));\n processedBlocks.push({\n block: child,\n wrapperTemplate: wrapperTemplate,\n key: key,\n offsetKey: offsetKey\n });\n\n if (wrapperTemplate) {\n currentDepth = _block.getDepth();\n } else {\n currentDepth = null;\n }\n\n lastWrapperTemplate = wrapperTemplate;\n } // Group contiguous runs of blocks that have the same wrapperTemplate\n\n\n var outputBlocks = [];\n\n for (var _ii = 0; _ii < processedBlocks.length;) {\n var info = processedBlocks[_ii];\n\n if (info.wrapperTemplate) {\n var blocks = [];\n\n do {\n blocks.push(processedBlocks[_ii].block);\n _ii++;\n } while (_ii < processedBlocks.length && processedBlocks[_ii].wrapperTemplate === info.wrapperTemplate);\n\n var wrapperElement = React.cloneElement(info.wrapperTemplate, {\n key: info.key + '-wrap',\n 'data-offset-key': info.offsetKey\n }, blocks);\n outputBlocks.push(wrapperElement);\n } else {\n outputBlocks.push(info.block);\n _ii++;\n }\n }\n\n return React.createElement(\"div\", {\n \"data-contents\": \"true\"\n }, outputBlocks);\n };\n\n return DraftEditorContents;\n}(React.Component);\n\nmodule.exports = DraftEditorContents;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n */\n'use strict';\n\nvar gkx = require(\"./gkx\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nmodule.exports = experimentalTreeDataSupport ? require(\"./DraftEditorContentsExperimental.react\") : require(\"./DraftEditorContents-core.react\");","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This file is a fork of DraftEditorContents.react.js for tree nodes\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftEditorBlockNode = require(\"./DraftEditorBlockNode.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\n/**\n * `DraftEditorContents` is the container component for all block components\n * rendered for a `DraftEditor`. It is optimized to aggressively avoid\n * re-rendering blocks whenever possible.\n *\n * This component is separate from `DraftEditor` because certain props\n * (for instance, ARIA props) must be allowed to update without affecting\n * the contents of the editor.\n */\nvar DraftEditorContentsExperimental = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorContentsExperimental, _React$Component);\n\n function DraftEditorContentsExperimental() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = DraftEditorContentsExperimental.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var prevEditorState = this.props.editorState;\n var nextEditorState = nextProps.editorState;\n var prevDirectionMap = prevEditorState.getDirectionMap();\n var nextDirectionMap = nextEditorState.getDirectionMap(); // Text direction has changed for one or more blocks. We must re-render.\n\n if (prevDirectionMap !== nextDirectionMap) {\n return true;\n }\n\n var didHaveFocus = prevEditorState.getSelection().getHasFocus();\n var nowHasFocus = nextEditorState.getSelection().getHasFocus();\n\n if (didHaveFocus !== nowHasFocus) {\n return true;\n }\n\n var nextNativeContent = nextEditorState.getNativelyRenderedContent();\n var wasComposing = prevEditorState.isInCompositionMode();\n var nowComposing = nextEditorState.isInCompositionMode(); // If the state is unchanged or we're currently rendering a natively\n // rendered state, there's nothing new to be done.\n\n if (prevEditorState === nextEditorState || nextNativeContent !== null && nextEditorState.getCurrentContent() === nextNativeContent || wasComposing && nowComposing) {\n return false;\n }\n\n var prevContent = prevEditorState.getCurrentContent();\n var nextContent = nextEditorState.getCurrentContent();\n var prevDecorator = prevEditorState.getDecorator();\n var nextDecorator = nextEditorState.getDecorator();\n return wasComposing !== nowComposing || prevContent !== nextContent || prevDecorator !== nextDecorator || nextEditorState.mustForceSelection();\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n blockRenderMap = _this$props.blockRenderMap,\n blockRendererFn = _this$props.blockRendererFn,\n blockStyleFn = _this$props.blockStyleFn,\n customStyleMap = _this$props.customStyleMap,\n customStyleFn = _this$props.customStyleFn,\n editorState = _this$props.editorState,\n editorKey = _this$props.editorKey,\n textDirectionality = _this$props.textDirectionality;\n var content = editorState.getCurrentContent();\n var selection = editorState.getSelection();\n var forceSelection = editorState.mustForceSelection();\n var decorator = editorState.getDecorator();\n var directionMap = nullthrows(editorState.getDirectionMap());\n var blocksAsArray = content.getBlocksAsArray();\n var rootBlock = blocksAsArray[0];\n var processedBlocks = [];\n var nodeBlock = rootBlock;\n\n while (nodeBlock) {\n var blockKey = nodeBlock.getKey();\n var blockProps = {\n blockRenderMap: blockRenderMap,\n blockRendererFn: blockRendererFn,\n blockStyleFn: blockStyleFn,\n contentState: content,\n customStyleFn: customStyleFn,\n customStyleMap: customStyleMap,\n decorator: decorator,\n editorKey: editorKey,\n editorState: editorState,\n forceSelection: forceSelection,\n selection: selection,\n block: nodeBlock,\n direction: textDirectionality ? textDirectionality : directionMap.get(blockKey),\n tree: editorState.getBlockTree(blockKey)\n };\n var configForType = blockRenderMap.get(nodeBlock.getType()) || blockRenderMap.get('unstyled');\n var wrapperTemplate = configForType.wrapper;\n processedBlocks.push({\n /* $FlowFixMe[incompatible-type] (>=0.112.0 site=www,mobile) This\n * comment suppresses an error found when Flow v0.112 was deployed. To\n * see the error delete this comment and run Flow. */\n block: React.createElement(DraftEditorBlockNode, _extends({\n key: blockKey\n }, blockProps)),\n wrapperTemplate: wrapperTemplate,\n key: blockKey,\n offsetKey: DraftOffsetKey.encode(blockKey, 0, 0)\n });\n var nextBlockKey = nodeBlock.getNextSiblingKey();\n nodeBlock = nextBlockKey ? content.getBlockForKey(nextBlockKey) : null;\n } // Group contiguous runs of blocks that have the same wrapperTemplate\n\n\n var outputBlocks = [];\n\n for (var ii = 0; ii < processedBlocks.length;) {\n var info = processedBlocks[ii];\n\n if (info.wrapperTemplate) {\n var blocks = [];\n\n do {\n blocks.push(processedBlocks[ii].block);\n ii++;\n } while (ii < processedBlocks.length && processedBlocks[ii].wrapperTemplate === info.wrapperTemplate);\n\n var wrapperElement = React.cloneElement(info.wrapperTemplate, {\n key: info.key + '-wrap',\n 'data-offset-key': info.offsetKey\n }, blocks);\n outputBlocks.push(wrapperElement);\n } else {\n outputBlocks.push(info.block);\n ii++;\n }\n }\n\n return React.createElement(\"div\", {\n \"data-contents\": \"true\"\n }, outputBlocks);\n };\n\n return DraftEditorContentsExperimental;\n}(React.Component);\n\nmodule.exports = DraftEditorContentsExperimental;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _extends() { _extends = _assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar React = require(\"react\");\n\nvar UnicodeBidi = require(\"fbjs/lib/UnicodeBidi\");\n\nvar UnicodeBidiDirection = require(\"fbjs/lib/UnicodeBidiDirection\");\n\nvar DraftEditorDecoratedLeaves = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorDecoratedLeaves, _React$Component);\n\n function DraftEditorDecoratedLeaves() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = DraftEditorDecoratedLeaves.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n block = _this$props.block,\n children = _this$props.children,\n contentState = _this$props.contentState,\n decorator = _this$props.decorator,\n decoratorKey = _this$props.decoratorKey,\n direction = _this$props.direction,\n leafSet = _this$props.leafSet,\n text = _this$props.text;\n var blockKey = block.getKey();\n var leavesForLeafSet = leafSet.get('leaves');\n var DecoratorComponent = decorator.getComponentForKey(decoratorKey);\n var decoratorProps = decorator.getPropsForKey(decoratorKey);\n var decoratorOffsetKey = DraftOffsetKey.encode(blockKey, parseInt(decoratorKey, 10), 0);\n var decoratedText = text.slice(leavesForLeafSet.first().get('start'), leavesForLeafSet.last().get('end')); // Resetting dir to the same value on a child node makes Chrome/Firefox\n // confused on cursor movement. See http://jsfiddle.net/d157kLck/3/\n\n var dir = UnicodeBidiDirection.getHTMLDirIfDifferent(UnicodeBidi.getDirection(decoratedText), direction);\n return React.createElement(DecoratorComponent, _extends({}, decoratorProps, {\n contentState: contentState,\n decoratedText: decoratedText,\n dir: dir,\n key: decoratorOffsetKey,\n entityKey: block.getEntityAt(leafSet.get('start')),\n offsetKey: decoratorOffsetKey\n }), children);\n };\n\n return DraftEditorDecoratedLeaves;\n}(React.Component);\n\nmodule.exports = DraftEditorDecoratedLeaves;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DataTransfer = require(\"fbjs/lib/DataTransfer\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar getTextContentFromFiles = require(\"./getTextContentFromFiles\");\n\nvar getUpdatedSelectionState = require(\"./getUpdatedSelectionState\");\n\nvar getWindowForNode = require(\"./getWindowForNode\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n/**\n * Get a SelectionState for the supplied mouse event.\n */\n\n\nfunction getSelectionForEvent(event, editorState) {\n var node = null;\n var offset = null;\n var eventTargetDocument = getCorrectDocumentFromNode(event.currentTarget);\n /* $FlowFixMe[prop-missing] (>=0.68.0 site=www,mobile) This comment\n * suppresses an error found when Flow v0.68 was deployed. To see the error\n * delete this comment and run Flow. */\n\n if (typeof eventTargetDocument.caretRangeFromPoint === 'function') {\n /* $FlowFixMe[incompatible-use] (>=0.68.0 site=www,mobile) This comment\n * suppresses an error found when Flow v0.68 was deployed. To see the error\n * delete this comment and run Flow. */\n var dropRange = eventTargetDocument.caretRangeFromPoint(event.x, event.y);\n node = dropRange.startContainer;\n offset = dropRange.startOffset;\n } else if (event.rangeParent) {\n node = event.rangeParent;\n offset = event.rangeOffset;\n } else {\n return null;\n }\n\n node = nullthrows(node);\n offset = nullthrows(offset);\n var offsetKey = nullthrows(findAncestorOffsetKey(node));\n return getUpdatedSelectionState(editorState, offsetKey, offset, offsetKey, offset);\n}\n\nvar DraftEditorDragHandler = {\n /**\n * Drag originating from input terminated.\n */\n onDragEnd: function onDragEnd(editor) {\n editor.exitCurrentMode();\n endDrag(editor);\n },\n\n /**\n * Handle data being dropped.\n */\n onDrop: function onDrop(editor, e) {\n var data = new DataTransfer(e.nativeEvent.dataTransfer);\n var editorState = editor._latestEditorState;\n var dropSelection = getSelectionForEvent(e.nativeEvent, editorState);\n e.preventDefault();\n editor._dragCount = 0;\n editor.exitCurrentMode();\n\n if (dropSelection == null) {\n return;\n }\n\n var files = data.getFiles();\n\n if (files.length > 0) {\n if (editor.props.handleDroppedFiles && isEventHandled(editor.props.handleDroppedFiles(dropSelection, files))) {\n return;\n }\n /* $FlowFixMe[incompatible-call] This comment suppresses an error found\n * DataTransfer was typed. getFiles() returns an array of <Files extends\n * Blob>, not Blob */\n\n\n getTextContentFromFiles(files, function (fileText) {\n fileText && editor.update(insertTextAtSelection(editorState, dropSelection, fileText));\n });\n return;\n }\n\n var dragType = editor._internalDrag ? 'internal' : 'external';\n\n if (editor.props.handleDrop && isEventHandled(editor.props.handleDrop(dropSelection, data, dragType))) {// handled\n } else if (editor._internalDrag) {\n editor.update(moveText(editorState, dropSelection));\n } else {\n editor.update(insertTextAtSelection(editorState, dropSelection, data.getText()));\n }\n\n endDrag(editor);\n }\n};\n\nfunction endDrag(editor) {\n editor._internalDrag = false; // Fix issue #1383\n // Prior to React v16.5.0 onDrop breaks onSelect event:\n // https://github.com/facebook/react/issues/11379.\n // Dispatching a mouseup event on DOM node will make it go back to normal.\n\n var editorNode = editor.editorContainer;\n\n if (editorNode) {\n var mouseUpEvent = new MouseEvent('mouseup', {\n view: getWindowForNode(editorNode),\n bubbles: true,\n cancelable: true\n });\n editorNode.dispatchEvent(mouseUpEvent);\n }\n}\n\nfunction moveText(editorState, targetSelection) {\n var newContentState = DraftModifier.moveText(editorState.getCurrentContent(), editorState.getSelection(), targetSelection);\n return EditorState.push(editorState, newContentState, 'insert-fragment');\n}\n/**\n * Insert text at a specified selection.\n */\n\n\nfunction insertTextAtSelection(editorState, selection, text) {\n var newContentState = DraftModifier.insertText(editorState.getCurrentContent(), selection, text, editorState.getCurrentInlineStyle());\n return EditorState.push(editorState, newContentState, 'insert-fragment');\n}\n\nmodule.exports = DraftEditorDragHandler;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar onBeforeInput = require(\"./editOnBeforeInput\");\n\nvar onBlur = require(\"./editOnBlur\");\n\nvar onCompositionStart = require(\"./editOnCompositionStart\");\n\nvar onCopy = require(\"./editOnCopy\");\n\nvar onCut = require(\"./editOnCut\");\n\nvar onDragOver = require(\"./editOnDragOver\");\n\nvar onDragStart = require(\"./editOnDragStart\");\n\nvar onFocus = require(\"./editOnFocus\");\n\nvar onInput = require(\"./editOnInput\");\n\nvar onKeyDown = require(\"./editOnKeyDown\");\n\nvar onPaste = require(\"./editOnPaste\");\n\nvar onSelect = require(\"./editOnSelect\");\n\nvar isChrome = UserAgent.isBrowser('Chrome');\nvar isFirefox = UserAgent.isBrowser('Firefox');\nvar selectionHandler = isChrome || isFirefox ? onSelect : function (e) {};\nvar DraftEditorEditHandler = {\n onBeforeInput: onBeforeInput,\n onBlur: onBlur,\n onCompositionStart: onCompositionStart,\n onCopy: onCopy,\n onCut: onCut,\n onDragOver: onDragOver,\n onDragStart: onDragStart,\n onFocus: onFocus,\n onInput: onInput,\n onKeyDown: onKeyDown,\n onPaste: onPaste,\n onSelect: onSelect,\n // In certain cases, contenteditable on chrome does not fire the onSelect\n // event, causing problems with cursor positioning. Therefore, the selection\n // state update handler is added to more events to ensure that the selection\n // state is always synced with the actual cursor positions.\n onMouseUp: selectionHandler,\n onKeyUp: selectionHandler\n};\nmodule.exports = DraftEditorEditHandler;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar ReactDOMComet = require(\"react-dom\");\n\nvar flushControlled = ReactDOMComet.unstable_flushControlled;\nmodule.exports = flushControlled;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _assign = require(\"object-assign\");\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DraftEditorTextNode = require(\"./DraftEditorTextNode.react\");\n\nvar React = require(\"react\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLBRElement = require(\"./isHTMLBRElement\");\n\nvar setDraftEditorSelection = require(\"./setDraftEditorSelection\").setDraftEditorSelection;\n\n/**\n * All leaf nodes in the editor are spans with single text nodes. Leaf\n * elements are styled based on the merging of an optional custom style map\n * and a default style map.\n *\n * `DraftEditorLeaf` also provides a wrapper for calling into the imperative\n * DOM Selection API. In this way, top-level components can declaratively\n * maintain the selection state.\n */\nvar DraftEditorLeaf = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorLeaf, _React$Component);\n\n function DraftEditorLeaf() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_this), \"leaf\", void 0);\n\n return _this;\n }\n\n var _proto = DraftEditorLeaf.prototype;\n\n _proto._setSelection = function _setSelection() {\n var selection = this.props.selection; // If selection state is irrelevant to the parent block, no-op.\n\n if (selection == null || !selection.getHasFocus()) {\n return;\n }\n\n var _this$props = this.props,\n block = _this$props.block,\n start = _this$props.start,\n text = _this$props.text;\n var blockKey = block.getKey();\n var end = start + text.length;\n\n if (!selection.hasEdgeWithin(blockKey, start, end)) {\n return;\n } // Determine the appropriate target node for selection. If the child\n // is not a text node, it is a <br /> spacer. In this case, use the\n // <span> itself as the selection target.\n\n\n var node = this.leaf;\n !node ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing node') : invariant(false) : void 0;\n var child = node.firstChild;\n !child ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing child') : invariant(false) : void 0;\n var targetNode;\n\n if (child.nodeType === Node.TEXT_NODE) {\n targetNode = child;\n } else if (isHTMLBRElement(child)) {\n targetNode = node;\n } else {\n targetNode = child.firstChild;\n !targetNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing targetNode') : invariant(false) : void 0;\n }\n\n setDraftEditorSelection(selection, targetNode, blockKey, start, end);\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var leafNode = this.leaf;\n !leafNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing leafNode') : invariant(false) : void 0;\n var shouldUpdate = leafNode.textContent !== nextProps.text || nextProps.styleSet !== this.props.styleSet || nextProps.forceSelection;\n return shouldUpdate;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this._setSelection();\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this._setSelection();\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var block = this.props.block;\n var text = this.props.text; // If the leaf is at the end of its block and ends in a soft newline, append\n // an extra line feed character. Browsers collapse trailing newline\n // characters, which leaves the cursor in the wrong place after a\n // shift+enter. The extra character repairs this.\n\n if (text.endsWith('\\n') && this.props.isLast) {\n text += '\\n';\n }\n\n var _this$props2 = this.props,\n customStyleMap = _this$props2.customStyleMap,\n customStyleFn = _this$props2.customStyleFn,\n offsetKey = _this$props2.offsetKey,\n styleSet = _this$props2.styleSet;\n var styleObj = styleSet.reduce(function (map, styleName) {\n var mergedStyles = {};\n var style = customStyleMap[styleName];\n\n if (style !== undefined && map.textDecoration !== style.textDecoration) {\n // .trim() is necessary for IE9/10/11 and Edge\n mergedStyles.textDecoration = [map.textDecoration, style.textDecoration].join(' ').trim();\n }\n\n return _assign(map, style, mergedStyles);\n }, {});\n\n if (customStyleFn) {\n var newStyles = customStyleFn(styleSet, block);\n styleObj = _assign(styleObj, newStyles);\n }\n\n return React.createElement(\"span\", {\n \"data-offset-key\": offsetKey,\n ref: function ref(_ref) {\n return _this2.leaf = _ref;\n },\n style: styleObj\n }, React.createElement(DraftEditorTextNode, null, text));\n };\n\n return DraftEditorLeaf;\n}(React.Component);\n\nmodule.exports = DraftEditorLeaf;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar DraftEditorDecoratedLeaves = require(\"./DraftEditorDecoratedLeaves.react\");\n\nvar DraftEditorLeaf = require(\"./DraftEditorLeaf.react\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar List = Immutable.List;\n\nvar DraftEditorNode = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorNode, _React$Component);\n\n function DraftEditorNode() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = DraftEditorNode.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n block = _this$props.block,\n contentState = _this$props.contentState,\n customStyleFn = _this$props.customStyleFn,\n customStyleMap = _this$props.customStyleMap,\n decorator = _this$props.decorator,\n direction = _this$props.direction,\n forceSelection = _this$props.forceSelection,\n hasSelection = _this$props.hasSelection,\n selection = _this$props.selection,\n tree = _this$props.tree;\n var blockKey = block.getKey();\n var text = block.getText();\n var lastLeafSet = tree.size - 1;\n var children = this.props.children || tree.map(function (leafSet, ii) {\n var decoratorKey = leafSet.get('decoratorKey');\n var leavesForLeafSet = leafSet.get('leaves');\n var lastLeaf = leavesForLeafSet.size - 1;\n var Leaves = leavesForLeafSet.map(function (leaf, jj) {\n var offsetKey = DraftOffsetKey.encode(blockKey, ii, jj);\n var start = leaf.get('start');\n var end = leaf.get('end');\n return React.createElement(DraftEditorLeaf, {\n key: offsetKey,\n offsetKey: offsetKey,\n block: block,\n start: start,\n selection: hasSelection ? selection : null,\n forceSelection: forceSelection,\n text: text.slice(start, end),\n styleSet: block.getInlineStyleAt(start),\n customStyleMap: customStyleMap,\n customStyleFn: customStyleFn,\n isLast: decoratorKey === lastLeafSet && jj === lastLeaf\n });\n }).toArray();\n\n if (!decoratorKey || !decorator) {\n return Leaves;\n }\n\n return React.createElement(DraftEditorDecoratedLeaves, {\n block: block,\n children: Leaves,\n contentState: contentState,\n decorator: decorator,\n decoratorKey: decoratorKey,\n direction: direction,\n leafSet: leafSet,\n text: text,\n key: ii\n });\n }).toArray();\n return React.createElement(\"div\", {\n \"data-offset-key\": DraftOffsetKey.encode(blockKey, 0, 0),\n className: cx({\n 'public/DraftStyleDefault/block': true,\n 'public/DraftStyleDefault/ltr': direction === 'LTR',\n 'public/DraftStyleDefault/rtl': direction === 'RTL'\n })\n }, children);\n };\n\n return DraftEditorNode;\n}(React.Component);\n\nmodule.exports = DraftEditorNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar React = require(\"react\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\n/**\n * This component is responsible for rendering placeholder text for the\n * `DraftEditor` component.\n *\n * Override placeholder style via CSS.\n */\nvar DraftEditorPlaceholder = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorPlaceholder, _React$Component);\n\n function DraftEditorPlaceholder() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = DraftEditorPlaceholder.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return this.props.text !== nextProps.text || this.props.editorState.getSelection().getHasFocus() !== nextProps.editorState.getSelection().getHasFocus();\n };\n\n _proto.render = function render() {\n var hasFocus = this.props.editorState.getSelection().getHasFocus();\n var className = cx({\n 'public/DraftEditorPlaceholder/root': true,\n 'public/DraftEditorPlaceholder/hasFocus': hasFocus\n });\n var contentStyle = {\n whiteSpace: 'pre-wrap'\n };\n return React.createElement(\"div\", {\n className: className\n }, React.createElement(\"div\", {\n className: cx('public/DraftEditorPlaceholder/inner'),\n id: this.props.accessibilityID,\n style: contentStyle\n }, this.props.text));\n };\n\n return DraftEditorPlaceholder;\n}(React.Component);\n\nmodule.exports = DraftEditorPlaceholder;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar React = require(\"react\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isElement = require(\"./isElement\"); // In IE, spans with <br> tags render as two newlines. By rendering a span\n// with only a newline character, we can be sure to render a single line.\n\n\nvar useNewlineChar = UserAgent.isBrowser('IE <= 11');\n/**\n * Check whether the node should be considered a newline.\n */\n\nfunction isNewline(node) {\n return useNewlineChar ? node.textContent === '\\n' : node.tagName === 'BR';\n}\n/**\n * Placeholder elements for empty text content.\n *\n * What is this `data-text` attribute, anyway? It turns out that we need to\n * put an attribute on the lowest-level text node in order to preserve correct\n * spellcheck handling. If the <span> is naked, Chrome and Safari may do\n * bizarre things to do the DOM -- split text nodes, create extra spans, etc.\n * If the <span> has an attribute, this appears not to happen.\n * See http://jsfiddle.net/9khdavod/ for the failure case, and\n * http://jsfiddle.net/7pg143f7/ for the fixed case.\n */\n\n\nvar NEWLINE_A = function NEWLINE_A(ref) {\n return useNewlineChar ? React.createElement(\"span\", {\n key: \"A\",\n \"data-text\": \"true\",\n ref: ref\n }, '\\n') : React.createElement(\"br\", {\n key: \"A\",\n \"data-text\": \"true\",\n ref: ref\n });\n};\n\nvar NEWLINE_B = function NEWLINE_B(ref) {\n return useNewlineChar ? React.createElement(\"span\", {\n key: \"B\",\n \"data-text\": \"true\",\n ref: ref\n }, '\\n') : React.createElement(\"br\", {\n key: \"B\",\n \"data-text\": \"true\",\n ref: ref\n });\n};\n\n/**\n * The lowest-level component in a `DraftEditor`, the text node component\n * replaces the default React text node implementation. This allows us to\n * perform custom handling of newline behavior and avoid re-rendering text\n * nodes with DOM state that already matches the expectations of our immutable\n * editor state.\n */\nvar DraftEditorTextNode = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(DraftEditorTextNode, _React$Component);\n\n function DraftEditorTextNode(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this; // By flipping this flag, we also keep flipping keys which forces\n // React to remount this node every time it rerenders.\n\n _defineProperty(_assertThisInitialized(_this), \"_forceFlag\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_node\", void 0);\n\n _this._forceFlag = false;\n return _this;\n }\n\n var _proto = DraftEditorTextNode.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n var node = this._node;\n var shouldBeNewline = nextProps.children === '';\n !isElement(node) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'node is not an Element') : invariant(false) : void 0;\n var elementNode = node;\n\n if (shouldBeNewline) {\n return !isNewline(elementNode);\n }\n\n return elementNode.textContent !== nextProps.children;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this._forceFlag = !this._forceFlag;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this._forceFlag = !this._forceFlag;\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n if (this.props.children === '') {\n return this._forceFlag ? NEWLINE_A(function (ref) {\n return _this2._node = ref;\n }) : NEWLINE_B(function (ref) {\n return _this2._node = ref;\n });\n }\n\n return React.createElement(\"span\", {\n key: this._forceFlag ? 'A' : 'B',\n \"data-text\": \"true\",\n ref: function ref(_ref) {\n return _this2._node = _ref;\n }\n }, this.props.children);\n };\n\n return DraftEditorTextNode;\n}(React.Component);\n\nmodule.exports = DraftEditorTextNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nmodule.exports = {\n initODS: function initODS() {},\n handleExtensionCausedError: function handleExtensionCausedError() {}\n};","\"use strict\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar DraftEntityInstance = require(\"./DraftEntityInstance\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar uuid = require(\"./uuid\");\n\nvar Map = Immutable.Map;\nvar instances = Map();\nvar instanceKey = uuid();\n/**\n * Temporary utility for generating the warnings\n */\n\nfunction logWarning(oldMethodCall, newMethodCall) {\n console.warn('WARNING: ' + oldMethodCall + ' will be deprecated soon!\\nPlease use \"' + newMethodCall + '\" instead.');\n}\n\n/**\n * A \"document entity\" is an object containing metadata associated with a\n * piece of text in a ContentBlock.\n *\n * For example, a `link` entity might include a `uri` property. When a\n * ContentBlock is rendered in the browser, text that refers to that link\n * entity may be rendered as an anchor, with the `uri` as the href value.\n *\n * In a ContentBlock, every position in the text may correspond to zero\n * or one entities. This correspondence is tracked using a key string,\n * generated via DraftEntity.create() and used to obtain entity metadata\n * via DraftEntity.get().\n */\nvar DraftEntity = {\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.getLastCreatedEntityKey' instead.\n * ---\n * Get the random key string from whatever entity was last created.\n * We need this to support the new API, as part of transitioning to put Entity\n * storage in contentState.\n */\n getLastCreatedEntityKey: function getLastCreatedEntityKey() {\n logWarning('DraftEntity.getLastCreatedEntityKey', 'contentState.getLastCreatedEntityKey');\n return DraftEntity.__getLastCreatedEntityKey();\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.createEntity' instead.\n * ---\n * Create a DraftEntityInstance and store it for later retrieval.\n *\n * A random key string will be generated and returned. This key may\n * be used to track the entity's usage in a ContentBlock, and for\n * retrieving data about the entity at render time.\n */\n create: function create(type, mutability, data) {\n logWarning('DraftEntity.create', 'contentState.createEntity');\n return DraftEntity.__create(type, mutability, data);\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.addEntity' instead.\n * ---\n * Add an existing DraftEntityInstance to the DraftEntity map. This is\n * useful when restoring instances from the server.\n */\n add: function add(instance) {\n logWarning('DraftEntity.add', 'contentState.addEntity');\n return DraftEntity.__add(instance);\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.getEntity' instead.\n * ---\n * Retrieve the entity corresponding to the supplied key string.\n */\n get: function get(key) {\n logWarning('DraftEntity.get', 'contentState.getEntity');\n return DraftEntity.__get(key);\n },\n\n /**\n * Get all the entities in the content state.\n */\n __getAll: function __getAll() {\n return instances;\n },\n\n /**\n * Load the entity map with the given set of entities.\n */\n __loadWithEntities: function __loadWithEntities(entities) {\n instances = entities;\n instanceKey = uuid();\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.mergeEntityData' instead.\n * ---\n * Entity instances are immutable. If you need to update the data for an\n * instance, this method will merge your data updates and return a new\n * instance.\n */\n mergeData: function mergeData(key, toMerge) {\n logWarning('DraftEntity.mergeData', 'contentState.mergeEntityData');\n return DraftEntity.__mergeData(key, toMerge);\n },\n\n /**\n * WARNING: This method will be deprecated soon!\n * Please use 'contentState.replaceEntityData' instead.\n * ---\n * Completely replace the data for a given instance.\n */\n replaceData: function replaceData(key, newData) {\n logWarning('DraftEntity.replaceData', 'contentState.replaceEntityData');\n return DraftEntity.__replaceData(key, newData);\n },\n // ***********************************WARNING******************************\n // --- the above public API will be deprecated in the next version of Draft!\n // The methods below this line are private - don't call them directly.\n\n /**\n * Get the random key string from whatever entity was last created.\n * We need this to support the new API, as part of transitioning to put Entity\n * storage in contentState.\n */\n __getLastCreatedEntityKey: function __getLastCreatedEntityKey() {\n return instanceKey;\n },\n\n /**\n * Create a DraftEntityInstance and store it for later retrieval.\n *\n * A random key string will be generated and returned. This key may\n * be used to track the entity's usage in a ContentBlock, and for\n * retrieving data about the entity at render time.\n */\n __create: function __create(type, mutability, data) {\n return DraftEntity.__add(new DraftEntityInstance({\n type: type,\n mutability: mutability,\n data: data || {}\n }));\n },\n\n /**\n * Add an existing DraftEntityInstance to the DraftEntity map. This is\n * useful when restoring instances from the server.\n */\n __add: function __add(instance) {\n instanceKey = uuid();\n instances = instances.set(instanceKey, instance);\n return instanceKey;\n },\n\n /**\n * Retrieve the entity corresponding to the supplied key string.\n */\n __get: function __get(key) {\n var instance = instances.get(key);\n !!!instance ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unknown DraftEntity key: %s.', key) : invariant(false) : void 0;\n return instance;\n },\n\n /**\n * Entity instances are immutable. If you need to update the data for an\n * instance, this method will merge your data updates and return a new\n * instance.\n */\n __mergeData: function __mergeData(key, toMerge) {\n var instance = DraftEntity.__get(key);\n\n var newData = _objectSpread({}, instance.getData(), toMerge);\n\n var newInstance = instance.set('data', newData);\n instances = instances.set(key, newInstance);\n return newInstance;\n },\n\n /**\n * Completely replace the data for a given instance.\n */\n __replaceData: function __replaceData(key, newData) {\n var instance = DraftEntity.__get(key);\n\n var newInstance = instance.set('data', newData);\n instances = instances.set(key, newInstance);\n return newInstance;\n }\n};\nmodule.exports = DraftEntity;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @legacyServerCallableInstance\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Immutable = require(\"immutable\");\n\nvar Record = Immutable.Record;\nvar DraftEntityInstanceRecord = Record({\n type: 'TOKEN',\n mutability: 'IMMUTABLE',\n data: Object\n});\n/**\n * An instance of a document entity, consisting of a `type` and relevant\n * `data`, metadata about the entity.\n *\n * For instance, a \"link\" entity might provide a URI, and a \"mention\"\n * entity might provide the mentioned user's ID. These pieces of data\n * may be used when rendering the entity as part of a ContentBlock DOM\n * representation. For a link, the data would be used as an href for\n * the rendered anchor. For a mention, the ID could be used to retrieve\n * a hovercard.\n */\n\nvar DraftEntityInstance = /*#__PURE__*/function (_DraftEntityInstanceR) {\n _inheritsLoose(DraftEntityInstance, _DraftEntityInstanceR);\n\n function DraftEntityInstance() {\n return _DraftEntityInstanceR.apply(this, arguments) || this;\n }\n\n var _proto = DraftEntityInstance.prototype;\n\n _proto.getType = function getType() {\n return this.get('type');\n };\n\n _proto.getMutability = function getMutability() {\n return this.get('mutability');\n };\n\n _proto.getData = function getData() {\n return this.get('data');\n };\n\n return DraftEntityInstance;\n}(DraftEntityInstanceRecord);\n\nmodule.exports = DraftEntityInstance;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Identify the range to delete from a segmented entity.\n *\n * Rules:\n *\n * Example: 'John F. Kennedy'\n *\n * - Deletion from within any non-whitespace (i.e. ['John', 'F.', 'Kennedy'])\n * will return the range of that text.\n *\n * 'John F. Kennedy' -> 'John F.'\n * ^\n *\n * - Forward deletion of whitespace will remove the following section:\n *\n * 'John F. Kennedy' -> 'John Kennedy'\n * ^\n *\n * - Backward deletion of whitespace will remove the previous section:\n *\n * 'John F. Kennedy' -> 'F. Kennedy'\n * ^\n */\nvar DraftEntitySegments = {\n getRemovalRange: function getRemovalRange(selectionStart, selectionEnd, text, entityStart, direction) {\n var segments = text.split(' ');\n segments = segments.map(function (\n /*string*/\n segment,\n /*number*/\n ii) {\n if (direction === 'forward') {\n if (ii > 0) {\n return ' ' + segment;\n }\n } else if (ii < segments.length - 1) {\n return segment + ' ';\n }\n\n return segment;\n });\n var segmentStart = entityStart;\n var segmentEnd;\n var segment;\n var removalStart = null;\n var removalEnd = null;\n\n for (var jj = 0; jj < segments.length; jj++) {\n segment = segments[jj];\n segmentEnd = segmentStart + segment.length; // Our selection overlaps this segment.\n\n if (selectionStart < segmentEnd && segmentStart < selectionEnd) {\n if (removalStart !== null) {\n removalEnd = segmentEnd;\n } else {\n removalStart = segmentStart;\n removalEnd = segmentEnd;\n }\n } else if (removalStart !== null) {\n break;\n }\n\n segmentStart = segmentEnd;\n }\n\n var entityEnd = entityStart + text.length;\n var atStart = removalStart === entityStart;\n var atEnd = removalEnd === entityEnd;\n\n if (!atStart && atEnd || atStart && !atEnd) {\n if (direction === 'forward') {\n if (removalEnd !== entityEnd) {\n removalEnd++;\n }\n } else if (removalStart !== entityStart) {\n removalStart--;\n }\n }\n\n return {\n start: removalStart,\n end: removalEnd\n };\n }\n};\nmodule.exports = DraftEntitySegments;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nmodule.exports = {\n logBlockedSelectionEvent: function logBlockedSelectionEvent() {\n return null;\n },\n logSelectionStateFailure: function logSelectionStateFailure() {\n return null;\n }\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentStateInlineStyle = require(\"./ContentStateInlineStyle\");\n\nvar applyEntityToContentState = require(\"./applyEntityToContentState\");\n\nvar getCharacterRemovalRange = require(\"./getCharacterRemovalRange\");\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n\nvar Immutable = require(\"immutable\");\n\nvar insertFragmentIntoContentState = require(\"./insertFragmentIntoContentState\");\n\nvar insertTextIntoContentState = require(\"./insertTextIntoContentState\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar modifyBlockForContentState = require(\"./modifyBlockForContentState\");\n\nvar removeEntitiesAtEdges = require(\"./removeEntitiesAtEdges\");\n\nvar removeRangeFromContentState = require(\"./removeRangeFromContentState\");\n\nvar splitBlockInContentState = require(\"./splitBlockInContentState\");\n\nvar OrderedSet = Immutable.OrderedSet;\n/**\n * `DraftModifier` provides a set of convenience methods that apply\n * modifications to a `ContentState` object based on a target `SelectionState`.\n *\n * Any change to a `ContentState` should be decomposable into a series of\n * transaction functions that apply the required changes and return output\n * `ContentState` objects.\n *\n * These functions encapsulate some of the most common transaction sequences.\n */\n\nvar DraftModifier = {\n replaceText: function replaceText(contentState, rangeToReplace, text, inlineStyle, entityKey) {\n var withoutEntities = removeEntitiesAtEdges(contentState, rangeToReplace);\n var withoutText = removeRangeFromContentState(withoutEntities, rangeToReplace);\n var character = CharacterMetadata.create({\n style: inlineStyle || OrderedSet(),\n entity: entityKey || null\n });\n return insertTextIntoContentState(withoutText, withoutText.getSelectionAfter(), text, character);\n },\n insertText: function insertText(contentState, targetRange, text, inlineStyle, entityKey) {\n !targetRange.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Target range must be collapsed for `insertText`.') : invariant(false) : void 0;\n return DraftModifier.replaceText(contentState, targetRange, text, inlineStyle, entityKey);\n },\n moveText: function moveText(contentState, removalRange, targetRange) {\n var movedFragment = getContentStateFragment(contentState, removalRange);\n var afterRemoval = DraftModifier.removeRange(contentState, removalRange, 'backward');\n return DraftModifier.replaceWithFragment(afterRemoval, targetRange, movedFragment);\n },\n replaceWithFragment: function replaceWithFragment(contentState, targetRange, fragment) {\n var mergeBlockData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'REPLACE_WITH_NEW_DATA';\n var withoutEntities = removeEntitiesAtEdges(contentState, targetRange);\n var withoutText = removeRangeFromContentState(withoutEntities, targetRange);\n return insertFragmentIntoContentState(withoutText, withoutText.getSelectionAfter(), fragment, mergeBlockData);\n },\n removeRange: function removeRange(contentState, rangeToRemove, removalDirection) {\n var startKey, endKey, startBlock, endBlock;\n\n if (rangeToRemove.getIsBackward()) {\n rangeToRemove = rangeToRemove.merge({\n anchorKey: rangeToRemove.getFocusKey(),\n anchorOffset: rangeToRemove.getFocusOffset(),\n focusKey: rangeToRemove.getAnchorKey(),\n focusOffset: rangeToRemove.getAnchorOffset(),\n isBackward: false\n });\n }\n\n startKey = rangeToRemove.getAnchorKey();\n endKey = rangeToRemove.getFocusKey();\n startBlock = contentState.getBlockForKey(startKey);\n endBlock = contentState.getBlockForKey(endKey);\n var startOffset = rangeToRemove.getStartOffset();\n var endOffset = rangeToRemove.getEndOffset();\n var startEntityKey = startBlock.getEntityAt(startOffset);\n var endEntityKey = endBlock.getEntityAt(endOffset - 1); // Check whether the selection state overlaps with a single entity.\n // If so, try to remove the appropriate substring of the entity text.\n\n if (startKey === endKey) {\n if (startEntityKey && startEntityKey === endEntityKey) {\n var adjustedRemovalRange = getCharacterRemovalRange(contentState.getEntityMap(), startBlock, endBlock, rangeToRemove, removalDirection);\n return removeRangeFromContentState(contentState, adjustedRemovalRange);\n }\n }\n\n var withoutEntities = removeEntitiesAtEdges(contentState, rangeToRemove);\n return removeRangeFromContentState(withoutEntities, rangeToRemove);\n },\n splitBlock: function splitBlock(contentState, selectionState) {\n var withoutEntities = removeEntitiesAtEdges(contentState, selectionState);\n var withoutText = removeRangeFromContentState(withoutEntities, selectionState);\n return splitBlockInContentState(withoutText, withoutText.getSelectionAfter());\n },\n applyInlineStyle: function applyInlineStyle(contentState, selectionState, inlineStyle) {\n return ContentStateInlineStyle.add(contentState, selectionState, inlineStyle);\n },\n removeInlineStyle: function removeInlineStyle(contentState, selectionState, inlineStyle) {\n return ContentStateInlineStyle.remove(contentState, selectionState, inlineStyle);\n },\n setBlockType: function setBlockType(contentState, selectionState, blockType) {\n return modifyBlockForContentState(contentState, selectionState, function (block) {\n return block.merge({\n type: blockType,\n depth: 0\n });\n });\n },\n setBlockData: function setBlockData(contentState, selectionState, blockData) {\n return modifyBlockForContentState(contentState, selectionState, function (block) {\n return block.merge({\n data: blockData\n });\n });\n },\n mergeBlockData: function mergeBlockData(contentState, selectionState, blockData) {\n return modifyBlockForContentState(contentState, selectionState, function (block) {\n return block.merge({\n data: block.getData().merge(blockData)\n });\n });\n },\n applyEntity: function applyEntity(contentState, selectionState, entityKey) {\n var withoutEntities = removeEntitiesAtEdges(contentState, selectionState);\n return applyEntityToContentState(withoutEntities, selectionState, entityKey);\n }\n};\nmodule.exports = DraftModifier;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar KEY_DELIMITER = '-';\nvar DraftOffsetKey = {\n encode: function encode(blockKey, decoratorKey, leafKey) {\n return blockKey + KEY_DELIMITER + decoratorKey + KEY_DELIMITER + leafKey;\n },\n decode: function decode(offsetKey) {\n // Extracts the last two parts of offsetKey and captures the rest in blockKeyParts\n var _offsetKey$split$reve = offsetKey.split(KEY_DELIMITER).reverse(),\n leafKey = _offsetKey$split$reve[0],\n decoratorKey = _offsetKey$split$reve[1],\n blockKeyParts = _offsetKey$split$reve.slice(2);\n\n return {\n // Recomposes the parts of blockKey after reversing them\n blockKey: blockKeyParts.reverse().join(KEY_DELIMITER),\n decoratorKey: parseInt(decoratorKey, 10),\n leafKey: parseInt(leafKey, 10)\n };\n }\n};\nmodule.exports = DraftOffsetKey;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar convertFromHTMLToContentBlocks = require(\"./convertFromHTMLToContentBlocks\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getSafeBodyFromHTML = require(\"./getSafeBodyFromHTML\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar sanitizeDraftText = require(\"./sanitizeDraftText\");\n\nvar List = Immutable.List,\n Repeat = Immutable.Repeat;\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar ContentBlockRecord = experimentalTreeDataSupport ? ContentBlockNode : ContentBlock;\nvar DraftPasteProcessor = {\n processHTML: function processHTML(html, blockRenderMap) {\n return convertFromHTMLToContentBlocks(html, getSafeBodyFromHTML, blockRenderMap);\n },\n processText: function processText(textBlocks, character, type) {\n return textBlocks.reduce(function (acc, textLine, index) {\n textLine = sanitizeDraftText(textLine);\n var key = generateRandomKey();\n var blockNodeConfig = {\n key: key,\n type: type,\n text: textLine,\n characterList: List(Repeat(character, textLine.length))\n }; // next block updates previous block\n\n if (experimentalTreeDataSupport && index !== 0) {\n var prevSiblingIndex = index - 1; // update previous block\n\n var previousBlock = acc[prevSiblingIndex] = acc[prevSiblingIndex].merge({\n nextSibling: key\n });\n blockNodeConfig = _objectSpread({}, blockNodeConfig, {\n prevSibling: previousBlock.getKey()\n });\n }\n\n acc.push(new ContentBlockRecord(blockNodeConfig));\n return acc;\n }, []);\n }\n};\nmodule.exports = DraftPasteProcessor;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar TokenizeUtil = require(\"fbjs/lib/TokenizeUtil\");\n\nvar punctuation = TokenizeUtil.getPunctuation(); // The apostrophe and curly single quotes behave in a curious way: when\n// surrounded on both sides by word characters, they behave as word chars; when\n// either neighbor is punctuation or an end of the string, they behave as\n// punctuation.\n\nvar CHAMELEON_CHARS = \"['\\u2018\\u2019]\"; // Remove the underscore, which should count as part of the removable word. The\n// \"chameleon chars\" also count as punctuation in this regex.\n\nvar WHITESPACE_AND_PUNCTUATION = '\\\\s|(?![_])' + punctuation;\nvar DELETE_STRING = '^' + '(?:' + WHITESPACE_AND_PUNCTUATION + ')*' + '(?:' + CHAMELEON_CHARS + '|(?!' + WHITESPACE_AND_PUNCTUATION + ').)*' + '(?:(?!' + WHITESPACE_AND_PUNCTUATION + ').)';\nvar DELETE_REGEX = new RegExp(DELETE_STRING);\nvar BACKSPACE_STRING = '(?:(?!' + WHITESPACE_AND_PUNCTUATION + ').)' + '(?:' + CHAMELEON_CHARS + '|(?!' + WHITESPACE_AND_PUNCTUATION + ').)*' + '(?:' + WHITESPACE_AND_PUNCTUATION + ')*' + '$';\nvar BACKSPACE_REGEX = new RegExp(BACKSPACE_STRING);\n\nfunction getRemovableWord(text, isBackward) {\n var matches = isBackward ? BACKSPACE_REGEX.exec(text) : DELETE_REGEX.exec(text);\n return matches ? matches[0] : text;\n}\n\nvar DraftRemovableWord = {\n getBackward: function getBackward(text) {\n return getRemovableWord(text, true);\n },\n getForward: function getForward(text) {\n return getRemovableWord(text, false);\n }\n};\nmodule.exports = DraftRemovableWord;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftStringKey = {\n stringify: function stringify(key) {\n return '_' + String(key);\n },\n unstringify: function unstringify(key) {\n return key.slice(1);\n }\n};\nmodule.exports = DraftStringKey;","\"use strict\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar traverseInDepthOrder = function traverseInDepthOrder(blocks, fn) {\n var stack = [].concat(blocks).reverse();\n\n while (stack.length) {\n var _block = stack.pop();\n\n fn(_block);\n var children = _block.children;\n !Array.isArray(children) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid tree raw block') : invariant(false) : void 0;\n stack = stack.concat([].concat(children.reverse()));\n }\n};\n\nvar isListBlock = function isListBlock(block) {\n if (!(block && block.type)) {\n return false;\n }\n\n var type = block.type;\n return type === 'unordered-list-item' || type === 'ordered-list-item';\n};\n\nvar addDepthToChildren = function addDepthToChildren(block) {\n if (Array.isArray(block.children)) {\n block.children = block.children.map(function (child) {\n return child.type === block.type ? _objectSpread({}, child, {\n depth: (block.depth || 0) + 1\n }) : child;\n });\n }\n};\n/**\n * This adapter is intended to be be used as an adapter to draft tree data\n *\n * draft state <=====> draft tree state\n */\n\n\nvar DraftTreeAdapter = {\n /**\n * Converts from a tree raw state back to draft raw state\n */\n fromRawTreeStateToRawState: function fromRawTreeStateToRawState(draftTreeState) {\n var blocks = draftTreeState.blocks;\n var transformedBlocks = [];\n !Array.isArray(blocks) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid raw state') : invariant(false) : void 0;\n\n if (!Array.isArray(blocks) || !blocks.length) {\n return draftTreeState;\n }\n\n traverseInDepthOrder(blocks, function (block) {\n var newBlock = _objectSpread({}, block);\n\n if (isListBlock(block)) {\n newBlock.depth = newBlock.depth || 0;\n addDepthToChildren(block); // if it's a non-leaf node, we don't do anything else\n\n if (block.children != null && block.children.length > 0) {\n return;\n }\n }\n\n delete newBlock.children;\n transformedBlocks.push(newBlock);\n });\n draftTreeState.blocks = transformedBlocks;\n return _objectSpread({}, draftTreeState, {\n blocks: transformedBlocks\n });\n },\n\n /**\n * Converts from draft raw state to tree draft state\n */\n fromRawStateToRawTreeState: function fromRawStateToRawTreeState(draftState) {\n var transformedBlocks = [];\n var parentStack = [];\n draftState.blocks.forEach(function (block) {\n var isList = isListBlock(block);\n var depth = block.depth || 0;\n\n var treeBlock = _objectSpread({}, block, {\n children: []\n });\n\n if (!isList) {\n transformedBlocks.push(treeBlock);\n return;\n }\n\n var lastParent = parentStack[0]; // block is non-nested & there are no nested blocks, directly push block\n\n if (lastParent == null && depth === 0) {\n transformedBlocks.push(treeBlock); // block is first nested block or previous nested block is at a lower level\n } else if (lastParent == null || lastParent.depth < depth - 1) {\n // create new parent block\n var newParent = {\n key: generateRandomKey(),\n text: '',\n depth: depth - 1,\n type: block.type,\n children: [],\n entityRanges: [],\n inlineStyleRanges: []\n };\n parentStack.unshift(newParent);\n\n if (depth === 1) {\n // add as a root-level block\n transformedBlocks.push(newParent);\n } else if (lastParent != null) {\n // depth > 1 => also add as previous parent's child\n lastParent.children.push(newParent);\n }\n\n newParent.children.push(treeBlock);\n } else if (lastParent.depth === depth - 1) {\n // add as child of last parent\n lastParent.children.push(treeBlock);\n } else {\n // pop out parents at levels above this one from the parent stack\n while (lastParent != null && lastParent.depth >= depth) {\n parentStack.shift();\n lastParent = parentStack[0];\n }\n\n if (depth > 0) {\n lastParent.children.push(treeBlock);\n } else {\n transformedBlocks.push(treeBlock);\n }\n }\n });\n return _objectSpread({}, draftState, {\n blocks: transformedBlocks\n });\n }\n};\nmodule.exports = DraftTreeAdapter;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\nvar warning = require(\"fbjs/lib/warning\");\n\nvar DraftTreeInvariants = {\n /**\n * Check if the block is valid\n */\n isValidBlock: function isValidBlock(block, blockMap) {\n var key = block.getKey(); // is its parent's child\n\n var parentKey = block.getParentKey();\n\n if (parentKey != null) {\n var parent = blockMap.get(parentKey);\n\n if (!parent.getChildKeys().includes(key)) {\n process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is missing parent -> child pointer on %s', key) : void 0;\n return false;\n }\n } // is its children's parent\n\n\n var children = block.getChildKeys().map(function (k) {\n return blockMap.get(k);\n });\n\n if (!children.every(function (c) {\n return c.getParentKey() === key;\n })) {\n process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is missing child -> parent pointer on %s', key) : void 0;\n return false;\n } // is its previous sibling's next sibling\n\n\n var prevSiblingKey = block.getPrevSiblingKey();\n\n if (prevSiblingKey != null) {\n var prevSibling = blockMap.get(prevSiblingKey);\n\n if (prevSibling.getNextSiblingKey() !== key) {\n process.env.NODE_ENV !== \"production\" ? warning(true, \"Tree is missing nextSibling pointer on %s's prevSibling\", key) : void 0;\n return false;\n }\n } // is its next sibling's previous sibling\n\n\n var nextSiblingKey = block.getNextSiblingKey();\n\n if (nextSiblingKey != null) {\n var nextSibling = blockMap.get(nextSiblingKey);\n\n if (nextSibling.getPrevSiblingKey() !== key) {\n process.env.NODE_ENV !== \"production\" ? warning(true, \"Tree is missing prevSibling pointer on %s's nextSibling\", key) : void 0;\n return false;\n }\n } // no 2-node cycles\n\n\n if (nextSiblingKey !== null && prevSiblingKey !== null) {\n if (prevSiblingKey === nextSiblingKey) {\n process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree has a two-node cycle at %s', key) : void 0;\n return false;\n }\n } // if it's a leaf node, it has text but no children\n\n\n if (block.text != '') {\n if (block.getChildKeys().size > 0) {\n process.env.NODE_ENV !== \"production\" ? warning(true, 'Leaf node %s has children', key) : void 0;\n return false;\n }\n }\n\n return true;\n },\n\n /**\n * Checks that this is a connected tree on all the blocks\n * starting from the first block, traversing nextSibling and child pointers\n * should be a tree (preorder traversal - parent, then children)\n * num of connected node === number of blocks\n */\n isConnectedTree: function isConnectedTree(blockMap) {\n // exactly one node has no previous sibling + no parent\n var eligibleFirstNodes = blockMap.toArray().filter(function (block) {\n return block.getParentKey() == null && block.getPrevSiblingKey() == null;\n });\n\n if (eligibleFirstNodes.length !== 1) {\n process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is not connected. More or less than one first node') : void 0;\n return false;\n }\n\n var firstNode = eligibleFirstNodes.shift();\n var nodesSeen = 0;\n var currentKey = firstNode.getKey();\n var visitedStack = [];\n\n while (currentKey != null) {\n var currentNode = blockMap.get(currentKey);\n var childKeys = currentNode.getChildKeys();\n var nextSiblingKey = currentNode.getNextSiblingKey(); // if the node has children, add parent's next sibling to stack and go to children\n\n if (childKeys.size > 0) {\n if (nextSiblingKey != null) {\n visitedStack.unshift(nextSiblingKey);\n }\n\n var children = childKeys.map(function (k) {\n return blockMap.get(k);\n });\n\n var _firstNode = children.find(function (block) {\n return block.getPrevSiblingKey() == null;\n });\n\n if (_firstNode == null) {\n process.env.NODE_ENV !== \"production\" ? warning(true, '%s has no first child', currentKey) : void 0;\n return false;\n }\n\n currentKey = _firstNode.getKey(); // TODO(T32490138): Deal with multi-node cycles here\n } else {\n if (currentNode.getNextSiblingKey() != null) {\n currentKey = currentNode.getNextSiblingKey();\n } else {\n currentKey = visitedStack.shift();\n }\n }\n\n nodesSeen++;\n }\n\n if (nodesSeen !== blockMap.size) {\n process.env.NODE_ENV !== \"production\" ? warning(true, 'Tree is not connected. %s nodes were seen instead of %s', nodesSeen, blockMap.size) : void 0;\n return false;\n }\n\n return true;\n },\n\n /**\n * Checks that the block map is a connected tree with valid blocks\n */\n isValidTree: function isValidTree(blockMap) {\n var _this = this;\n\n var blocks = blockMap.toArray();\n\n if (!blocks.every(function (block) {\n return _this.isValidBlock(block, blockMap);\n })) {\n return false;\n }\n\n return this.isConnectedTree(blockMap);\n }\n};\nmodule.exports = DraftTreeInvariants;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeBidiService = require(\"fbjs/lib/UnicodeBidiService\");\n\nvar Immutable = require(\"immutable\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar OrderedMap = Immutable.OrderedMap;\nvar bidiService;\nvar EditorBidiService = {\n getDirectionMap: function getDirectionMap(content, prevBidiMap) {\n if (!bidiService) {\n bidiService = new UnicodeBidiService();\n } else {\n bidiService.reset();\n }\n\n var blockMap = content.getBlockMap();\n var nextBidi = blockMap.valueSeq().map(function (block) {\n return nullthrows(bidiService).getDirection(block.getText());\n });\n var bidiMap = OrderedMap(blockMap.keySeq().zip(nextBidi));\n\n if (prevBidiMap != null && Immutable.is(prevBidiMap, bidiMap)) {\n return prevBidiMap;\n }\n\n return bidiMap;\n }\n};\nmodule.exports = EditorBidiService;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar BlockTree = require(\"./BlockTree\");\n\nvar ContentState = require(\"./ContentState\");\n\nvar EditorBidiService = require(\"./EditorBidiService\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar Immutable = require(\"immutable\");\n\nvar OrderedSet = Immutable.OrderedSet,\n Record = Immutable.Record,\n Stack = Immutable.Stack,\n OrderedMap = Immutable.OrderedMap,\n List = Immutable.List; // When configuring an editor, the user can chose to provide or not provide\n// basically all keys. `currentContent` varies, so this type doesn't include it.\n// (See the types defined below.)\n\nvar defaultRecord = {\n allowUndo: true,\n currentContent: null,\n decorator: null,\n directionMap: null,\n forceSelection: false,\n inCompositionMode: false,\n inlineStyleOverride: null,\n lastChangeType: null,\n nativelyRenderedContent: null,\n redoStack: Stack(),\n selection: null,\n treeMap: null,\n undoStack: Stack()\n};\nvar EditorStateRecord = Record(defaultRecord);\n\nvar EditorState = /*#__PURE__*/function () {\n EditorState.createEmpty = function createEmpty(decorator) {\n return this.createWithText('', decorator);\n };\n\n EditorState.createWithText = function createWithText(text, decorator) {\n return EditorState.createWithContent(ContentState.createFromText(text), decorator);\n };\n\n EditorState.createWithContent = function createWithContent(contentState, decorator) {\n if (contentState.getBlockMap().count() === 0) {\n return EditorState.createEmpty(decorator);\n }\n\n var firstKey = contentState.getBlockMap().first().getKey();\n return EditorState.create({\n currentContent: contentState,\n undoStack: Stack(),\n redoStack: Stack(),\n decorator: decorator || null,\n selection: SelectionState.createEmpty(firstKey)\n });\n };\n\n EditorState.create = function create(config) {\n var currentContent = config.currentContent,\n decorator = config.decorator;\n\n var recordConfig = _objectSpread({}, config, {\n treeMap: generateNewTreeMap(currentContent, decorator),\n directionMap: EditorBidiService.getDirectionMap(currentContent)\n });\n\n return new EditorState(new EditorStateRecord(recordConfig));\n };\n\n EditorState.fromJS = function fromJS(config) {\n return new EditorState(new EditorStateRecord(_objectSpread({}, config, {\n directionMap: config.directionMap != null ? OrderedMap(config.directionMap) : config.directionMap,\n inlineStyleOverride: config.inlineStyleOverride != null ? OrderedSet(config.inlineStyleOverride) : config.inlineStyleOverride,\n nativelyRenderedContent: config.nativelyRenderedContent != null ? ContentState.fromJS(config.nativelyRenderedContent) : config.nativelyRenderedContent,\n redoStack: config.redoStack != null ? Stack(config.redoStack.map(function (v) {\n return ContentState.fromJS(v);\n })) : config.redoStack,\n selection: config.selection != null ? new SelectionState(config.selection) : config.selection,\n treeMap: config.treeMap != null ? OrderedMap(config.treeMap).map(function (v) {\n return List(v).map(function (v) {\n return BlockTree.fromJS(v);\n });\n }) : config.treeMap,\n undoStack: config.undoStack != null ? Stack(config.undoStack.map(function (v) {\n return ContentState.fromJS(v);\n })) : config.undoStack,\n currentContent: ContentState.fromJS(config.currentContent)\n })));\n };\n\n EditorState.set = function set(editorState, put) {\n var map = editorState.getImmutable().withMutations(function (state) {\n var existingDecorator = state.get('decorator');\n var decorator = existingDecorator;\n\n if (put.decorator === null) {\n decorator = null;\n } else if (put.decorator) {\n decorator = put.decorator;\n }\n\n var newContent = put.currentContent || editorState.getCurrentContent();\n\n if (decorator !== existingDecorator) {\n var treeMap = state.get('treeMap');\n var newTreeMap;\n\n if (decorator && existingDecorator) {\n newTreeMap = regenerateTreeForNewDecorator(newContent, newContent.getBlockMap(), treeMap, decorator, existingDecorator);\n } else {\n newTreeMap = generateNewTreeMap(newContent, decorator);\n }\n\n state.merge({\n decorator: decorator,\n treeMap: newTreeMap,\n nativelyRenderedContent: null\n });\n return;\n }\n\n var existingContent = editorState.getCurrentContent();\n\n if (newContent !== existingContent) {\n state.set('treeMap', regenerateTreeForNewBlocks(editorState, newContent.getBlockMap(), newContent.getEntityMap(), decorator));\n }\n\n state.merge(put);\n });\n return new EditorState(map);\n };\n\n var _proto = EditorState.prototype;\n\n _proto.toJS = function toJS() {\n return this.getImmutable().toJS();\n };\n\n _proto.getAllowUndo = function getAllowUndo() {\n return this.getImmutable().get('allowUndo');\n };\n\n _proto.getCurrentContent = function getCurrentContent() {\n return this.getImmutable().get('currentContent');\n };\n\n _proto.getUndoStack = function getUndoStack() {\n return this.getImmutable().get('undoStack');\n };\n\n _proto.getRedoStack = function getRedoStack() {\n return this.getImmutable().get('redoStack');\n };\n\n _proto.getSelection = function getSelection() {\n return this.getImmutable().get('selection');\n };\n\n _proto.getDecorator = function getDecorator() {\n return this.getImmutable().get('decorator');\n };\n\n _proto.isInCompositionMode = function isInCompositionMode() {\n return this.getImmutable().get('inCompositionMode');\n };\n\n _proto.mustForceSelection = function mustForceSelection() {\n return this.getImmutable().get('forceSelection');\n };\n\n _proto.getNativelyRenderedContent = function getNativelyRenderedContent() {\n return this.getImmutable().get('nativelyRenderedContent');\n };\n\n _proto.getLastChangeType = function getLastChangeType() {\n return this.getImmutable().get('lastChangeType');\n }\n /**\n * While editing, the user may apply inline style commands with a collapsed\n * cursor, intending to type text that adopts the specified style. In this\n * case, we track the specified style as an \"override\" that takes precedence\n * over the inline style of the text adjacent to the cursor.\n *\n * If null, there is no override in place.\n */\n ;\n\n _proto.getInlineStyleOverride = function getInlineStyleOverride() {\n return this.getImmutable().get('inlineStyleOverride');\n };\n\n EditorState.setInlineStyleOverride = function setInlineStyleOverride(editorState, inlineStyleOverride) {\n return EditorState.set(editorState, {\n inlineStyleOverride: inlineStyleOverride\n });\n }\n /**\n * Get the appropriate inline style for the editor state. If an\n * override is in place, use it. Otherwise, the current style is\n * based on the location of the selection state.\n */\n ;\n\n _proto.getCurrentInlineStyle = function getCurrentInlineStyle() {\n var override = this.getInlineStyleOverride();\n\n if (override != null) {\n return override;\n }\n\n var content = this.getCurrentContent();\n var selection = this.getSelection();\n\n if (selection.isCollapsed()) {\n return getInlineStyleForCollapsedSelection(content, selection);\n }\n\n return getInlineStyleForNonCollapsedSelection(content, selection);\n };\n\n _proto.getBlockTree = function getBlockTree(blockKey) {\n return this.getImmutable().getIn(['treeMap', blockKey]);\n };\n\n _proto.isSelectionAtStartOfContent = function isSelectionAtStartOfContent() {\n var firstKey = this.getCurrentContent().getBlockMap().first().getKey();\n return this.getSelection().hasEdgeWithin(firstKey, 0, 0);\n };\n\n _proto.isSelectionAtEndOfContent = function isSelectionAtEndOfContent() {\n var content = this.getCurrentContent();\n var blockMap = content.getBlockMap();\n var last = blockMap.last();\n var end = last.getLength();\n return this.getSelection().hasEdgeWithin(last.getKey(), end, end);\n };\n\n _proto.getDirectionMap = function getDirectionMap() {\n return this.getImmutable().get('directionMap');\n }\n /**\n * Incorporate native DOM selection changes into the EditorState. This\n * method can be used when we simply want to accept whatever the DOM\n * has given us to represent selection, and we do not need to re-render\n * the editor.\n *\n * To forcibly move the DOM selection, see `EditorState.forceSelection`.\n */\n ;\n\n EditorState.acceptSelection = function acceptSelection(editorState, selection) {\n return updateSelection(editorState, selection, false);\n }\n /**\n * At times, we need to force the DOM selection to be where we\n * need it to be. This can occur when the anchor or focus nodes\n * are non-text nodes, for instance. In this case, we want to trigger\n * a re-render of the editor, which in turn forces selection into\n * the correct place in the DOM. The `forceSelection` method\n * accomplishes this.\n *\n * This method should be used in cases where you need to explicitly\n * move the DOM selection from one place to another without a change\n * in ContentState.\n */\n ;\n\n EditorState.forceSelection = function forceSelection(editorState, selection) {\n if (!selection.getHasFocus()) {\n selection = selection.set('hasFocus', true);\n }\n\n return updateSelection(editorState, selection, true);\n }\n /**\n * Move selection to the end of the editor without forcing focus.\n */\n ;\n\n EditorState.moveSelectionToEnd = function moveSelectionToEnd(editorState) {\n var content = editorState.getCurrentContent();\n var lastBlock = content.getLastBlock();\n var lastKey = lastBlock.getKey();\n var length = lastBlock.getLength();\n return EditorState.acceptSelection(editorState, new SelectionState({\n anchorKey: lastKey,\n anchorOffset: length,\n focusKey: lastKey,\n focusOffset: length,\n isBackward: false\n }));\n }\n /**\n * Force focus to the end of the editor. This is useful in scenarios\n * where we want to programmatically focus the input and it makes sense\n * to allow the user to continue working seamlessly.\n */\n ;\n\n EditorState.moveFocusToEnd = function moveFocusToEnd(editorState) {\n var afterSelectionMove = EditorState.moveSelectionToEnd(editorState);\n return EditorState.forceSelection(afterSelectionMove, afterSelectionMove.getSelection());\n }\n /**\n * Push the current ContentState onto the undo stack if it should be\n * considered a boundary state, and set the provided ContentState as the\n * new current content.\n */\n ;\n\n EditorState.push = function push(editorState, contentState, changeType) {\n var forceSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n if (editorState.getCurrentContent() === contentState) {\n return editorState;\n }\n\n var directionMap = EditorBidiService.getDirectionMap(contentState, editorState.getDirectionMap());\n\n if (!editorState.getAllowUndo()) {\n return EditorState.set(editorState, {\n currentContent: contentState,\n directionMap: directionMap,\n lastChangeType: changeType,\n selection: contentState.getSelectionAfter(),\n forceSelection: forceSelection,\n inlineStyleOverride: null\n });\n }\n\n var selection = editorState.getSelection();\n var currentContent = editorState.getCurrentContent();\n var undoStack = editorState.getUndoStack();\n var newContent = contentState;\n\n if (selection !== currentContent.getSelectionAfter() || mustBecomeBoundary(editorState, changeType)) {\n undoStack = undoStack.push(currentContent);\n newContent = newContent.set('selectionBefore', selection);\n } else if (changeType === 'insert-characters' || changeType === 'backspace-character' || changeType === 'delete-character') {\n // Preserve the previous selection.\n newContent = newContent.set('selectionBefore', currentContent.getSelectionBefore());\n }\n\n var inlineStyleOverride = editorState.getInlineStyleOverride(); // Don't discard inline style overrides for the following change types:\n\n var overrideChangeTypes = ['adjust-depth', 'change-block-type', 'split-block'];\n\n if (overrideChangeTypes.indexOf(changeType) === -1) {\n inlineStyleOverride = null;\n }\n\n var editorStateChanges = {\n currentContent: newContent,\n directionMap: directionMap,\n undoStack: undoStack,\n redoStack: Stack(),\n lastChangeType: changeType,\n selection: contentState.getSelectionAfter(),\n forceSelection: forceSelection,\n inlineStyleOverride: inlineStyleOverride\n };\n return EditorState.set(editorState, editorStateChanges);\n }\n /**\n * Make the top ContentState in the undo stack the new current content and\n * push the current content onto the redo stack.\n */\n ;\n\n EditorState.undo = function undo(editorState) {\n if (!editorState.getAllowUndo()) {\n return editorState;\n }\n\n var undoStack = editorState.getUndoStack();\n var newCurrentContent = undoStack.peek();\n\n if (!newCurrentContent) {\n return editorState;\n }\n\n var currentContent = editorState.getCurrentContent();\n var directionMap = EditorBidiService.getDirectionMap(newCurrentContent, editorState.getDirectionMap());\n return EditorState.set(editorState, {\n currentContent: newCurrentContent,\n directionMap: directionMap,\n undoStack: undoStack.shift(),\n redoStack: editorState.getRedoStack().push(currentContent),\n forceSelection: true,\n inlineStyleOverride: null,\n lastChangeType: 'undo',\n nativelyRenderedContent: null,\n selection: currentContent.getSelectionBefore()\n });\n }\n /**\n * Make the top ContentState in the redo stack the new current content and\n * push the current content onto the undo stack.\n */\n ;\n\n EditorState.redo = function redo(editorState) {\n if (!editorState.getAllowUndo()) {\n return editorState;\n }\n\n var redoStack = editorState.getRedoStack();\n var newCurrentContent = redoStack.peek();\n\n if (!newCurrentContent) {\n return editorState;\n }\n\n var currentContent = editorState.getCurrentContent();\n var directionMap = EditorBidiService.getDirectionMap(newCurrentContent, editorState.getDirectionMap());\n return EditorState.set(editorState, {\n currentContent: newCurrentContent,\n directionMap: directionMap,\n undoStack: editorState.getUndoStack().push(currentContent),\n redoStack: redoStack.shift(),\n forceSelection: true,\n inlineStyleOverride: null,\n lastChangeType: 'redo',\n nativelyRenderedContent: null,\n selection: newCurrentContent.getSelectionAfter()\n });\n }\n /**\n * Not for public consumption.\n */\n ;\n\n function EditorState(immutable) {\n _defineProperty(this, \"_immutable\", void 0);\n\n this._immutable = immutable;\n }\n /**\n * Not for public consumption.\n */\n\n\n _proto.getImmutable = function getImmutable() {\n return this._immutable;\n };\n\n return EditorState;\n}();\n/**\n * Set the supplied SelectionState as the new current selection, and set\n * the `force` flag to trigger manual selection placement by the view.\n */\n\n\nfunction updateSelection(editorState, selection, forceSelection) {\n return EditorState.set(editorState, {\n selection: selection,\n forceSelection: forceSelection,\n nativelyRenderedContent: null,\n inlineStyleOverride: null\n });\n}\n/**\n * Regenerate the entire tree map for a given ContentState and decorator.\n * Returns an OrderedMap that maps all available ContentBlock objects.\n */\n\n\nfunction generateNewTreeMap(contentState, decorator) {\n return contentState.getBlockMap().map(function (block) {\n return BlockTree.generate(contentState, block, decorator);\n }).toOrderedMap();\n}\n/**\n * Regenerate tree map objects for all ContentBlocks that have changed\n * between the current editorState and newContent. Returns an OrderedMap\n * with only changed regenerated tree map objects.\n */\n\n\nfunction regenerateTreeForNewBlocks(editorState, newBlockMap, newEntityMap, decorator) {\n var contentState = editorState.getCurrentContent().set('entityMap', newEntityMap);\n var prevBlockMap = contentState.getBlockMap();\n var prevTreeMap = editorState.getImmutable().get('treeMap');\n return prevTreeMap.merge(newBlockMap.toSeq().filter(function (block, key) {\n return block !== prevBlockMap.get(key);\n }).map(function (block) {\n return BlockTree.generate(contentState, block, decorator);\n }));\n}\n/**\n * Generate tree map objects for a new decorator object, preserving any\n * decorations that are unchanged from the previous decorator.\n *\n * Note that in order for this to perform optimally, decoration Lists for\n * decorators should be preserved when possible to allow for direct immutable\n * List comparison.\n */\n\n\nfunction regenerateTreeForNewDecorator(content, blockMap, previousTreeMap, decorator, existingDecorator) {\n return previousTreeMap.merge(blockMap.toSeq().filter(function (block) {\n return decorator.getDecorations(block, content) !== existingDecorator.getDecorations(block, content);\n }).map(function (block) {\n return BlockTree.generate(content, block, decorator);\n }));\n}\n/**\n * Return whether a change should be considered a boundary state, given\n * the previous change type. Allows us to discard potential boundary states\n * during standard typing or deletion behavior.\n */\n\n\nfunction mustBecomeBoundary(editorState, changeType) {\n var lastChangeType = editorState.getLastChangeType();\n return changeType !== lastChangeType || changeType !== 'insert-characters' && changeType !== 'backspace-character' && changeType !== 'delete-character';\n}\n\nfunction getInlineStyleForCollapsedSelection(content, selection) {\n var startKey = selection.getStartKey();\n var startOffset = selection.getStartOffset();\n var startBlock = content.getBlockForKey(startKey); // If the cursor is not at the start of the block, look backward to\n // preserve the style of the preceding character.\n\n if (startOffset > 0) {\n return startBlock.getInlineStyleAt(startOffset - 1);\n } // The caret is at position zero in this block. If the block has any\n // text at all, use the style of the first character.\n\n\n if (startBlock.getLength()) {\n return startBlock.getInlineStyleAt(0);\n } // Otherwise, look upward in the document to find the closest character.\n\n\n return lookUpwardForInlineStyle(content, startKey);\n}\n\nfunction getInlineStyleForNonCollapsedSelection(content, selection) {\n var startKey = selection.getStartKey();\n var startOffset = selection.getStartOffset();\n var startBlock = content.getBlockForKey(startKey); // If there is a character just inside the selection, use its style.\n\n if (startOffset < startBlock.getLength()) {\n return startBlock.getInlineStyleAt(startOffset);\n } // Check if the selection at the end of a non-empty block. Use the last\n // style in the block.\n\n\n if (startOffset > 0) {\n return startBlock.getInlineStyleAt(startOffset - 1);\n } // Otherwise, look upward in the document to find the closest character.\n\n\n return lookUpwardForInlineStyle(content, startKey);\n}\n\nfunction lookUpwardForInlineStyle(content, fromKey) {\n var lastNonEmpty = content.getBlockMap().reverse().skipUntil(function (_, k) {\n return k === fromKey;\n }).skip(1).skipUntil(function (block, _) {\n return block.getLength();\n }).first();\n\n if (lastNonEmpty) {\n return lastNonEmpty.getInlineStyleAt(lastNonEmpty.getLength() - 1);\n }\n\n return OrderedSet();\n}\n\nmodule.exports = EditorState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar isSoftNewlineEvent = require(\"./isSoftNewlineEvent\");\n\nvar isOSX = UserAgent.isPlatform('Mac OS X');\nvar KeyBindingUtil = {\n /**\n * Check whether the ctrlKey modifier is *not* being used in conjunction with\n * the altKey modifier. If they are combined, the result is an `altGraph`\n * key modifier, which should not be handled by this set of key bindings.\n */\n isCtrlKeyCommand: function isCtrlKeyCommand(e) {\n return !!e.ctrlKey && !e.altKey;\n },\n isOptionKeyCommand: function isOptionKeyCommand(e) {\n return isOSX && e.altKey;\n },\n usesMacOSHeuristics: function usesMacOSHeuristics() {\n return isOSX;\n },\n hasCommandModifier: function hasCommandModifier(e) {\n return isOSX ? !!e.metaKey && !e.altKey : KeyBindingUtil.isCtrlKeyCommand(e);\n },\n isSoftNewlineEvent: isSoftNewlineEvent\n};\nmodule.exports = KeyBindingUtil;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar adjustBlockDepthForContentState = require(\"./adjustBlockDepthForContentState\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar RichTextEditorUtil = {\n currentBlockContainsLink: function currentBlockContainsLink(editorState) {\n var selection = editorState.getSelection();\n var contentState = editorState.getCurrentContent();\n var entityMap = contentState.getEntityMap();\n return contentState.getBlockForKey(selection.getAnchorKey()).getCharacterList().slice(selection.getStartOffset(), selection.getEndOffset()).some(function (v) {\n var entity = v.getEntity();\n return !!entity && entityMap.__get(entity).getType() === 'LINK';\n });\n },\n getCurrentBlockType: function getCurrentBlockType(editorState) {\n var selection = editorState.getSelection();\n return editorState.getCurrentContent().getBlockForKey(selection.getStartKey()).getType();\n },\n getDataObjectForLinkURL: function getDataObjectForLinkURL(uri) {\n return {\n url: uri.toString()\n };\n },\n handleKeyCommand: function handleKeyCommand(editorState, command, eventTimeStamp) {\n switch (command) {\n case 'bold':\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'BOLD');\n\n case 'italic':\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'ITALIC');\n\n case 'underline':\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'UNDERLINE');\n\n case 'code':\n return RichTextEditorUtil.toggleCode(editorState);\n\n case 'backspace':\n case 'backspace-word':\n case 'backspace-to-start-of-line':\n return RichTextEditorUtil.onBackspace(editorState);\n\n case 'delete':\n case 'delete-word':\n case 'delete-to-end-of-block':\n return RichTextEditorUtil.onDelete(editorState);\n\n default:\n // they may have custom editor commands; ignore those\n return null;\n }\n },\n insertSoftNewline: function insertSoftNewline(editorState) {\n var contentState = DraftModifier.insertText(editorState.getCurrentContent(), editorState.getSelection(), '\\n', editorState.getCurrentInlineStyle(), null);\n var newEditorState = EditorState.push(editorState, contentState, 'insert-characters');\n return EditorState.forceSelection(newEditorState, contentState.getSelectionAfter());\n },\n\n /**\n * For collapsed selections at the start of styled blocks, backspace should\n * just remove the existing style.\n */\n onBackspace: function onBackspace(editorState) {\n var selection = editorState.getSelection();\n\n if (!selection.isCollapsed() || selection.getAnchorOffset() || selection.getFocusOffset()) {\n return null;\n } // First, try to remove a preceding atomic block.\n\n\n var content = editorState.getCurrentContent();\n var startKey = selection.getStartKey();\n var blockBefore = content.getBlockBefore(startKey);\n\n if (blockBefore && blockBefore.getType() === 'atomic') {\n var blockMap = content.getBlockMap()[\"delete\"](blockBefore.getKey());\n var withoutAtomicBlock = content.merge({\n blockMap: blockMap,\n selectionAfter: selection\n });\n\n if (withoutAtomicBlock !== content) {\n return EditorState.push(editorState, withoutAtomicBlock, 'remove-range');\n }\n } // If that doesn't succeed, try to remove the current block style.\n\n\n var withoutBlockStyle = RichTextEditorUtil.tryToRemoveBlockStyle(editorState);\n\n if (withoutBlockStyle) {\n return EditorState.push(editorState, withoutBlockStyle, 'change-block-type');\n }\n\n return null;\n },\n onDelete: function onDelete(editorState) {\n var selection = editorState.getSelection();\n\n if (!selection.isCollapsed()) {\n return null;\n }\n\n var content = editorState.getCurrentContent();\n var startKey = selection.getStartKey();\n var block = content.getBlockForKey(startKey);\n var length = block.getLength(); // The cursor is somewhere within the text. Behave normally.\n\n if (selection.getStartOffset() < length) {\n return null;\n }\n\n var blockAfter = content.getBlockAfter(startKey);\n\n if (!blockAfter || blockAfter.getType() !== 'atomic') {\n return null;\n }\n\n var atomicBlockTarget = selection.merge({\n focusKey: blockAfter.getKey(),\n focusOffset: blockAfter.getLength()\n });\n var withoutAtomicBlock = DraftModifier.removeRange(content, atomicBlockTarget, 'forward');\n\n if (withoutAtomicBlock !== content) {\n return EditorState.push(editorState, withoutAtomicBlock, 'remove-range');\n }\n\n return null;\n },\n onTab: function onTab(event, editorState, maxDepth) {\n var selection = editorState.getSelection();\n var key = selection.getAnchorKey();\n\n if (key !== selection.getFocusKey()) {\n return editorState;\n }\n\n var content = editorState.getCurrentContent();\n var block = content.getBlockForKey(key);\n var type = block.getType();\n\n if (type !== 'unordered-list-item' && type !== 'ordered-list-item') {\n return editorState;\n }\n\n event.preventDefault();\n var depth = block.getDepth();\n\n if (!event.shiftKey && depth === maxDepth) {\n return editorState;\n }\n\n var withAdjustment = adjustBlockDepthForContentState(content, selection, event.shiftKey ? -1 : 1, maxDepth);\n return EditorState.push(editorState, withAdjustment, 'adjust-depth');\n },\n toggleBlockType: function toggleBlockType(editorState, blockType) {\n var selection = editorState.getSelection();\n var startKey = selection.getStartKey();\n var endKey = selection.getEndKey();\n var content = editorState.getCurrentContent();\n var target = selection; // Triple-click can lead to a selection that includes offset 0 of the\n // following block. The `SelectionState` for this case is accurate, but\n // we should avoid toggling block type for the trailing block because it\n // is a confusing interaction.\n\n if (startKey !== endKey && selection.getEndOffset() === 0) {\n var blockBefore = nullthrows(content.getBlockBefore(endKey));\n endKey = blockBefore.getKey();\n target = target.merge({\n anchorKey: startKey,\n anchorOffset: selection.getStartOffset(),\n focusKey: endKey,\n focusOffset: blockBefore.getLength(),\n isBackward: false\n });\n }\n\n var hasAtomicBlock = content.getBlockMap().skipWhile(function (_, k) {\n return k !== startKey;\n }).reverse().skipWhile(function (_, k) {\n return k !== endKey;\n }).some(function (v) {\n return v.getType() === 'atomic';\n });\n\n if (hasAtomicBlock) {\n return editorState;\n }\n\n var typeToSet = content.getBlockForKey(startKey).getType() === blockType ? 'unstyled' : blockType;\n return EditorState.push(editorState, DraftModifier.setBlockType(content, target, typeToSet), 'change-block-type');\n },\n toggleCode: function toggleCode(editorState) {\n var selection = editorState.getSelection();\n var anchorKey = selection.getAnchorKey();\n var focusKey = selection.getFocusKey();\n\n if (selection.isCollapsed() || anchorKey !== focusKey) {\n return RichTextEditorUtil.toggleBlockType(editorState, 'code-block');\n }\n\n return RichTextEditorUtil.toggleInlineStyle(editorState, 'CODE');\n },\n\n /**\n * Toggle the specified inline style for the selection. If the\n * user's selection is collapsed, apply or remove the style for the\n * internal state. If it is not collapsed, apply the change directly\n * to the document state.\n */\n toggleInlineStyle: function toggleInlineStyle(editorState, inlineStyle) {\n var selection = editorState.getSelection();\n var currentStyle = editorState.getCurrentInlineStyle(); // If the selection is collapsed, toggle the specified style on or off and\n // set the result as the new inline style override. This will then be\n // used as the inline style for the next character to be inserted.\n\n if (selection.isCollapsed()) {\n return EditorState.setInlineStyleOverride(editorState, currentStyle.has(inlineStyle) ? currentStyle.remove(inlineStyle) : currentStyle.add(inlineStyle));\n } // If characters are selected, immediately apply or remove the\n // inline style on the document state itself.\n\n\n var content = editorState.getCurrentContent();\n var newContent; // If the style is already present for the selection range, remove it.\n // Otherwise, apply it.\n\n if (currentStyle.has(inlineStyle)) {\n newContent = DraftModifier.removeInlineStyle(content, selection, inlineStyle);\n } else {\n newContent = DraftModifier.applyInlineStyle(content, selection, inlineStyle);\n }\n\n return EditorState.push(editorState, newContent, 'change-inline-style');\n },\n toggleLink: function toggleLink(editorState, targetSelection, entityKey) {\n var withoutLink = DraftModifier.applyEntity(editorState.getCurrentContent(), targetSelection, entityKey);\n return EditorState.push(editorState, withoutLink, 'apply-entity');\n },\n\n /**\n * When a collapsed cursor is at the start of a styled block, changes block\n * type to 'unstyled'. Returns null if selection does not meet that criteria.\n */\n tryToRemoveBlockStyle: function tryToRemoveBlockStyle(editorState) {\n var selection = editorState.getSelection();\n var offset = selection.getAnchorOffset();\n\n if (selection.isCollapsed() && offset === 0) {\n var key = selection.getAnchorKey();\n var content = editorState.getCurrentContent();\n var block = content.getBlockForKey(key);\n var type = block.getType();\n var blockBefore = content.getBlockBefore(key);\n\n if (type === 'code-block' && blockBefore && blockBefore.getType() === 'code-block' && blockBefore.getLength() !== 0) {\n return null;\n }\n\n if (type !== 'unstyled') {\n return DraftModifier.setBlockType(content, selection, 'unstyled');\n }\n }\n\n return null;\n }\n};\nmodule.exports = RichTextEditorUtil;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar clipboard = null;\n/**\n * Some systems offer a \"secondary\" clipboard to allow quick internal cut\n * and paste behavior. For instance, Ctrl+K (cut) and Ctrl+Y (paste).\n */\n\nvar SecondaryClipboard = {\n cut: function cut(editorState) {\n var content = editorState.getCurrentContent();\n var selection = editorState.getSelection();\n var targetRange = null;\n\n if (selection.isCollapsed()) {\n var anchorKey = selection.getAnchorKey();\n var blockEnd = content.getBlockForKey(anchorKey).getLength();\n\n if (blockEnd === selection.getAnchorOffset()) {\n var keyAfter = content.getKeyAfter(anchorKey);\n\n if (keyAfter == null) {\n return editorState;\n }\n\n targetRange = selection.set('focusKey', keyAfter).set('focusOffset', 0);\n } else {\n targetRange = selection.set('focusOffset', blockEnd);\n }\n } else {\n targetRange = selection;\n }\n\n targetRange = nullthrows(targetRange); // TODO: This should actually append to the current state when doing\n // successive ^K commands without any other cursor movement\n\n clipboard = getContentStateFragment(content, targetRange);\n var afterRemoval = DraftModifier.removeRange(content, targetRange, 'forward');\n\n if (afterRemoval === content) {\n return editorState;\n }\n\n return EditorState.push(editorState, afterRemoval, 'remove-range');\n },\n paste: function paste(editorState) {\n if (!clipboard) {\n return editorState;\n }\n\n var newContent = DraftModifier.replaceWithFragment(editorState.getCurrentContent(), editorState.getSelection(), clipboard);\n return EditorState.push(editorState, newContent, 'insert-fragment');\n }\n};\nmodule.exports = SecondaryClipboard;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Immutable = require(\"immutable\");\n\nvar Record = Immutable.Record;\nvar defaultRecord = {\n anchorKey: '',\n anchorOffset: 0,\n focusKey: '',\n focusOffset: 0,\n isBackward: false,\n hasFocus: false\n};\n/* $FlowFixMe[unclear-type] This comment suppresses an error found when\n * automatically adding a type annotation with the codemod Komodo/Annotate_\n * exports. To see the error delete this comment and run Flow. */\n\nvar SelectionStateRecord = Record(defaultRecord);\n\nvar SelectionState = /*#__PURE__*/function (_SelectionStateRecord) {\n _inheritsLoose(SelectionState, _SelectionStateRecord);\n\n function SelectionState() {\n return _SelectionStateRecord.apply(this, arguments) || this;\n }\n\n var _proto = SelectionState.prototype;\n\n _proto.serialize = function serialize() {\n return 'Anchor: ' + this.getAnchorKey() + ':' + this.getAnchorOffset() + ', ' + 'Focus: ' + this.getFocusKey() + ':' + this.getFocusOffset() + ', ' + 'Is Backward: ' + String(this.getIsBackward()) + ', ' + 'Has Focus: ' + String(this.getHasFocus());\n };\n\n _proto.getAnchorKey = function getAnchorKey() {\n return this.get('anchorKey');\n };\n\n _proto.getAnchorOffset = function getAnchorOffset() {\n return this.get('anchorOffset');\n };\n\n _proto.getFocusKey = function getFocusKey() {\n return this.get('focusKey');\n };\n\n _proto.getFocusOffset = function getFocusOffset() {\n return this.get('focusOffset');\n };\n\n _proto.getIsBackward = function getIsBackward() {\n return this.get('isBackward');\n };\n\n _proto.getHasFocus = function getHasFocus() {\n return this.get('hasFocus');\n }\n /**\n * Return whether the specified range overlaps with an edge of the\n * SelectionState.\n */\n ;\n\n _proto.hasEdgeWithin = function hasEdgeWithin(blockKey, start, end) {\n var anchorKey = this.getAnchorKey();\n var focusKey = this.getFocusKey();\n\n if (anchorKey === focusKey && anchorKey === blockKey) {\n var selectionStart = this.getStartOffset();\n var selectionEnd = this.getEndOffset();\n return start <= selectionStart && selectionStart <= end || // selectionStart is between start and end, or\n start <= selectionEnd && selectionEnd <= end // selectionEnd is between start and end\n ;\n }\n\n if (blockKey !== anchorKey && blockKey !== focusKey) {\n return false;\n }\n\n var offsetToCheck = blockKey === anchorKey ? this.getAnchorOffset() : this.getFocusOffset();\n return start <= offsetToCheck && end >= offsetToCheck;\n };\n\n _proto.isCollapsed = function isCollapsed() {\n return this.getAnchorKey() === this.getFocusKey() && this.getAnchorOffset() === this.getFocusOffset();\n };\n\n _proto.getStartKey = function getStartKey() {\n return this.getIsBackward() ? this.getFocusKey() : this.getAnchorKey();\n };\n\n _proto.getStartOffset = function getStartOffset() {\n return this.getIsBackward() ? this.getFocusOffset() : this.getAnchorOffset();\n };\n\n _proto.getEndKey = function getEndKey() {\n return this.getIsBackward() ? this.getAnchorKey() : this.getFocusKey();\n };\n\n _proto.getEndOffset = function getEndOffset() {\n return this.getIsBackward() ? this.getAnchorOffset() : this.getFocusOffset();\n };\n\n SelectionState.createEmpty = function createEmpty(key) {\n return new SelectionState({\n anchorKey: key,\n anchorOffset: 0,\n focusKey: key,\n focusOffset: 0,\n isBackward: false,\n hasFocus: false\n });\n };\n\n return SelectionState;\n}(SelectionStateRecord);\n\nmodule.exports = SelectionState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction adjustBlockDepthForContentState(contentState, selectionState, adjustment, maxDepth) {\n var startKey = selectionState.getStartKey();\n var endKey = selectionState.getEndKey();\n var blockMap = contentState.getBlockMap();\n var blocks = blockMap.toSeq().skipUntil(function (_, k) {\n return k === startKey;\n }).takeUntil(function (_, k) {\n return k === endKey;\n }).concat([[endKey, blockMap.get(endKey)]]).map(function (block) {\n var depth = block.getDepth() + adjustment;\n depth = Math.max(0, Math.min(depth, maxDepth));\n return block.set('depth', depth);\n });\n blockMap = blockMap.merge(blocks);\n return contentState.merge({\n blockMap: blockMap,\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n}\n\nmodule.exports = adjustBlockDepthForContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nfunction applyEntityToContentBlock(contentBlock, startArg, end, entityKey) {\n var start = startArg;\n var characterList = contentBlock.getCharacterList();\n\n while (start < end) {\n characterList = characterList.set(start, CharacterMetadata.applyEntity(characterList.get(start), entityKey));\n start++;\n }\n\n return contentBlock.set('characterList', characterList);\n}\n\nmodule.exports = applyEntityToContentBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar applyEntityToContentBlock = require(\"./applyEntityToContentBlock\");\n\nvar Immutable = require(\"immutable\");\n\nfunction applyEntityToContentState(contentState, selectionState, entityKey) {\n var blockMap = contentState.getBlockMap();\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset();\n var newBlocks = blockMap.skipUntil(function (_, k) {\n return k === startKey;\n }).takeUntil(function (_, k) {\n return k === endKey;\n }).toOrderedMap().merge(Immutable.OrderedMap([[endKey, blockMap.get(endKey)]])).map(function (block, blockKey) {\n var sliceStart = blockKey === startKey ? startOffset : 0;\n var sliceEnd = blockKey === endKey ? endOffset : block.getLength();\n return applyEntityToContentBlock(block, sliceStart, sliceEnd, entityKey);\n });\n return contentState.merge({\n blockMap: blockMap.merge(newBlocks),\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n}\n\nmodule.exports = applyEntityToContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DraftStringKey = require(\"./DraftStringKey\");\n\nvar encodeEntityRanges = require(\"./encodeEntityRanges\");\n\nvar encodeInlineStyleRanges = require(\"./encodeInlineStyleRanges\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar createRawBlock = function createRawBlock(block, entityStorageMap) {\n return {\n key: block.getKey(),\n text: block.getText(),\n type: block.getType(),\n depth: block.getDepth(),\n inlineStyleRanges: encodeInlineStyleRanges(block),\n entityRanges: encodeEntityRanges(block, entityStorageMap),\n data: block.getData().toObject()\n };\n};\n\nvar insertRawBlock = function insertRawBlock(block, entityMap, rawBlocks, blockCacheRef) {\n if (block instanceof ContentBlock) {\n rawBlocks.push(createRawBlock(block, entityMap));\n return;\n }\n\n !(block instanceof ContentBlockNode) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'block is not a BlockNode') : invariant(false) : void 0;\n var parentKey = block.getParentKey();\n\n var rawBlock = blockCacheRef[block.getKey()] = _objectSpread({}, createRawBlock(block, entityMap), {\n children: []\n });\n\n if (parentKey) {\n blockCacheRef[parentKey].children.push(rawBlock);\n return;\n }\n\n rawBlocks.push(rawBlock);\n};\n\nvar encodeRawBlocks = function encodeRawBlocks(contentState, rawState) {\n var entityMap = rawState.entityMap;\n var rawBlocks = [];\n var blockCacheRef = {};\n var entityCacheRef = {};\n var entityStorageKey = 0;\n contentState.getBlockMap().forEach(function (block) {\n block.findEntityRanges(function (character) {\n return character.getEntity() !== null;\n }, function (start) {\n var entityKey = block.getEntityAt(start); // Stringify to maintain order of otherwise numeric keys.\n\n var stringifiedEntityKey = DraftStringKey.stringify(entityKey); // This makes this function resilient to two entities\n // erroneously having the same key\n\n if (entityCacheRef[stringifiedEntityKey]) {\n return;\n }\n\n entityCacheRef[stringifiedEntityKey] = entityKey; // we need the `any` casting here since this is a temporary state\n // where we will later on flip the entity map and populate it with\n // real entity, at this stage we just need to map back the entity\n // key used by the BlockNode\n\n entityMap[stringifiedEntityKey] = \"\".concat(entityStorageKey);\n entityStorageKey++;\n });\n insertRawBlock(block, entityMap, rawBlocks, blockCacheRef);\n });\n return {\n blocks: rawBlocks,\n entityMap: entityMap\n };\n}; // Flip storage map so that our storage keys map to global\n// DraftEntity keys.\n\n\nvar encodeRawEntityMap = function encodeRawEntityMap(contentState, rawState) {\n var blocks = rawState.blocks,\n entityMap = rawState.entityMap;\n var rawEntityMap = {};\n Object.keys(entityMap).forEach(function (key, index) {\n var entity = contentState.getEntity(DraftStringKey.unstringify(key));\n rawEntityMap[index] = {\n type: entity.getType(),\n mutability: entity.getMutability(),\n data: entity.getData()\n };\n });\n return {\n blocks: blocks,\n entityMap: rawEntityMap\n };\n};\n\nvar convertFromDraftStateToRaw = function convertFromDraftStateToRaw(contentState) {\n var rawDraftContentState = {\n entityMap: {},\n blocks: []\n }; // add blocks\n\n rawDraftContentState = encodeRawBlocks(contentState, rawDraftContentState); // add entities\n\n rawDraftContentState = encodeRawEntityMap(contentState, rawDraftContentState);\n return rawDraftContentState;\n};\n\nmodule.exports = convertFromDraftStateToRaw;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _knownListItemDepthCl;\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar DefaultDraftBlockRenderMap = require(\"./DefaultDraftBlockRenderMap\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar URI = require(\"fbjs/lib/URI\");\n\nvar cx = require(\"fbjs/lib/cx\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar getSafeBodyFromHTML = require(\"./getSafeBodyFromHTML\");\n\nvar gkx = require(\"./gkx\");\n\nvar _require = require(\"immutable\"),\n List = _require.List,\n Map = _require.Map,\n OrderedSet = _require.OrderedSet;\n\nvar isHTMLAnchorElement = require(\"./isHTMLAnchorElement\");\n\nvar isHTMLBRElement = require(\"./isHTMLBRElement\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nvar isHTMLImageElement = require(\"./isHTMLImageElement\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar NBSP = ' ';\nvar SPACE = ' '; // used for replacing characters in HTML\n\nvar REGEX_CR = new RegExp('\\r', 'g');\nvar REGEX_LF = new RegExp('\\n', 'g');\nvar REGEX_LEADING_LF = new RegExp('^\\n', 'g');\nvar REGEX_NBSP = new RegExp(NBSP, 'g');\nvar REGEX_CARRIAGE = new RegExp(' ?', 'g');\nvar REGEX_ZWS = new RegExp('​?', 'g'); // https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\n\nvar boldValues = ['bold', 'bolder', '500', '600', '700', '800', '900'];\nvar notBoldValues = ['light', 'lighter', 'normal', '100', '200', '300', '400'];\nvar anchorAttr = ['className', 'href', 'rel', 'target', 'title'];\nvar imgAttr = ['alt', 'className', 'height', 'src', 'width'];\nvar knownListItemDepthClasses = (_knownListItemDepthCl = {}, _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth0'), 0), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth1'), 1), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth2'), 2), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth3'), 3), _defineProperty(_knownListItemDepthCl, cx('public/DraftStyleDefault/depth4'), 4), _knownListItemDepthCl);\nvar HTMLTagToRawInlineStyleMap = Map({\n b: 'BOLD',\n code: 'CODE',\n del: 'STRIKETHROUGH',\n em: 'ITALIC',\n i: 'ITALIC',\n s: 'STRIKETHROUGH',\n strike: 'STRIKETHROUGH',\n strong: 'BOLD',\n u: 'UNDERLINE',\n mark: 'HIGHLIGHT'\n});\n\n/**\n * Build a mapping from HTML tags to draftjs block types\n * out of a BlockRenderMap.\n *\n * The BlockTypeMap for the default BlockRenderMap looks like this:\n * Map({\n * h1: 'header-one',\n * h2: 'header-two',\n * h3: 'header-three',\n * h4: 'header-four',\n * h5: 'header-five',\n * h6: 'header-six',\n * blockquote: 'blockquote',\n * figure: 'atomic',\n * pre: ['code-block'],\n * div: 'unstyled',\n * p: 'unstyled',\n * li: ['ordered-list-item', 'unordered-list-item'],\n * })\n */\nvar buildBlockTypeMap = function buildBlockTypeMap(blockRenderMap) {\n var blockTypeMap = {};\n blockRenderMap.mapKeys(function (blockType, desc) {\n var elements = [desc.element];\n\n if (desc.aliasedElements !== undefined) {\n elements.push.apply(elements, desc.aliasedElements);\n }\n\n elements.forEach(function (element) {\n if (blockTypeMap[element] === undefined) {\n blockTypeMap[element] = blockType;\n } else if (typeof blockTypeMap[element] === 'string') {\n blockTypeMap[element] = [blockTypeMap[element], blockType];\n } else {\n blockTypeMap[element].push(blockType);\n }\n });\n });\n return Map(blockTypeMap);\n};\n\nvar detectInlineStyle = function detectInlineStyle(node) {\n if (isHTMLElement(node)) {\n var element = node; // Currently only used to detect preformatted inline code\n\n if (element.style.fontFamily.includes('monospace')) {\n return 'CODE';\n }\n }\n\n return null;\n};\n/**\n * If we're pasting from one DraftEditor to another we can check to see if\n * existing list item depth classes are being used and preserve this style\n */\n\n\nvar getListItemDepth = function getListItemDepth(node) {\n var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n Object.keys(knownListItemDepthClasses).some(function (depthClass) {\n if (node.classList.contains(depthClass)) {\n depth = knownListItemDepthClasses[depthClass];\n }\n });\n return depth;\n};\n/**\n * Return true if the provided HTML Element can be used to build a\n * Draftjs-compatible link.\n */\n\n\nvar isValidAnchor = function isValidAnchor(node) {\n if (!isHTMLAnchorElement(node)) {\n return false;\n }\n\n var anchorNode = node;\n\n if (!anchorNode.href || anchorNode.protocol !== 'http:' && anchorNode.protocol !== 'https:' && anchorNode.protocol !== 'mailto:' && anchorNode.protocol !== 'tel:') {\n return false;\n }\n\n try {\n // Just checking whether we can actually create a URI\n var _ = new URI(anchorNode.href);\n\n return true; // We need our catch statements to have arguments, else\n // UglifyJS (which we use for our OSS builds) will crash.\n // eslint-disable-next-line fb-www/no-unused-catch-bindings\n } catch (_) {\n return false;\n }\n};\n/**\n * Return true if the provided HTML Element can be used to build a\n * Draftjs-compatible image.\n */\n\n\nvar isValidImage = function isValidImage(node) {\n if (!isHTMLImageElement(node)) {\n return false;\n }\n\n var imageNode = node;\n return !!(imageNode.attributes.getNamedItem('src') && imageNode.attributes.getNamedItem('src').value);\n};\n/**\n * Try to guess the inline style of an HTML element based on its css\n * styles (font-weight, font-style and text-decoration).\n */\n\n\nvar styleFromNodeAttributes = function styleFromNodeAttributes(node, style) {\n if (!isHTMLElement(node)) {\n return style;\n }\n\n var htmlElement = node;\n var fontWeight = htmlElement.style.fontWeight;\n var fontStyle = htmlElement.style.fontStyle;\n var textDecoration = htmlElement.style.textDecoration;\n return style.withMutations(function (style) {\n if (boldValues.indexOf(fontWeight) >= 0) {\n style.add('BOLD');\n } else if (notBoldValues.indexOf(fontWeight) >= 0) {\n style.remove('BOLD');\n }\n\n if (fontStyle === 'italic') {\n style.add('ITALIC');\n } else if (fontStyle === 'normal') {\n style.remove('ITALIC');\n }\n\n if (textDecoration === 'underline') {\n style.add('UNDERLINE');\n }\n\n if (textDecoration === 'line-through') {\n style.add('STRIKETHROUGH');\n }\n\n if (textDecoration === 'none') {\n style.remove('UNDERLINE');\n style.remove('STRIKETHROUGH');\n }\n });\n};\n/**\n * Determine if a nodeName is a list type, 'ul' or 'ol'\n */\n\n\nvar isListNode = function isListNode(nodeName) {\n return nodeName === 'ul' || nodeName === 'ol';\n};\n/**\n * ContentBlockConfig is a mutable data structure that holds all\n * the information required to build a ContentBlock and an array of\n * all the child nodes (childConfigs).\n * It is being used a temporary data structure by the\n * ContentBlocksBuilder class.\n */\n\n\n/**\n * ContentBlocksBuilder builds a list of ContentBlocks and an Entity Map\n * out of one (or several) HTMLElement(s).\n *\n * The algorithm has two passes: first it builds a tree of ContentBlockConfigs\n * by walking through the HTML nodes and their children, then it walks the\n * ContentBlockConfigs tree to compute parents/siblings and create\n * the actual ContentBlocks.\n *\n * Typical usage is:\n * new ContentBlocksBuilder()\n * .addDOMNode(someHTMLNode)\n * .addDOMNode(someOtherHTMLNode)\n * .getContentBlocks();\n *\n */\nvar ContentBlocksBuilder = /*#__PURE__*/function () {\n // Most of the method in the class depend on the state of the content builder\n // (i.e. currentBlockType, currentDepth, currentEntity etc.). Though it may\n // be confusing at first, it made the code simpler than the alternative which\n // is to pass those values around in every call.\n // The following attributes are used to accumulate text and styles\n // as we are walking the HTML node tree.\n // Describes the future ContentState as a tree of content blocks\n // The content blocks generated from the blockConfigs\n // Entity map use to store links and images found in the HTML nodes\n // Map HTML tags to draftjs block types and disambiguation function\n function ContentBlocksBuilder(blockTypeMap, disambiguate) {\n _defineProperty(this, \"characterList\", List());\n\n _defineProperty(this, \"currentBlockType\", 'unstyled');\n\n _defineProperty(this, \"currentDepth\", 0);\n\n _defineProperty(this, \"currentEntity\", null);\n\n _defineProperty(this, \"currentText\", '');\n\n _defineProperty(this, \"wrapper\", null);\n\n _defineProperty(this, \"blockConfigs\", []);\n\n _defineProperty(this, \"contentBlocks\", []);\n\n _defineProperty(this, \"entityMap\", DraftEntity);\n\n _defineProperty(this, \"blockTypeMap\", void 0);\n\n _defineProperty(this, \"disambiguate\", void 0);\n\n this.clear();\n this.blockTypeMap = blockTypeMap;\n this.disambiguate = disambiguate;\n }\n /**\n * Clear the internal state of the ContentBlocksBuilder\n */\n\n\n var _proto = ContentBlocksBuilder.prototype;\n\n _proto.clear = function clear() {\n this.characterList = List();\n this.blockConfigs = [];\n this.currentBlockType = 'unstyled';\n this.currentDepth = 0;\n this.currentEntity = null;\n this.currentText = '';\n this.entityMap = DraftEntity;\n this.wrapper = null;\n this.contentBlocks = [];\n }\n /**\n * Add an HTMLElement to the ContentBlocksBuilder\n */\n ;\n\n _proto.addDOMNode = function addDOMNode(node) {\n var _this$blockConfigs;\n\n this.contentBlocks = [];\n this.currentDepth = 0; // Converts the HTML node to block config\n\n (_this$blockConfigs = this.blockConfigs).push.apply(_this$blockConfigs, this._toBlockConfigs([node], OrderedSet())); // There might be some left over text in the builder's\n // internal state, if so make a ContentBlock out of it.\n\n\n this._trimCurrentText();\n\n if (this.currentText !== '') {\n this.blockConfigs.push(this._makeBlockConfig());\n } // for chaining\n\n\n return this;\n }\n /**\n * Return the ContentBlocks and the EntityMap that corresponds\n * to the previously added HTML nodes.\n */\n ;\n\n _proto.getContentBlocks = function getContentBlocks() {\n if (this.contentBlocks.length === 0) {\n if (experimentalTreeDataSupport) {\n this._toContentBlocks(this.blockConfigs);\n } else {\n this._toFlatContentBlocks(this.blockConfigs);\n }\n }\n\n return {\n contentBlocks: this.contentBlocks,\n entityMap: this.entityMap\n };\n } // ***********************************WARNING******************************\n // The methods below this line are private - don't call them directly.\n\n /**\n * Generate a new ContentBlockConfig out of the current internal state\n * of the builder, then clears the internal state.\n */\n ;\n\n _proto._makeBlockConfig = function _makeBlockConfig() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var key = config.key || generateRandomKey();\n\n var block = _objectSpread({\n key: key,\n type: this.currentBlockType,\n text: this.currentText,\n characterList: this.characterList,\n depth: this.currentDepth,\n parent: null,\n children: List(),\n prevSibling: null,\n nextSibling: null,\n childConfigs: []\n }, config);\n\n this.characterList = List();\n this.currentBlockType = 'unstyled';\n this.currentText = '';\n return block;\n }\n /**\n * Converts an array of HTML elements to a multi-root tree of content\n * block configs. Some text content may be left in the builders internal\n * state to enable chaining sucessive calls.\n */\n ;\n\n _proto._toBlockConfigs = function _toBlockConfigs(nodes, style) {\n var blockConfigs = [];\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var nodeName = node.nodeName.toLowerCase();\n\n if (nodeName === 'body' || isListNode(nodeName)) {\n // body, ol and ul are 'block' type nodes so create a block config\n // with the text accumulated so far (if any)\n this._trimCurrentText();\n\n if (this.currentText !== '') {\n blockConfigs.push(this._makeBlockConfig());\n } // body, ol and ul nodes are ignored, but their children are inlined in\n // the parent block config.\n\n\n var wasCurrentDepth = this.currentDepth;\n var wasWrapper = this.wrapper;\n\n if (isListNode(nodeName)) {\n this.wrapper = nodeName;\n\n if (isListNode(wasWrapper)) {\n this.currentDepth++;\n }\n }\n\n blockConfigs.push.apply(blockConfigs, this._toBlockConfigs(Array.from(node.childNodes), style));\n this.currentDepth = wasCurrentDepth;\n this.wrapper = wasWrapper;\n continue;\n }\n\n var blockType = this.blockTypeMap.get(nodeName);\n\n if (blockType !== undefined) {\n // 'block' type node means we need to create a block config\n // with the text accumulated so far (if any)\n this._trimCurrentText();\n\n if (this.currentText !== '') {\n blockConfigs.push(this._makeBlockConfig());\n }\n\n var _wasCurrentDepth = this.currentDepth;\n var _wasWrapper = this.wrapper;\n this.wrapper = nodeName === 'pre' ? 'pre' : this.wrapper;\n\n if (typeof blockType !== 'string') {\n blockType = this.disambiguate(nodeName, this.wrapper) || blockType[0] || 'unstyled';\n }\n\n if (!experimentalTreeDataSupport && isHTMLElement(node) && (blockType === 'unordered-list-item' || blockType === 'ordered-list-item')) {\n var htmlElement = node;\n this.currentDepth = getListItemDepth(htmlElement, this.currentDepth);\n }\n\n var key = generateRandomKey();\n\n var childConfigs = this._toBlockConfigs(Array.from(node.childNodes), style);\n\n this._trimCurrentText();\n\n blockConfigs.push(this._makeBlockConfig({\n key: key,\n childConfigs: childConfigs,\n type: blockType\n }));\n this.currentDepth = _wasCurrentDepth;\n this.wrapper = _wasWrapper;\n continue;\n }\n\n if (nodeName === '#text') {\n this._addTextNode(node, style);\n\n continue;\n }\n\n if (nodeName === 'br') {\n this._addBreakNode(node, style);\n\n continue;\n }\n\n if (isValidImage(node)) {\n this._addImgNode(node, style);\n\n continue;\n }\n\n if (isValidAnchor(node)) {\n this._addAnchorNode(node, blockConfigs, style);\n\n continue;\n }\n\n var newStyle = style;\n\n if (HTMLTagToRawInlineStyleMap.has(nodeName)) {\n newStyle = newStyle.add(HTMLTagToRawInlineStyleMap.get(nodeName));\n }\n\n newStyle = styleFromNodeAttributes(node, newStyle);\n var inlineStyle = detectInlineStyle(node);\n\n if (inlineStyle != null) {\n newStyle = newStyle.add(inlineStyle);\n }\n\n blockConfigs.push.apply(blockConfigs, this._toBlockConfigs(Array.from(node.childNodes), newStyle));\n }\n\n return blockConfigs;\n }\n /**\n * Append a string of text to the internal buffer.\n */\n ;\n\n _proto._appendText = function _appendText(text, style) {\n var _this$characterList;\n\n this.currentText += text;\n var characterMetadata = CharacterMetadata.create({\n style: style,\n entity: this.currentEntity\n });\n this.characterList = (_this$characterList = this.characterList).push.apply(_this$characterList, Array(text.length).fill(characterMetadata));\n }\n /**\n * Trim the text in the internal buffer.\n */\n ;\n\n _proto._trimCurrentText = function _trimCurrentText() {\n var l = this.currentText.length;\n var begin = l - this.currentText.trimLeft().length;\n var end = this.currentText.trimRight().length; // We should not trim whitespaces for which an entity is defined.\n\n var entity = this.characterList.findEntry(function (characterMetadata) {\n return characterMetadata.getEntity() !== null;\n });\n begin = entity !== undefined ? Math.min(begin, entity[0]) : begin;\n entity = this.characterList.reverse().findEntry(function (characterMetadata) {\n return characterMetadata.getEntity() !== null;\n });\n end = entity !== undefined ? Math.max(end, l - entity[0]) : end;\n\n if (begin > end) {\n this.currentText = '';\n this.characterList = List();\n } else {\n this.currentText = this.currentText.slice(begin, end);\n this.characterList = this.characterList.slice(begin, end);\n }\n }\n /**\n * Add the content of an HTML text node to the internal state\n */\n ;\n\n _proto._addTextNode = function _addTextNode(node, style) {\n var text = node.textContent;\n var trimmedText = text.trim(); // If we are not in a pre block and the trimmed content is empty,\n // normalize to a single space.\n\n if (trimmedText === '' && this.wrapper !== 'pre') {\n text = ' ';\n }\n\n if (this.wrapper !== 'pre') {\n // Trim leading line feed, which is invisible in HTML\n text = text.replace(REGEX_LEADING_LF, ''); // Can't use empty string because MSWord\n\n text = text.replace(REGEX_LF, SPACE);\n }\n\n this._appendText(text, style);\n };\n\n _proto._addBreakNode = function _addBreakNode(node, style) {\n if (!isHTMLBRElement(node)) {\n return;\n }\n\n this._appendText('\\n', style);\n }\n /**\n * Add the content of an HTML img node to the internal state\n */\n ;\n\n _proto._addImgNode = function _addImgNode(node, style) {\n if (!isHTMLImageElement(node)) {\n return;\n }\n\n var image = node;\n var entityConfig = {};\n imgAttr.forEach(function (attr) {\n var imageAttribute = image.getAttribute(attr);\n\n if (imageAttribute) {\n entityConfig[attr] = imageAttribute;\n }\n }); // TODO: T15530363 update this when we remove DraftEntity entirely\n\n this.currentEntity = this.entityMap.__create('IMAGE', 'IMMUTABLE', entityConfig); // The child text node cannot just have a space or return as content (since\n // we strip those out), unless the image is for presentation only.\n // See https://github.com/facebook/draft-js/issues/231 for some context.\n\n if (gkx('draftjs_fix_paste_for_img')) {\n if (image.getAttribute('role') !== 'presentation') {\n this._appendText(\"\\uD83D\\uDCF7\", style);\n }\n } else {\n this._appendText(\"\\uD83D\\uDCF7\", style);\n }\n\n this.currentEntity = null;\n }\n /**\n * Add the content of an HTML 'a' node to the internal state. Child nodes\n * (if any) are converted to Block Configs and appended to the provided\n * blockConfig array.\n */\n ;\n\n _proto._addAnchorNode = function _addAnchorNode(node, blockConfigs, style) {\n // The check has already been made by isValidAnchor but\n // we have to do it again to keep flow happy.\n if (!isHTMLAnchorElement(node)) {\n return;\n }\n\n var anchor = node;\n var entityConfig = {};\n anchorAttr.forEach(function (attr) {\n var anchorAttribute = anchor.getAttribute(attr);\n\n if (anchorAttribute) {\n entityConfig[attr] = anchorAttribute;\n }\n });\n entityConfig.url = new URI(anchor.href).toString(); // TODO: T15530363 update this when we remove DraftEntity completely\n\n this.currentEntity = this.entityMap.__create('LINK', 'MUTABLE', entityConfig || {});\n blockConfigs.push.apply(blockConfigs, this._toBlockConfigs(Array.from(node.childNodes), style));\n this.currentEntity = null;\n }\n /**\n * Walk the BlockConfig tree, compute parent/children/siblings,\n * and generate the corresponding ContentBlockNode\n */\n ;\n\n _proto._toContentBlocks = function _toContentBlocks(blockConfigs) {\n var parent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var l = blockConfigs.length - 1;\n\n for (var i = 0; i <= l; i++) {\n var config = blockConfigs[i];\n config.parent = parent;\n config.prevSibling = i > 0 ? blockConfigs[i - 1].key : null;\n config.nextSibling = i < l ? blockConfigs[i + 1].key : null;\n config.children = List(config.childConfigs.map(function (child) {\n return child.key;\n }));\n this.contentBlocks.push(new ContentBlockNode(_objectSpread({}, config)));\n\n this._toContentBlocks(config.childConfigs, config.key);\n }\n }\n /**\n * Remove 'useless' container nodes from the block config hierarchy, by\n * replacing them with their children.\n */\n ;\n\n _proto._hoistContainersInBlockConfigs = function _hoistContainersInBlockConfigs(blockConfigs) {\n var _this = this;\n\n var hoisted = List(blockConfigs).flatMap(function (blockConfig) {\n // Don't mess with useful blocks\n if (blockConfig.type !== 'unstyled' || blockConfig.text !== '') {\n return [blockConfig];\n }\n\n return _this._hoistContainersInBlockConfigs(blockConfig.childConfigs);\n });\n return hoisted;\n } // ***********************************************************************\n // The two methods below are used for backward compatibility when\n // experimentalTreeDataSupport is disabled.\n\n /**\n * Same as _toContentBlocks but replaces nested blocks by their\n * text content.\n */\n ;\n\n _proto._toFlatContentBlocks = function _toFlatContentBlocks(blockConfigs) {\n var _this2 = this;\n\n var cleanConfigs = this._hoistContainersInBlockConfigs(blockConfigs);\n\n cleanConfigs.forEach(function (config) {\n var _this2$_extractTextFr = _this2._extractTextFromBlockConfigs(config.childConfigs),\n text = _this2$_extractTextFr.text,\n characterList = _this2$_extractTextFr.characterList;\n\n _this2.contentBlocks.push(new ContentBlock(_objectSpread({}, config, {\n text: config.text + text,\n characterList: config.characterList.concat(characterList)\n })));\n });\n }\n /**\n * Extract the text and the associated inline styles form an\n * array of content block configs.\n */\n ;\n\n _proto._extractTextFromBlockConfigs = function _extractTextFromBlockConfigs(blockConfigs) {\n var l = blockConfigs.length - 1;\n var text = '';\n var characterList = List();\n\n for (var i = 0; i <= l; i++) {\n var config = blockConfigs[i];\n text += config.text;\n characterList = characterList.concat(config.characterList);\n\n if (text !== '' && config.type !== 'unstyled') {\n text += '\\n';\n characterList = characterList.push(characterList.last());\n }\n\n var children = this._extractTextFromBlockConfigs(config.childConfigs);\n\n text += children.text;\n characterList = characterList.concat(children.characterList);\n }\n\n return {\n text: text,\n characterList: characterList\n };\n };\n\n return ContentBlocksBuilder;\n}();\n/**\n * Converts an HTML string to an array of ContentBlocks and an EntityMap\n * suitable to initialize the internal state of a Draftjs component.\n */\n\n\nvar convertFromHTMLToContentBlocks = function convertFromHTMLToContentBlocks(html) {\n var DOMBuilder = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getSafeBodyFromHTML;\n var blockRenderMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DefaultDraftBlockRenderMap;\n // Be ABSOLUTELY SURE that the dom builder you pass here won't execute\n // arbitrary code in whatever environment you're running this in. For an\n // example of how we try to do this in-browser, see getSafeBodyFromHTML.\n // Remove funky characters from the HTML string\n html = html.trim().replace(REGEX_CR, '').replace(REGEX_NBSP, SPACE).replace(REGEX_CARRIAGE, '').replace(REGEX_ZWS, ''); // Build a DOM tree out of the HTML string\n\n var safeBody = DOMBuilder(html);\n\n if (!safeBody) {\n return null;\n } // Build a BlockTypeMap out of the BlockRenderMap\n\n\n var blockTypeMap = buildBlockTypeMap(blockRenderMap); // Select the proper block type for the cases where the blockRenderMap\n // uses multiple block types for the same html tag.\n\n var disambiguate = function disambiguate(tag, wrapper) {\n if (tag === 'li') {\n return wrapper === 'ol' ? 'ordered-list-item' : 'unordered-list-item';\n }\n\n return null;\n };\n\n return new ContentBlocksBuilder(blockTypeMap, disambiguate).addDOMNode(safeBody).getContentBlocks();\n};\n\nmodule.exports = convertFromHTMLToContentBlocks;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ContentBlock = require(\"./ContentBlock\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar ContentState = require(\"./ContentState\");\n\nvar DraftEntity = require(\"./DraftEntity\");\n\nvar DraftTreeAdapter = require(\"./DraftTreeAdapter\");\n\nvar DraftTreeInvariants = require(\"./DraftTreeInvariants\");\n\nvar SelectionState = require(\"./SelectionState\");\n\nvar createCharacterList = require(\"./createCharacterList\");\n\nvar decodeEntityRanges = require(\"./decodeEntityRanges\");\n\nvar decodeInlineStyleRanges = require(\"./decodeInlineStyleRanges\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar gkx = require(\"./gkx\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\nvar List = Immutable.List,\n Map = Immutable.Map,\n OrderedMap = Immutable.OrderedMap;\n\nvar decodeBlockNodeConfig = function decodeBlockNodeConfig(block, entityMap) {\n var key = block.key,\n type = block.type,\n data = block.data,\n text = block.text,\n depth = block.depth;\n var blockNodeConfig = {\n text: text,\n depth: depth || 0,\n type: type || 'unstyled',\n key: key || generateRandomKey(),\n data: Map(data),\n characterList: decodeCharacterList(block, entityMap)\n };\n return blockNodeConfig;\n};\n\nvar decodeCharacterList = function decodeCharacterList(block, entityMap) {\n var text = block.text,\n rawEntityRanges = block.entityRanges,\n rawInlineStyleRanges = block.inlineStyleRanges;\n var entityRanges = rawEntityRanges || [];\n var inlineStyleRanges = rawInlineStyleRanges || []; // Translate entity range keys to the DraftEntity map.\n\n return createCharacterList(decodeInlineStyleRanges(text, inlineStyleRanges), decodeEntityRanges(text, entityRanges.filter(function (range) {\n return entityMap.hasOwnProperty(range.key);\n }).map(function (range) {\n return _objectSpread({}, range, {\n key: entityMap[range.key]\n });\n })));\n};\n\nvar addKeyIfMissing = function addKeyIfMissing(block) {\n return _objectSpread({}, block, {\n key: block.key || generateRandomKey()\n });\n};\n/**\n * Node stack is responsible to ensure we traverse the tree only once\n * in depth order, while also providing parent refs to inner nodes to\n * construct their links.\n */\n\n\nvar updateNodeStack = function updateNodeStack(stack, nodes, parentRef) {\n var nodesWithParentRef = nodes.map(function (block) {\n return _objectSpread({}, block, {\n parentRef: parentRef\n });\n }); // since we pop nodes from the stack we need to insert them in reverse\n\n return stack.concat(nodesWithParentRef.reverse());\n};\n/**\n * This will build a tree draft content state by creating the node\n * reference links into a single tree walk. Each node has a link\n * reference to \"parent\", \"children\", \"nextSibling\" and \"prevSibling\"\n * blockMap will be created using depth ordering.\n */\n\n\nvar decodeContentBlockNodes = function decodeContentBlockNodes(blocks, entityMap) {\n return blocks // ensure children have valid keys to enable sibling links\n .map(addKeyIfMissing).reduce(function (blockMap, block, index) {\n !Array.isArray(block.children) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'invalid RawDraftContentBlock can not be converted to ContentBlockNode') : invariant(false) : void 0; // ensure children have valid keys to enable sibling links\n\n var children = block.children.map(addKeyIfMissing); // root level nodes\n\n var contentBlockNode = new ContentBlockNode(_objectSpread({}, decodeBlockNodeConfig(block, entityMap), {\n prevSibling: index === 0 ? null : blocks[index - 1].key,\n nextSibling: index === blocks.length - 1 ? null : blocks[index + 1].key,\n children: List(children.map(function (child) {\n return child.key;\n }))\n })); // push root node to blockMap\n\n blockMap = blockMap.set(contentBlockNode.getKey(), contentBlockNode); // this stack is used to ensure we visit all nodes respecting depth ordering\n\n var stack = updateNodeStack([], children, contentBlockNode); // start computing children nodes\n\n while (stack.length > 0) {\n // we pop from the stack and start processing this node\n var node = stack.pop(); // parentRef already points to a converted ContentBlockNode\n\n var parentRef = node.parentRef;\n var siblings = parentRef.getChildKeys();\n\n var _index = siblings.indexOf(node.key);\n\n var isValidBlock = Array.isArray(node.children);\n\n if (!isValidBlock) {\n !isValidBlock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'invalid RawDraftContentBlock can not be converted to ContentBlockNode') : invariant(false) : void 0;\n break;\n } // ensure children have valid keys to enable sibling links\n\n\n var _children = node.children.map(addKeyIfMissing);\n\n var _contentBlockNode = new ContentBlockNode(_objectSpread({}, decodeBlockNodeConfig(node, entityMap), {\n parent: parentRef.getKey(),\n children: List(_children.map(function (child) {\n return child.key;\n })),\n prevSibling: _index === 0 ? null : siblings.get(_index - 1),\n nextSibling: _index === siblings.size - 1 ? null : siblings.get(_index + 1)\n })); // push node to blockMap\n\n\n blockMap = blockMap.set(_contentBlockNode.getKey(), _contentBlockNode); // this stack is used to ensure we visit all nodes respecting depth ordering\n\n stack = updateNodeStack(stack, _children, _contentBlockNode);\n }\n\n return blockMap;\n }, OrderedMap());\n};\n\nvar decodeContentBlocks = function decodeContentBlocks(blocks, entityMap) {\n return OrderedMap(blocks.map(function (block) {\n var contentBlock = new ContentBlock(decodeBlockNodeConfig(block, entityMap));\n return [contentBlock.getKey(), contentBlock];\n }));\n};\n\nvar decodeRawBlocks = function decodeRawBlocks(rawState, entityMap) {\n var isTreeRawBlock = rawState.blocks.find(function (block) {\n return Array.isArray(block.children) && block.children.length > 0;\n });\n var rawBlocks = experimentalTreeDataSupport && !isTreeRawBlock ? DraftTreeAdapter.fromRawStateToRawTreeState(rawState).blocks : rawState.blocks;\n\n if (!experimentalTreeDataSupport) {\n return decodeContentBlocks(isTreeRawBlock ? DraftTreeAdapter.fromRawTreeStateToRawState(rawState).blocks : rawBlocks, entityMap);\n }\n\n var blockMap = decodeContentBlockNodes(rawBlocks, entityMap); // in dev mode, check that the tree invariants are met\n\n if (process.env.NODE_ENV !== \"production\") {\n !DraftTreeInvariants.isValidTree(blockMap) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should be a valid tree') : invariant(false) : void 0;\n }\n\n return blockMap;\n};\n\nvar decodeRawEntityMap = function decodeRawEntityMap(rawState) {\n var rawEntityMap = rawState.entityMap;\n var entityMap = {}; // TODO: Update this once we completely remove DraftEntity\n\n Object.keys(rawEntityMap).forEach(function (rawEntityKey) {\n var _rawEntityMap$rawEnti = rawEntityMap[rawEntityKey],\n type = _rawEntityMap$rawEnti.type,\n mutability = _rawEntityMap$rawEnti.mutability,\n data = _rawEntityMap$rawEnti.data; // get the key reference to created entity\n\n entityMap[rawEntityKey] = DraftEntity.__create(type, mutability, data || {});\n });\n return entityMap;\n};\n\nvar convertFromRawToDraftState = function convertFromRawToDraftState(rawState) {\n !Array.isArray(rawState.blocks) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'invalid RawDraftContentState') : invariant(false) : void 0; // decode entities\n\n var entityMap = decodeRawEntityMap(rawState); // decode blockMap\n\n var blockMap = decodeRawBlocks(rawState, entityMap); // create initial selection\n\n var selectionState = blockMap.isEmpty() ? new SelectionState() : SelectionState.createEmpty(blockMap.first().getKey());\n return new ContentState({\n blockMap: blockMap,\n entityMap: entityMap,\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n};\n\nmodule.exports = convertFromRawToDraftState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List;\n\nfunction createCharacterList(inlineStyles, entities) {\n var characterArray = inlineStyles.map(function (style, ii) {\n var entity = entities[ii];\n return CharacterMetadata.create({\n style: style,\n entity: entity\n });\n });\n return List(characterArray);\n}\n\nmodule.exports = createCharacterList;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar substr = UnicodeUtils.substr;\n/**\n * Convert to native JavaScript string lengths to determine ranges.\n */\n\nfunction decodeEntityRanges(text, ranges) {\n var entities = Array(text.length).fill(null);\n\n if (ranges) {\n ranges.forEach(function (range) {\n // Using Unicode-enabled substrings converted to JavaScript lengths,\n // fill the output array with entity keys.\n var start = substr(text, 0, range.offset).length;\n var end = start + substr(text, range.offset, range.length).length;\n\n for (var ii = start; ii < end; ii++) {\n entities[ii] = range.key;\n }\n });\n }\n\n return entities;\n}\n\nmodule.exports = decodeEntityRanges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar _require = require(\"immutable\"),\n OrderedSet = _require.OrderedSet;\n\nvar substr = UnicodeUtils.substr;\nvar EMPTY_SET = OrderedSet();\n/**\n * Convert to native JavaScript string lengths to determine ranges.\n */\n\nfunction decodeInlineStyleRanges(text, ranges) {\n var styles = Array(text.length).fill(EMPTY_SET);\n\n if (ranges) {\n ranges.forEach(function (range) {\n var cursor = substr(text, 0, range.offset).length;\n var end = cursor + substr(text, range.offset, range.length).length;\n\n while (cursor < end) {\n styles[cursor] = styles[cursor].add(range.style);\n cursor++;\n }\n });\n }\n\n return styles;\n}\n\nmodule.exports = decodeInlineStyleRanges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * Provides utilities for handling draftjs keys.\n *\n * @emails oncall+draft_js\n * \n * @format\n */\n'use strict';\n\nfunction notEmptyKey(key) {\n return key != null && key != '';\n}\n\nmodule.exports = {\n notEmptyKey: notEmptyKey\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar getEntityKeyForSelection = require(\"./getEntityKeyForSelection\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar isSelectionAtLeafStart = require(\"./isSelectionAtLeafStart\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar setImmediate = require(\"fbjs/lib/setImmediate\"); // When nothing is focused, Firefox regards two characters, `'` and `/`, as\n// commands that should open and focus the \"quickfind\" search bar. This should\n// *never* happen while a contenteditable is focused, but as of v28, it\n// sometimes does, even when the keypress event target is the contenteditable.\n// This breaks the input. Special case these characters to ensure that when\n// they are typed, we prevent default on the event to make sure not to\n// trigger quickfind.\n\n\nvar FF_QUICKFIND_CHAR = \"'\";\nvar FF_QUICKFIND_LINK_CHAR = '/';\nvar isFirefox = UserAgent.isBrowser('Firefox');\n\nfunction mustPreventDefaultForCharacter(character) {\n return isFirefox && (character == FF_QUICKFIND_CHAR || character == FF_QUICKFIND_LINK_CHAR);\n}\n/**\n * Replace the current selection with the specified text string, with the\n * inline style and entity key applied to the newly inserted text.\n */\n\n\nfunction replaceText(editorState, text, inlineStyle, entityKey, forceSelection) {\n var contentState = DraftModifier.replaceText(editorState.getCurrentContent(), editorState.getSelection(), text, inlineStyle, entityKey);\n return EditorState.push(editorState, contentState, 'insert-characters', forceSelection);\n}\n/**\n * When `onBeforeInput` executes, the browser is attempting to insert a\n * character into the editor. Apply this character data to the document,\n * allowing native insertion if possible.\n *\n * Native insertion is encouraged in order to limit re-rendering and to\n * preserve spellcheck highlighting, which disappears or flashes if re-render\n * occurs on the relevant text nodes.\n */\n\n\nfunction editOnBeforeInput(editor, e) {\n if (editor._pendingStateFromBeforeInput !== undefined) {\n editor.update(editor._pendingStateFromBeforeInput);\n editor._pendingStateFromBeforeInput = undefined;\n }\n\n var editorState = editor._latestEditorState;\n var chars = e.data; // In some cases (ex: IE ideographic space insertion) no character data\n // is provided. There's nothing to do when this happens.\n\n if (!chars) {\n return;\n } // Allow the top-level component to handle the insertion manually. This is\n // useful when triggering interesting behaviors for a character insertion,\n // Simple examples: replacing a raw text ':)' with a smile emoji or image\n // decorator, or setting a block to be a list item after typing '- ' at the\n // start of the block.\n\n\n if (editor.props.handleBeforeInput && isEventHandled(editor.props.handleBeforeInput(chars, editorState, e.timeStamp))) {\n e.preventDefault();\n return;\n } // If selection is collapsed, conditionally allow native behavior. This\n // reduces re-renders and preserves spellcheck highlighting. If the selection\n // is not collapsed, we will re-render.\n\n\n var selection = editorState.getSelection();\n var selectionStart = selection.getStartOffset();\n var anchorKey = selection.getAnchorKey();\n\n if (!selection.isCollapsed()) {\n e.preventDefault();\n editor.update(replaceText(editorState, chars, editorState.getCurrentInlineStyle(), getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection()), true));\n return;\n }\n\n var newEditorState = replaceText(editorState, chars, editorState.getCurrentInlineStyle(), getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection()), false); // Bunch of different cases follow where we need to prevent native insertion.\n\n var mustPreventNative = false;\n\n if (!mustPreventNative) {\n // Browsers tend to insert text in weird places in the DOM when typing at\n // the start of a leaf, so we'll handle it ourselves.\n mustPreventNative = isSelectionAtLeafStart(editor._latestCommittedEditorState);\n }\n\n if (!mustPreventNative) {\n // Let's say we have a decorator that highlights hashtags. In many cases\n // we need to prevent native behavior and rerender ourselves --\n // particularly, any case *except* where the inserted characters end up\n // anywhere except exactly where you put them.\n //\n // Using [] to denote a decorated leaf, some examples:\n //\n // 1. 'hi #' and append 'f'\n // desired rendering: 'hi [#f]'\n // native rendering would be: 'hi #f' (incorrect)\n //\n // 2. 'x [#foo]' and insert '#' before 'f'\n // desired rendering: 'x #[#foo]'\n // native rendering would be: 'x [##foo]' (incorrect)\n //\n // 3. '[#foobar]' and insert ' ' between 'foo' and 'bar'\n // desired rendering: '[#foo] bar'\n // native rendering would be: '[#foo bar]' (incorrect)\n //\n // 4. '[#foo]' and delete '#' [won't use this beforeinput codepath though]\n // desired rendering: 'foo'\n // native rendering would be: '[foo]' (incorrect)\n //\n // 5. '[#foo]' and append 'b'\n // desired rendering: '[#foob]'\n // native rendering would be: '[#foob]'\n // (native insertion here would be ok for decorators like simple spans,\n // but not more complex decorators. To be safe, we need to prevent it.)\n //\n // It is safe to allow native insertion if and only if the full list of\n // decorator ranges matches what we expect native insertion to give, and\n // the range lengths have not changed. We don't need to compare the content\n // because the only possible mutation to consider here is inserting plain\n // text and decorators can't affect text content.\n var oldBlockTree = editorState.getBlockTree(anchorKey);\n var newBlockTree = newEditorState.getBlockTree(anchorKey);\n mustPreventNative = oldBlockTree.size !== newBlockTree.size || oldBlockTree.zip(newBlockTree).some(function (_ref) {\n var oldLeafSet = _ref[0],\n newLeafSet = _ref[1];\n // selectionStart is guaranteed to be selectionEnd here\n var oldStart = oldLeafSet.get('start');\n var adjustedStart = oldStart + (oldStart >= selectionStart ? chars.length : 0);\n var oldEnd = oldLeafSet.get('end');\n var adjustedEnd = oldEnd + (oldEnd >= selectionStart ? chars.length : 0);\n var newStart = newLeafSet.get('start');\n var newEnd = newLeafSet.get('end');\n var newDecoratorKey = newLeafSet.get('decoratorKey');\n return (// Different decorators\n oldLeafSet.get('decoratorKey') !== newDecoratorKey || // Different number of inline styles\n oldLeafSet.get('leaves').size !== newLeafSet.get('leaves').size || // Different effective decorator position\n adjustedStart !== newStart || adjustedEnd !== newEnd || // Decorator already existed and its length changed\n newDecoratorKey != null && newEnd - newStart !== oldEnd - oldStart\n );\n });\n }\n\n if (!mustPreventNative) {\n mustPreventNative = mustPreventDefaultForCharacter(chars);\n }\n\n if (!mustPreventNative) {\n mustPreventNative = nullthrows(newEditorState.getDirectionMap()).get(anchorKey) !== nullthrows(editorState.getDirectionMap()).get(anchorKey);\n }\n\n if (mustPreventNative) {\n e.preventDefault();\n newEditorState = EditorState.set(newEditorState, {\n forceSelection: true\n });\n editor.update(newEditorState);\n return;\n } // We made it all the way! Let the browser do its thing and insert the char.\n\n\n newEditorState = EditorState.set(newEditorState, {\n nativelyRenderedContent: newEditorState.getCurrentContent()\n }); // The native event is allowed to occur. To allow user onChange handlers to\n // change the inserted text, we wait until the text is actually inserted\n // before we actually update our state. That way when we rerender, the text\n // we see in the DOM will already have been inserted properly.\n\n editor._pendingStateFromBeforeInput = newEditorState;\n setImmediate(function () {\n if (editor._pendingStateFromBeforeInput !== undefined) {\n editor.update(editor._pendingStateFromBeforeInput);\n editor._pendingStateFromBeforeInput = undefined;\n }\n });\n}\n\nmodule.exports = editOnBeforeInput;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar containsNode = require(\"fbjs/lib/containsNode\");\n\nvar getActiveElement = require(\"fbjs/lib/getActiveElement\");\n\nfunction editOnBlur(editor, e) {\n // In a contentEditable element, when you select a range and then click\n // another active element, this does trigger a `blur` event but will not\n // remove the DOM selection from the contenteditable.\n // This is consistent across all browsers, but we prefer that the editor\n // behave like a textarea, where a `blur` event clears the DOM selection.\n // We therefore force the issue to be certain, checking whether the active\n // element is `body` to force it when blurring occurs within the window (as\n // opposed to clicking to another tab or window).\n var ownerDocument = e.currentTarget.ownerDocument;\n\n if ( // This ESLint rule conflicts with `sketchy-null-bool` flow check\n // eslint-disable-next-line no-extra-boolean-cast\n !Boolean(editor.props.preserveSelectionOnBlur) && getActiveElement(ownerDocument) === ownerDocument.body) {\n var _selection = ownerDocument.defaultView.getSelection();\n\n var editorNode = editor.editor;\n\n if (_selection.rangeCount === 1 && containsNode(editorNode, _selection.anchorNode) && containsNode(editorNode, _selection.focusNode)) {\n _selection.removeAllRanges();\n }\n }\n\n var editorState = editor._latestEditorState;\n var currentSelection = editorState.getSelection();\n\n if (!currentSelection.getHasFocus()) {\n return;\n }\n\n var selection = currentSelection.set('hasFocus', false);\n editor.props.onBlur && editor.props.onBlur(e);\n editor.update(EditorState.acceptSelection(editorState, selection));\n}\n\nmodule.exports = editOnBlur;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n/**\n * The user has begun using an IME input system. Switching to `composite` mode\n * allows handling composition input and disables other edit behavior.\n */\n\n\nfunction editOnCompositionStart(editor, e) {\n editor.setMode('composite');\n editor.update(EditorState.set(editor._latestEditorState, {\n inCompositionMode: true\n })); // Allow composition handler to interpret the compositionstart event\n\n editor._onCompositionStart(e);\n}\n\nmodule.exports = editOnCompositionStart;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getFragmentFromSelection = require(\"./getFragmentFromSelection\");\n/**\n * If we have a selection, create a ContentState fragment and store\n * it in our internal clipboard. Subsequent paste events will use this\n * fragment if no external clipboard data is supplied.\n */\n\n\nfunction editOnCopy(editor, e) {\n var editorState = editor._latestEditorState;\n var selection = editorState.getSelection(); // No selection, so there's nothing to copy.\n\n if (selection.isCollapsed()) {\n e.preventDefault();\n return;\n }\n\n editor.setClipboard(getFragmentFromSelection(editor._latestEditorState));\n}\n\nmodule.exports = editOnCopy;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar Style = require(\"fbjs/lib/Style\");\n\nvar getFragmentFromSelection = require(\"./getFragmentFromSelection\");\n\nvar getScrollPosition = require(\"fbjs/lib/getScrollPosition\");\n\nvar isNode = require(\"./isInstanceOfNode\");\n/**\n * On `cut` events, native behavior is allowed to occur so that the system\n * clipboard is set properly. This means that we need to take steps to recover\n * the editor DOM state after the `cut` has occurred in order to maintain\n * control of the component.\n *\n * In addition, we can keep a copy of the removed fragment, including all\n * styles and entities, for use as an internal paste.\n */\n\n\nfunction editOnCut(editor, e) {\n var editorState = editor._latestEditorState;\n var selection = editorState.getSelection();\n var element = e.target;\n var scrollPosition; // No selection, so there's nothing to cut.\n\n if (selection.isCollapsed()) {\n e.preventDefault();\n return;\n } // Track the current scroll position so that it can be forced back in place\n // after the editor regains control of the DOM.\n\n\n if (isNode(element)) {\n var node = element;\n scrollPosition = getScrollPosition(Style.getScrollParent(node));\n }\n\n var fragment = getFragmentFromSelection(editorState);\n editor.setClipboard(fragment); // Set `cut` mode to disable all event handling temporarily.\n\n editor.setMode('cut'); // Let native `cut` behavior occur, then recover control.\n\n setTimeout(function () {\n editor.restoreEditorDOM(scrollPosition);\n editor.exitCurrentMode();\n editor.update(removeFragment(editorState));\n }, 0);\n}\n\nfunction removeFragment(editorState) {\n var newContent = DraftModifier.removeRange(editorState.getCurrentContent(), editorState.getSelection(), 'forward');\n return EditorState.push(editorState, newContent, 'remove-range');\n}\n\nmodule.exports = editOnCut;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Drag behavior has begun from outside the editor element.\n */\nfunction editOnDragOver(editor, e) {\n editor.setMode('drag');\n e.preventDefault();\n}\n\nmodule.exports = editOnDragOver;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * A `dragstart` event has begun within the text editor component.\n */\nfunction editOnDragStart(editor) {\n editor._internalDrag = true;\n editor.setMode('drag');\n}\n\nmodule.exports = editOnDragStart;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nfunction editOnFocus(editor, e) {\n var editorState = editor._latestEditorState;\n var currentSelection = editorState.getSelection();\n\n if (currentSelection.getHasFocus()) {\n return;\n }\n\n var selection = currentSelection.set('hasFocus', true);\n editor.props.onFocus && editor.props.onFocus(e); // When the tab containing this text editor is hidden and the user does a\n // find-in-page in a _different_ tab, Chrome on Mac likes to forget what the\n // selection was right after sending this focus event and (if you let it)\n // moves the cursor back to the beginning of the editor, so we force the\n // selection here instead of simply accepting it in order to preserve the\n // old cursor position. See https://crbug.com/540004.\n // But it looks like this is fixed in Chrome 60.0.3081.0.\n // Other browsers also don't have this bug, so we prefer to acceptSelection\n // when possible, to ensure that unfocusing and refocusing a Draft editor\n // doesn't preserve the selection, matching how textareas work.\n\n if (UserAgent.isBrowser('Chrome < 60.0.3081.0')) {\n editor.update(EditorState.forceSelection(editorState, selection));\n } else {\n editor.update(EditorState.acceptSelection(editorState, selection));\n }\n}\n\nmodule.exports = editOnFocus;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar _require = require(\"./draftKeyUtils\"),\n notEmptyKey = _require.notEmptyKey;\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar keyCommandPlainBackspace = require(\"./keyCommandPlainBackspace\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nvar isGecko = UserAgent.isEngine('Gecko');\nvar DOUBLE_NEWLINE = '\\n\\n';\n\nfunction onInputType(inputType, editorState) {\n switch (inputType) {\n case 'deleteContentBackward':\n return keyCommandPlainBackspace(editorState);\n }\n\n return editorState;\n}\n/**\n * This function serves two purposes\n *\n * 1. To update the editorState and call onChange method with the new\n * editorState. This editorState is calculated in editOnBeforeInput but the\n * onChange method is not called with the new state until this method does it.\n * It is done to handle a specific case where certain character inputs might\n * be replaced with something else. E.g. snippets ('rc' might be replaced\n * with boilerplate code for react component). More information on the\n * exact problem can be found here -\n * https://github.com/facebook/draft-js/commit/07892ba479bd4dfc6afd1e0ed179aaf51cd138b1\n *\n * 2. intended to handle spellcheck and autocorrect changes,\n * which occur in the DOM natively without any opportunity to observe or\n * interpret the changes before they occur.\n *\n * The `input` event fires in contentEditable elements reliably for non-IE\n * browsers, immediately after changes occur to the editor DOM. Since our other\n * handlers override or otherwise handle cover other varieties of text input,\n * the DOM state should match the model in all controlled input cases. Thus,\n * when an `input` change leads to a DOM/model mismatch, the change should be\n * due to a spellcheck change, and we can incorporate it into our model.\n */\n\n\nfunction editOnInput(editor, e) {\n if (editor._pendingStateFromBeforeInput !== undefined) {\n editor.update(editor._pendingStateFromBeforeInput);\n editor._pendingStateFromBeforeInput = undefined;\n } // at this point editor is not null for sure (after input)\n\n\n var castedEditorElement = editor.editor;\n var domSelection = castedEditorElement.ownerDocument.defaultView.getSelection();\n var anchorNode = domSelection.anchorNode,\n isCollapsed = domSelection.isCollapsed;\n var isNotTextOrElementNode = (anchorNode === null || anchorNode === void 0 ? void 0 : anchorNode.nodeType) !== Node.TEXT_NODE && (anchorNode === null || anchorNode === void 0 ? void 0 : anchorNode.nodeType) !== Node.ELEMENT_NODE;\n\n if (anchorNode == null || isNotTextOrElementNode) {\n // TODO: (t16149272) figure out context for this change\n return;\n }\n\n if (anchorNode.nodeType === Node.TEXT_NODE && (anchorNode.previousSibling !== null || anchorNode.nextSibling !== null)) {\n // When typing at the beginning of a visual line, Chrome splits the text\n // nodes into two. Why? No one knows. This commit is suspicious:\n // https://chromium.googlesource.com/chromium/src/+/a3b600981286b135632371477f902214c55a1724\n // To work around, we'll merge the sibling text nodes back into this one.\n var span = anchorNode.parentNode;\n\n if (span == null) {\n // Handle null-parent case.\n return;\n }\n\n anchorNode.nodeValue = span.textContent;\n\n for (var child = span.firstChild; child != null; child = child.nextSibling) {\n if (child !== anchorNode) {\n span.removeChild(child);\n }\n }\n }\n\n var domText = anchorNode.textContent;\n var editorState = editor._latestEditorState;\n var offsetKey = nullthrows(findAncestorOffsetKey(anchorNode));\n\n var _DraftOffsetKey$decod = DraftOffsetKey.decode(offsetKey),\n blockKey = _DraftOffsetKey$decod.blockKey,\n decoratorKey = _DraftOffsetKey$decod.decoratorKey,\n leafKey = _DraftOffsetKey$decod.leafKey;\n\n var _editorState$getBlock = editorState.getBlockTree(blockKey).getIn([decoratorKey, 'leaves', leafKey]),\n start = _editorState$getBlock.start,\n end = _editorState$getBlock.end;\n\n var content = editorState.getCurrentContent();\n var block = content.getBlockForKey(blockKey);\n var modelText = block.getText().slice(start, end); // Special-case soft newlines here. If the DOM text ends in a soft newline,\n // we will have manually inserted an extra soft newline in DraftEditorLeaf.\n // We want to remove this extra newline for the purpose of our comparison\n // of DOM and model text.\n\n if (domText.endsWith(DOUBLE_NEWLINE)) {\n domText = domText.slice(0, -1);\n } // No change -- the DOM is up to date. Nothing to do here.\n\n\n if (domText === modelText) {\n // This can be buggy for some Android keyboards because they don't fire\n // standard onkeydown/pressed events and only fired editOnInput\n // so domText is already changed by the browser and ends up being equal\n // to modelText unexpectedly.\n // Newest versions of Android support the dom-inputevent-inputtype\n // and we can use the `inputType` to properly apply the state changes.\n\n /* $FlowFixMe[prop-missing] inputType is only defined on a draft of a\n * standard. https://w3c.github.io/input-events/#dom-inputevent-inputtype\n */\n var inputType = e.nativeEvent.inputType;\n\n if (inputType) {\n var newEditorState = onInputType(inputType, editorState);\n\n if (newEditorState !== editorState) {\n editor.restoreEditorDOM();\n editor.update(newEditorState);\n return;\n }\n }\n\n return;\n }\n\n var selection = editorState.getSelection(); // We'll replace the entire leaf with the text content of the target.\n\n var targetRange = selection.merge({\n anchorOffset: start,\n focusOffset: end,\n isBackward: false\n });\n var entityKey = block.getEntityAt(start);\n var entity = notEmptyKey(entityKey) ? content.getEntity(entityKey) : null;\n var entityType = entity != null ? entity.getMutability() : null;\n var preserveEntity = entityType === 'MUTABLE'; // Immutable or segmented entities cannot properly be handled by the\n // default browser undo, so we have to use a different change type to\n // force using our internal undo method instead of falling through to the\n // native browser undo.\n\n var changeType = preserveEntity ? 'spellcheck-change' : 'apply-entity';\n var newContent = DraftModifier.replaceText(content, targetRange, domText, block.getInlineStyleAt(start), preserveEntity ? block.getEntityAt(start) : null);\n var anchorOffset, focusOffset, startOffset, endOffset;\n\n if (isGecko) {\n // Firefox selection does not change while the context menu is open, so\n // we preserve the anchor and focus values of the DOM selection.\n anchorOffset = domSelection.anchorOffset;\n focusOffset = domSelection.focusOffset;\n startOffset = start + Math.min(anchorOffset, focusOffset);\n endOffset = startOffset + Math.abs(anchorOffset - focusOffset);\n anchorOffset = startOffset;\n focusOffset = endOffset;\n } else {\n // Browsers other than Firefox may adjust DOM selection while the context\n // menu is open, and Safari autocorrect is prone to providing an inaccurate\n // DOM selection. Don't trust it. Instead, use our existing SelectionState\n // and adjust it based on the number of characters changed during the\n // mutation.\n var charDelta = domText.length - modelText.length;\n startOffset = selection.getStartOffset();\n endOffset = selection.getEndOffset();\n anchorOffset = isCollapsed ? endOffset + charDelta : startOffset;\n focusOffset = endOffset + charDelta;\n } // Segmented entities are completely or partially removed when their\n // text content changes. For this case we do not want any text to be selected\n // after the change, so we are not merging the selection.\n\n\n var contentWithAdjustedDOMSelection = newContent.merge({\n selectionBefore: content.getSelectionAfter(),\n selectionAfter: selection.merge({\n anchorOffset: anchorOffset,\n focusOffset: focusOffset\n })\n });\n editor.update(EditorState.push(editorState, contentWithAdjustedDOMSelection, changeType));\n}\n\nmodule.exports = editOnInput;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar KeyBindingUtil = require(\"./KeyBindingUtil\");\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nvar SecondaryClipboard = require(\"./SecondaryClipboard\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar keyCommandBackspaceToStartOfLine = require(\"./keyCommandBackspaceToStartOfLine\");\n\nvar keyCommandBackspaceWord = require(\"./keyCommandBackspaceWord\");\n\nvar keyCommandDeleteWord = require(\"./keyCommandDeleteWord\");\n\nvar keyCommandInsertNewline = require(\"./keyCommandInsertNewline\");\n\nvar keyCommandMoveSelectionToEndOfBlock = require(\"./keyCommandMoveSelectionToEndOfBlock\");\n\nvar keyCommandMoveSelectionToStartOfBlock = require(\"./keyCommandMoveSelectionToStartOfBlock\");\n\nvar keyCommandPlainBackspace = require(\"./keyCommandPlainBackspace\");\n\nvar keyCommandPlainDelete = require(\"./keyCommandPlainDelete\");\n\nvar keyCommandTransposeCharacters = require(\"./keyCommandTransposeCharacters\");\n\nvar keyCommandUndo = require(\"./keyCommandUndo\");\n\nvar isOptionKeyCommand = KeyBindingUtil.isOptionKeyCommand;\nvar isChrome = UserAgent.isBrowser('Chrome');\n/**\n * Map a `DraftEditorCommand` command value to a corresponding function.\n */\n\nfunction onKeyCommand(command, editorState, e) {\n switch (command) {\n case 'redo':\n return EditorState.redo(editorState);\n\n case 'delete':\n return keyCommandPlainDelete(editorState);\n\n case 'delete-word':\n return keyCommandDeleteWord(editorState);\n\n case 'backspace':\n return keyCommandPlainBackspace(editorState);\n\n case 'backspace-word':\n return keyCommandBackspaceWord(editorState);\n\n case 'backspace-to-start-of-line':\n return keyCommandBackspaceToStartOfLine(editorState, e);\n\n case 'split-block':\n return keyCommandInsertNewline(editorState);\n\n case 'transpose-characters':\n return keyCommandTransposeCharacters(editorState);\n\n case 'move-selection-to-start-of-block':\n return keyCommandMoveSelectionToStartOfBlock(editorState);\n\n case 'move-selection-to-end-of-block':\n return keyCommandMoveSelectionToEndOfBlock(editorState);\n\n case 'secondary-cut':\n return SecondaryClipboard.cut(editorState);\n\n case 'secondary-paste':\n return SecondaryClipboard.paste(editorState);\n\n default:\n return editorState;\n }\n}\n/**\n * Intercept keydown behavior to handle keys and commands manually, if desired.\n *\n * Keydown combinations may be mapped to `DraftCommand` values, which may\n * correspond to command functions that modify the editor or its contents.\n *\n * See `getDefaultKeyBinding` for defaults. Alternatively, the top-level\n * component may provide a custom mapping via the `keyBindingFn` prop.\n */\n\n\nfunction editOnKeyDown(editor, e) {\n var keyCode = e.which;\n var editorState = editor._latestEditorState;\n\n function callDeprecatedHandler(handlerName) {\n var deprecatedHandler = editor.props[handlerName];\n\n if (deprecatedHandler) {\n deprecatedHandler(e);\n return true;\n } else {\n return false;\n }\n }\n\n switch (keyCode) {\n case Keys.RETURN:\n e.preventDefault(); // The top-level component may manually handle newline insertion. If\n // no special handling is performed, fall through to command handling.\n\n if (editor.props.handleReturn && isEventHandled(editor.props.handleReturn(e, editorState))) {\n return;\n }\n\n break;\n\n case Keys.ESC:\n e.preventDefault();\n\n if (callDeprecatedHandler('onEscape')) {\n return;\n }\n\n break;\n\n case Keys.TAB:\n if (callDeprecatedHandler('onTab')) {\n return;\n }\n\n break;\n\n case Keys.UP:\n if (callDeprecatedHandler('onUpArrow')) {\n return;\n }\n\n break;\n\n case Keys.RIGHT:\n if (callDeprecatedHandler('onRightArrow')) {\n return;\n }\n\n break;\n\n case Keys.DOWN:\n if (callDeprecatedHandler('onDownArrow')) {\n return;\n }\n\n break;\n\n case Keys.LEFT:\n if (callDeprecatedHandler('onLeftArrow')) {\n return;\n }\n\n break;\n\n case Keys.SPACE:\n // Prevent Chrome on OSX behavior where option + space scrolls.\n if (isChrome && isOptionKeyCommand(e)) {\n e.preventDefault();\n }\n\n }\n\n var command = editor.props.keyBindingFn(e); // If no command is specified, allow keydown event to continue.\n\n if (command == null || command === '') {\n if (keyCode === Keys.SPACE && isChrome && isOptionKeyCommand(e)) {\n // The default keydown event has already been prevented in order to stop\n // Chrome from scrolling. Insert a nbsp into the editor as OSX would for\n // other browsers.\n var contentState = DraftModifier.replaceText(editorState.getCurrentContent(), editorState.getSelection(), \"\\xA0\");\n editor.update(EditorState.push(editorState, contentState, 'insert-characters'));\n }\n\n return;\n }\n\n if (command === 'undo') {\n // Since undo requires some special updating behavior to keep the editor\n // in sync, handle it separately.\n keyCommandUndo(e, editorState, editor.update);\n return;\n } // At this point, we know that we're handling a command of some kind, so\n // we don't want to insert a character following the keydown.\n\n\n e.preventDefault(); // Allow components higher up the tree to handle the command first.\n\n if (editor.props.handleKeyCommand && isEventHandled(editor.props.handleKeyCommand(command, editorState, e.timeStamp))) {\n return;\n }\n\n var newState = onKeyCommand(command, editorState, e);\n\n if (newState !== editorState) {\n editor.update(newState);\n }\n}\n\nmodule.exports = editOnKeyDown;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar DataTransfer = require(\"fbjs/lib/DataTransfer\");\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar DraftPasteProcessor = require(\"./DraftPasteProcessor\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar RichTextEditorUtil = require(\"./RichTextEditorUtil\");\n\nvar getEntityKeyForSelection = require(\"./getEntityKeyForSelection\");\n\nvar getTextContentFromFiles = require(\"./getTextContentFromFiles\");\n\nvar isEventHandled = require(\"./isEventHandled\");\n\nvar splitTextIntoTextBlocks = require(\"./splitTextIntoTextBlocks\");\n/**\n * Paste content.\n */\n\n\nfunction editOnPaste(editor, e) {\n e.preventDefault();\n var data = new DataTransfer(e.clipboardData); // Get files, unless this is likely to be a string the user wants inline.\n\n if (!data.isRichText()) {\n var files = data.getFiles();\n var defaultFileText = data.getText();\n\n if (files.length > 0) {\n // Allow customized paste handling for images, etc. Otherwise, fall\n // through to insert text contents into the editor.\n if (editor.props.handlePastedFiles && isEventHandled(editor.props.handlePastedFiles(files))) {\n return;\n }\n /* $FlowFixMe[incompatible-call] This comment suppresses an error found\n * DataTransfer was typed. getFiles() returns an array of <Files extends\n * Blob>, not Blob */\n\n\n getTextContentFromFiles(files, function (\n /*string*/\n fileText) {\n fileText = fileText || defaultFileText;\n\n if (!fileText) {\n return;\n }\n\n var editorState = editor._latestEditorState;\n var blocks = splitTextIntoTextBlocks(fileText);\n var character = CharacterMetadata.create({\n style: editorState.getCurrentInlineStyle(),\n entity: getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection())\n });\n var currentBlockType = RichTextEditorUtil.getCurrentBlockType(editorState);\n var text = DraftPasteProcessor.processText(blocks, character, currentBlockType);\n var fragment = BlockMapBuilder.createFromArray(text);\n var withInsertedText = DraftModifier.replaceWithFragment(editorState.getCurrentContent(), editorState.getSelection(), fragment);\n editor.update(EditorState.push(editorState, withInsertedText, 'insert-fragment'));\n });\n return;\n }\n }\n\n var textBlocks = [];\n var text = data.getText();\n var html = data.getHTML();\n var editorState = editor._latestEditorState;\n\n if (editor.props.formatPastedText) {\n var _editor$props$formatP = editor.props.formatPastedText(text, html),\n formattedText = _editor$props$formatP.text,\n formattedHtml = _editor$props$formatP.html;\n\n text = formattedText;\n html = formattedHtml;\n }\n\n if (editor.props.handlePastedText && isEventHandled(editor.props.handlePastedText(text, html, editorState))) {\n return;\n }\n\n if (text) {\n textBlocks = splitTextIntoTextBlocks(text);\n }\n\n if (!editor.props.stripPastedStyles) {\n // If the text from the paste event is rich content that matches what we\n // already have on the internal clipboard, assume that we should just use\n // the clipboard fragment for the paste. This will allow us to preserve\n // styling and entities, if any are present. Note that newlines are\n // stripped during comparison -- this is because copy/paste within the\n // editor in Firefox and IE will not include empty lines. The resulting\n // paste will preserve the newlines correctly.\n var internalClipboard = editor.getClipboard();\n\n if (!editor.props.formatPastedText && data.isRichText() && internalClipboard) {\n var _html;\n\n if ( // If the editorKey is present in the pasted HTML, it should be safe to\n // assume this is an internal paste.\n ((_html = html) === null || _html === void 0 ? void 0 : _html.indexOf(editor.getEditorKey())) !== -1 || // The copy may have been made within a single block, in which case the\n // editor key won't be part of the paste. In this case, just check\n // whether the pasted text matches the internal clipboard.\n textBlocks.length === 1 && internalClipboard.size === 1 && internalClipboard.first().getText() === text) {\n editor.update(insertFragment(editor._latestEditorState, internalClipboard));\n return;\n }\n } else if (internalClipboard && data.types.includes('com.apple.webarchive') && !data.types.includes('text/html') && areTextBlocksAndClipboardEqual(textBlocks, internalClipboard)) {\n // Safari does not properly store text/html in some cases.\n // Use the internalClipboard if present and equal to what is on\n // the clipboard. See https://bugs.webkit.org/show_bug.cgi?id=19893.\n editor.update(insertFragment(editor._latestEditorState, internalClipboard));\n return;\n } // If there is html paste data, try to parse that.\n\n\n if (html) {\n var htmlFragment = DraftPasteProcessor.processHTML(html, editor.props.blockRenderMap);\n\n if (htmlFragment) {\n var contentBlocks = htmlFragment.contentBlocks,\n entityMap = htmlFragment.entityMap;\n\n if (contentBlocks) {\n var htmlMap = BlockMapBuilder.createFromArray(contentBlocks);\n editor.update(insertFragment(editor._latestEditorState, htmlMap, entityMap));\n return;\n }\n }\n } // Otherwise, create a new fragment from our pasted text. Also\n // empty the internal clipboard, since it's no longer valid.\n\n\n editor.setClipboard(null);\n }\n\n if (textBlocks.length) {\n var character = CharacterMetadata.create({\n style: editorState.getCurrentInlineStyle(),\n entity: getEntityKeyForSelection(editorState.getCurrentContent(), editorState.getSelection())\n });\n var currentBlockType = RichTextEditorUtil.getCurrentBlockType(editorState);\n var textFragment = DraftPasteProcessor.processText(textBlocks, character, currentBlockType);\n var textMap = BlockMapBuilder.createFromArray(textFragment);\n editor.update(insertFragment(editor._latestEditorState, textMap));\n }\n}\n\nfunction insertFragment(editorState, fragment, entityMap) {\n var newContent = DraftModifier.replaceWithFragment(editorState.getCurrentContent(), editorState.getSelection(), fragment); // TODO: merge the entity map once we stop using DraftEntity\n // like this:\n // const mergedEntityMap = newContent.getEntityMap().merge(entityMap);\n\n return EditorState.push(editorState, newContent.set('entityMap', entityMap), 'insert-fragment');\n}\n\nfunction areTextBlocksAndClipboardEqual(textBlocks, blockMap) {\n return textBlocks.length === blockMap.size && blockMap.valueSeq().every(function (block, ii) {\n return block.getText() === textBlocks[ii];\n });\n}\n\nmodule.exports = editOnPaste;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftJsDebugLogging = require(\"./DraftJsDebugLogging\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar getContentEditableContainer = require(\"./getContentEditableContainer\");\n\nvar getDraftEditorSelection = require(\"./getDraftEditorSelection\");\n\nfunction editOnSelect(editor) {\n if (editor._blockSelectEvents || editor._latestEditorState !== editor.props.editorState) {\n if (editor._blockSelectEvents) {\n var _editorState = editor.props.editorState;\n\n var selectionState = _editorState.getSelection();\n\n DraftJsDebugLogging.logBlockedSelectionEvent({\n // For now I don't think we need any other info\n anonymizedDom: 'N/A',\n extraParams: JSON.stringify({\n stacktrace: new Error().stack\n }),\n selectionState: JSON.stringify(selectionState.toJS())\n });\n }\n\n return;\n }\n\n var editorState = editor.props.editorState;\n var documentSelection = getDraftEditorSelection(editorState, getContentEditableContainer(editor));\n var updatedSelectionState = documentSelection.selectionState;\n\n if (updatedSelectionState !== editorState.getSelection()) {\n if (documentSelection.needsRecovery) {\n editorState = EditorState.forceSelection(editorState, updatedSelectionState);\n } else {\n editorState = EditorState.acceptSelection(editorState, updatedSelectionState);\n }\n\n editor.update(editorState);\n }\n}\n\nmodule.exports = editOnSelect;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftStringKey = require(\"./DraftStringKey\");\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar strlen = UnicodeUtils.strlen;\n/**\n * Convert to UTF-8 character counts for storage.\n */\n\nfunction encodeEntityRanges(block, storageMap) {\n var encoded = [];\n block.findEntityRanges(function (character) {\n return !!character.getEntity();\n }, function (\n /*number*/\n start,\n /*number*/\n end) {\n var text = block.getText();\n var key = block.getEntityAt(start);\n encoded.push({\n offset: strlen(text.slice(0, start)),\n length: strlen(text.slice(start, end)),\n // Encode the key as a number for range storage.\n key: Number(storageMap[DraftStringKey.stringify(key)])\n });\n });\n return encoded;\n}\n\nmodule.exports = encodeEntityRanges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar areEqual = function areEqual(a, b) {\n return a === b;\n};\n\nvar isTruthy = function isTruthy(a) {\n return !!a;\n};\n\nvar EMPTY_ARRAY = [];\n/**\n * Helper function for getting encoded styles for each inline style. Convert\n * to UTF-8 character counts for storage.\n */\n\nfunction getEncodedInlinesForType(block, styleList, styleToEncode) {\n var ranges = []; // Obtain an array with ranges for only the specified style.\n\n var filteredInlines = styleList.map(function (style) {\n return style.has(styleToEncode);\n }).toList();\n findRangesImmutable(filteredInlines, areEqual, // We only want to keep ranges with nonzero style values.\n isTruthy, function (start, end) {\n var text = block.getText();\n ranges.push({\n offset: UnicodeUtils.strlen(text.slice(0, start)),\n length: UnicodeUtils.strlen(text.slice(start, end)),\n style: styleToEncode\n });\n });\n return ranges;\n}\n/*\n * Retrieve the encoded arrays of inline styles, with each individual style\n * treated separately.\n */\n\n\nfunction encodeInlineStyleRanges(block) {\n var styleList = block.getCharacterList().map(function (c) {\n return c.getStyle();\n }).toList();\n var ranges = styleList.flatten().toSet().map(function (style) {\n return getEncodedInlinesForType(block, styleList, style);\n });\n return Array.prototype.concat.apply(EMPTY_ARRAY, ranges.toJS());\n}\n\nmodule.exports = encodeInlineStyleRanges;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar getRangeClientRects = require(\"./getRangeClientRects\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n/**\n * Return the computed line height, in pixels, for the provided element.\n */\n\n\nfunction getLineHeightPx(element) {\n var computed = getComputedStyle(element);\n var correctDocument = getCorrectDocumentFromNode(element);\n var div = correctDocument.createElement('div');\n div.style.fontFamily = computed.fontFamily;\n div.style.fontSize = computed.fontSize;\n div.style.fontStyle = computed.fontStyle;\n div.style.fontWeight = computed.fontWeight;\n div.style.lineHeight = computed.lineHeight;\n div.style.position = 'absolute';\n div.textContent = 'M';\n var documentBody = correctDocument.body;\n !documentBody ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing document.body') : invariant(false) : void 0; // forced layout here\n\n documentBody.appendChild(div);\n var rect = div.getBoundingClientRect();\n documentBody.removeChild(div);\n return rect.height;\n}\n/**\n * Return whether every ClientRect in the provided list lies on the same line.\n *\n * We assume that the rects on the same line all contain the baseline, so the\n * lowest top line needs to be above the highest bottom line (i.e., if you were\n * to project the rects onto the y-axis, their intersection would be nonempty).\n *\n * In addition, we require that no two boxes are lineHeight (or more) apart at\n * either top or bottom, which helps protect against false positives for fonts\n * with extremely large glyph heights (e.g., with a font size of 17px, Zapfino\n * produces rects of height 58px!).\n */\n\n\nfunction areRectsOnOneLine(rects, lineHeight) {\n var minTop = Infinity;\n var minBottom = Infinity;\n var maxTop = -Infinity;\n var maxBottom = -Infinity;\n\n for (var ii = 0; ii < rects.length; ii++) {\n var rect = rects[ii];\n\n if (rect.width === 0 || rect.width === 1) {\n // When a range starts or ends a soft wrap, many browsers (Chrome, IE,\n // Safari) include an empty rect on the previous or next line. When the\n // text lies in a container whose position is not integral (e.g., from\n // margin: auto), Safari makes these empty rects have width 1 (instead of\n // 0). Having one-pixel-wide characters seems unlikely (and most browsers\n // report widths in subpixel precision anyway) so it's relatively safe to\n // skip over them.\n continue;\n }\n\n minTop = Math.min(minTop, rect.top);\n minBottom = Math.min(minBottom, rect.bottom);\n maxTop = Math.max(maxTop, rect.top);\n maxBottom = Math.max(maxBottom, rect.bottom);\n }\n\n return maxTop <= minBottom && maxTop - minTop < lineHeight && maxBottom - minBottom < lineHeight;\n}\n/**\n * Return the length of a node, as used by Range offsets.\n */\n\n\nfunction getNodeLength(node) {\n // http://www.w3.org/TR/dom/#concept-node-length\n switch (node.nodeType) {\n case Node.DOCUMENT_TYPE_NODE:\n return 0;\n\n case Node.TEXT_NODE:\n case Node.PROCESSING_INSTRUCTION_NODE:\n case Node.COMMENT_NODE:\n return node.length;\n\n default:\n return node.childNodes.length;\n }\n}\n/**\n * Given a collapsed range, move the start position backwards as far as\n * possible while the range still spans only a single line.\n */\n\n\nfunction expandRangeToStartOfLine(range) {\n !range.collapsed ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'expandRangeToStartOfLine: Provided range is not collapsed.') : invariant(false) : void 0;\n range = range.cloneRange();\n var containingElement = range.startContainer;\n\n if (containingElement.nodeType !== 1) {\n containingElement = containingElement.parentNode;\n }\n\n var lineHeight = getLineHeightPx(containingElement); // Imagine our text looks like:\n // <div><span>once upon a time, there was a <em>boy\n // who lived</em> </span><q><strong>under^ the\n // stairs</strong> in a small closet.</q></div>\n // where the caret represents the cursor. First, we crawl up the tree until\n // the range spans multiple lines (setting the start point to before\n // \"<strong>\", then before \"<div>\"), then at each level we do a search to\n // find the latest point which is still on a previous line. We'll find that\n // the break point is inside the span, then inside the <em>, then in its text\n // node child, the actual break point before \"who\".\n\n var bestContainer = range.endContainer;\n var bestOffset = range.endOffset;\n range.setStart(range.startContainer, 0);\n\n while (areRectsOnOneLine(getRangeClientRects(range), lineHeight)) {\n bestContainer = range.startContainer;\n bestOffset = range.startOffset;\n !bestContainer.parentNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Found unexpected detached subtree when traversing.') : invariant(false) : void 0;\n range.setStartBefore(bestContainer);\n\n if (bestContainer.nodeType === 1 && getComputedStyle(bestContainer).display !== 'inline') {\n // The start of the line is never in a different block-level container.\n break;\n }\n } // In the above example, range now spans from \"<div>\" to \"under\",\n // bestContainer is <div>, and bestOffset is 1 (index of <q> inside <div>)].\n // Picking out which child to recurse into here is a special case since we\n // don't want to check past <q> -- once we find that the final range starts\n // in <span>, we can look at all of its children (and all of their children)\n // to find the break point.\n // At all times, (bestContainer, bestOffset) is the latest single-line start\n // point that we know of.\n\n\n var currentContainer = bestContainer;\n var maxIndexToConsider = bestOffset - 1;\n\n do {\n var nodeValue = currentContainer.nodeValue;\n var ii = maxIndexToConsider;\n\n for (; ii >= 0; ii--) {\n if (nodeValue != null && ii > 0 && UnicodeUtils.isSurrogatePair(nodeValue, ii - 1)) {\n // We're in the middle of a surrogate pair -- skip over so we never\n // return a range with an endpoint in the middle of a code point.\n continue;\n }\n\n range.setStart(currentContainer, ii);\n\n if (areRectsOnOneLine(getRangeClientRects(range), lineHeight)) {\n bestContainer = currentContainer;\n bestOffset = ii;\n } else {\n break;\n }\n }\n\n if (ii === -1 || currentContainer.childNodes.length === 0) {\n // If ii === -1, then (bestContainer, bestOffset), which is equal to\n // (currentContainer, 0), was a single-line start point but a start\n // point before currentContainer wasn't, so the line break seems to\n // have occurred immediately after currentContainer's start tag\n //\n // If currentContainer.childNodes.length === 0, we're already at a\n // terminal node (e.g., text node) and should return our current best.\n break;\n }\n\n currentContainer = currentContainer.childNodes[ii];\n maxIndexToConsider = getNodeLength(currentContainer);\n } while (true);\n\n range.setStart(bestContainer, bestOffset);\n return range;\n}\n\nmodule.exports = expandRangeToStartOfLine;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar getSelectionOffsetKeyForNode = require(\"./getSelectionOffsetKeyForNode\");\n/**\n * Get the key from the node's nearest offset-aware ancestor.\n */\n\n\nfunction findAncestorOffsetKey(node) {\n var searchNode = node;\n\n while (searchNode && searchNode !== getCorrectDocumentFromNode(node).documentElement) {\n var key = getSelectionOffsetKeyForNode(searchNode);\n\n if (key != null) {\n return key;\n }\n\n searchNode = searchNode.parentNode;\n }\n\n return null;\n}\n\nmodule.exports = findAncestorOffsetKey;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Search through an array to find contiguous stretches of elements that\n * match a specified filter function.\n *\n * When ranges are found, execute a specified `found` function to supply\n * the values to the caller.\n */\nfunction findRangesImmutable(haystack, areEqualFn, filterFn, foundFn) {\n if (!haystack.size) {\n return;\n }\n\n var cursor = 0;\n haystack.reduce(function (value, nextValue, nextIndex) {\n if (!areEqualFn(value, nextValue)) {\n if (filterFn(value)) {\n foundFn(cursor, nextIndex);\n }\n\n cursor = nextIndex;\n }\n\n return nextValue;\n });\n filterFn(haystack.last()) && foundFn(cursor, haystack.count());\n}\n\nmodule.exports = findRangesImmutable;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar seenKeys = {};\nvar MULTIPLIER = Math.pow(2, 24);\n\nfunction generateRandomKey() {\n var key;\n\n while (key === undefined || seenKeys.hasOwnProperty(key) || !isNaN(+key)) {\n key = Math.floor(Math.random() * MULTIPLIER).toString(32);\n }\n\n seenKeys[key] = true;\n return key;\n}\n\nmodule.exports = generateRandomKey;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftEntitySegments = require(\"./DraftEntitySegments\");\n\nvar getRangesForDraftEntity = require(\"./getRangesForDraftEntity\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n/**\n * Given a SelectionState and a removal direction, determine the entire range\n * that should be removed from a ContentState. This is based on any entities\n * within the target, with their `mutability` values taken into account.\n *\n * For instance, if we are attempting to remove part of an \"immutable\" entity\n * range, the entire entity must be removed. The returned `SelectionState`\n * will be adjusted accordingly.\n */\n\n\nfunction getCharacterRemovalRange(entityMap, startBlock, endBlock, selectionState, direction) {\n var start = selectionState.getStartOffset();\n var end = selectionState.getEndOffset();\n var startEntityKey = startBlock.getEntityAt(start);\n var endEntityKey = endBlock.getEntityAt(end - 1);\n\n if (!startEntityKey && !endEntityKey) {\n return selectionState;\n }\n\n var newSelectionState = selectionState;\n\n if (startEntityKey && startEntityKey === endEntityKey) {\n newSelectionState = getEntityRemovalRange(entityMap, startBlock, newSelectionState, direction, startEntityKey, true, true);\n } else if (startEntityKey && endEntityKey) {\n var startSelectionState = getEntityRemovalRange(entityMap, startBlock, newSelectionState, direction, startEntityKey, false, true);\n var endSelectionState = getEntityRemovalRange(entityMap, endBlock, newSelectionState, direction, endEntityKey, false, false);\n newSelectionState = newSelectionState.merge({\n anchorOffset: startSelectionState.getAnchorOffset(),\n focusOffset: endSelectionState.getFocusOffset(),\n isBackward: false\n });\n } else if (startEntityKey) {\n var _startSelectionState = getEntityRemovalRange(entityMap, startBlock, newSelectionState, direction, startEntityKey, false, true);\n\n newSelectionState = newSelectionState.merge({\n anchorOffset: _startSelectionState.getStartOffset(),\n isBackward: false\n });\n } else if (endEntityKey) {\n var _endSelectionState = getEntityRemovalRange(entityMap, endBlock, newSelectionState, direction, endEntityKey, false, false);\n\n newSelectionState = newSelectionState.merge({\n focusOffset: _endSelectionState.getEndOffset(),\n isBackward: false\n });\n }\n\n return newSelectionState;\n}\n\nfunction getEntityRemovalRange(entityMap, block, selectionState, direction, entityKey, isEntireSelectionWithinEntity, isEntityAtStart) {\n var start = selectionState.getStartOffset();\n var end = selectionState.getEndOffset();\n\n var entity = entityMap.__get(entityKey);\n\n var mutability = entity.getMutability();\n var sideToConsider = isEntityAtStart ? start : end; // `MUTABLE` entities can just have the specified range of text removed\n // directly. No adjustments are needed.\n\n if (mutability === 'MUTABLE') {\n return selectionState;\n } // Find the entity range that overlaps with our removal range.\n\n\n var entityRanges = getRangesForDraftEntity(block, entityKey).filter(function (range) {\n return sideToConsider <= range.end && sideToConsider >= range.start;\n });\n !(entityRanges.length == 1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'There should only be one entity range within this removal range.') : invariant(false) : void 0;\n var entityRange = entityRanges[0]; // For `IMMUTABLE` entity types, we will remove the entire entity range.\n\n if (mutability === 'IMMUTABLE') {\n return selectionState.merge({\n anchorOffset: entityRange.start,\n focusOffset: entityRange.end,\n isBackward: false\n });\n } // For `SEGMENTED` entity types, determine the appropriate segment to\n // remove.\n\n\n if (!isEntireSelectionWithinEntity) {\n if (isEntityAtStart) {\n end = entityRange.end;\n } else {\n start = entityRange.start;\n }\n }\n\n var removalRange = DraftEntitySegments.getRemovalRange(start, end, block.getText().slice(entityRange.start, entityRange.end), entityRange.start, direction);\n return selectionState.merge({\n anchorOffset: removalRange.start,\n focusOffset: removalRange.end,\n isBackward: false\n });\n}\n\nmodule.exports = getCharacterRemovalRange;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isHTMLElement = require(\"./isHTMLElement\");\n\nfunction getContentEditableContainer(editor) {\n var editorNode = editor.editorContainer;\n !editorNode ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing editorNode') : invariant(false) : void 0;\n !isHTMLElement(editorNode.firstChild) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'editorNode.firstChild is not an HTMLElement') : invariant(false) : void 0;\n var htmlElement = editorNode.firstChild;\n return htmlElement;\n}\n\nmodule.exports = getContentEditableContainer;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar randomizeBlockMapKeys = require(\"./randomizeBlockMapKeys\");\n\nvar removeEntitiesAtEdges = require(\"./removeEntitiesAtEdges\");\n\nvar getContentStateFragment = function getContentStateFragment(contentState, selectionState) {\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset(); // Edge entities should be stripped to ensure that we don't preserve\n // invalid partial entities when the fragment is reused. We do, however,\n // preserve entities that are entirely within the selection range.\n\n var contentWithoutEdgeEntities = removeEntitiesAtEdges(contentState, selectionState);\n var blockMap = contentWithoutEdgeEntities.getBlockMap();\n var blockKeys = blockMap.keySeq();\n var startIndex = blockKeys.indexOf(startKey);\n var endIndex = blockKeys.indexOf(endKey) + 1;\n return randomizeBlockMapKeys(blockMap.slice(startIndex, endIndex).map(function (block, blockKey) {\n var text = block.getText();\n var chars = block.getCharacterList();\n\n if (startKey === endKey) {\n return block.merge({\n text: text.slice(startOffset, endOffset),\n characterList: chars.slice(startOffset, endOffset)\n });\n }\n\n if (blockKey === startKey) {\n return block.merge({\n text: text.slice(startOffset),\n characterList: chars.slice(startOffset)\n });\n }\n\n if (blockKey === endKey) {\n return block.merge({\n text: text.slice(0, endOffset),\n characterList: chars.slice(0, endOffset)\n });\n }\n\n return block;\n }));\n};\n\nmodule.exports = getContentStateFragment;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction getCorrectDocumentFromNode(node) {\n if (!node || !node.ownerDocument) {\n return document;\n }\n\n return node.ownerDocument;\n}\n\nmodule.exports = getCorrectDocumentFromNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar KeyBindingUtil = require(\"./KeyBindingUtil\");\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar isOSX = UserAgent.isPlatform('Mac OS X'); // Firefox on OSX had a bug resulting in navigation instead of cursor movement.\n// This bug was fixed in Firefox 29. Feature detection is virtually impossible\n// so we just check the version number. See #342765.\n\nvar shouldFixFirefoxMovement = isOSX && UserAgent.isBrowser('Firefox < 29');\nvar hasCommandModifier = KeyBindingUtil.hasCommandModifier,\n isCtrlKeyCommand = KeyBindingUtil.isCtrlKeyCommand;\n\nfunction shouldRemoveWord(e) {\n return isOSX && e.altKey || isCtrlKeyCommand(e);\n}\n/**\n * Get the appropriate undo/redo command for a Z key command.\n */\n\n\nfunction getZCommand(e) {\n if (!hasCommandModifier(e)) {\n return null;\n }\n\n return e.shiftKey ? 'redo' : 'undo';\n}\n\nfunction getDeleteCommand(e) {\n // Allow default \"cut\" behavior for PCs on Shift + Delete.\n if (!isOSX && e.shiftKey) {\n return null;\n }\n\n return shouldRemoveWord(e) ? 'delete-word' : 'delete';\n}\n\nfunction getBackspaceCommand(e) {\n if (hasCommandModifier(e) && isOSX) {\n return 'backspace-to-start-of-line';\n }\n\n return shouldRemoveWord(e) ? 'backspace-word' : 'backspace';\n}\n/**\n * Retrieve a bound key command for the given event.\n */\n\n\nfunction getDefaultKeyBinding(e) {\n switch (e.keyCode) {\n case 66:\n // B\n return hasCommandModifier(e) ? 'bold' : null;\n\n case 68:\n // D\n return isCtrlKeyCommand(e) ? 'delete' : null;\n\n case 72:\n // H\n return isCtrlKeyCommand(e) ? 'backspace' : null;\n\n case 73:\n // I\n return hasCommandModifier(e) ? 'italic' : null;\n\n case 74:\n // J\n return hasCommandModifier(e) ? 'code' : null;\n\n case 75:\n // K\n return isOSX && isCtrlKeyCommand(e) ? 'secondary-cut' : null;\n\n case 77:\n // M\n return isCtrlKeyCommand(e) ? 'split-block' : null;\n\n case 79:\n // O\n return isCtrlKeyCommand(e) ? 'split-block' : null;\n\n case 84:\n // T\n return isOSX && isCtrlKeyCommand(e) ? 'transpose-characters' : null;\n\n case 85:\n // U\n return hasCommandModifier(e) ? 'underline' : null;\n\n case 87:\n // W\n return isOSX && isCtrlKeyCommand(e) ? 'backspace-word' : null;\n\n case 89:\n // Y\n if (isCtrlKeyCommand(e)) {\n return isOSX ? 'secondary-paste' : 'redo';\n }\n\n return null;\n\n case 90:\n // Z\n return getZCommand(e) || null;\n\n case Keys.RETURN:\n return 'split-block';\n\n case Keys.DELETE:\n return getDeleteCommand(e);\n\n case Keys.BACKSPACE:\n return getBackspaceCommand(e);\n // LEFT/RIGHT handlers serve as a workaround for a Firefox bug.\n\n case Keys.LEFT:\n return shouldFixFirefoxMovement && hasCommandModifier(e) ? 'move-selection-to-start-of-block' : null;\n\n case Keys.RIGHT:\n return shouldFixFirefoxMovement && hasCommandModifier(e) ? 'move-selection-to-end-of-block' : null;\n\n default:\n return null;\n }\n}\n\nmodule.exports = getDefaultKeyBinding;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getDraftEditorSelectionWithNodes = require(\"./getDraftEditorSelectionWithNodes\");\n/**\n * Convert the current selection range to an anchor/focus pair of offset keys\n * and values that can be interpreted by components.\n */\n\n\nfunction getDraftEditorSelection(editorState, root) {\n var selection = root.ownerDocument.defaultView.getSelection();\n var anchorNode = selection.anchorNode,\n anchorOffset = selection.anchorOffset,\n focusNode = selection.focusNode,\n focusOffset = selection.focusOffset,\n rangeCount = selection.rangeCount;\n\n if ( // No active selection.\n rangeCount === 0 || // No selection, ever. As in, the user hasn't selected anything since\n // opening the document.\n anchorNode == null || focusNode == null) {\n return {\n selectionState: editorState.getSelection().set('hasFocus', false),\n needsRecovery: false\n };\n }\n\n return getDraftEditorSelectionWithNodes(editorState, root, anchorNode, anchorOffset, focusNode, focusOffset);\n}\n\nmodule.exports = getDraftEditorSelection;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar findAncestorOffsetKey = require(\"./findAncestorOffsetKey\");\n\nvar getSelectionOffsetKeyForNode = require(\"./getSelectionOffsetKeyForNode\");\n\nvar getUpdatedSelectionState = require(\"./getUpdatedSelectionState\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isElement = require(\"./isElement\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\n/**\n * Convert the current selection range to an anchor/focus pair of offset keys\n * and values that can be interpreted by components.\n */\nfunction getDraftEditorSelectionWithNodes(editorState, root, anchorNode, anchorOffset, focusNode, focusOffset) {\n var anchorIsTextNode = anchorNode.nodeType === Node.TEXT_NODE;\n var focusIsTextNode = focusNode.nodeType === Node.TEXT_NODE; // If the selection range lies only on text nodes, the task is simple.\n // Find the nearest offset-aware elements and use the\n // offset values supplied by the selection range.\n\n if (anchorIsTextNode && focusIsTextNode) {\n return {\n selectionState: getUpdatedSelectionState(editorState, nullthrows(findAncestorOffsetKey(anchorNode)), anchorOffset, nullthrows(findAncestorOffsetKey(focusNode)), focusOffset),\n needsRecovery: false\n };\n }\n\n var anchorPoint = null;\n var focusPoint = null;\n var needsRecovery = true; // An element is selected. Convert this selection range into leaf offset\n // keys and offset values for consumption at the component level. This\n // is common in Firefox, where select-all and triple click behavior leads\n // to entire elements being selected.\n //\n // Note that we use the `needsRecovery` parameter in the callback here. This\n // is because when certain elements are selected, the behavior for subsequent\n // cursor movement (e.g. via arrow keys) is uncertain and may not match\n // expectations at the component level. For example, if an entire <div> is\n // selected and the user presses the right arrow, Firefox keeps the selection\n // on the <div>. If we allow subsequent keypresses to insert characters\n // natively, they will be inserted into a browser-created text node to the\n // right of that <div>. This is obviously undesirable.\n //\n // With the `needsRecovery` flag, we inform the caller that it is responsible\n // for manually setting the selection state on the rendered document to\n // ensure proper selection state maintenance.\n\n if (anchorIsTextNode) {\n anchorPoint = {\n key: nullthrows(findAncestorOffsetKey(anchorNode)),\n offset: anchorOffset\n };\n focusPoint = getPointForNonTextNode(root, focusNode, focusOffset);\n } else if (focusIsTextNode) {\n focusPoint = {\n key: nullthrows(findAncestorOffsetKey(focusNode)),\n offset: focusOffset\n };\n anchorPoint = getPointForNonTextNode(root, anchorNode, anchorOffset);\n } else {\n anchorPoint = getPointForNonTextNode(root, anchorNode, anchorOffset);\n focusPoint = getPointForNonTextNode(root, focusNode, focusOffset); // If the selection is collapsed on an empty block, don't force recovery.\n // This way, on arrow key selection changes, the browser can move the\n // cursor from a non-zero offset on one block, through empty blocks,\n // to a matching non-zero offset on other text blocks.\n\n if (anchorNode === focusNode && anchorOffset === focusOffset) {\n needsRecovery = !!anchorNode.firstChild && anchorNode.firstChild.nodeName !== 'BR';\n }\n }\n\n return {\n selectionState: getUpdatedSelectionState(editorState, anchorPoint.key, anchorPoint.offset, focusPoint.key, focusPoint.offset),\n needsRecovery: needsRecovery\n };\n}\n/**\n * Identify the first leaf descendant for the given node.\n */\n\n\nfunction getFirstLeaf(node) {\n while (node.firstChild && ( // data-blocks has no offset\n isElement(node.firstChild) && node.firstChild.getAttribute('data-blocks') === 'true' || getSelectionOffsetKeyForNode(node.firstChild))) {\n node = node.firstChild;\n }\n\n return node;\n}\n/**\n * Identify the last leaf descendant for the given node.\n */\n\n\nfunction getLastLeaf(node) {\n while (node.lastChild && ( // data-blocks has no offset\n isElement(node.lastChild) && node.lastChild.getAttribute('data-blocks') === 'true' || getSelectionOffsetKeyForNode(node.lastChild))) {\n node = node.lastChild;\n }\n\n return node;\n}\n\nfunction getPointForNonTextNode(editorRoot, startNode, childOffset) {\n var node = startNode;\n var offsetKey = findAncestorOffsetKey(node);\n !(offsetKey != null || editorRoot && (editorRoot === node || editorRoot.firstChild === node)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unknown node in selection range.') : invariant(false) : void 0; // If the editorRoot is the selection, step downward into the content\n // wrapper.\n\n if (editorRoot === node) {\n node = node.firstChild;\n !isElement(node) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid DraftEditorContents node.') : invariant(false) : void 0;\n var castedNode = node; // assignment only added for flow :/\n // otherwise it throws in line 200 saying that node can be null or undefined\n\n node = castedNode;\n !(node.getAttribute('data-contents') === 'true') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid DraftEditorContents structure.') : invariant(false) : void 0;\n\n if (childOffset > 0) {\n childOffset = node.childNodes.length;\n }\n } // If the child offset is zero and we have an offset key, we're done.\n // If there's no offset key because the entire editor is selected,\n // find the leftmost (\"first\") leaf in the tree and use that as the offset\n // key.\n\n\n if (childOffset === 0) {\n var key = null;\n\n if (offsetKey != null) {\n key = offsetKey;\n } else {\n var firstLeaf = getFirstLeaf(node);\n key = nullthrows(getSelectionOffsetKeyForNode(firstLeaf));\n }\n\n return {\n key: key,\n offset: 0\n };\n }\n\n var nodeBeforeCursor = node.childNodes[childOffset - 1];\n var leafKey = null;\n var textLength = null;\n\n if (!getSelectionOffsetKeyForNode(nodeBeforeCursor)) {\n // Our target node may be a leaf or a text node, in which case we're\n // already where we want to be and can just use the child's length as\n // our offset.\n leafKey = nullthrows(offsetKey);\n textLength = getTextContentLength(nodeBeforeCursor);\n } else {\n // Otherwise, we'll look at the child to the left of the cursor and find\n // the last leaf node in its subtree.\n var lastLeaf = getLastLeaf(nodeBeforeCursor);\n leafKey = nullthrows(getSelectionOffsetKeyForNode(lastLeaf));\n textLength = getTextContentLength(lastLeaf);\n }\n\n return {\n key: leafKey,\n offset: textLength\n };\n}\n/**\n * Return the length of a node's textContent, regarding single newline\n * characters as zero-length. This allows us to avoid problems with identifying\n * the correct selection offset for empty blocks in IE, in which we\n * render newlines instead of break tags.\n */\n\n\nfunction getTextContentLength(node) {\n var textContent = node.textContent;\n return textContent === '\\n' ? 0 : textContent.length;\n}\n\nmodule.exports = getDraftEditorSelectionWithNodes;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar _require = require(\"./draftKeyUtils\"),\n notEmptyKey = _require.notEmptyKey;\n/**\n * Return the entity key that should be used when inserting text for the\n * specified target selection, only if the entity is `MUTABLE`. `IMMUTABLE`\n * and `SEGMENTED` entities should not be used for insertion behavior.\n */\n\n\nfunction getEntityKeyForSelection(contentState, targetSelection) {\n var entityKey;\n\n if (targetSelection.isCollapsed()) {\n var key = targetSelection.getAnchorKey();\n var offset = targetSelection.getAnchorOffset();\n\n if (offset > 0) {\n entityKey = contentState.getBlockForKey(key).getEntityAt(offset - 1);\n\n if (entityKey !== contentState.getBlockForKey(key).getEntityAt(offset)) {\n return null;\n }\n\n return filterKey(contentState.getEntityMap(), entityKey);\n }\n\n return null;\n }\n\n var startKey = targetSelection.getStartKey();\n var startOffset = targetSelection.getStartOffset();\n var startBlock = contentState.getBlockForKey(startKey);\n entityKey = startOffset === startBlock.getLength() ? null : startBlock.getEntityAt(startOffset);\n return filterKey(contentState.getEntityMap(), entityKey);\n}\n/**\n * Determine whether an entity key corresponds to a `MUTABLE` entity. If so,\n * return it. If not, return null.\n */\n\n\nfunction filterKey(entityMap, entityKey) {\n if (notEmptyKey(entityKey)) {\n var entity = entityMap.__get(entityKey);\n\n return entity.getMutability() === 'MUTABLE' ? entityKey : null;\n }\n\n return null;\n}\n\nmodule.exports = getEntityKeyForSelection;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n\nfunction getFragmentFromSelection(editorState) {\n var selectionState = editorState.getSelection();\n\n if (selectionState.isCollapsed()) {\n return null;\n }\n\n return getContentStateFragment(editorState.getCurrentContent(), selectionState);\n}\n\nmodule.exports = getFragmentFromSelection;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n *\n * This is unstable and not part of the public API and should not be used by\n * production systems. This file may be update/removed without notice.\n */\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar getNextDelimiterBlockKey = function getNextDelimiterBlockKey(block, blockMap) {\n var isExperimentalTreeBlock = block instanceof ContentBlockNode;\n\n if (!isExperimentalTreeBlock) {\n return null;\n }\n\n var nextSiblingKey = block.getNextSiblingKey();\n\n if (nextSiblingKey) {\n return nextSiblingKey;\n }\n\n var parent = block.getParentKey();\n\n if (!parent) {\n return null;\n }\n\n var nextNonDescendantBlock = blockMap.get(parent);\n\n while (nextNonDescendantBlock && !nextNonDescendantBlock.getNextSiblingKey()) {\n var parentKey = nextNonDescendantBlock.getParentKey();\n nextNonDescendantBlock = parentKey ? blockMap.get(parentKey) : null;\n }\n\n if (!nextNonDescendantBlock) {\n return null;\n }\n\n return nextNonDescendantBlock.getNextSiblingKey();\n};\n\nmodule.exports = getNextDelimiterBlockKey;","\"use strict\";\n\n/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * \n * @typechecks\n * @format\n */\n\n/**\n * Retrieve an object's own values as an array. If you want the values in the\n * protoype chain, too, use getObjectValuesIncludingPrototype.\n *\n * If you are looking for a function that creates an Array instance based\n * on an \"Array-like\" object, use createArrayFrom instead.\n *\n * @param {object} obj An object.\n * @return {array} The object's values.\n */\nfunction getOwnObjectValues(obj) {\n return Object.keys(obj).map(function (key) {\n return obj[key];\n });\n}\n\nmodule.exports = getOwnObjectValues;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getRangeClientRects = require(\"./getRangeClientRects\");\n\n/**\n * Like range.getBoundingClientRect() but normalizes for browser bugs.\n */\nfunction getRangeBoundingClientRect(range) {\n // \"Return a DOMRect object describing the smallest rectangle that includes\n // the first rectangle in list and all of the remaining rectangles of which\n // the height or width is not zero.\"\n // http://www.w3.org/TR/cssom-view/#dom-range-getboundingclientrect\n var rects = getRangeClientRects(range);\n var top = 0;\n var right = 0;\n var bottom = 0;\n var left = 0;\n\n if (rects.length) {\n // If the first rectangle has 0 width, we use the second, this is needed\n // because Chrome renders a 0 width rectangle when the selection contains\n // a line break.\n if (rects.length > 1 && rects[0].width === 0) {\n var _rects$ = rects[1];\n top = _rects$.top;\n right = _rects$.right;\n bottom = _rects$.bottom;\n left = _rects$.left;\n } else {\n var _rects$2 = rects[0];\n top = _rects$2.top;\n right = _rects$2.right;\n bottom = _rects$2.bottom;\n left = _rects$2.left;\n }\n\n for (var ii = 1; ii < rects.length; ii++) {\n var rect = rects[ii];\n\n if (rect.height !== 0 && rect.width !== 0) {\n top = Math.min(top, rect.top);\n right = Math.max(right, rect.right);\n bottom = Math.max(bottom, rect.bottom);\n left = Math.min(left, rect.left);\n }\n }\n }\n\n return {\n top: top,\n right: right,\n bottom: bottom,\n left: left,\n width: right - left,\n height: bottom - top\n };\n}\n\nmodule.exports = getRangeBoundingClientRect;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isChrome = UserAgent.isBrowser('Chrome'); // In Chrome, the client rects will include the entire bounds of all nodes that\n// begin (have a start tag) within the selection, even if the selection does\n// not overlap the entire node. To resolve this, we split the range at each\n// start tag and join the client rects together.\n// https://code.google.com/p/chromium/issues/detail?id=324437\n\n/* eslint-disable consistent-return */\n\nfunction getRangeClientRectsChrome(range) {\n var tempRange = range.cloneRange();\n var clientRects = [];\n\n for (var ancestor = range.endContainer; ancestor != null; ancestor = ancestor.parentNode) {\n // If we've climbed up to the common ancestor, we can now use the\n // original start point and stop climbing the tree.\n var atCommonAncestor = ancestor === range.commonAncestorContainer;\n\n if (atCommonAncestor) {\n tempRange.setStart(range.startContainer, range.startOffset);\n } else {\n tempRange.setStart(tempRange.endContainer, 0);\n }\n\n var rects = Array.from(tempRange.getClientRects());\n clientRects.push(rects);\n\n if (atCommonAncestor) {\n var _ref;\n\n clientRects.reverse();\n return (_ref = []).concat.apply(_ref, clientRects);\n }\n\n tempRange.setEndBefore(ancestor);\n }\n\n !false ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Found an unexpected detached subtree when getting range client rects.') : invariant(false) : void 0;\n}\n/* eslint-enable consistent-return */\n\n/**\n * Like range.getClientRects() but normalizes for browser bugs.\n */\n\n\nvar getRangeClientRects = isChrome ? getRangeClientRectsChrome : function (range) {\n return Array.from(range.getClientRects());\n};\nmodule.exports = getRangeClientRects;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar invariant = require(\"fbjs/lib/invariant\");\n/**\n * Obtain the start and end positions of the range that has the\n * specified entity applied to it.\n *\n * Entity keys are applied only to contiguous stretches of text, so this\n * method searches for the first instance of the entity key and returns\n * the subsequent range.\n */\n\n\nfunction getRangesForDraftEntity(block, key) {\n var ranges = [];\n block.findEntityRanges(function (c) {\n return c.getEntity() === key;\n }, function (start, end) {\n ranges.push({\n start: start,\n end: end\n });\n });\n !!!ranges.length ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Entity key not found in this range.') : invariant(false) : void 0;\n return ranges;\n}\n\nmodule.exports = getRangesForDraftEntity;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isOldIE = UserAgent.isBrowser('IE <= 9'); // Provides a dom node that will not execute scripts\n// https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument\n// https://developer.mozilla.org/en-US/Add-ons/Code_snippets/HTML_to_DOM\n\nfunction getSafeBodyFromHTML(html) {\n var doc;\n var root = null; // Provides a safe context\n\n if (!isOldIE && document.implementation && document.implementation.createHTMLDocument) {\n doc = document.implementation.createHTMLDocument('foo');\n !doc.documentElement ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Missing doc.documentElement') : invariant(false) : void 0;\n doc.documentElement.innerHTML = html;\n root = doc.getElementsByTagName('body')[0];\n }\n\n return root;\n}\n\nmodule.exports = getSafeBodyFromHTML;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n/**\n * Get offset key from a node or it's child nodes. Return the first offset key\n * found on the DOM tree of given node.\n */\n\nvar isElement = require(\"./isElement\");\n\nfunction getSelectionOffsetKeyForNode(node) {\n if (isElement(node)) {\n var castedNode = node;\n var offsetKey = castedNode.getAttribute('data-offset-key');\n\n if (offsetKey) {\n return offsetKey;\n }\n\n for (var ii = 0; ii < castedNode.childNodes.length; ii++) {\n var childOffsetKey = getSelectionOffsetKeyForNode(castedNode.childNodes[ii]);\n\n if (childOffsetKey) {\n return childOffsetKey;\n }\n }\n }\n\n return null;\n}\n\nmodule.exports = getSelectionOffsetKeyForNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar TEXT_CLIPPING_REGEX = /\\.textClipping$/;\nvar TEXT_TYPES = {\n 'text/plain': true,\n 'text/html': true,\n 'text/rtf': true\n}; // Somewhat arbitrary upper bound on text size. Let's not lock up the browser.\n\nvar TEXT_SIZE_UPPER_BOUND = 5000;\n/**\n * Extract the text content from a file list.\n */\n\nfunction getTextContentFromFiles(files, callback) {\n var readCount = 0;\n var results = [];\n files.forEach(function (\n /*blob*/\n file) {\n readFile(file, function (\n /*string*/\n text) {\n readCount++;\n text && results.push(text.slice(0, TEXT_SIZE_UPPER_BOUND));\n\n if (readCount == files.length) {\n callback(results.join('\\r'));\n }\n });\n });\n}\n/**\n * todo isaac: Do work to turn html/rtf into a content fragment.\n */\n\n\nfunction readFile(file, callback) {\n if (!global.FileReader || file.type && !(file.type in TEXT_TYPES)) {\n callback('');\n return;\n }\n\n if (file.type === '') {\n var _contents = ''; // Special-case text clippings, which have an empty type but include\n // `.textClipping` in the file name. `readAsText` results in an empty\n // string for text clippings, so we force the file name to serve\n // as the text value for the file.\n\n if (TEXT_CLIPPING_REGEX.test(file.name)) {\n _contents = file.name.replace(TEXT_CLIPPING_REGEX, '');\n }\n\n callback(_contents);\n return;\n }\n\n var reader = new FileReader();\n\n reader.onload = function () {\n var result = reader.result;\n !(typeof result === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'We should be calling \"FileReader.readAsText\" which returns a string') : invariant(false) : void 0;\n callback(result);\n };\n\n reader.onerror = function () {\n callback('');\n };\n\n reader.readAsText(file);\n}\n\nmodule.exports = getTextContentFromFiles;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftOffsetKey = require(\"./DraftOffsetKey\");\n\nvar nullthrows = require(\"fbjs/lib/nullthrows\");\n\nfunction getUpdatedSelectionState(editorState, anchorKey, anchorOffset, focusKey, focusOffset) {\n var selection = nullthrows(editorState.getSelection());\n\n if (!anchorKey || !focusKey) {\n // If we cannot make sense of the updated selection state, stick to the current one.\n if (process.env.NODE_ENV !== \"production\") {\n /* eslint-disable-next-line */\n console.warn('Invalid selection state.', arguments, editorState.toJS());\n }\n\n return selection;\n }\n\n var anchorPath = DraftOffsetKey.decode(anchorKey);\n var anchorBlockKey = anchorPath.blockKey;\n var anchorLeafBlockTree = editorState.getBlockTree(anchorBlockKey);\n var anchorLeaf = anchorLeafBlockTree && anchorLeafBlockTree.getIn([anchorPath.decoratorKey, 'leaves', anchorPath.leafKey]);\n var focusPath = DraftOffsetKey.decode(focusKey);\n var focusBlockKey = focusPath.blockKey;\n var focusLeafBlockTree = editorState.getBlockTree(focusBlockKey);\n var focusLeaf = focusLeafBlockTree && focusLeafBlockTree.getIn([focusPath.decoratorKey, 'leaves', focusPath.leafKey]);\n\n if (!anchorLeaf || !focusLeaf) {\n // If we cannot make sense of the updated selection state, stick to the current one.\n if (process.env.NODE_ENV !== \"production\") {\n /* eslint-disable-next-line */\n console.warn('Invalid selection state.', arguments, editorState.toJS());\n }\n\n return selection;\n }\n\n var anchorLeafStart = anchorLeaf.get('start');\n var focusLeafStart = focusLeaf.get('start');\n var anchorBlockOffset = anchorLeaf ? anchorLeafStart + anchorOffset : null;\n var focusBlockOffset = focusLeaf ? focusLeafStart + focusOffset : null;\n var areEqual = selection.getAnchorKey() === anchorBlockKey && selection.getAnchorOffset() === anchorBlockOffset && selection.getFocusKey() === focusBlockKey && selection.getFocusOffset() === focusBlockOffset;\n\n if (areEqual) {\n return selection;\n }\n\n var isBackward = false;\n\n if (anchorBlockKey === focusBlockKey) {\n var anchorLeafEnd = anchorLeaf.get('end');\n var focusLeafEnd = focusLeaf.get('end');\n\n if (focusLeafStart === anchorLeafStart && focusLeafEnd === anchorLeafEnd) {\n isBackward = focusOffset < anchorOffset;\n } else {\n isBackward = focusLeafStart < anchorLeafStart;\n }\n } else {\n var startKey = editorState.getCurrentContent().getBlockMap().keySeq().skipUntil(function (v) {\n return v === anchorBlockKey || v === focusBlockKey;\n }).first();\n isBackward = startKey === focusBlockKey;\n }\n\n return selection.merge({\n anchorKey: anchorBlockKey,\n anchorOffset: anchorBlockOffset,\n focusKey: focusBlockKey,\n focusOffset: focusBlockOffset,\n isBackward: isBackward\n });\n}\n\nmodule.exports = getUpdatedSelectionState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar getRangeBoundingClientRect = require(\"./getRangeBoundingClientRect\");\n/**\n * Return the bounding ClientRect for the visible DOM selection, if any.\n * In cases where there are no selected ranges or the bounding rect is\n * temporarily invalid, return null.\n *\n * When using from an iframe, you should pass the iframe window object\n */\n\n\nfunction getVisibleSelectionRect(global) {\n var selection = global.getSelection();\n\n if (!selection.rangeCount) {\n return null;\n }\n\n var range = selection.getRangeAt(0);\n var boundingRect = getRangeBoundingClientRect(range);\n var top = boundingRect.top,\n right = boundingRect.right,\n bottom = boundingRect.bottom,\n left = boundingRect.left; // When a re-render leads to a node being removed, the DOM selection will\n // temporarily be placed on an ancestor node, which leads to an invalid\n // bounding rect. Discard this state.\n\n if (top === 0 && right === 0 && bottom === 0 && left === 0) {\n return null;\n }\n\n return boundingRect;\n}\n\nmodule.exports = getVisibleSelectionRect;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction getWindowForNode(node) {\n if (!node || !node.ownerDocument || !node.ownerDocument.defaultView) {\n return window;\n }\n\n return node.ownerDocument.defaultView;\n}\n\nmodule.exports = getWindowForNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n */\n'use strict';\n\nmodule.exports = function (name) {\n if (typeof window !== 'undefined' && window.__DRAFT_GKX) {\n return !!window.__DRAFT_GKX[name];\n }\n\n return false;\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar BlockMapBuilder = require(\"./BlockMapBuilder\");\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar Immutable = require(\"immutable\");\n\nvar insertIntoList = require(\"./insertIntoList\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar randomizeBlockMapKeys = require(\"./randomizeBlockMapKeys\");\n\nvar List = Immutable.List;\n\nvar updateExistingBlock = function updateExistingBlock(contentState, selectionState, blockMap, fragmentBlock, targetKey, targetOffset) {\n var mergeBlockData = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 'REPLACE_WITH_NEW_DATA';\n var targetBlock = blockMap.get(targetKey);\n var text = targetBlock.getText();\n var chars = targetBlock.getCharacterList();\n var finalKey = targetKey;\n var finalOffset = targetOffset + fragmentBlock.getText().length;\n var data = null;\n\n switch (mergeBlockData) {\n case 'MERGE_OLD_DATA_TO_NEW_DATA':\n data = fragmentBlock.getData().merge(targetBlock.getData());\n break;\n\n case 'REPLACE_WITH_NEW_DATA':\n data = fragmentBlock.getData();\n break;\n }\n\n var type = targetBlock.getType();\n\n if (text && type === 'unstyled') {\n type = fragmentBlock.getType();\n }\n\n var newBlock = targetBlock.merge({\n text: text.slice(0, targetOffset) + fragmentBlock.getText() + text.slice(targetOffset),\n characterList: insertIntoList(chars, fragmentBlock.getCharacterList(), targetOffset),\n type: type,\n data: data\n });\n return contentState.merge({\n blockMap: blockMap.set(targetKey, newBlock),\n selectionBefore: selectionState,\n selectionAfter: selectionState.merge({\n anchorKey: finalKey,\n anchorOffset: finalOffset,\n focusKey: finalKey,\n focusOffset: finalOffset,\n isBackward: false\n })\n });\n};\n/**\n * Appends text/characterList from the fragment first block to\n * target block.\n */\n\n\nvar updateHead = function updateHead(block, targetOffset, fragment) {\n var text = block.getText();\n var chars = block.getCharacterList(); // Modify head portion of block.\n\n var headText = text.slice(0, targetOffset);\n var headCharacters = chars.slice(0, targetOffset);\n var appendToHead = fragment.first();\n return block.merge({\n text: headText + appendToHead.getText(),\n characterList: headCharacters.concat(appendToHead.getCharacterList()),\n type: headText ? block.getType() : appendToHead.getType(),\n data: appendToHead.getData()\n });\n};\n/**\n * Appends offset text/characterList from the target block to the last\n * fragment block.\n */\n\n\nvar updateTail = function updateTail(block, targetOffset, fragment) {\n // Modify tail portion of block.\n var text = block.getText();\n var chars = block.getCharacterList(); // Modify head portion of block.\n\n var blockSize = text.length;\n var tailText = text.slice(targetOffset, blockSize);\n var tailCharacters = chars.slice(targetOffset, blockSize);\n var prependToTail = fragment.last();\n return prependToTail.merge({\n text: prependToTail.getText() + tailText,\n characterList: prependToTail.getCharacterList().concat(tailCharacters),\n data: prependToTail.getData()\n });\n};\n\nvar getRootBlocks = function getRootBlocks(block, blockMap) {\n var headKey = block.getKey();\n var rootBlock = block;\n var rootBlocks = []; // sometimes the fragment head block will not be part of the blockMap itself this can happen when\n // the fragment head is used to update the target block, however when this does not happen we need\n // to make sure that we include it on the rootBlocks since the first block of a fragment is always a\n // fragment root block\n\n if (blockMap.get(headKey)) {\n rootBlocks.push(headKey);\n }\n\n while (rootBlock && rootBlock.getNextSiblingKey()) {\n var lastSiblingKey = rootBlock.getNextSiblingKey();\n\n if (!lastSiblingKey) {\n break;\n }\n\n rootBlocks.push(lastSiblingKey);\n rootBlock = blockMap.get(lastSiblingKey);\n }\n\n return rootBlocks;\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, originalBlockMap, targetBlock, fragmentHeadBlock) {\n return blockMap.withMutations(function (blockMapState) {\n var targetKey = targetBlock.getKey();\n var headKey = fragmentHeadBlock.getKey();\n var targetNextKey = targetBlock.getNextSiblingKey();\n var targetParentKey = targetBlock.getParentKey();\n var fragmentRootBlocks = getRootBlocks(fragmentHeadBlock, blockMap);\n var lastRootFragmentBlockKey = fragmentRootBlocks[fragmentRootBlocks.length - 1];\n\n if (blockMapState.get(headKey)) {\n // update the fragment head when it is part of the blockMap otherwise\n blockMapState.setIn([targetKey, 'nextSibling'], headKey);\n blockMapState.setIn([headKey, 'prevSibling'], targetKey);\n } else {\n // update the target block that had the fragment head contents merged into it\n blockMapState.setIn([targetKey, 'nextSibling'], fragmentHeadBlock.getNextSiblingKey());\n blockMapState.setIn([fragmentHeadBlock.getNextSiblingKey(), 'prevSibling'], targetKey);\n } // update the last root block fragment\n\n\n blockMapState.setIn([lastRootFragmentBlockKey, 'nextSibling'], targetNextKey); // update the original target next block\n\n if (targetNextKey) {\n blockMapState.setIn([targetNextKey, 'prevSibling'], lastRootFragmentBlockKey);\n } // update fragment parent links\n\n\n fragmentRootBlocks.forEach(function (blockKey) {\n return blockMapState.setIn([blockKey, 'parent'], targetParentKey);\n }); // update targetBlock parent child links\n\n if (targetParentKey) {\n var targetParent = blockMap.get(targetParentKey);\n var originalTargetParentChildKeys = targetParent.getChildKeys();\n var targetBlockIndex = originalTargetParentChildKeys.indexOf(targetKey);\n var insertionIndex = targetBlockIndex + 1;\n var newChildrenKeysArray = originalTargetParentChildKeys.toArray(); // insert fragment children\n\n newChildrenKeysArray.splice.apply(newChildrenKeysArray, [insertionIndex, 0].concat(fragmentRootBlocks));\n blockMapState.setIn([targetParentKey, 'children'], List(newChildrenKeysArray));\n }\n });\n};\n\nvar insertFragment = function insertFragment(contentState, selectionState, blockMap, fragment, targetKey, targetOffset) {\n var isTreeBasedBlockMap = blockMap.first() instanceof ContentBlockNode;\n var newBlockArr = [];\n var fragmentSize = fragment.size;\n var target = blockMap.get(targetKey);\n var head = fragment.first();\n var tail = fragment.last();\n var finalOffset = tail.getLength();\n var finalKey = tail.getKey();\n var shouldNotUpdateFromFragmentBlock = isTreeBasedBlockMap && (!target.getChildKeys().isEmpty() || !head.getChildKeys().isEmpty());\n blockMap.forEach(function (block, blockKey) {\n if (blockKey !== targetKey) {\n newBlockArr.push(block);\n return;\n }\n\n if (shouldNotUpdateFromFragmentBlock) {\n newBlockArr.push(block);\n } else {\n newBlockArr.push(updateHead(block, targetOffset, fragment));\n } // Insert fragment blocks after the head and before the tail.\n\n\n fragment // when we are updating the target block with the head fragment block we skip the first fragment\n // head since its contents have already been merged with the target block otherwise we include\n // the whole fragment\n .slice(shouldNotUpdateFromFragmentBlock ? 0 : 1, fragmentSize - 1).forEach(function (fragmentBlock) {\n return newBlockArr.push(fragmentBlock);\n }); // update tail\n\n newBlockArr.push(updateTail(block, targetOffset, fragment));\n });\n var updatedBlockMap = BlockMapBuilder.createFromArray(newBlockArr);\n\n if (isTreeBasedBlockMap) {\n updatedBlockMap = updateBlockMapLinks(updatedBlockMap, blockMap, target, head);\n }\n\n return contentState.merge({\n blockMap: updatedBlockMap,\n selectionBefore: selectionState,\n selectionAfter: selectionState.merge({\n anchorKey: finalKey,\n anchorOffset: finalOffset,\n focusKey: finalKey,\n focusOffset: finalOffset,\n isBackward: false\n })\n });\n};\n\nvar insertFragmentIntoContentState = function insertFragmentIntoContentState(contentState, selectionState, fragmentBlockMap) {\n var mergeBlockData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'REPLACE_WITH_NEW_DATA';\n !selectionState.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`insertFragment` should only be called with a collapsed selection state.') : invariant(false) : void 0;\n var blockMap = contentState.getBlockMap();\n var fragment = randomizeBlockMapKeys(fragmentBlockMap);\n var targetKey = selectionState.getStartKey();\n var targetOffset = selectionState.getStartOffset();\n var targetBlock = blockMap.get(targetKey);\n\n if (targetBlock instanceof ContentBlockNode) {\n !targetBlock.getChildKeys().isEmpty() ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`insertFragment` should not be called when a container node is selected.') : invariant(false) : void 0;\n } // When we insert a fragment with a single block we simply update the target block\n // with the contents of the inserted fragment block\n\n\n if (fragment.size === 1) {\n return updateExistingBlock(contentState, selectionState, blockMap, fragment.first(), targetKey, targetOffset, mergeBlockData);\n }\n\n return insertFragment(contentState, selectionState, blockMap, fragment, targetKey, targetOffset);\n};\n\nmodule.exports = insertFragmentIntoContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Maintain persistence for target list when appending and prepending.\n */\nfunction insertIntoList(targetListArg, toInsert, offset) {\n var targetList = targetListArg;\n\n if (offset === targetList.count()) {\n toInsert.forEach(function (c) {\n targetList = targetList.push(c);\n });\n } else if (offset === 0) {\n toInsert.reverse().forEach(function (c) {\n targetList = targetList.unshift(c);\n });\n } else {\n var head = targetList.slice(0, offset);\n var tail = targetList.slice(offset);\n targetList = head.concat(toInsert, tail).toList();\n }\n\n return targetList;\n}\n\nmodule.exports = insertIntoList;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Immutable = require(\"immutable\");\n\nvar insertIntoList = require(\"./insertIntoList\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar Repeat = Immutable.Repeat;\n\nfunction insertTextIntoContentState(contentState, selectionState, text, characterMetadata) {\n !selectionState.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`insertText` should only be called with a collapsed range.') : invariant(false) : void 0;\n var len = null;\n\n if (text != null) {\n len = text.length;\n }\n\n if (len == null || len === 0) {\n return contentState;\n }\n\n var blockMap = contentState.getBlockMap();\n var key = selectionState.getStartKey();\n var offset = selectionState.getStartOffset();\n var block = blockMap.get(key);\n var blockText = block.getText();\n var newBlock = block.merge({\n text: blockText.slice(0, offset) + text + blockText.slice(offset, block.getLength()),\n characterList: insertIntoList(block.getCharacterList(), Repeat(characterMetadata, len).toList(), offset)\n });\n var newOffset = offset + len;\n return contentState.merge({\n blockMap: blockMap.set(key, newBlock),\n selectionAfter: selectionState.merge({\n anchorOffset: newOffset,\n focusOffset: newOffset\n })\n });\n}\n\nmodule.exports = insertTextIntoContentState;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction isElement(node) {\n if (!node || !node.ownerDocument) {\n return false;\n }\n\n return node.nodeType === Node.ELEMENT_NODE;\n}\n\nmodule.exports = isElement;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\n/**\n * Utility method for determining whether or not the value returned\n * from a handler indicates that it was handled.\n */\nfunction isEventHandled(value) {\n return value === 'handled' || value === true;\n}\n\nmodule.exports = isEventHandled;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar isElement = require(\"./isElement\");\n\nfunction isHTMLAnchorElement(node) {\n if (!node || !node.ownerDocument) {\n return false;\n }\n\n return isElement(node) && node.nodeName === 'A';\n}\n\nmodule.exports = isHTMLAnchorElement;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar isElement = require(\"./isElement\");\n\nfunction isHTMLBRElement(node) {\n if (!node || !node.ownerDocument) {\n return false;\n }\n\n return isElement(node) && node.nodeName === 'BR';\n}\n\nmodule.exports = isHTMLBRElement;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction isHTMLElement(node) {\n if (!node || !node.ownerDocument) {\n return false;\n }\n\n if (!node.ownerDocument.defaultView) {\n return node instanceof HTMLElement;\n }\n\n if (node instanceof node.ownerDocument.defaultView.HTMLElement) {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isHTMLElement;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nvar isElement = require(\"./isElement\");\n\nfunction isHTMLImageElement(node) {\n if (!node || !node.ownerDocument) {\n return false;\n }\n\n return isElement(node) && node.nodeName === 'IMG';\n}\n\nmodule.exports = isHTMLImageElement;","\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\nfunction isInstanceOfNode(target) {\n // we changed the name because of having duplicate module provider (fbjs)\n if (!target || !('ownerDocument' in target)) {\n return false;\n }\n\n if ('ownerDocument' in target) {\n var node = target;\n\n if (!node.ownerDocument.defaultView) {\n return node instanceof Node;\n }\n\n if (node instanceof node.ownerDocument.defaultView.Node) {\n return true;\n }\n }\n\n return false;\n}\n\nmodule.exports = isInstanceOfNode;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nfunction isSelectionAtLeafStart(editorState) {\n var selection = editorState.getSelection();\n var anchorKey = selection.getAnchorKey();\n var blockTree = editorState.getBlockTree(anchorKey);\n var offset = selection.getStartOffset();\n var isAtStart = false;\n blockTree.some(function (leafSet) {\n if (offset === leafSet.get('start')) {\n isAtStart = true;\n return true;\n }\n\n if (offset < leafSet.get('end')) {\n return leafSet.get('leaves').some(function (leaf) {\n var leafStart = leaf.get('start');\n\n if (offset === leafStart) {\n isAtStart = true;\n return true;\n }\n\n return false;\n });\n }\n\n return false;\n });\n return isAtStart;\n}\n\nmodule.exports = isSelectionAtLeafStart;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Keys = require(\"fbjs/lib/Keys\");\n\nfunction isSoftNewlineEvent(e) {\n return e.which === Keys.RETURN && (e.getModifierState('Shift') || e.getModifierState('Alt') || e.getModifierState('Control'));\n}\n\nmodule.exports = isSoftNewlineEvent;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar expandRangeToStartOfLine = require(\"./expandRangeToStartOfLine\");\n\nvar getDraftEditorSelectionWithNodes = require(\"./getDraftEditorSelectionWithNodes\");\n\nvar moveSelectionBackward = require(\"./moveSelectionBackward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n\nfunction keyCommandBackspaceToStartOfLine(editorState, e) {\n var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n var selection = strategyState.getSelection();\n\n if (selection.isCollapsed() && selection.getAnchorOffset() === 0) {\n return moveSelectionBackward(strategyState, 1);\n }\n\n var ownerDocument = e.currentTarget.ownerDocument;\n var domSelection = ownerDocument.defaultView.getSelection(); // getRangeAt can technically throw if there's no selection, but we know\n // there is one here because text editor has focus (the cursor is a\n // selection of length 0). Therefore, we don't need to wrap this in a\n // try-catch block.\n\n var range = domSelection.getRangeAt(0);\n range = expandRangeToStartOfLine(range);\n return getDraftEditorSelectionWithNodes(strategyState, null, range.endContainer, range.endOffset, range.startContainer, range.startOffset).selectionState;\n }, 'backward');\n\n if (afterRemoval === editorState.getCurrentContent()) {\n return editorState;\n }\n\n return EditorState.push(editorState, afterRemoval, 'remove-range');\n}\n\nmodule.exports = keyCommandBackspaceToStartOfLine;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftRemovableWord = require(\"./DraftRemovableWord\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar moveSelectionBackward = require(\"./moveSelectionBackward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Delete the word that is left of the cursor, as well as any spaces or\n * punctuation after the word.\n */\n\n\nfunction keyCommandBackspaceWord(editorState) {\n var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n var selection = strategyState.getSelection();\n var offset = selection.getStartOffset(); // If there are no words before the cursor, remove the preceding newline.\n\n if (offset === 0) {\n return moveSelectionBackward(strategyState, 1);\n }\n\n var key = selection.getStartKey();\n var content = strategyState.getCurrentContent();\n var text = content.getBlockForKey(key).getText().slice(0, offset);\n var toRemove = DraftRemovableWord.getBackward(text);\n return moveSelectionBackward(strategyState, toRemove.length || 1);\n }, 'backward');\n\n if (afterRemoval === editorState.getCurrentContent()) {\n return editorState;\n }\n\n return EditorState.push(editorState, afterRemoval, 'remove-range');\n}\n\nmodule.exports = keyCommandBackspaceWord;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftRemovableWord = require(\"./DraftRemovableWord\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar moveSelectionForward = require(\"./moveSelectionForward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Delete the word that is right of the cursor, as well as any spaces or\n * punctuation before the word.\n */\n\n\nfunction keyCommandDeleteWord(editorState) {\n var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n var selection = strategyState.getSelection();\n var offset = selection.getStartOffset();\n var key = selection.getStartKey();\n var content = strategyState.getCurrentContent();\n var text = content.getBlockForKey(key).getText().slice(offset);\n var toRemove = DraftRemovableWord.getForward(text); // If there are no words in front of the cursor, remove the newline.\n\n return moveSelectionForward(strategyState, toRemove.length || 1);\n }, 'forward');\n\n if (afterRemoval === editorState.getCurrentContent()) {\n return editorState;\n }\n\n return EditorState.push(editorState, afterRemoval, 'remove-range');\n}\n\nmodule.exports = keyCommandDeleteWord;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nfunction keyCommandInsertNewline(editorState) {\n var contentState = DraftModifier.splitBlock(editorState.getCurrentContent(), editorState.getSelection());\n return EditorState.push(editorState, contentState, 'split-block');\n}\n\nmodule.exports = keyCommandInsertNewline;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n/**\n * See comment for `moveSelectionToStartOfBlock`.\n */\n\n\nfunction keyCommandMoveSelectionToEndOfBlock(editorState) {\n var selection = editorState.getSelection();\n var endKey = selection.getEndKey();\n var content = editorState.getCurrentContent();\n var textLength = content.getBlockForKey(endKey).getLength();\n return EditorState.set(editorState, {\n selection: selection.merge({\n anchorKey: endKey,\n anchorOffset: textLength,\n focusKey: endKey,\n focusOffset: textLength,\n isBackward: false\n }),\n forceSelection: true\n });\n}\n\nmodule.exports = keyCommandMoveSelectionToEndOfBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n/**\n * Collapse selection at the start of the first selected block. This is used\n * for Firefox versions that attempt to navigate forward/backward instead of\n * moving the cursor. Other browsers are able to move the cursor natively.\n */\n\n\nfunction keyCommandMoveSelectionToStartOfBlock(editorState) {\n var selection = editorState.getSelection();\n var startKey = selection.getStartKey();\n return EditorState.set(editorState, {\n selection: selection.merge({\n anchorKey: startKey,\n anchorOffset: 0,\n focusKey: startKey,\n focusOffset: 0,\n isBackward: false\n }),\n forceSelection: true\n });\n}\n\nmodule.exports = keyCommandMoveSelectionToStartOfBlock;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar moveSelectionBackward = require(\"./moveSelectionBackward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Remove the selected range. If the cursor is collapsed, remove the preceding\n * character. This operation is Unicode-aware, so removing a single character\n * will remove a surrogate pair properly as well.\n */\n\n\nfunction keyCommandPlainBackspace(editorState) {\n var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n var selection = strategyState.getSelection();\n var content = strategyState.getCurrentContent();\n var key = selection.getAnchorKey();\n var offset = selection.getAnchorOffset();\n var charBehind = content.getBlockForKey(key).getText()[offset - 1];\n return moveSelectionBackward(strategyState, charBehind ? UnicodeUtils.getUTF16Length(charBehind, 0) : 1);\n }, 'backward');\n\n if (afterRemoval === editorState.getCurrentContent()) {\n return editorState;\n }\n\n var selection = editorState.getSelection();\n return EditorState.push(editorState, afterRemoval.set('selectionBefore', selection), selection.isCollapsed() ? 'backspace-character' : 'remove-range');\n}\n\nmodule.exports = keyCommandPlainBackspace;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nvar UnicodeUtils = require(\"fbjs/lib/UnicodeUtils\");\n\nvar moveSelectionForward = require(\"./moveSelectionForward\");\n\nvar removeTextWithStrategy = require(\"./removeTextWithStrategy\");\n/**\n * Remove the selected range. If the cursor is collapsed, remove the following\n * character. This operation is Unicode-aware, so removing a single character\n * will remove a surrogate pair properly as well.\n */\n\n\nfunction keyCommandPlainDelete(editorState) {\n var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {\n var selection = strategyState.getSelection();\n var content = strategyState.getCurrentContent();\n var key = selection.getAnchorKey();\n var offset = selection.getAnchorOffset();\n var charAhead = content.getBlockForKey(key).getText()[offset];\n return moveSelectionForward(strategyState, charAhead ? UnicodeUtils.getUTF16Length(charAhead, 0) : 1);\n }, 'forward');\n\n if (afterRemoval === editorState.getCurrentContent()) {\n return editorState;\n }\n\n var selection = editorState.getSelection();\n return EditorState.push(editorState, afterRemoval.set('selectionBefore', selection), selection.isCollapsed() ? 'delete-character' : 'remove-range');\n}\n\nmodule.exports = keyCommandPlainDelete;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar EditorState = require(\"./EditorState\");\n\nvar getContentStateFragment = require(\"./getContentStateFragment\");\n/**\n * Transpose the characters on either side of a collapsed cursor, or\n * if the cursor is at the end of the block, transpose the last two\n * characters.\n */\n\n\nfunction keyCommandTransposeCharacters(editorState) {\n var selection = editorState.getSelection();\n\n if (!selection.isCollapsed()) {\n return editorState;\n }\n\n var offset = selection.getAnchorOffset();\n\n if (offset === 0) {\n return editorState;\n }\n\n var blockKey = selection.getAnchorKey();\n var content = editorState.getCurrentContent();\n var block = content.getBlockForKey(blockKey);\n var length = block.getLength(); // Nothing to transpose if there aren't two characters.\n\n if (length <= 1) {\n return editorState;\n }\n\n var removalRange;\n var finalSelection;\n\n if (offset === length) {\n // The cursor is at the end of the block. Swap the last two characters.\n removalRange = selection.set('anchorOffset', offset - 1);\n finalSelection = selection;\n } else {\n removalRange = selection.set('focusOffset', offset + 1);\n finalSelection = removalRange.set('anchorOffset', offset + 1);\n } // Extract the character to move as a fragment. This preserves its\n // styling and entity, if any.\n\n\n var movedFragment = getContentStateFragment(content, removalRange);\n var afterRemoval = DraftModifier.removeRange(content, removalRange, 'backward'); // After the removal, the insertion target is one character back.\n\n var selectionAfter = afterRemoval.getSelectionAfter();\n var targetOffset = selectionAfter.getAnchorOffset() - 1;\n var targetRange = selectionAfter.merge({\n anchorOffset: targetOffset,\n focusOffset: targetOffset\n });\n var afterInsert = DraftModifier.replaceWithFragment(afterRemoval, targetRange, movedFragment);\n var newEditorState = EditorState.push(editorState, afterInsert, 'insert-fragment');\n return EditorState.acceptSelection(newEditorState, finalSelection);\n}\n\nmodule.exports = keyCommandTransposeCharacters;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar EditorState = require(\"./EditorState\");\n\nfunction keyCommandUndo(e, editorState, updateFn) {\n var undoneState = EditorState.undo(editorState); // If the last change to occur was a spellcheck change, allow the undo\n // event to fall through to the browser. This allows the browser to record\n // the unwanted change, which should soon lead it to learn not to suggest\n // the correction again.\n\n if (editorState.getLastChangeType() === 'spellcheck-change') {\n var nativelyRenderedContent = undoneState.getCurrentContent();\n updateFn(EditorState.set(undoneState, {\n nativelyRenderedContent: nativelyRenderedContent\n }));\n return;\n } // Otheriwse, manage the undo behavior manually.\n\n\n e.preventDefault();\n\n if (!editorState.getNativelyRenderedContent()) {\n updateFn(undoneState);\n return;\n } // Trigger a re-render with the current content state to ensure that the\n // component tree has up-to-date props for comparison.\n\n\n updateFn(EditorState.set(editorState, {\n nativelyRenderedContent: null\n })); // Wait to ensure that the re-render has occurred before performing\n // the undo action.\n\n setTimeout(function () {\n updateFn(undoneState);\n }, 0);\n}\n\nmodule.exports = keyCommandUndo;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar Immutable = require(\"immutable\");\n\nvar Map = Immutable.Map;\n\nfunction modifyBlockForContentState(contentState, selectionState, operation) {\n var startKey = selectionState.getStartKey();\n var endKey = selectionState.getEndKey();\n var blockMap = contentState.getBlockMap();\n var newBlocks = blockMap.toSeq().skipUntil(function (_, k) {\n return k === startKey;\n }).takeUntil(function (_, k) {\n return k === endKey;\n }).concat(Map([[endKey, blockMap.get(endKey)]])).map(operation);\n return contentState.merge({\n blockMap: blockMap.merge(newBlocks),\n selectionBefore: selectionState,\n selectionAfter: selectionState\n });\n}\n\nmodule.exports = modifyBlockForContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar getNextDelimiterBlockKey = require(\"./getNextDelimiterBlockKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar OrderedMap = Immutable.OrderedMap,\n List = Immutable.List;\n\nvar transformBlock = function transformBlock(key, blockMap, func) {\n if (!key) {\n return;\n }\n\n var block = blockMap.get(key);\n\n if (!block) {\n return;\n }\n\n blockMap.set(key, func(block));\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, originalBlockToBeMoved, originalTargetBlock, insertionMode, isExperimentalTreeBlock) {\n if (!isExperimentalTreeBlock) {\n return blockMap;\n } // possible values of 'insertionMode' are: 'after', 'before'\n\n\n var isInsertedAfterTarget = insertionMode === 'after';\n var originalBlockKey = originalBlockToBeMoved.getKey();\n var originalTargetKey = originalTargetBlock.getKey();\n var originalParentKey = originalBlockToBeMoved.getParentKey();\n var originalNextSiblingKey = originalBlockToBeMoved.getNextSiblingKey();\n var originalPrevSiblingKey = originalBlockToBeMoved.getPrevSiblingKey();\n var newParentKey = originalTargetBlock.getParentKey();\n var newNextSiblingKey = isInsertedAfterTarget ? originalTargetBlock.getNextSiblingKey() : originalTargetKey;\n var newPrevSiblingKey = isInsertedAfterTarget ? originalTargetKey : originalTargetBlock.getPrevSiblingKey();\n return blockMap.withMutations(function (blocks) {\n // update old parent\n transformBlock(originalParentKey, blocks, function (block) {\n var parentChildrenList = block.getChildKeys();\n return block.merge({\n children: parentChildrenList[\"delete\"](parentChildrenList.indexOf(originalBlockKey))\n });\n }); // update old prev\n\n transformBlock(originalPrevSiblingKey, blocks, function (block) {\n return block.merge({\n nextSibling: originalNextSiblingKey\n });\n }); // update old next\n\n transformBlock(originalNextSiblingKey, blocks, function (block) {\n return block.merge({\n prevSibling: originalPrevSiblingKey\n });\n }); // update new next\n\n transformBlock(newNextSiblingKey, blocks, function (block) {\n return block.merge({\n prevSibling: originalBlockKey\n });\n }); // update new prev\n\n transformBlock(newPrevSiblingKey, blocks, function (block) {\n return block.merge({\n nextSibling: originalBlockKey\n });\n }); // update new parent\n\n transformBlock(newParentKey, blocks, function (block) {\n var newParentChildrenList = block.getChildKeys();\n var targetBlockIndex = newParentChildrenList.indexOf(originalTargetKey);\n var insertionIndex = isInsertedAfterTarget ? targetBlockIndex + 1 : targetBlockIndex !== 0 ? targetBlockIndex - 1 : 0;\n var newChildrenArray = newParentChildrenList.toArray();\n newChildrenArray.splice(insertionIndex, 0, originalBlockKey);\n return block.merge({\n children: List(newChildrenArray)\n });\n }); // update block\n\n transformBlock(originalBlockKey, blocks, function (block) {\n return block.merge({\n nextSibling: newNextSiblingKey,\n prevSibling: newPrevSiblingKey,\n parent: newParentKey\n });\n });\n });\n};\n\nvar moveBlockInContentState = function moveBlockInContentState(contentState, blockToBeMoved, targetBlock, insertionMode) {\n !(insertionMode !== 'replace') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Replacing blocks is not supported.') : invariant(false) : void 0;\n var targetKey = targetBlock.getKey();\n var blockKey = blockToBeMoved.getKey();\n !(blockKey !== targetKey) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Block cannot be moved next to itself.') : invariant(false) : void 0;\n var blockMap = contentState.getBlockMap();\n var isExperimentalTreeBlock = blockToBeMoved instanceof ContentBlockNode;\n var blocksToBeMoved = [blockToBeMoved];\n var blockMapWithoutBlocksToBeMoved = blockMap[\"delete\"](blockKey);\n\n if (isExperimentalTreeBlock) {\n blocksToBeMoved = [];\n blockMapWithoutBlocksToBeMoved = blockMap.withMutations(function (blocks) {\n var nextSiblingKey = blockToBeMoved.getNextSiblingKey();\n var nextDelimiterBlockKey = getNextDelimiterBlockKey(blockToBeMoved, blocks);\n blocks.toSeq().skipUntil(function (block) {\n return block.getKey() === blockKey;\n }).takeWhile(function (block) {\n var key = block.getKey();\n var isBlockToBeMoved = key === blockKey;\n var hasNextSiblingAndIsNotNextSibling = nextSiblingKey && key !== nextSiblingKey;\n var doesNotHaveNextSiblingAndIsNotDelimiter = !nextSiblingKey && block.getParentKey() && (!nextDelimiterBlockKey || key !== nextDelimiterBlockKey);\n return !!(isBlockToBeMoved || hasNextSiblingAndIsNotNextSibling || doesNotHaveNextSiblingAndIsNotDelimiter);\n }).forEach(function (block) {\n blocksToBeMoved.push(block);\n blocks[\"delete\"](block.getKey());\n });\n });\n }\n\n var blocksBefore = blockMapWithoutBlocksToBeMoved.toSeq().takeUntil(function (v) {\n return v === targetBlock;\n });\n var blocksAfter = blockMapWithoutBlocksToBeMoved.toSeq().skipUntil(function (v) {\n return v === targetBlock;\n }).skip(1);\n var slicedBlocks = blocksToBeMoved.map(function (block) {\n return [block.getKey(), block];\n });\n var newBlocks = OrderedMap();\n\n if (insertionMode === 'before') {\n var blockBefore = contentState.getBlockBefore(targetKey);\n !(!blockBefore || blockBefore.getKey() !== blockToBeMoved.getKey()) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Block cannot be moved next to itself.') : invariant(false) : void 0;\n newBlocks = blocksBefore.concat([].concat(slicedBlocks, [[targetKey, targetBlock]]), blocksAfter).toOrderedMap();\n } else if (insertionMode === 'after') {\n var blockAfter = contentState.getBlockAfter(targetKey);\n !(!blockAfter || blockAfter.getKey() !== blockKey) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Block cannot be moved next to itself.') : invariant(false) : void 0;\n newBlocks = blocksBefore.concat([[targetKey, targetBlock]].concat(slicedBlocks), blocksAfter).toOrderedMap();\n }\n\n return contentState.merge({\n blockMap: updateBlockMapLinks(newBlocks, blockToBeMoved, targetBlock, insertionMode, isExperimentalTreeBlock),\n selectionBefore: contentState.getSelectionAfter(),\n selectionAfter: contentState.getSelectionAfter().merge({\n anchorKey: blockKey,\n focusKey: blockKey\n })\n });\n};\n\nmodule.exports = moveBlockInContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar warning = require(\"fbjs/lib/warning\");\n/**\n * Given a collapsed selection, move the focus `maxDistance` backward within\n * the selected block. If the selection will go beyond the start of the block,\n * move focus to the end of the previous block, but no further.\n *\n * This function is not Unicode-aware, so surrogate pairs will be treated\n * as having length 2.\n */\n\n\nfunction moveSelectionBackward(editorState, maxDistance) {\n var selection = editorState.getSelection(); // Should eventually make this an invariant\n\n process.env.NODE_ENV !== \"production\" ? warning(selection.isCollapsed(), 'moveSelectionBackward should only be called with a collapsed SelectionState') : void 0;\n var content = editorState.getCurrentContent();\n var key = selection.getStartKey();\n var offset = selection.getStartOffset();\n var focusKey = key;\n var focusOffset = 0;\n\n if (maxDistance > offset) {\n var keyBefore = content.getKeyBefore(key);\n\n if (keyBefore == null) {\n focusKey = key;\n } else {\n focusKey = keyBefore;\n var blockBefore = content.getBlockForKey(keyBefore);\n focusOffset = blockBefore.getText().length;\n }\n } else {\n focusOffset = offset - maxDistance;\n }\n\n return selection.merge({\n focusKey: focusKey,\n focusOffset: focusOffset,\n isBackward: true\n });\n}\n\nmodule.exports = moveSelectionBackward;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar warning = require(\"fbjs/lib/warning\");\n/**\n * Given a collapsed selection, move the focus `maxDistance` forward within\n * the selected block. If the selection will go beyond the end of the block,\n * move focus to the start of the next block, but no further.\n *\n * This function is not Unicode-aware, so surrogate pairs will be treated\n * as having length 2.\n */\n\n\nfunction moveSelectionForward(editorState, maxDistance) {\n var selection = editorState.getSelection(); // Should eventually make this an invariant\n\n process.env.NODE_ENV !== \"production\" ? warning(selection.isCollapsed(), 'moveSelectionForward should only be called with a collapsed SelectionState') : void 0;\n var key = selection.getStartKey();\n var offset = selection.getStartOffset();\n var content = editorState.getCurrentContent();\n var focusKey = key;\n var focusOffset;\n var block = content.getBlockForKey(key);\n\n if (maxDistance > block.getText().length - offset) {\n focusKey = content.getKeyAfter(key);\n focusOffset = 0;\n } else {\n focusOffset = offset + maxDistance;\n }\n\n return selection.merge({\n focusKey: focusKey,\n focusOffset: focusOffset\n });\n}\n\nmodule.exports = moveSelectionForward;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar OrderedMap = Immutable.OrderedMap;\n\nvar randomizeContentBlockNodeKeys = function randomizeContentBlockNodeKeys(blockMap) {\n var newKeysRef = {}; // we keep track of root blocks in order to update subsequent sibling links\n\n var lastRootBlock;\n return OrderedMap(blockMap.withMutations(function (blockMapState) {\n blockMapState.forEach(function (block, index) {\n var oldKey = block.getKey();\n var nextKey = block.getNextSiblingKey();\n var prevKey = block.getPrevSiblingKey();\n var childrenKeys = block.getChildKeys();\n var parentKey = block.getParentKey(); // new key that we will use to build linking\n\n var key = generateRandomKey(); // we will add it here to re-use it later\n\n newKeysRef[oldKey] = key;\n\n if (nextKey) {\n var nextBlock = blockMapState.get(nextKey);\n\n if (nextBlock) {\n blockMapState.setIn([nextKey, 'prevSibling'], key);\n } else {\n // this can happen when generating random keys for fragments\n blockMapState.setIn([oldKey, 'nextSibling'], null);\n }\n }\n\n if (prevKey) {\n var prevBlock = blockMapState.get(prevKey);\n\n if (prevBlock) {\n blockMapState.setIn([prevKey, 'nextSibling'], key);\n } else {\n // this can happen when generating random keys for fragments\n blockMapState.setIn([oldKey, 'prevSibling'], null);\n }\n }\n\n if (parentKey && blockMapState.get(parentKey)) {\n var parentBlock = blockMapState.get(parentKey);\n var parentChildrenList = parentBlock.getChildKeys();\n blockMapState.setIn([parentKey, 'children'], parentChildrenList.set(parentChildrenList.indexOf(block.getKey()), key));\n } else {\n // blocks will then be treated as root block nodes\n blockMapState.setIn([oldKey, 'parent'], null);\n\n if (lastRootBlock) {\n blockMapState.setIn([lastRootBlock.getKey(), 'nextSibling'], key);\n blockMapState.setIn([oldKey, 'prevSibling'], newKeysRef[lastRootBlock.getKey()]);\n }\n\n lastRootBlock = blockMapState.get(oldKey);\n }\n\n childrenKeys.forEach(function (childKey) {\n var childBlock = blockMapState.get(childKey);\n\n if (childBlock) {\n blockMapState.setIn([childKey, 'parent'], key);\n } else {\n blockMapState.setIn([oldKey, 'children'], block.getChildKeys().filter(function (child) {\n return child !== childKey;\n }));\n }\n });\n });\n }).toArray().map(function (block) {\n return [newKeysRef[block.getKey()], block.set('key', newKeysRef[block.getKey()])];\n }));\n};\n\nvar randomizeContentBlockKeys = function randomizeContentBlockKeys(blockMap) {\n return OrderedMap(blockMap.toArray().map(function (block) {\n var key = generateRandomKey();\n return [key, block.set('key', key)];\n }));\n};\n\nvar randomizeBlockMapKeys = function randomizeBlockMapKeys(blockMap) {\n var isTreeBasedBlockMap = blockMap.first() instanceof ContentBlockNode;\n\n if (!isTreeBasedBlockMap) {\n return randomizeContentBlockKeys(blockMap);\n }\n\n return randomizeContentBlockNodeKeys(blockMap);\n};\n\nmodule.exports = randomizeBlockMapKeys;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar CharacterMetadata = require(\"./CharacterMetadata\");\n\nvar findRangesImmutable = require(\"./findRangesImmutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nfunction removeEntitiesAtEdges(contentState, selectionState) {\n var blockMap = contentState.getBlockMap();\n var entityMap = contentState.getEntityMap();\n var updatedBlocks = {};\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var startBlock = blockMap.get(startKey);\n var updatedStart = removeForBlock(entityMap, startBlock, startOffset);\n\n if (updatedStart !== startBlock) {\n updatedBlocks[startKey] = updatedStart;\n }\n\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset();\n var endBlock = blockMap.get(endKey);\n\n if (startKey === endKey) {\n endBlock = updatedStart;\n }\n\n var updatedEnd = removeForBlock(entityMap, endBlock, endOffset);\n\n if (updatedEnd !== endBlock) {\n updatedBlocks[endKey] = updatedEnd;\n }\n\n if (!Object.keys(updatedBlocks).length) {\n return contentState.set('selectionAfter', selectionState);\n }\n\n return contentState.merge({\n blockMap: blockMap.merge(updatedBlocks),\n selectionAfter: selectionState\n });\n}\n/**\n * Given a list of characters and an offset that is in the middle of an entity,\n * returns the start and end of the entity that is overlapping the offset.\n * Note: This method requires that the offset be in an entity range.\n */\n\n\nfunction getRemovalRange(characters, entityKey, offset) {\n var removalRange; // Iterates through a list looking for ranges of matching items\n // based on the 'isEqual' callback.\n // Then instead of returning the result, call the 'found' callback\n // with each range.\n // Then filters those ranges based on the 'filter' callback\n //\n // Here we use it to find ranges of characters with the same entity key.\n\n findRangesImmutable(characters, // the list to iterate through\n function (a, b) {\n return a.getEntity() === b.getEntity();\n }, // 'isEqual' callback\n function (element) {\n return element.getEntity() === entityKey;\n }, // 'filter' callback\n function (start, end) {\n // 'found' callback\n if (start <= offset && end >= offset) {\n // this entity overlaps the offset index\n removalRange = {\n start: start,\n end: end\n };\n }\n });\n !(typeof removalRange === 'object') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Removal range must exist within character list.') : invariant(false) : void 0;\n return removalRange;\n}\n\nfunction removeForBlock(entityMap, block, offset) {\n var chars = block.getCharacterList();\n var charBefore = offset > 0 ? chars.get(offset - 1) : undefined;\n var charAfter = offset < chars.count() ? chars.get(offset) : undefined;\n var entityBeforeCursor = charBefore ? charBefore.getEntity() : undefined;\n var entityAfterCursor = charAfter ? charAfter.getEntity() : undefined;\n\n if (entityAfterCursor && entityAfterCursor === entityBeforeCursor) {\n var entity = entityMap.__get(entityAfterCursor);\n\n if (entity.getMutability() !== 'MUTABLE') {\n var _getRemovalRange = getRemovalRange(chars, entityAfterCursor, offset),\n start = _getRemovalRange.start,\n end = _getRemovalRange.end;\n\n var current;\n\n while (start < end) {\n current = chars.get(start);\n chars = chars.set(start, CharacterMetadata.applyEntity(current, null));\n start++;\n }\n\n return block.set('characterList', chars);\n }\n }\n\n return block;\n}\n\nmodule.exports = removeEntitiesAtEdges;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar getNextDelimiterBlockKey = require(\"./getNextDelimiterBlockKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar List = Immutable.List,\n Map = Immutable.Map;\n\nvar transformBlock = function transformBlock(key, blockMap, func) {\n if (!key) {\n return;\n }\n\n var block = blockMap.get(key);\n\n if (!block) {\n return;\n }\n\n blockMap.set(key, func(block));\n};\n/**\n * Ancestors needs to be preserved when there are non selected\n * children to make sure we do not leave any orphans behind\n */\n\n\nvar getAncestorsKeys = function getAncestorsKeys(blockKey, blockMap) {\n var parents = [];\n\n if (!blockKey) {\n return parents;\n }\n\n var blockNode = blockMap.get(blockKey);\n\n while (blockNode && blockNode.getParentKey()) {\n var parentKey = blockNode.getParentKey();\n\n if (parentKey) {\n parents.push(parentKey);\n }\n\n blockNode = parentKey ? blockMap.get(parentKey) : null;\n }\n\n return parents;\n};\n/**\n * Get all next delimiter keys until we hit a root delimiter and return\n * an array of key references\n */\n\n\nvar getNextDelimitersBlockKeys = function getNextDelimitersBlockKeys(block, blockMap) {\n var nextDelimiters = [];\n\n if (!block) {\n return nextDelimiters;\n }\n\n var nextDelimiter = getNextDelimiterBlockKey(block, blockMap);\n\n while (nextDelimiter && blockMap.get(nextDelimiter)) {\n var _block = blockMap.get(nextDelimiter);\n\n nextDelimiters.push(nextDelimiter); // we do not need to keep checking all root node siblings, just the first occurance\n\n nextDelimiter = _block.getParentKey() ? getNextDelimiterBlockKey(_block, blockMap) : null;\n }\n\n return nextDelimiters;\n};\n\nvar getNextValidSibling = function getNextValidSibling(block, blockMap, originalBlockMap) {\n if (!block) {\n return null;\n } // note that we need to make sure we refer to the original block since this\n // function is called within a withMutations\n\n\n var nextValidSiblingKey = originalBlockMap.get(block.getKey()).getNextSiblingKey();\n\n while (nextValidSiblingKey && !blockMap.get(nextValidSiblingKey)) {\n nextValidSiblingKey = originalBlockMap.get(nextValidSiblingKey).getNextSiblingKey() || null;\n }\n\n return nextValidSiblingKey;\n};\n\nvar getPrevValidSibling = function getPrevValidSibling(block, blockMap, originalBlockMap) {\n if (!block) {\n return null;\n } // note that we need to make sure we refer to the original block since this\n // function is called within a withMutations\n\n\n var prevValidSiblingKey = originalBlockMap.get(block.getKey()).getPrevSiblingKey();\n\n while (prevValidSiblingKey && !blockMap.get(prevValidSiblingKey)) {\n prevValidSiblingKey = originalBlockMap.get(prevValidSiblingKey).getPrevSiblingKey() || null;\n }\n\n return prevValidSiblingKey;\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, startBlock, endBlock, originalBlockMap) {\n return blockMap.withMutations(function (blocks) {\n // update start block if its retained\n transformBlock(startBlock.getKey(), blocks, function (block) {\n return block.merge({\n nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n });\n }); // update endblock if its retained\n\n transformBlock(endBlock.getKey(), blocks, function (block) {\n return block.merge({\n nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n });\n }); // update start block parent ancestors\n\n getAncestorsKeys(startBlock.getKey(), originalBlockMap).forEach(function (parentKey) {\n return transformBlock(parentKey, blocks, function (block) {\n return block.merge({\n children: block.getChildKeys().filter(function (key) {\n return blocks.get(key);\n }),\n nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n });\n });\n }); // update start block next - can only happen if startBlock == endBlock\n\n transformBlock(startBlock.getNextSiblingKey(), blocks, function (block) {\n return block.merge({\n prevSibling: startBlock.getPrevSiblingKey()\n });\n }); // update start block prev\n\n transformBlock(startBlock.getPrevSiblingKey(), blocks, function (block) {\n return block.merge({\n nextSibling: getNextValidSibling(block, blocks, originalBlockMap)\n });\n }); // update end block next\n\n transformBlock(endBlock.getNextSiblingKey(), blocks, function (block) {\n return block.merge({\n prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n });\n }); // update end block prev\n\n transformBlock(endBlock.getPrevSiblingKey(), blocks, function (block) {\n return block.merge({\n nextSibling: endBlock.getNextSiblingKey()\n });\n }); // update end block parent ancestors\n\n getAncestorsKeys(endBlock.getKey(), originalBlockMap).forEach(function (parentKey) {\n transformBlock(parentKey, blocks, function (block) {\n return block.merge({\n children: block.getChildKeys().filter(function (key) {\n return blocks.get(key);\n }),\n nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n });\n });\n }); // update next delimiters all the way to a root delimiter\n\n getNextDelimitersBlockKeys(endBlock, originalBlockMap).forEach(function (delimiterKey) {\n return transformBlock(delimiterKey, blocks, function (block) {\n return block.merge({\n nextSibling: getNextValidSibling(block, blocks, originalBlockMap),\n prevSibling: getPrevValidSibling(block, blocks, originalBlockMap)\n });\n });\n }); // if parent (startBlock) was deleted\n\n if (blockMap.get(startBlock.getKey()) == null && blockMap.get(endBlock.getKey()) != null && endBlock.getParentKey() === startBlock.getKey() && endBlock.getPrevSiblingKey() == null) {\n var prevSiblingKey = startBlock.getPrevSiblingKey(); // endBlock becomes next sibling of parent's prevSibling\n\n transformBlock(endBlock.getKey(), blocks, function (block) {\n return block.merge({\n prevSibling: prevSiblingKey\n });\n });\n transformBlock(prevSiblingKey, blocks, function (block) {\n return block.merge({\n nextSibling: endBlock.getKey()\n });\n }); // Update parent for previous parent's children, and children for that parent\n\n var prevSibling = prevSiblingKey ? blockMap.get(prevSiblingKey) : null;\n var newParentKey = prevSibling ? prevSibling.getParentKey() : null;\n startBlock.getChildKeys().forEach(function (childKey) {\n transformBlock(childKey, blocks, function (block) {\n return block.merge({\n parent: newParentKey // set to null if there is no parent\n\n });\n });\n });\n\n if (newParentKey != null) {\n var newParent = blockMap.get(newParentKey);\n transformBlock(newParentKey, blocks, function (block) {\n return block.merge({\n children: newParent.getChildKeys().concat(startBlock.getChildKeys())\n });\n });\n } // last child of deleted parent should point to next sibling\n\n\n transformBlock(startBlock.getChildKeys().find(function (key) {\n var block = blockMap.get(key);\n return block.getNextSiblingKey() === null;\n }), blocks, function (block) {\n return block.merge({\n nextSibling: startBlock.getNextSiblingKey()\n });\n });\n }\n });\n};\n\nvar removeRangeFromContentState = function removeRangeFromContentState(contentState, selectionState) {\n if (selectionState.isCollapsed()) {\n return contentState;\n }\n\n var blockMap = contentState.getBlockMap();\n var startKey = selectionState.getStartKey();\n var startOffset = selectionState.getStartOffset();\n var endKey = selectionState.getEndKey();\n var endOffset = selectionState.getEndOffset();\n var startBlock = blockMap.get(startKey);\n var endBlock = blockMap.get(endKey); // we assume that ContentBlockNode and ContentBlocks are not mixed together\n\n var isExperimentalTreeBlock = startBlock instanceof ContentBlockNode; // used to retain blocks that should not be deleted to avoid orphan children\n\n var parentAncestors = [];\n\n if (isExperimentalTreeBlock) {\n var endBlockchildrenKeys = endBlock.getChildKeys();\n var endBlockAncestors = getAncestorsKeys(endKey, blockMap); // endBlock has unselected siblings so we can not remove its ancestors parents\n\n if (endBlock.getNextSiblingKey()) {\n parentAncestors = parentAncestors.concat(endBlockAncestors);\n } // endBlock has children so can not remove this block or any of its ancestors\n\n\n if (!endBlockchildrenKeys.isEmpty()) {\n parentAncestors = parentAncestors.concat(endBlockAncestors.concat([endKey]));\n } // we need to retain all ancestors of the next delimiter block\n\n\n parentAncestors = parentAncestors.concat(getAncestorsKeys(getNextDelimiterBlockKey(endBlock, blockMap), blockMap));\n }\n\n var characterList;\n\n if (startBlock === endBlock) {\n characterList = removeFromList(startBlock.getCharacterList(), startOffset, endOffset);\n } else {\n characterList = startBlock.getCharacterList().slice(0, startOffset).concat(endBlock.getCharacterList().slice(endOffset));\n }\n\n var modifiedStart = startBlock.merge({\n text: startBlock.getText().slice(0, startOffset) + endBlock.getText().slice(endOffset),\n characterList: characterList\n }); // If cursor (collapsed) is at the start of the first child, delete parent\n // instead of child\n\n var shouldDeleteParent = isExperimentalTreeBlock && startOffset === 0 && endOffset === 0 && endBlock.getParentKey() === startKey && endBlock.getPrevSiblingKey() == null;\n var newBlocks = shouldDeleteParent ? Map([[startKey, null]]) : blockMap.toSeq().skipUntil(function (_, k) {\n return k === startKey;\n }).takeUntil(function (_, k) {\n return k === endKey;\n }).filter(function (_, k) {\n return parentAncestors.indexOf(k) === -1;\n }).concat(Map([[endKey, null]])).map(function (_, k) {\n return k === startKey ? modifiedStart : null;\n });\n var updatedBlockMap = blockMap.merge(newBlocks).filter(function (block) {\n return !!block;\n }); // Only update tree block pointers if the range is across blocks\n\n if (isExperimentalTreeBlock && startBlock !== endBlock) {\n updatedBlockMap = updateBlockMapLinks(updatedBlockMap, startBlock, endBlock, blockMap);\n }\n\n return contentState.merge({\n blockMap: updatedBlockMap,\n selectionBefore: selectionState,\n selectionAfter: selectionState.merge({\n anchorKey: startKey,\n anchorOffset: startOffset,\n focusKey: startKey,\n focusOffset: startOffset,\n isBackward: false\n })\n });\n};\n/**\n * Maintain persistence for target list when removing characters on the\n * head and tail of the character list.\n */\n\n\nvar removeFromList = function removeFromList(targetList, startOffset, endOffset) {\n if (startOffset === 0) {\n while (startOffset < endOffset) {\n targetList = targetList.shift();\n startOffset++;\n }\n } else if (endOffset === targetList.count()) {\n while (endOffset > startOffset) {\n targetList = targetList.pop();\n endOffset--;\n }\n } else {\n var head = targetList.slice(0, startOffset);\n var tail = targetList.slice(endOffset);\n targetList = head.concat(tail).toList();\n }\n\n return targetList;\n};\n\nmodule.exports = removeRangeFromContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftModifier = require(\"./DraftModifier\");\n\nvar gkx = require(\"./gkx\");\n\nvar experimentalTreeDataSupport = gkx('draft_tree_data_support');\n/**\n * For a collapsed selection state, remove text based on the specified strategy.\n * If the selection state is not collapsed, remove the entire selected range.\n */\n\nfunction removeTextWithStrategy(editorState, strategy, direction) {\n var selection = editorState.getSelection();\n var content = editorState.getCurrentContent();\n var target = selection;\n var anchorKey = selection.getAnchorKey();\n var focusKey = selection.getFocusKey();\n var anchorBlock = content.getBlockForKey(anchorKey);\n\n if (experimentalTreeDataSupport) {\n if (direction === 'forward') {\n if (anchorKey !== focusKey) {\n // For now we ignore forward delete across blocks,\n // if there is demand for this we will implement it.\n return content;\n }\n }\n }\n\n if (selection.isCollapsed()) {\n if (direction === 'forward') {\n if (editorState.isSelectionAtEndOfContent()) {\n return content;\n }\n\n if (experimentalTreeDataSupport) {\n var isAtEndOfBlock = selection.getAnchorOffset() === content.getBlockForKey(anchorKey).getLength();\n\n if (isAtEndOfBlock) {\n var anchorBlockSibling = content.getBlockForKey(anchorBlock.nextSibling);\n\n if (!anchorBlockSibling || anchorBlockSibling.getLength() === 0) {\n // For now we ignore forward delete at the end of a block,\n // if there is demand for this we will implement it.\n return content;\n }\n }\n }\n } else if (editorState.isSelectionAtStartOfContent()) {\n return content;\n }\n\n target = strategy(editorState);\n\n if (target === selection) {\n return content;\n }\n }\n\n return DraftModifier.removeRange(content, target, direction);\n}\n\nmodule.exports = removeTextWithStrategy;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar REGEX_BLOCK_DELIMITER = new RegExp('\\r', 'g');\n\nfunction sanitizeDraftText(input) {\n return input.replace(REGEX_BLOCK_DELIMITER, '');\n}\n\nmodule.exports = sanitizeDraftText;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar DraftEffects = require(\"./DraftEffects\");\n\nvar DraftJsDebugLogging = require(\"./DraftJsDebugLogging\");\n\nvar UserAgent = require(\"fbjs/lib/UserAgent\");\n\nvar containsNode = require(\"fbjs/lib/containsNode\");\n\nvar getActiveElement = require(\"fbjs/lib/getActiveElement\");\n\nvar getCorrectDocumentFromNode = require(\"./getCorrectDocumentFromNode\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar isElement = require(\"./isElement\");\n\nvar isIE = UserAgent.isBrowser('IE');\n\nfunction getAnonymizedDOM(node, getNodeLabels) {\n if (!node) {\n return '[empty]';\n }\n\n var anonymized = anonymizeTextWithin(node, getNodeLabels);\n\n if (anonymized.nodeType === Node.TEXT_NODE) {\n return anonymized.textContent;\n }\n\n !isElement(anonymized) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Node must be an Element if it is not a text node.') : invariant(false) : void 0;\n var castedElement = anonymized;\n return castedElement.outerHTML;\n}\n\nfunction anonymizeTextWithin(node, getNodeLabels) {\n var labels = getNodeLabels !== undefined ? getNodeLabels(node) : [];\n\n if (node.nodeType === Node.TEXT_NODE) {\n var length = node.textContent.length;\n return getCorrectDocumentFromNode(node).createTextNode('[text ' + length + (labels.length ? ' | ' + labels.join(', ') : '') + ']');\n }\n\n var clone = node.cloneNode();\n\n if (clone.nodeType === 1 && labels.length) {\n clone.setAttribute('data-labels', labels.join(', '));\n }\n\n var childNodes = node.childNodes;\n\n for (var ii = 0; ii < childNodes.length; ii++) {\n clone.appendChild(anonymizeTextWithin(childNodes[ii], getNodeLabels));\n }\n\n return clone;\n}\n\nfunction getAnonymizedEditorDOM(node, getNodeLabels) {\n // grabbing the DOM content of the Draft editor\n var currentNode = node; // this should only be used after checking with isElement\n\n var castedNode = currentNode;\n\n while (currentNode) {\n if (isElement(currentNode) && castedNode.hasAttribute('contenteditable')) {\n // found the Draft editor container\n return getAnonymizedDOM(currentNode, getNodeLabels);\n } else {\n currentNode = currentNode.parentNode;\n castedNode = currentNode;\n }\n }\n\n return 'Could not find contentEditable parent of node';\n}\n\nfunction getNodeLength(node) {\n return node.nodeValue === null ? node.childNodes.length : node.nodeValue.length;\n}\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n */\n\n\nfunction setDraftEditorSelection(selectionState, node, blockKey, nodeStart, nodeEnd) {\n // It's possible that the editor has been removed from the DOM but\n // our selection code doesn't know it yet. Forcing selection in\n // this case may lead to errors, so just bail now.\n var documentObject = getCorrectDocumentFromNode(node);\n\n if (!containsNode(documentObject.documentElement, node)) {\n return;\n }\n\n var selection = documentObject.defaultView.getSelection();\n var anchorKey = selectionState.getAnchorKey();\n var anchorOffset = selectionState.getAnchorOffset();\n var focusKey = selectionState.getFocusKey();\n var focusOffset = selectionState.getFocusOffset();\n var isBackward = selectionState.getIsBackward(); // IE doesn't support backward selection. Swap key/offset pairs.\n\n if (!selection.extend && isBackward) {\n var tempKey = anchorKey;\n var tempOffset = anchorOffset;\n anchorKey = focusKey;\n anchorOffset = focusOffset;\n focusKey = tempKey;\n focusOffset = tempOffset;\n isBackward = false;\n }\n\n var hasAnchor = anchorKey === blockKey && nodeStart <= anchorOffset && nodeEnd >= anchorOffset;\n var hasFocus = focusKey === blockKey && nodeStart <= focusOffset && nodeEnd >= focusOffset; // If the selection is entirely bound within this node, set the selection\n // and be done.\n\n if (hasAnchor && hasFocus) {\n selection.removeAllRanges();\n addPointToSelection(selection, node, anchorOffset - nodeStart, selectionState);\n addFocusToSelection(selection, node, focusOffset - nodeStart, selectionState);\n return;\n }\n\n if (!isBackward) {\n // If the anchor is within this node, set the range start.\n if (hasAnchor) {\n selection.removeAllRanges();\n addPointToSelection(selection, node, anchorOffset - nodeStart, selectionState);\n } // If the focus is within this node, we can assume that we have\n // already set the appropriate start range on the selection, and\n // can simply extend the selection.\n\n\n if (hasFocus) {\n addFocusToSelection(selection, node, focusOffset - nodeStart, selectionState);\n }\n } else {\n // If this node has the focus, set the selection range to be a\n // collapsed range beginning here. Later, when we encounter the anchor,\n // we'll use this information to extend the selection.\n if (hasFocus) {\n selection.removeAllRanges();\n addPointToSelection(selection, node, focusOffset - nodeStart, selectionState);\n } // If this node has the anchor, we may assume that the correct\n // focus information is already stored on the selection object.\n // We keep track of it, reset the selection range, and extend it\n // back to the focus point.\n\n\n if (hasAnchor) {\n var storedFocusNode = selection.focusNode;\n var storedFocusOffset = selection.focusOffset;\n selection.removeAllRanges();\n addPointToSelection(selection, node, anchorOffset - nodeStart, selectionState);\n addFocusToSelection(selection, storedFocusNode, storedFocusOffset, selectionState);\n }\n }\n}\n/**\n * Extend selection towards focus point.\n */\n\n\nfunction addFocusToSelection(selection, node, offset, selectionState) {\n var activeElement = getActiveElement();\n var extend = selection.extend; // containsNode returns false if node is null.\n // Let's refine the type of this value out here so flow knows.\n\n if (extend && node != null && containsNode(activeElement, node)) {\n // If `extend` is called while another element has focus, an error is\n // thrown. We therefore disable `extend` if the active element is somewhere\n // other than the node we are selecting. This should only occur in Firefox,\n // since it is the only browser to support multiple selections.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=921444.\n // logging to catch bug that is being reported in t16250795\n if (offset > getNodeLength(node)) {\n // the call to 'selection.extend' is about to throw\n DraftJsDebugLogging.logSelectionStateFailure({\n anonymizedDom: getAnonymizedEditorDOM(node),\n extraParams: JSON.stringify({\n offset: offset\n }),\n selectionState: JSON.stringify(selectionState.toJS())\n });\n } // logging to catch bug that is being reported in t18110632\n\n\n var nodeWasFocus = node === selection.focusNode;\n\n try {\n // Fixes some reports of \"InvalidStateError: Failed to execute 'extend' on\n // 'Selection': This Selection object doesn't have any Ranges.\"\n // Note: selection.extend does not exist in IE.\n if (selection.rangeCount > 0 && selection.extend) {\n selection.extend(node, offset);\n }\n } catch (e) {\n DraftJsDebugLogging.logSelectionStateFailure({\n anonymizedDom: getAnonymizedEditorDOM(node, function (n) {\n var labels = [];\n\n if (n === activeElement) {\n labels.push('active element');\n }\n\n if (n === selection.anchorNode) {\n labels.push('selection anchor node');\n }\n\n if (n === selection.focusNode) {\n labels.push('selection focus node');\n }\n\n return labels;\n }),\n extraParams: JSON.stringify({\n activeElementName: activeElement ? activeElement.nodeName : null,\n nodeIsFocus: node === selection.focusNode,\n nodeWasFocus: nodeWasFocus,\n selectionRangeCount: selection.rangeCount,\n selectionAnchorNodeName: selection.anchorNode ? selection.anchorNode.nodeName : null,\n selectionAnchorOffset: selection.anchorOffset,\n selectionFocusNodeName: selection.focusNode ? selection.focusNode.nodeName : null,\n selectionFocusOffset: selection.focusOffset,\n message: e ? '' + e : null,\n offset: offset\n }, null, 2),\n selectionState: JSON.stringify(selectionState.toJS(), null, 2)\n }); // allow the error to be thrown -\n // better than continuing in a broken state\n\n throw e;\n }\n } else {\n // IE doesn't support extend. This will mean no backward selection.\n // Extract the existing selection range and add focus to it.\n // Additionally, clone the selection range. IE11 throws an\n // InvalidStateError when attempting to access selection properties\n // after the range is detached.\n if (node && selection.rangeCount > 0) {\n var range = selection.getRangeAt(0);\n range.setEnd(node, offset);\n selection.addRange(range.cloneRange());\n }\n }\n}\n\nfunction addPointToSelection(selection, node, offset, selectionState) {\n var range = getCorrectDocumentFromNode(node).createRange(); // logging to catch bug that is being reported in t16250795\n\n if (offset > getNodeLength(node)) {\n // in this case we know that the call to 'range.setStart' is about to throw\n DraftJsDebugLogging.logSelectionStateFailure({\n anonymizedDom: getAnonymizedEditorDOM(node),\n extraParams: JSON.stringify({\n offset: offset\n }),\n selectionState: JSON.stringify(selectionState.toJS())\n });\n DraftEffects.handleExtensionCausedError();\n }\n\n range.setStart(node, offset); // IE sometimes throws Unspecified Error when trying to addRange\n\n if (isIE) {\n try {\n selection.addRange(range);\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n /* eslint-disable-next-line no-console */\n console.warn('Call to selection.addRange() threw exception: ', e);\n }\n }\n } else {\n selection.addRange(range);\n }\n}\n\nmodule.exports = {\n setDraftEditorSelection: setDraftEditorSelection,\n addFocusToSelection: addFocusToSelection\n};","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar ContentBlockNode = require(\"./ContentBlockNode\");\n\nvar generateRandomKey = require(\"./generateRandomKey\");\n\nvar Immutable = require(\"immutable\");\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar modifyBlockForContentState = require(\"./modifyBlockForContentState\");\n\nvar List = Immutable.List,\n Map = Immutable.Map;\n\nvar transformBlock = function transformBlock(key, blockMap, func) {\n if (!key) {\n return;\n }\n\n var block = blockMap.get(key);\n\n if (!block) {\n return;\n }\n\n blockMap.set(key, func(block));\n};\n\nvar updateBlockMapLinks = function updateBlockMapLinks(blockMap, originalBlock, belowBlock) {\n return blockMap.withMutations(function (blocks) {\n var originalBlockKey = originalBlock.getKey();\n var belowBlockKey = belowBlock.getKey(); // update block parent\n\n transformBlock(originalBlock.getParentKey(), blocks, function (block) {\n var parentChildrenList = block.getChildKeys();\n var insertionIndex = parentChildrenList.indexOf(originalBlockKey) + 1;\n var newChildrenArray = parentChildrenList.toArray();\n newChildrenArray.splice(insertionIndex, 0, belowBlockKey);\n return block.merge({\n children: List(newChildrenArray)\n });\n }); // update original next block\n\n transformBlock(originalBlock.getNextSiblingKey(), blocks, function (block) {\n return block.merge({\n prevSibling: belowBlockKey\n });\n }); // update original block\n\n transformBlock(originalBlockKey, blocks, function (block) {\n return block.merge({\n nextSibling: belowBlockKey\n });\n }); // update below block\n\n transformBlock(belowBlockKey, blocks, function (block) {\n return block.merge({\n prevSibling: originalBlockKey\n });\n });\n });\n};\n\nvar splitBlockInContentState = function splitBlockInContentState(contentState, selectionState) {\n !selectionState.isCollapsed() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Selection range must be collapsed.') : invariant(false) : void 0;\n var key = selectionState.getAnchorKey();\n var blockMap = contentState.getBlockMap();\n var blockToSplit = blockMap.get(key);\n var text = blockToSplit.getText();\n\n if (!text) {\n var blockType = blockToSplit.getType();\n\n if (blockType === 'unordered-list-item' || blockType === 'ordered-list-item') {\n return modifyBlockForContentState(contentState, selectionState, function (block) {\n return block.merge({\n type: 'unstyled',\n depth: 0\n });\n });\n }\n }\n\n var offset = selectionState.getAnchorOffset();\n var chars = blockToSplit.getCharacterList();\n var keyBelow = generateRandomKey();\n var isExperimentalTreeBlock = blockToSplit instanceof ContentBlockNode;\n var blockAbove = blockToSplit.merge({\n text: text.slice(0, offset),\n characterList: chars.slice(0, offset)\n });\n var blockBelow = blockAbove.merge({\n key: keyBelow,\n text: text.slice(offset),\n characterList: chars.slice(offset),\n data: Map()\n });\n var blocksBefore = blockMap.toSeq().takeUntil(function (v) {\n return v === blockToSplit;\n });\n var blocksAfter = blockMap.toSeq().skipUntil(function (v) {\n return v === blockToSplit;\n }).rest();\n var newBlocks = blocksBefore.concat([[key, blockAbove], [keyBelow, blockBelow]], blocksAfter).toOrderedMap();\n\n if (isExperimentalTreeBlock) {\n !blockToSplit.getChildKeys().isEmpty() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ContentBlockNode must not have children') : invariant(false) : void 0;\n newBlocks = updateBlockMapLinks(newBlocks, blockAbove, blockBelow);\n }\n\n return contentState.merge({\n blockMap: newBlocks,\n selectionBefore: selectionState,\n selectionAfter: selectionState.merge({\n anchorKey: keyBelow,\n anchorOffset: 0,\n focusKey: keyBelow,\n focusOffset: 0,\n isBackward: false\n })\n });\n};\n\nmodule.exports = splitBlockInContentState;","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n * \n * @emails oncall+draft_js\n */\n'use strict';\n\nvar NEWLINE_REGEX = /\\r\\n?|\\n/g;\n\nfunction splitTextIntoTextBlocks(text) {\n return text.split(NEWLINE_REGEX);\n}\n\nmodule.exports = splitTextIntoTextBlocks;","\"use strict\";\n\n/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @typechecks\n * \n * @format\n */\n\n/*eslint-disable no-bitwise */\n\n/**\n * Based on the rfc4122-compliant solution posted at\n * http://stackoverflow.com/questions/105034\n */\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = c == 'x' ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n}\n\nmodule.exports = uuid;","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.draftjsToHtml = factory());\n}(this, (function () { 'use strict';\n\n /**\n * Utility function to execute callback for eack key->value pair.\n */\n function forEach(obj, callback) {\n if (obj) {\n for (var key in obj) {\n // eslint-disable-line no-restricted-syntax\n if ({}.hasOwnProperty.call(obj, key)) {\n callback(key, obj[key]);\n }\n }\n }\n }\n /**\n * The function returns true if the string passed to it has no content.\n */\n\n function isEmptyString(str) {\n if (str === undefined || str === null || str.length === 0 || str.trim().length === 0) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Mapping block-type to corresponding html tag.\n */\n\n var blockTypesMapping = {\n unstyled: 'p',\n 'header-one': 'h1',\n 'header-two': 'h2',\n 'header-three': 'h3',\n 'header-four': 'h4',\n 'header-five': 'h5',\n 'header-six': 'h6',\n 'unordered-list-item': 'ul',\n 'ordered-list-item': 'ol',\n blockquote: 'blockquote',\n code: 'pre'\n };\n /**\n * Function will return HTML tag for a block.\n */\n\n function getBlockTag(type) {\n return type && blockTypesMapping[type];\n }\n /**\n * Function will return style string for a block.\n */\n\n function getBlockStyle(data) {\n var styles = '';\n forEach(data, function (key, value) {\n if (value) {\n styles += \"\".concat(key, \":\").concat(value, \";\");\n }\n });\n return styles;\n }\n /**\n * The function returns an array of hashtag-sections in blocks.\n * These will be areas in block which have hashtags applicable to them.\n */\n\n function getHashtagRanges(blockText, hashtagConfig) {\n var sections = [];\n\n if (hashtagConfig) {\n var counter = 0;\n var startIndex = 0;\n var text = blockText;\n var trigger = hashtagConfig.trigger || '#';\n var separator = hashtagConfig.separator || ' ';\n\n for (; text.length > 0 && startIndex >= 0;) {\n if (text[0] === trigger) {\n startIndex = 0;\n counter = 0;\n text = text.substr(trigger.length);\n } else {\n startIndex = text.indexOf(separator + trigger);\n\n if (startIndex >= 0) {\n text = text.substr(startIndex + (separator + trigger).length);\n counter += startIndex + separator.length;\n }\n }\n\n if (startIndex >= 0) {\n var endIndex = text.indexOf(separator) >= 0 ? text.indexOf(separator) : text.length;\n var hashtag = text.substr(0, endIndex);\n\n if (hashtag && hashtag.length > 0) {\n sections.push({\n offset: counter,\n length: hashtag.length + trigger.length,\n type: 'HASHTAG'\n });\n }\n\n counter += trigger.length;\n }\n }\n }\n\n return sections;\n }\n /**\n * The function returns an array of entity-sections in blocks.\n * These will be areas in block which have same entity or no entity applicable to them.\n */\n\n\n function getSections(block, hashtagConfig) {\n var sections = [];\n var lastOffset = 0;\n var sectionRanges = block.entityRanges.map(function (range) {\n var offset = range.offset,\n length = range.length,\n key = range.key;\n return {\n offset: offset,\n length: length,\n key: key,\n type: 'ENTITY'\n };\n });\n sectionRanges = sectionRanges.concat(getHashtagRanges(block.text, hashtagConfig));\n sectionRanges = sectionRanges.sort(function (s1, s2) {\n return s1.offset - s2.offset;\n });\n sectionRanges.forEach(function (r) {\n if (r.offset > lastOffset) {\n sections.push({\n start: lastOffset,\n end: r.offset\n });\n }\n\n sections.push({\n start: r.offset,\n end: r.offset + r.length,\n entityKey: r.key,\n type: r.type\n });\n lastOffset = r.offset + r.length;\n });\n\n if (lastOffset < block.text.length) {\n sections.push({\n start: lastOffset,\n end: block.text.length\n });\n }\n\n return sections;\n }\n /**\n * Function to check if the block is an atomic entity block.\n */\n\n\n function isAtomicEntityBlock(block) {\n if (block.entityRanges.length > 0 && (isEmptyString(block.text) || block.type === 'atomic')) {\n return true;\n }\n\n return false;\n }\n /**\n * The function will return array of inline styles applicable to the block.\n */\n\n\n function getStyleArrayForBlock(block) {\n var text = block.text,\n inlineStyleRanges = block.inlineStyleRanges;\n var inlineStyles = {\n BOLD: new Array(text.length),\n ITALIC: new Array(text.length),\n UNDERLINE: new Array(text.length),\n STRIKETHROUGH: new Array(text.length),\n CODE: new Array(text.length),\n SUPERSCRIPT: new Array(text.length),\n SUBSCRIPT: new Array(text.length),\n COLOR: new Array(text.length),\n BGCOLOR: new Array(text.length),\n FONTSIZE: new Array(text.length),\n FONTFAMILY: new Array(text.length),\n length: text.length\n };\n\n if (inlineStyleRanges && inlineStyleRanges.length > 0) {\n inlineStyleRanges.forEach(function (range) {\n var offset = range.offset;\n var length = offset + range.length;\n\n for (var i = offset; i < length; i += 1) {\n if (range.style.indexOf('color-') === 0) {\n inlineStyles.COLOR[i] = range.style.substring(6);\n } else if (range.style.indexOf('bgcolor-') === 0) {\n inlineStyles.BGCOLOR[i] = range.style.substring(8);\n } else if (range.style.indexOf('fontsize-') === 0) {\n inlineStyles.FONTSIZE[i] = range.style.substring(9);\n } else if (range.style.indexOf('fontfamily-') === 0) {\n inlineStyles.FONTFAMILY[i] = range.style.substring(11);\n } else if (inlineStyles[range.style]) {\n inlineStyles[range.style][i] = true;\n }\n }\n });\n }\n\n return inlineStyles;\n }\n /**\n * The function will return inline style applicable at some offset within a block.\n */\n\n\n function getStylesAtOffset(inlineStyles, offset) {\n var styles = {};\n\n if (inlineStyles.COLOR[offset]) {\n styles.COLOR = inlineStyles.COLOR[offset];\n }\n\n if (inlineStyles.BGCOLOR[offset]) {\n styles.BGCOLOR = inlineStyles.BGCOLOR[offset];\n }\n\n if (inlineStyles.FONTSIZE[offset]) {\n styles.FONTSIZE = inlineStyles.FONTSIZE[offset];\n }\n\n if (inlineStyles.FONTFAMILY[offset]) {\n styles.FONTFAMILY = inlineStyles.FONTFAMILY[offset];\n }\n\n if (inlineStyles.UNDERLINE[offset]) {\n styles.UNDERLINE = true;\n }\n\n if (inlineStyles.ITALIC[offset]) {\n styles.ITALIC = true;\n }\n\n if (inlineStyles.BOLD[offset]) {\n styles.BOLD = true;\n }\n\n if (inlineStyles.STRIKETHROUGH[offset]) {\n styles.STRIKETHROUGH = true;\n }\n\n if (inlineStyles.CODE[offset]) {\n styles.CODE = true;\n }\n\n if (inlineStyles.SUBSCRIPT[offset]) {\n styles.SUBSCRIPT = true;\n }\n\n if (inlineStyles.SUPERSCRIPT[offset]) {\n styles.SUPERSCRIPT = true;\n }\n\n return styles;\n }\n /**\n * Function returns true for a set of styles if the value of these styles at an offset\n * are same as that on the previous offset.\n */\n\n function sameStyleAsPrevious(inlineStyles, styles, index) {\n var sameStyled = true;\n\n if (index > 0 && index < inlineStyles.length) {\n styles.forEach(function (style) {\n sameStyled = sameStyled && inlineStyles[style][index] === inlineStyles[style][index - 1];\n });\n } else {\n sameStyled = false;\n }\n\n return sameStyled;\n }\n /**\n * Function returns html for text depending on inline style tags applicable to it.\n */\n\n function addInlineStyleMarkup(style, content) {\n if (style === 'BOLD') {\n return \"<strong>\".concat(content, \"</strong>\");\n }\n\n if (style === 'ITALIC') {\n return \"<em>\".concat(content, \"</em>\");\n }\n\n if (style === 'UNDERLINE') {\n return \"<ins>\".concat(content, \"</ins>\");\n }\n\n if (style === 'STRIKETHROUGH') {\n return \"<del>\".concat(content, \"</del>\");\n }\n\n if (style === 'CODE') {\n return \"<code>\".concat(content, \"</code>\");\n }\n\n if (style === 'SUPERSCRIPT') {\n return \"<sup>\".concat(content, \"</sup>\");\n }\n\n if (style === 'SUBSCRIPT') {\n return \"<sub>\".concat(content, \"</sub>\");\n }\n\n return content;\n }\n /**\n * The function returns text for given section of block after doing required character replacements.\n */\n\n function getSectionText(text) {\n if (text && text.length > 0) {\n var chars = text.map(function (ch) {\n switch (ch) {\n case '\\n':\n return '<br>';\n\n case '&':\n return '&';\n\n case '<':\n return '<';\n\n case '>':\n return '>';\n\n default:\n return ch;\n }\n });\n return chars.join('');\n }\n\n return '';\n }\n /**\n * Function returns html for text depending on inline style tags applicable to it.\n */\n\n\n function addStylePropertyMarkup(styles, text) {\n if (styles && (styles.COLOR || styles.BGCOLOR || styles.FONTSIZE || styles.FONTFAMILY)) {\n var styleString = 'style=\"';\n\n if (styles.COLOR) {\n styleString += \"color: \".concat(styles.COLOR, \";\");\n }\n\n if (styles.BGCOLOR) {\n styleString += \"background-color: \".concat(styles.BGCOLOR, \";\");\n }\n\n if (styles.FONTSIZE) {\n styleString += \"font-size: \".concat(styles.FONTSIZE).concat(/^\\d+$/.test(styles.FONTSIZE) ? 'px' : '', \";\");\n }\n\n if (styles.FONTFAMILY) {\n styleString += \"font-family: \".concat(styles.FONTFAMILY, \";\");\n }\n\n styleString += '\"';\n return \"<span \".concat(styleString, \">\").concat(text, \"</span>\");\n }\n\n return text;\n }\n /**\n * Function will return markup for Entity.\n */\n\n function getEntityMarkup(entityMap, entityKey, text, customEntityTransform) {\n var entity = entityMap[entityKey];\n\n if (typeof customEntityTransform === 'function') {\n var html = customEntityTransform(entity, text);\n\n if (html) {\n return html;\n }\n }\n\n if (entity.type === 'MENTION') {\n return \"<a href=\\\"\".concat(entity.data.url, \"\\\" class=\\\"wysiwyg-mention\\\" data-mention data-value=\\\"\").concat(entity.data.value, \"\\\">\").concat(text, \"</a>\");\n }\n\n if (entity.type === 'LINK') {\n var targetOption = entity.data.targetOption || '_self';\n return \"<a href=\\\"\".concat(entity.data.url, \"\\\" target=\\\"\").concat(targetOption, \"\\\">\").concat(text, \"</a>\");\n }\n\n if (entity.type === 'IMAGE') {\n var alignment = entity.data.alignment;\n\n if (alignment && alignment.length) {\n return \"<div style=\\\"text-align:\".concat(alignment, \";\\\"><img src=\\\"\").concat(entity.data.src, \"\\\" alt=\\\"\").concat(entity.data.alt, \"\\\" style=\\\"height: \").concat(entity.data.height, \";width: \").concat(entity.data.width, \"\\\"/></div>\");\n }\n\n return \"<img src=\\\"\".concat(entity.data.src, \"\\\" alt=\\\"\").concat(entity.data.alt, \"\\\" style=\\\"height: \").concat(entity.data.height, \";width: \").concat(entity.data.width, \"\\\"/>\");\n }\n\n if (entity.type === 'EMBEDDED_LINK') {\n return \"<iframe width=\\\"\".concat(entity.data.width, \"\\\" height=\\\"\").concat(entity.data.height, \"\\\" src=\\\"\").concat(entity.data.src, \"\\\" frameBorder=\\\"0\\\"></iframe>\");\n }\n\n return text;\n }\n /**\n * For a given section in a block the function will return a further list of sections,\n * with similar inline styles applicable to them.\n */\n\n\n function getInlineStyleSections(block, styles, start, end) {\n var styleSections = [];\n var text = Array.from(block.text);\n\n if (text.length > 0) {\n var inlineStyles = getStyleArrayForBlock(block);\n var section;\n\n for (var i = start; i < end; i += 1) {\n if (i !== start && sameStyleAsPrevious(inlineStyles, styles, i)) {\n section.text.push(text[i]);\n section.end = i + 1;\n } else {\n section = {\n styles: getStylesAtOffset(inlineStyles, i),\n text: [text[i]],\n start: i,\n end: i + 1\n };\n styleSections.push(section);\n }\n }\n }\n\n return styleSections;\n }\n /**\n * Replace leading blank spaces by  \n */\n\n\n function trimLeadingZeros(sectionText) {\n if (sectionText) {\n var replacedText = sectionText;\n\n for (var i = 0; i < replacedText.length; i += 1) {\n if (sectionText[i] === ' ') {\n replacedText = replacedText.replace(' ', ' ');\n } else {\n break;\n }\n }\n\n return replacedText;\n }\n\n return sectionText;\n }\n /**\n * Replace trailing blank spaces by  \n */\n\n function trimTrailingZeros(sectionText) {\n if (sectionText) {\n var replacedText = sectionText;\n\n for (var i = replacedText.length - 1; i >= 0; i -= 1) {\n if (replacedText[i] === ' ') {\n replacedText = \"\".concat(replacedText.substring(0, i), \" \").concat(replacedText.substring(i + 1));\n } else {\n break;\n }\n }\n\n return replacedText;\n }\n\n return sectionText;\n }\n /**\n * The method returns markup for section to which inline styles\n * like BOLD, ITALIC, UNDERLINE, STRIKETHROUGH, CODE, SUPERSCRIPT, SUBSCRIPT are applicable.\n */\n\n function getStyleTagSectionMarkup(styleSection) {\n var styles = styleSection.styles,\n text = styleSection.text;\n var content = getSectionText(text);\n forEach(styles, function (style, value) {\n content = addInlineStyleMarkup(style, content);\n });\n return content;\n }\n /**\n * The method returns markup for section to which inline styles\n like color, background-color, font-size are applicable.\n */\n\n\n function getInlineStyleSectionMarkup(block, styleSection) {\n var styleTagSections = getInlineStyleSections(block, ['BOLD', 'ITALIC', 'UNDERLINE', 'STRIKETHROUGH', 'CODE', 'SUPERSCRIPT', 'SUBSCRIPT'], styleSection.start, styleSection.end);\n var styleSectionText = '';\n styleTagSections.forEach(function (stylePropertySection) {\n styleSectionText += getStyleTagSectionMarkup(stylePropertySection);\n });\n styleSectionText = addStylePropertyMarkup(styleSection.styles, styleSectionText);\n return styleSectionText;\n }\n /*\n * The method returns markup for an entity section.\n * An entity section is a continuous section in a block\n * to which same entity or no entity is applicable.\n */\n\n\n function getSectionMarkup(block, entityMap, section, customEntityTransform) {\n var entityInlineMarkup = [];\n var inlineStyleSections = getInlineStyleSections(block, ['COLOR', 'BGCOLOR', 'FONTSIZE', 'FONTFAMILY'], section.start, section.end);\n inlineStyleSections.forEach(function (styleSection) {\n entityInlineMarkup.push(getInlineStyleSectionMarkup(block, styleSection));\n });\n var sectionText = entityInlineMarkup.join('');\n\n if (section.type === 'ENTITY') {\n if (section.entityKey !== undefined && section.entityKey !== null) {\n sectionText = getEntityMarkup(entityMap, section.entityKey, sectionText, customEntityTransform); // eslint-disable-line max-len\n }\n } else if (section.type === 'HASHTAG') {\n sectionText = \"<a href=\\\"\".concat(sectionText, \"\\\" class=\\\"wysiwyg-hashtag\\\">\").concat(sectionText, \"</a>\");\n }\n\n return sectionText;\n }\n /**\n * Function will return the markup for block preserving the inline styles and\n * special characters like newlines or blank spaces.\n */\n\n\n function getBlockInnerMarkup(block, entityMap, hashtagConfig, customEntityTransform) {\n var blockMarkup = [];\n var sections = getSections(block, hashtagConfig);\n sections.forEach(function (section, index) {\n var sectionText = getSectionMarkup(block, entityMap, section, customEntityTransform);\n\n if (index === 0) {\n sectionText = trimLeadingZeros(sectionText);\n }\n\n if (index === sections.length - 1) {\n sectionText = trimTrailingZeros(sectionText);\n }\n\n blockMarkup.push(sectionText);\n });\n return blockMarkup.join('');\n }\n /**\n * Function will return html for the block.\n */\n\n function getBlockMarkup(block, entityMap, hashtagConfig, directional, customEntityTransform) {\n var blockHtml = [];\n\n if (isAtomicEntityBlock(block)) {\n blockHtml.push(getEntityMarkup(entityMap, block.entityRanges[0].key, undefined, customEntityTransform));\n } else {\n var blockTag = getBlockTag(block.type);\n\n if (blockTag) {\n blockHtml.push(\"<\".concat(blockTag));\n var blockStyle = getBlockStyle(block.data);\n\n if (blockStyle) {\n blockHtml.push(\" style=\\\"\".concat(blockStyle, \"\\\"\"));\n }\n\n if (directional) {\n blockHtml.push(' dir = \"auto\"');\n }\n\n blockHtml.push('>');\n blockHtml.push(getBlockInnerMarkup(block, entityMap, hashtagConfig, customEntityTransform));\n blockHtml.push(\"</\".concat(blockTag, \">\"));\n }\n }\n\n blockHtml.push('\\n');\n return blockHtml.join('');\n }\n\n /**\n * Function to check if a block is of type list.\n */\n\n function isList(blockType) {\n return blockType === 'unordered-list-item' || blockType === 'ordered-list-item';\n }\n /**\n * Function will return html markup for a list block.\n */\n\n function getListMarkup(listBlocks, entityMap, hashtagConfig, directional, customEntityTransform) {\n var listHtml = [];\n var nestedListBlock = [];\n var previousBlock;\n listBlocks.forEach(function (block) {\n var nestedBlock = false;\n\n if (!previousBlock) {\n listHtml.push(\"<\".concat(getBlockTag(block.type), \">\\n\"));\n } else if (previousBlock.type !== block.type) {\n listHtml.push(\"</\".concat(getBlockTag(previousBlock.type), \">\\n\"));\n listHtml.push(\"<\".concat(getBlockTag(block.type), \">\\n\"));\n } else if (previousBlock.depth === block.depth) {\n if (nestedListBlock && nestedListBlock.length > 0) {\n listHtml.push(getListMarkup(nestedListBlock, entityMap, hashtagConfig, directional, customEntityTransform));\n nestedListBlock = [];\n }\n } else {\n nestedBlock = true;\n nestedListBlock.push(block);\n }\n\n if (!nestedBlock) {\n listHtml.push('<li');\n var blockStyle = getBlockStyle(block.data);\n\n if (blockStyle) {\n listHtml.push(\" style=\\\"\".concat(blockStyle, \"\\\"\"));\n }\n\n if (directional) {\n listHtml.push(' dir = \"auto\"');\n }\n\n listHtml.push('>');\n listHtml.push(getBlockInnerMarkup(block, entityMap, hashtagConfig, customEntityTransform));\n listHtml.push('</li>\\n');\n previousBlock = block;\n }\n });\n\n if (nestedListBlock && nestedListBlock.length > 0) {\n listHtml.push(getListMarkup(nestedListBlock, entityMap, hashtagConfig, directional, customEntityTransform));\n }\n\n listHtml.push(\"</\".concat(getBlockTag(previousBlock.type), \">\\n\"));\n return listHtml.join('');\n }\n\n /**\n * The function will generate html markup for given draftjs editorContent.\n */\n\n function draftToHtml(editorContent, hashtagConfig, directional, customEntityTransform) {\n var html = [];\n\n if (editorContent) {\n var blocks = editorContent.blocks,\n entityMap = editorContent.entityMap;\n\n if (blocks && blocks.length > 0) {\n var listBlocks = [];\n blocks.forEach(function (block) {\n if (isList(block.type)) {\n listBlocks.push(block);\n } else {\n if (listBlocks.length > 0) {\n var listHtml = getListMarkup(listBlocks, entityMap, hashtagConfig, customEntityTransform); // eslint-disable-line max-len\n\n html.push(listHtml);\n listBlocks = [];\n }\n\n var blockHtml = getBlockMarkup(block, entityMap, hashtagConfig, directional, customEntityTransform);\n html.push(blockHtml);\n }\n });\n\n if (listBlocks.length > 0) {\n var listHtml = getListMarkup(listBlocks, entityMap, hashtagConfig, directional, customEntityTransform); // eslint-disable-line max-len\n\n html.push(listHtml);\n listBlocks = [];\n }\n }\n }\n\n return html.join('');\n }\n\n return draftToHtml;\n\n})));\n","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar PhotosMimeType = require(\"./PhotosMimeType\");\n\nvar createArrayFromMixed = require(\"./createArrayFromMixed\");\n\nvar emptyFunction = require(\"./emptyFunction\");\n\nvar CR_LF_REGEX = new RegExp(\"\\r\\n\", 'g');\nvar LF_ONLY = \"\\n\";\nvar RICH_TEXT_TYPES = {\n 'text/rtf': 1,\n 'text/html': 1\n};\n/**\n * If DataTransferItem is a file then return the Blob of data.\n *\n * @param {object} item\n * @return {?blob}\n */\n\nfunction getFileFromDataTransfer(item) {\n if (item.kind == 'file') {\n return item.getAsFile();\n }\n}\n\nvar DataTransfer =\n/*#__PURE__*/\nfunction () {\n /**\n * @param {object} data\n */\n function DataTransfer(data) {\n this.data = data; // Types could be DOMStringList or array\n\n this.types = data.types ? createArrayFromMixed(data.types) : [];\n }\n /**\n * Is this likely to be a rich text data transfer?\n *\n * @return {boolean}\n */\n\n\n var _proto = DataTransfer.prototype;\n\n _proto.isRichText = function isRichText() {\n // If HTML is available, treat this data as rich text. This way, we avoid\n // using a pasted image if it is packaged with HTML -- this may occur with\n // pastes from MS Word, for example. However this is only rich text if\n // there's accompanying text.\n if (this.getHTML() && this.getText()) {\n return true;\n } // When an image is copied from a preview window, you end up with two\n // DataTransferItems one of which is a file's metadata as text. Skip those.\n\n\n if (this.isImage()) {\n return false;\n }\n\n return this.types.some(function (type) {\n return RICH_TEXT_TYPES[type];\n });\n };\n /**\n * Get raw text.\n *\n * @return {?string}\n */\n\n\n _proto.getText = function getText() {\n var text;\n\n if (this.data.getData) {\n if (!this.types.length) {\n text = this.data.getData('Text');\n } else if (this.types.indexOf('text/plain') != -1) {\n text = this.data.getData('text/plain');\n }\n }\n\n return text ? text.replace(CR_LF_REGEX, LF_ONLY) : null;\n };\n /**\n * Get HTML paste data\n *\n * @return {?string}\n */\n\n\n _proto.getHTML = function getHTML() {\n if (this.data.getData) {\n if (!this.types.length) {\n return this.data.getData('Text');\n } else if (this.types.indexOf('text/html') != -1) {\n return this.data.getData('text/html');\n }\n }\n };\n /**\n * Is this a link data transfer?\n *\n * @return {boolean}\n */\n\n\n _proto.isLink = function isLink() {\n return this.types.some(function (type) {\n return type.indexOf('Url') != -1 || type.indexOf('text/uri-list') != -1 || type.indexOf('text/x-moz-url');\n });\n };\n /**\n * Get a link url.\n *\n * @return {?string}\n */\n\n\n _proto.getLink = function getLink() {\n if (this.data.getData) {\n if (this.types.indexOf('text/x-moz-url') != -1) {\n var url = this.data.getData('text/x-moz-url').split('\\n');\n return url[0];\n }\n\n return this.types.indexOf('text/uri-list') != -1 ? this.data.getData('text/uri-list') : this.data.getData('url');\n }\n\n return null;\n };\n /**\n * Is this an image data transfer?\n *\n * @return {boolean}\n */\n\n\n _proto.isImage = function isImage() {\n var isImage = this.types.some(function (type) {\n // Firefox will have a type of application/x-moz-file for images during\n // dragging\n return type.indexOf('application/x-moz-file') != -1;\n });\n\n if (isImage) {\n return true;\n }\n\n var items = this.getFiles();\n\n for (var i = 0; i < items.length; i++) {\n var type = items[i].type;\n\n if (!PhotosMimeType.isImage(type)) {\n return false;\n }\n }\n\n return true;\n };\n\n _proto.getCount = function getCount() {\n if (this.data.hasOwnProperty('items')) {\n return this.data.items.length;\n } else if (this.data.hasOwnProperty('mozItemCount')) {\n return this.data.mozItemCount;\n } else if (this.data.files) {\n return this.data.files.length;\n }\n\n return null;\n };\n /**\n * Get files.\n *\n * @return {array}\n */\n\n\n _proto.getFiles = function getFiles() {\n if (this.data.items) {\n // createArrayFromMixed doesn't properly handle DataTransferItemLists.\n return Array.prototype.slice.call(this.data.items).map(getFileFromDataTransfer).filter(emptyFunction.thatReturnsArgument);\n } else if (this.data.files) {\n return Array.prototype.slice.call(this.data.files);\n } else {\n return [];\n }\n };\n /**\n * Are there any files to fetch?\n *\n * @return {boolean}\n */\n\n\n _proto.hasFiles = function hasFiles() {\n return this.getFiles().length > 0;\n };\n\n return DataTransfer;\n}();\n\nmodule.exports = DataTransfer;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nmodule.exports = {\n BACKSPACE: 8,\n TAB: 9,\n RETURN: 13,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46,\n COMMA: 188,\n PERIOD: 190,\n A: 65,\n Z: 90,\n ZERO: 48,\n NUMPAD_0: 96,\n NUMPAD_9: 105\n};","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nvar PhotosMimeType = {\n isImage: function isImage(mimeString) {\n return getParts(mimeString)[0] === 'image';\n },\n isJpeg: function isJpeg(mimeString) {\n var parts = getParts(mimeString);\n return PhotosMimeType.isImage(mimeString) && ( // see http://fburl.com/10972194\n parts[1] === 'jpeg' || parts[1] === 'pjpeg');\n }\n};\n\nfunction getParts(mimeString) {\n return mimeString.split('/');\n}\n\nmodule.exports = PhotosMimeType;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * @param {DOMElement} element\n * @param {DOMDocument} doc\n * @return {boolean}\n */\nfunction _isViewportScrollElement(element, doc) {\n return !!doc && (element === doc.documentElement || element === doc.body);\n}\n/**\n * Scroll Module. This class contains 4 simple static functions\n * to be used to access Element.scrollTop/scrollLeft properties.\n * To solve the inconsistencies between browsers when either\n * document.body or document.documentElement is supplied,\n * below logic will be used to alleviate the issue:\n *\n * 1. If 'element' is either 'document.body' or 'document.documentElement,\n * get whichever element's 'scroll{Top,Left}' is larger.\n * 2. If 'element' is either 'document.body' or 'document.documentElement',\n * set the 'scroll{Top,Left}' on both elements.\n */\n\n\nvar Scroll = {\n /**\n * @param {DOMElement} element\n * @return {number}\n */\n getTop: function getTop(element) {\n var doc = element.ownerDocument;\n return _isViewportScrollElement(element, doc) ? // In practice, they will either both have the same value,\n // or one will be zero and the other will be the scroll position\n // of the viewport. So we can use `X || Y` instead of `Math.max(X, Y)`\n doc.body.scrollTop || doc.documentElement.scrollTop : element.scrollTop;\n },\n\n /**\n * @param {DOMElement} element\n * @param {number} newTop\n */\n setTop: function setTop(element, newTop) {\n var doc = element.ownerDocument;\n\n if (_isViewportScrollElement(element, doc)) {\n doc.body.scrollTop = doc.documentElement.scrollTop = newTop;\n } else {\n element.scrollTop = newTop;\n }\n },\n\n /**\n * @param {DOMElement} element\n * @return {number}\n */\n getLeft: function getLeft(element) {\n var doc = element.ownerDocument;\n return _isViewportScrollElement(element, doc) ? doc.body.scrollLeft || doc.documentElement.scrollLeft : element.scrollLeft;\n },\n\n /**\n * @param {DOMElement} element\n * @param {number} newLeft\n */\n setLeft: function setLeft(element, newLeft) {\n var doc = element.ownerDocument;\n\n if (_isViewportScrollElement(element, doc)) {\n doc.body.scrollLeft = doc.documentElement.scrollLeft = newLeft;\n } else {\n element.scrollLeft = newLeft;\n }\n }\n};\nmodule.exports = Scroll;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar getStyleProperty = require(\"./getStyleProperty\");\n/**\n * @param {DOMNode} element [description]\n * @param {string} name Overflow style property name.\n * @return {boolean} True if the supplied ndoe is scrollable.\n */\n\n\nfunction _isNodeScrollable(element, name) {\n var overflow = Style.get(element, name);\n return overflow === 'auto' || overflow === 'scroll';\n}\n/**\n * Utilities for querying and mutating style properties.\n */\n\n\nvar Style = {\n /**\n * Gets the style property for the supplied node. This will return either the\n * computed style, if available, or the declared style.\n *\n * @param {DOMNode} node\n * @param {string} name Style property name.\n * @return {?string} Style property value.\n */\n get: getStyleProperty,\n\n /**\n * Determines the nearest ancestor of a node that is scrollable.\n *\n * NOTE: This can be expensive if used repeatedly or on a node nested deeply.\n *\n * @param {?DOMNode} node Node from which to start searching.\n * @return {?DOMWindow|DOMElement} Scroll parent of the supplied node.\n */\n getScrollParent: function getScrollParent(node) {\n if (!node) {\n return null;\n }\n\n var ownerDocument = node.ownerDocument;\n\n while (node && node !== ownerDocument.body) {\n if (_isNodeScrollable(node, 'overflow') || _isNodeScrollable(node, 'overflowY') || _isNodeScrollable(node, 'overflowX')) {\n return node;\n }\n\n node = node.parentNode;\n }\n\n return ownerDocument.defaultView || ownerDocument.parentWindow;\n }\n};\nmodule.exports = Style;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * @stub\n * \n */\n'use strict'; // \\u00a1-\\u00b1\\u00b4-\\u00b8\\u00ba\\u00bb\\u00bf\n// is latin supplement punctuation except fractions and superscript\n// numbers\n// \\u2010-\\u2027\\u2030-\\u205e\n// is punctuation from the general punctuation block:\n// weird quotes, commas, bullets, dashes, etc.\n// \\u30fb\\u3001\\u3002\\u3008-\\u3011\\u3014-\\u301f\n// is CJK punctuation\n// \\uff1a-\\uff1f\\uff01-\\uff0f\\uff3b-\\uff40\\uff5b-\\uff65\n// is some full-width/half-width punctuation\n// \\u2E2E\\u061f\\u066a-\\u066c\\u061b\\u060c\\u060d\\uFD3e\\uFD3F\n// is some Arabic punctuation marks\n// \\u1801\\u0964\\u104a\\u104b\n// is misc. other language punctuation marks\n\nvar PUNCTUATION = '[.,+*?$|#{}()\\'\\\\^\\\\-\\\\[\\\\]\\\\\\\\\\\\/!@%\"~=<>_:;' + \"\\u30FB\\u3001\\u3002\\u3008-\\u3011\\u3014-\\u301F\\uFF1A-\\uFF1F\\uFF01-\\uFF0F\" + \"\\uFF3B-\\uFF40\\uFF5B-\\uFF65\\u2E2E\\u061F\\u066A-\\u066C\\u061B\\u060C\\u060D\" + \"\\uFD3E\\uFD3F\\u1801\\u0964\\u104A\\u104B\\u2010-\\u2027\\u2030-\\u205E\" + \"\\xA1-\\xB1\\xB4-\\xB8\\xBA\\xBB\\xBF]\";\nmodule.exports = {\n getPunctuation: function getPunctuation() {\n return PUNCTUATION;\n }\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar URI =\n/*#__PURE__*/\nfunction () {\n function URI(uri) {\n _defineProperty(this, \"_uri\", void 0);\n\n this._uri = uri;\n }\n\n var _proto = URI.prototype;\n\n _proto.toString = function toString() {\n return this._uri;\n };\n\n return URI;\n}();\n\nmodule.exports = URI;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/**\n * Basic (stateless) API for text direction detection\n *\n * Part of our implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nvar UnicodeBidiDirection = require(\"./UnicodeBidiDirection\");\n\nvar invariant = require(\"./invariant\");\n\n/**\n * RegExp ranges of characters with a *Strong* Bidi_Class value.\n *\n * Data is based on DerivedBidiClass.txt in UCD version 7.0.0.\n *\n * NOTE: For performance reasons, we only support Unicode's\n * Basic Multilingual Plane (BMP) for now.\n */\nvar RANGE_BY_BIDI_TYPE = {\n L: \"A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u01BA\\u01BB\" + \"\\u01BC-\\u01BF\\u01C0-\\u01C3\\u01C4-\\u0293\\u0294\\u0295-\\u02AF\\u02B0-\\u02B8\" + \"\\u02BB-\\u02C1\\u02D0-\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376-\\u0377\" + \"\\u037A\\u037B-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\" + \"\\u03A3-\\u03F5\\u03F7-\\u0481\\u0482\\u048A-\\u052F\\u0531-\\u0556\\u0559\" + \"\\u055A-\\u055F\\u0561-\\u0587\\u0589\\u0903\\u0904-\\u0939\\u093B\\u093D\" + \"\\u093E-\\u0940\\u0949-\\u094C\\u094E-\\u094F\\u0950\\u0958-\\u0961\\u0964-\\u0965\" + \"\\u0966-\\u096F\\u0970\\u0971\\u0972-\\u0980\\u0982-\\u0983\\u0985-\\u098C\" + \"\\u098F-\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\" + \"\\u09BE-\\u09C0\\u09C7-\\u09C8\\u09CB-\\u09CC\\u09CE\\u09D7\\u09DC-\\u09DD\" + \"\\u09DF-\\u09E1\\u09E6-\\u09EF\\u09F0-\\u09F1\\u09F4-\\u09F9\\u09FA\\u0A03\" + \"\\u0A05-\\u0A0A\\u0A0F-\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32-\\u0A33\" + \"\\u0A35-\\u0A36\\u0A38-\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\" + \"\\u0A72-\\u0A74\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\" + \"\\u0AB2-\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0ABE-\\u0AC0\\u0AC9\\u0ACB-\\u0ACC\\u0AD0\" + \"\\u0AE0-\\u0AE1\\u0AE6-\\u0AEF\\u0AF0\\u0B02-\\u0B03\\u0B05-\\u0B0C\\u0B0F-\\u0B10\" + \"\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32-\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B3E\\u0B40\" + \"\\u0B47-\\u0B48\\u0B4B-\\u0B4C\\u0B57\\u0B5C-\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\" + \"\\u0B70\\u0B71\\u0B72-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\" + \"\\u0B99-\\u0B9A\\u0B9C\\u0B9E-\\u0B9F\\u0BA3-\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\" + \"\\u0BBE-\\u0BBF\\u0BC1-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\" + \"\\u0BE6-\\u0BEF\\u0BF0-\\u0BF2\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\" + \"\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C59\\u0C60-\\u0C61\" + \"\\u0C66-\\u0C6F\\u0C7F\\u0C82-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\" + \"\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CBE\\u0CBF\\u0CC0-\\u0CC4\\u0CC6\" + \"\\u0CC7-\\u0CC8\\u0CCA-\\u0CCB\\u0CD5-\\u0CD6\\u0CDE\\u0CE0-\\u0CE1\\u0CE6-\\u0CEF\" + \"\\u0CF1-\\u0CF2\\u0D02-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\" + \"\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D57\\u0D60-\\u0D61\" + \"\\u0D66-\\u0D6F\\u0D70-\\u0D75\\u0D79\\u0D7A-\\u0D7F\\u0D82-\\u0D83\\u0D85-\\u0D96\" + \"\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\" + \"\\u0DE6-\\u0DEF\\u0DF2-\\u0DF3\\u0DF4\\u0E01-\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E45\" + \"\\u0E46\\u0E4F\\u0E50-\\u0E59\\u0E5A-\\u0E5B\\u0E81-\\u0E82\\u0E84\\u0E87-\\u0E88\" + \"\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\" + \"\\u0EAA-\\u0EAB\\u0EAD-\\u0EB0\\u0EB2-\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\" + \"\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F01-\\u0F03\\u0F04-\\u0F12\\u0F13\\u0F14\" + \"\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F20-\\u0F29\\u0F2A-\\u0F33\\u0F34\\u0F36\\u0F38\" + \"\\u0F3E-\\u0F3F\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\" + \"\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE-\\u0FCF\\u0FD0-\\u0FD4\\u0FD5-\\u0FD8\" + \"\\u0FD9-\\u0FDA\\u1000-\\u102A\\u102B-\\u102C\\u1031\\u1038\\u103B-\\u103C\\u103F\" + \"\\u1040-\\u1049\\u104A-\\u104F\\u1050-\\u1055\\u1056-\\u1057\\u105A-\\u105D\\u1061\" + \"\\u1062-\\u1064\\u1065-\\u1066\\u1067-\\u106D\\u106E-\\u1070\\u1075-\\u1081\" + \"\\u1083-\\u1084\\u1087-\\u108C\\u108E\\u108F\\u1090-\\u1099\\u109A-\\u109C\" + \"\\u109E-\\u109F\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FB\\u10FC\" + \"\\u10FD-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\" + \"\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\" + \"\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1360-\\u1368\" + \"\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166D-\\u166E\" + \"\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EB-\\u16ED\\u16EE-\\u16F0\" + \"\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1735-\\u1736\" + \"\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17B6\\u17BE-\\u17C5\" + \"\\u17C7-\\u17C8\\u17D4-\\u17D6\\u17D7\\u17D8-\\u17DA\\u17DC\\u17E0-\\u17E9\" + \"\\u1810-\\u1819\\u1820-\\u1842\\u1843\\u1844-\\u1877\\u1880-\\u18A8\\u18AA\" + \"\\u18B0-\\u18F5\\u1900-\\u191E\\u1923-\\u1926\\u1929-\\u192B\\u1930-\\u1931\" + \"\\u1933-\\u1938\\u1946-\\u194F\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\" + \"\\u19B0-\\u19C0\\u19C1-\\u19C7\\u19C8-\\u19C9\\u19D0-\\u19D9\\u19DA\\u1A00-\\u1A16\" + \"\\u1A19-\\u1A1A\\u1A1E-\\u1A1F\\u1A20-\\u1A54\\u1A55\\u1A57\\u1A61\\u1A63-\\u1A64\" + \"\\u1A6D-\\u1A72\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AA6\\u1AA7\\u1AA8-\\u1AAD\" + \"\\u1B04\\u1B05-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B44\\u1B45-\\u1B4B\" + \"\\u1B50-\\u1B59\\u1B5A-\\u1B60\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1B82\\u1B83-\\u1BA0\" + \"\\u1BA1\\u1BA6-\\u1BA7\\u1BAA\\u1BAE-\\u1BAF\\u1BB0-\\u1BB9\\u1BBA-\\u1BE5\\u1BE7\" + \"\\u1BEA-\\u1BEC\\u1BEE\\u1BF2-\\u1BF3\\u1BFC-\\u1BFF\\u1C00-\\u1C23\\u1C24-\\u1C2B\" + \"\\u1C34-\\u1C35\\u1C3B-\\u1C3F\\u1C40-\\u1C49\\u1C4D-\\u1C4F\\u1C50-\\u1C59\" + \"\\u1C5A-\\u1C77\\u1C78-\\u1C7D\\u1C7E-\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u1CE1\" + \"\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF2-\\u1CF3\\u1CF5-\\u1CF6\\u1D00-\\u1D2B\" + \"\\u1D2C-\\u1D6A\\u1D6B-\\u1D77\\u1D78\\u1D79-\\u1D9A\\u1D9B-\\u1DBF\\u1E00-\\u1F15\" + \"\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\" + \"\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\" + \"\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200E\" + \"\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\" + \"\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2134\\u2135-\\u2138\\u2139\" + \"\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u214F\\u2160-\\u2182\\u2183-\\u2184\" + \"\\u2185-\\u2188\\u2336-\\u237A\\u2395\\u249C-\\u24E9\\u26AC\\u2800-\\u28FF\" + \"\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C7B\\u2C7C-\\u2C7D\\u2C7E-\\u2CE4\" + \"\\u2CEB-\\u2CEE\\u2CF2-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\" + \"\\u2D70\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\" + \"\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005\\u3006\\u3007\" + \"\\u3021-\\u3029\\u302E-\\u302F\\u3031-\\u3035\\u3038-\\u303A\\u303B\\u303C\" + \"\\u3041-\\u3096\\u309D-\\u309E\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FE\\u30FF\" + \"\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u3191\\u3192-\\u3195\\u3196-\\u319F\" + \"\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3200-\\u321C\\u3220-\\u3229\\u322A-\\u3247\" + \"\\u3248-\\u324F\\u3260-\\u327B\\u327F\\u3280-\\u3289\\u328A-\\u32B0\\u32C0-\\u32CB\" + \"\\u32D0-\\u32FE\\u3300-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DB5\" + \"\\u4E00-\\u9FCC\\uA000-\\uA014\\uA015\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA4F8-\\uA4FD\" + \"\\uA4FE-\\uA4FF\\uA500-\\uA60B\\uA60C\\uA610-\\uA61F\\uA620-\\uA629\\uA62A-\\uA62B\" + \"\\uA640-\\uA66D\\uA66E\\uA680-\\uA69B\\uA69C-\\uA69D\\uA6A0-\\uA6E5\\uA6E6-\\uA6EF\" + \"\\uA6F2-\\uA6F7\\uA722-\\uA76F\\uA770\\uA771-\\uA787\\uA789-\\uA78A\\uA78B-\\uA78E\" + \"\\uA790-\\uA7AD\\uA7B0-\\uA7B1\\uA7F7\\uA7F8-\\uA7F9\\uA7FA\\uA7FB-\\uA801\" + \"\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA823-\\uA824\\uA827\\uA830-\\uA835\" + \"\\uA836-\\uA837\\uA840-\\uA873\\uA880-\\uA881\\uA882-\\uA8B3\\uA8B4-\\uA8C3\" + \"\\uA8CE-\\uA8CF\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8F8-\\uA8FA\\uA8FB\\uA900-\\uA909\" + \"\\uA90A-\\uA925\\uA92E-\\uA92F\\uA930-\\uA946\\uA952-\\uA953\\uA95F\\uA960-\\uA97C\" + \"\\uA983\\uA984-\\uA9B2\\uA9B4-\\uA9B5\\uA9BA-\\uA9BB\\uA9BD-\\uA9C0\\uA9C1-\\uA9CD\" + \"\\uA9CF\\uA9D0-\\uA9D9\\uA9DE-\\uA9DF\\uA9E0-\\uA9E4\\uA9E6\\uA9E7-\\uA9EF\" + \"\\uA9F0-\\uA9F9\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA2F-\\uAA30\\uAA33-\\uAA34\" + \"\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA5F\\uAA60-\\uAA6F\" + \"\\uAA70\\uAA71-\\uAA76\\uAA77-\\uAA79\\uAA7A\\uAA7B\\uAA7D\\uAA7E-\\uAAAF\\uAAB1\" + \"\\uAAB5-\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADC\\uAADD\\uAADE-\\uAADF\" + \"\\uAAE0-\\uAAEA\\uAAEB\\uAAEE-\\uAAEF\\uAAF0-\\uAAF1\\uAAF2\\uAAF3-\\uAAF4\\uAAF5\" + \"\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\" + \"\\uAB30-\\uAB5A\\uAB5B\\uAB5C-\\uAB5F\\uAB64-\\uAB65\\uABC0-\\uABE2\\uABE3-\\uABE4\" + \"\\uABE6-\\uABE7\\uABE9-\\uABEA\\uABEB\\uABEC\\uABF0-\\uABF9\\uAC00-\\uD7A3\" + \"\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uE000-\\uF8FF\\uF900-\\uFA6D\\uFA70-\\uFAD9\" + \"\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFF6F\\uFF70\" + \"\\uFF71-\\uFF9D\\uFF9E-\\uFF9F\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\" + \"\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\",\n R: \"\\u0590\\u05BE\\u05C0\\u05C3\\u05C6\\u05C8-\\u05CF\\u05D0-\\u05EA\\u05EB-\\u05EF\" + \"\\u05F0-\\u05F2\\u05F3-\\u05F4\\u05F5-\\u05FF\\u07C0-\\u07C9\\u07CA-\\u07EA\" + \"\\u07F4-\\u07F5\\u07FA\\u07FB-\\u07FF\\u0800-\\u0815\\u081A\\u0824\\u0828\" + \"\\u082E-\\u082F\\u0830-\\u083E\\u083F\\u0840-\\u0858\\u085C-\\u085D\\u085E\" + \"\\u085F-\\u089F\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB37\\uFB38-\\uFB3C\" + \"\\uFB3D\\uFB3E\\uFB3F\\uFB40-\\uFB41\\uFB42\\uFB43-\\uFB44\\uFB45\\uFB46-\\uFB4F\",\n AL: \"\\u0608\\u060B\\u060D\\u061B\\u061C\\u061D\\u061E-\\u061F\\u0620-\\u063F\\u0640\" + \"\\u0641-\\u064A\\u066D\\u066E-\\u066F\\u0671-\\u06D3\\u06D4\\u06D5\\u06E5-\\u06E6\" + \"\\u06EE-\\u06EF\\u06FA-\\u06FC\\u06FD-\\u06FE\\u06FF\\u0700-\\u070D\\u070E\\u070F\" + \"\\u0710\\u0712-\\u072F\\u074B-\\u074C\\u074D-\\u07A5\\u07B1\\u07B2-\\u07BF\" + \"\\u08A0-\\u08B2\\u08B3-\\u08E3\\uFB50-\\uFBB1\\uFBB2-\\uFBC1\\uFBC2-\\uFBD2\" + \"\\uFBD3-\\uFD3D\\uFD40-\\uFD4F\\uFD50-\\uFD8F\\uFD90-\\uFD91\\uFD92-\\uFDC7\" + \"\\uFDC8-\\uFDCF\\uFDF0-\\uFDFB\\uFDFC\\uFDFE-\\uFDFF\\uFE70-\\uFE74\\uFE75\" + \"\\uFE76-\\uFEFC\\uFEFD-\\uFEFE\"\n};\nvar REGEX_STRONG = new RegExp('[' + RANGE_BY_BIDI_TYPE.L + RANGE_BY_BIDI_TYPE.R + RANGE_BY_BIDI_TYPE.AL + ']');\nvar REGEX_RTL = new RegExp('[' + RANGE_BY_BIDI_TYPE.R + RANGE_BY_BIDI_TYPE.AL + ']');\n/**\n * Returns the first strong character (has Bidi_Class value of L, R, or AL).\n *\n * @param str A text block; e.g. paragraph, table cell, tag\n * @return A character with strong bidi direction, or null if not found\n */\n\nfunction firstStrongChar(str) {\n var match = REGEX_STRONG.exec(str);\n return match == null ? null : match[0];\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL).\n *\n * @param str A text block; e.g. paragraph, table cell, tag\n * @return The resolved direction\n */\n\n\nfunction firstStrongCharDir(str) {\n var strongChar = firstStrongChar(str);\n\n if (strongChar == null) {\n return UnicodeBidiDirection.NEUTRAL;\n }\n\n return REGEX_RTL.exec(strongChar) ? UnicodeBidiDirection.RTL : UnicodeBidiDirection.LTR;\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL), or a fallback\n * direction, if no strong character is found.\n *\n * This function is supposed to be used in respect to Higher-Level Protocol\n * rule HL1. (http://www.unicode.org/reports/tr9/#HL1)\n *\n * @param str A text block; e.g. paragraph, table cell, tag\n * @param fallback Fallback direction, used if no strong direction detected\n * for the block (default = NEUTRAL)\n * @return The resolved direction\n */\n\n\nfunction resolveBlockDir(str, fallback) {\n fallback = fallback || UnicodeBidiDirection.NEUTRAL;\n\n if (!str.length) {\n return fallback;\n }\n\n var blockDir = firstStrongCharDir(str);\n return blockDir === UnicodeBidiDirection.NEUTRAL ? fallback : blockDir;\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL), or a fallback\n * direction, if no strong character is found.\n *\n * NOTE: This function is similar to resolveBlockDir(), but uses the global\n * direction as the fallback, so it *always* returns a Strong direction,\n * making it useful for integration in places that you need to make the final\n * decision, like setting some CSS class.\n *\n * This function is supposed to be used in respect to Higher-Level Protocol\n * rule HL1. (http://www.unicode.org/reports/tr9/#HL1)\n *\n * @param str A text block; e.g. paragraph, table cell\n * @param strongFallback Fallback direction, used if no strong direction\n * detected for the block (default = global direction)\n * @return The resolved Strong direction\n */\n\n\nfunction getDirection(str, strongFallback) {\n if (!strongFallback) {\n strongFallback = UnicodeBidiDirection.getGlobalDir();\n }\n\n !UnicodeBidiDirection.isStrong(strongFallback) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Fallback direction must be a strong direction') : invariant(false) : void 0;\n return resolveBlockDir(str, strongFallback);\n}\n/**\n * Returns true if getDirection(arguments...) returns LTR.\n *\n * @param str A text block; e.g. paragraph, table cell\n * @param strongFallback Fallback direction, used if no strong direction\n * detected for the block (default = global direction)\n * @return True if the resolved direction is LTR\n */\n\n\nfunction isDirectionLTR(str, strongFallback) {\n return getDirection(str, strongFallback) === UnicodeBidiDirection.LTR;\n}\n/**\n * Returns true if getDirection(arguments...) returns RTL.\n *\n * @param str A text block; e.g. paragraph, table cell\n * @param strongFallback Fallback direction, used if no strong direction\n * detected for the block (default = global direction)\n * @return True if the resolved direction is RTL\n */\n\n\nfunction isDirectionRTL(str, strongFallback) {\n return getDirection(str, strongFallback) === UnicodeBidiDirection.RTL;\n}\n\nvar UnicodeBidi = {\n firstStrongChar: firstStrongChar,\n firstStrongCharDir: firstStrongCharDir,\n resolveBlockDir: resolveBlockDir,\n getDirection: getDirection,\n isDirectionLTR: isDirectionLTR,\n isDirectionRTL: isDirectionRTL\n};\nmodule.exports = UnicodeBidi;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/**\n * Constants to represent text directionality\n *\n * Also defines a *global* direciton, to be used in bidi algorithms as a\n * default fallback direciton, when no better direction is found or provided.\n *\n * NOTE: Use `setGlobalDir()`, or update `initGlobalDir()`, to set the initial\n * global direction value based on the application.\n *\n * Part of the implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nvar invariant = require(\"./invariant\");\n\nvar NEUTRAL = 'NEUTRAL'; // No strong direction\n\nvar LTR = 'LTR'; // Left-to-Right direction\n\nvar RTL = 'RTL'; // Right-to-Left direction\n\nvar globalDir = null; // == Helpers ==\n\n/**\n * Check if a directionality value is a Strong one\n */\n\nfunction isStrong(dir) {\n return dir === LTR || dir === RTL;\n}\n/**\n * Get string value to be used for `dir` HTML attribute or `direction` CSS\n * property.\n */\n\n\nfunction getHTMLDir(dir) {\n !isStrong(dir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`dir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n return dir === LTR ? 'ltr' : 'rtl';\n}\n/**\n * Get string value to be used for `dir` HTML attribute or `direction` CSS\n * property, but returns null if `dir` has same value as `otherDir`.\n * `null`.\n */\n\n\nfunction getHTMLDirIfDifferent(dir, otherDir) {\n !isStrong(dir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`dir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n !isStrong(otherDir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`otherDir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n return dir === otherDir ? null : getHTMLDir(dir);\n} // == Global Direction ==\n\n/**\n * Set the global direction.\n */\n\n\nfunction setGlobalDir(dir) {\n globalDir = dir;\n}\n/**\n * Initialize the global direction\n */\n\n\nfunction initGlobalDir() {\n setGlobalDir(LTR);\n}\n/**\n * Get the global direction\n */\n\n\nfunction getGlobalDir() {\n if (!globalDir) {\n this.initGlobalDir();\n }\n\n !globalDir ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Global direction not set.') : invariant(false) : void 0;\n return globalDir;\n}\n\nvar UnicodeBidiDirection = {\n // Values\n NEUTRAL: NEUTRAL,\n LTR: LTR,\n RTL: RTL,\n // Helpers\n isStrong: isStrong,\n getHTMLDir: getHTMLDir,\n getHTMLDirIfDifferent: getHTMLDirIfDifferent,\n // Global Direction\n setGlobalDir: setGlobalDir,\n initGlobalDir: initGlobalDir,\n getGlobalDir: getGlobalDir\n};\nmodule.exports = UnicodeBidiDirection;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/**\n * Stateful API for text direction detection\n *\n * This class can be used in applications where you need to detect the\n * direction of a sequence of text blocks, where each direction shall be used\n * as the fallback direction for the next one.\n *\n * NOTE: A default direction, if not provided, is set based on the global\n * direction, as defined by `UnicodeBidiDirection`.\n *\n * == Example ==\n * ```\n * var UnicodeBidiService = require('UnicodeBidiService');\n *\n * var bidiService = new UnicodeBidiService();\n *\n * ...\n *\n * bidiService.reset();\n * for (var para in paragraphs) {\n * var dir = bidiService.getDirection(para);\n * ...\n * }\n * ```\n *\n * Part of our implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar UnicodeBidi = require(\"./UnicodeBidi\");\n\nvar UnicodeBidiDirection = require(\"./UnicodeBidiDirection\");\n\nvar invariant = require(\"./invariant\");\n\nvar UnicodeBidiService =\n/*#__PURE__*/\nfunction () {\n /**\n * Stateful class for paragraph direction detection\n *\n * @param defaultDir Default direction of the service\n */\n function UnicodeBidiService(defaultDir) {\n _defineProperty(this, \"_defaultDir\", void 0);\n\n _defineProperty(this, \"_lastDir\", void 0);\n\n if (!defaultDir) {\n defaultDir = UnicodeBidiDirection.getGlobalDir();\n } else {\n !UnicodeBidiDirection.isStrong(defaultDir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Default direction must be a strong direction (LTR or RTL)') : invariant(false) : void 0;\n }\n\n this._defaultDir = defaultDir;\n this.reset();\n }\n /**\n * Reset the internal state\n *\n * Instead of creating a new instance, you can just reset() your instance\n * everytime you start a new loop.\n */\n\n\n var _proto = UnicodeBidiService.prototype;\n\n _proto.reset = function reset() {\n this._lastDir = this._defaultDir;\n };\n /**\n * Returns the direction of a block of text, and remembers it as the\n * fall-back direction for the next paragraph.\n *\n * @param str A text block, e.g. paragraph, table cell, tag\n * @return The resolved direction\n */\n\n\n _proto.getDirection = function getDirection(str) {\n this._lastDir = UnicodeBidi.getDirection(str, this._lastDir);\n return this._lastDir;\n };\n\n return UnicodeBidiService;\n}();\n\nmodule.exports = UnicodeBidiService;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/**\n * Unicode-enabled replacesments for basic String functions.\n *\n * All the functions in this module assume that the input string is a valid\n * UTF-16 encoding of a Unicode sequence. If it's not the case, the behavior\n * will be undefined.\n *\n * WARNING: Since this module is typechecks-enforced, you may find new bugs\n * when replacing normal String functions with ones provided here.\n */\n'use strict';\n\nvar invariant = require(\"./invariant\"); // These two ranges are consecutive so anything in [HIGH_START, LOW_END] is a\n// surrogate code unit.\n\n\nvar SURROGATE_HIGH_START = 0xD800;\nvar SURROGATE_HIGH_END = 0xDBFF;\nvar SURROGATE_LOW_START = 0xDC00;\nvar SURROGATE_LOW_END = 0xDFFF;\nvar SURROGATE_UNITS_REGEX = /[\\uD800-\\uDFFF]/;\n/**\n * @param {number} codeUnit A Unicode code-unit, in range [0, 0x10FFFF]\n * @return {boolean} Whether code-unit is in a surrogate (hi/low) range\n */\n\nfunction isCodeUnitInSurrogateRange(codeUnit) {\n return SURROGATE_HIGH_START <= codeUnit && codeUnit <= SURROGATE_LOW_END;\n}\n/**\n * Returns whether the two characters starting at `index` form a surrogate pair.\n * For example, given the string s = \"\\uD83D\\uDE0A\", (s, 0) returns true and\n * (s, 1) returns false.\n *\n * @param {string} str\n * @param {number} index\n * @return {boolean}\n */\n\n\nfunction isSurrogatePair(str, index) {\n !(0 <= index && index < str.length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isSurrogatePair: Invalid index %s for string length %s.', index, str.length) : invariant(false) : void 0;\n\n if (index + 1 === str.length) {\n return false;\n }\n\n var first = str.charCodeAt(index);\n var second = str.charCodeAt(index + 1);\n return SURROGATE_HIGH_START <= first && first <= SURROGATE_HIGH_END && SURROGATE_LOW_START <= second && second <= SURROGATE_LOW_END;\n}\n/**\n * @param {string} str Non-empty string\n * @return {boolean} True if the input includes any surrogate code units\n */\n\n\nfunction hasSurrogateUnit(str) {\n return SURROGATE_UNITS_REGEX.test(str);\n}\n/**\n * Return the length of the original Unicode character at given position in the\n * String by looking into the UTF-16 code unit; that is equal to 1 for any\n * non-surrogate characters in BMP ([U+0000..U+D7FF] and [U+E000, U+FFFF]); and\n * returns 2 for the hi/low surrogates ([U+D800..U+DFFF]), which are in fact\n * representing non-BMP characters ([U+10000..U+10FFFF]).\n *\n * Examples:\n * - '\\u0020' => 1\n * - '\\u3020' => 1\n * - '\\uD835' => 2\n * - '\\uD835\\uDDEF' => 2\n * - '\\uDDEF' => 2\n *\n * @param {string} str Non-empty string\n * @param {number} pos Position in the string to look for one code unit\n * @return {number} Number 1 or 2\n */\n\n\nfunction getUTF16Length(str, pos) {\n return 1 + isCodeUnitInSurrogateRange(str.charCodeAt(pos));\n}\n/**\n * Fully Unicode-enabled replacement for String#length\n *\n * @param {string} str Valid Unicode string\n * @return {number} The number of Unicode characters in the string\n */\n\n\nfunction strlen(str) {\n // Call the native functions if there's no surrogate char\n if (!hasSurrogateUnit(str)) {\n return str.length;\n }\n\n var len = 0;\n\n for (var pos = 0; pos < str.length; pos += getUTF16Length(str, pos)) {\n len++;\n }\n\n return len;\n}\n/**\n * Fully Unicode-enabled replacement for String#substr()\n *\n * @param {string} str Valid Unicode string\n * @param {number} start Location in Unicode sequence to begin extracting\n * @param {?number} length The number of Unicode characters to extract\n * (default: to the end of the string)\n * @return {string} Extracted sub-string\n */\n\n\nfunction substr(str, start, length) {\n start = start || 0;\n length = length === undefined ? Infinity : length || 0; // Call the native functions if there's no surrogate char\n\n if (!hasSurrogateUnit(str)) {\n return str.substr(start, length);\n } // Obvious cases\n\n\n var size = str.length;\n\n if (size <= 0 || start > size || length <= 0) {\n return '';\n } // Find the actual starting position\n\n\n var posA = 0;\n\n if (start > 0) {\n for (; start > 0 && posA < size; start--) {\n posA += getUTF16Length(str, posA);\n }\n\n if (posA >= size) {\n return '';\n }\n } else if (start < 0) {\n for (posA = size; start < 0 && 0 < posA; start++) {\n posA -= getUTF16Length(str, posA - 1);\n }\n\n if (posA < 0) {\n posA = 0;\n }\n } // Find the actual ending position\n\n\n var posB = size;\n\n if (length < size) {\n for (posB = posA; length > 0 && posB < size; length--) {\n posB += getUTF16Length(str, posB);\n }\n }\n\n return str.substring(posA, posB);\n}\n/**\n * Fully Unicode-enabled replacement for String#substring()\n *\n * @param {string} str Valid Unicode string\n * @param {number} start Location in Unicode sequence to begin extracting\n * @param {?number} end Location in Unicode sequence to end extracting\n * (default: end of the string)\n * @return {string} Extracted sub-string\n */\n\n\nfunction substring(str, start, end) {\n start = start || 0;\n end = end === undefined ? Infinity : end || 0;\n\n if (start < 0) {\n start = 0;\n }\n\n if (end < 0) {\n end = 0;\n }\n\n var length = Math.abs(end - start);\n start = start < end ? start : end;\n return substr(str, start, length);\n}\n/**\n * Get a list of Unicode code-points from a String\n *\n * @param {string} str Valid Unicode string\n * @return {array<number>} A list of code-points in [0..0x10FFFF]\n */\n\n\nfunction getCodePoints(str) {\n var codePoints = [];\n\n for (var pos = 0; pos < str.length; pos += getUTF16Length(str, pos)) {\n codePoints.push(str.codePointAt(pos));\n }\n\n return codePoints;\n}\n\nvar UnicodeUtils = {\n getCodePoints: getCodePoints,\n getUTF16Length: getUTF16Length,\n hasSurrogateUnit: hasSurrogateUnit,\n isCodeUnitInSurrogateRange: isCodeUnitInSurrogateRange,\n isSurrogatePair: isSurrogatePair,\n strlen: strlen,\n substring: substring,\n substr: substr\n};\nmodule.exports = UnicodeUtils;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar UserAgentData = require(\"./UserAgentData\");\n\nvar VersionRange = require(\"./VersionRange\");\n\nvar mapObject = require(\"./mapObject\");\n\nvar memoizeStringOnly = require(\"./memoizeStringOnly\");\n/**\n * Checks to see whether `name` and `version` satisfy `query`.\n *\n * @param {string} name Name of the browser, device, engine or platform\n * @param {?string} version Version of the browser, engine or platform\n * @param {string} query Query of form \"Name [range expression]\"\n * @param {?function} normalizer Optional pre-processor for range expression\n * @return {boolean}\n */\n\n\nfunction compare(name, version, query, normalizer) {\n // check for exact match with no version\n if (name === query) {\n return true;\n } // check for non-matching names\n\n\n if (!query.startsWith(name)) {\n return false;\n } // full comparison with version\n\n\n var range = query.slice(name.length);\n\n if (version) {\n range = normalizer ? normalizer(range) : range;\n return VersionRange.contains(range, version);\n }\n\n return false;\n}\n/**\n * Normalizes `version` by stripping any \"NT\" prefix, but only on the Windows\n * platform.\n *\n * Mimics the stripping performed by the `UserAgentWindowsPlatform` PHP class.\n *\n * @param {string} version\n * @return {string}\n */\n\n\nfunction normalizePlatformVersion(version) {\n if (UserAgentData.platformName === 'Windows') {\n return version.replace(/^\\s*NT/, '');\n }\n\n return version;\n}\n/**\n * Provides client-side access to the authoritative PHP-generated User Agent\n * information supplied by the server.\n */\n\n\nvar UserAgent = {\n /**\n * Check if the User Agent browser matches `query`.\n *\n * `query` should be a string like \"Chrome\" or \"Chrome > 33\".\n *\n * Valid browser names include:\n *\n * - ACCESS NetFront\n * - AOL\n * - Amazon Silk\n * - Android\n * - BlackBerry\n * - BlackBerry PlayBook\n * - Chrome\n * - Chrome for iOS\n * - Chrome frame\n * - Facebook PHP SDK\n * - Facebook for iOS\n * - Firefox\n * - IE\n * - IE Mobile\n * - Mobile Safari\n * - Motorola Internet Browser\n * - Nokia\n * - Openwave Mobile Browser\n * - Opera\n * - Opera Mini\n * - Opera Mobile\n * - Safari\n * - UIWebView\n * - Unknown\n * - webOS\n * - etc...\n *\n * An authoritative list can be found in the PHP `BrowserDetector` class and\n * related classes in the same file (see calls to `new UserAgentBrowser` here:\n * https://fburl.com/50728104).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name [range expression]\"\n * @return {boolean}\n */\n isBrowser: function isBrowser(query) {\n return compare(UserAgentData.browserName, UserAgentData.browserFullVersion, query);\n },\n\n /**\n * Check if the User Agent browser uses a 32 or 64 bit architecture.\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"32\" or \"64\".\n * @return {boolean}\n */\n isBrowserArchitecture: function isBrowserArchitecture(query) {\n return compare(UserAgentData.browserArchitecture, null, query);\n },\n\n /**\n * Check if the User Agent device matches `query`.\n *\n * `query` should be a string like \"iPhone\" or \"iPad\".\n *\n * Valid device names include:\n *\n * - Kindle\n * - Kindle Fire\n * - Unknown\n * - iPad\n * - iPhone\n * - iPod\n * - etc...\n *\n * An authoritative list can be found in the PHP `DeviceDetector` class and\n * related classes in the same file (see calls to `new UserAgentDevice` here:\n * https://fburl.com/50728332).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name\"\n * @return {boolean}\n */\n isDevice: function isDevice(query) {\n return compare(UserAgentData.deviceName, null, query);\n },\n\n /**\n * Check if the User Agent rendering engine matches `query`.\n *\n * `query` should be a string like \"WebKit\" or \"WebKit >= 537\".\n *\n * Valid engine names include:\n *\n * - Gecko\n * - Presto\n * - Trident\n * - WebKit\n * - etc...\n *\n * An authoritative list can be found in the PHP `RenderingEngineDetector`\n * class related classes in the same file (see calls to `new\n * UserAgentRenderingEngine` here: https://fburl.com/50728617).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name [range expression]\"\n * @return {boolean}\n */\n isEngine: function isEngine(query) {\n return compare(UserAgentData.engineName, UserAgentData.engineVersion, query);\n },\n\n /**\n * Check if the User Agent platform matches `query`.\n *\n * `query` should be a string like \"Windows\" or \"iOS 5 - 6\".\n *\n * Valid platform names include:\n *\n * - Android\n * - BlackBerry OS\n * - Java ME\n * - Linux\n * - Mac OS X\n * - Mac OS X Calendar\n * - Mac OS X Internet Account\n * - Symbian\n * - SymbianOS\n * - Windows\n * - Windows Mobile\n * - Windows Phone\n * - iOS\n * - iOS Facebook Integration Account\n * - iOS Facebook Social Sharing UI\n * - webOS\n * - Chrome OS\n * - etc...\n *\n * An authoritative list can be found in the PHP `PlatformDetector` class and\n * related classes in the same file (see calls to `new UserAgentPlatform`\n * here: https://fburl.com/50729226).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name [range expression]\"\n * @return {boolean}\n */\n isPlatform: function isPlatform(query) {\n return compare(UserAgentData.platformName, UserAgentData.platformFullVersion, query, normalizePlatformVersion);\n },\n\n /**\n * Check if the User Agent platform is a 32 or 64 bit architecture.\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"32\" or \"64\".\n * @return {boolean}\n */\n isPlatformArchitecture: function isPlatformArchitecture(query) {\n return compare(UserAgentData.platformArchitecture, null, query);\n }\n};\nmodule.exports = mapObject(UserAgent, memoizeStringOnly);","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * Usage note:\n * This module makes a best effort to export the same data we would internally.\n * At Facebook we use a server-generated module that does the parsing and\n * exports the data for the client to use. We can't rely on a server-side\n * implementation in open source so instead we make use of an open source\n * library to do the heavy lifting and then make some adjustments as necessary.\n * It's likely there will be some differences. Some we can smooth over.\n * Others are going to be harder.\n */\n'use strict';\n\nvar UAParser = require(\"ua-parser-js\");\n\nvar UNKNOWN = 'Unknown';\nvar PLATFORM_MAP = {\n 'Mac OS': 'Mac OS X'\n};\n/**\n * Convert from UAParser platform name to what we expect.\n */\n\nfunction convertPlatformName(name) {\n return PLATFORM_MAP[name] || name;\n}\n/**\n * Get the version number in parts. This is very naive. We actually get major\n * version as a part of UAParser already, which is generally good enough, but\n * let's get the minor just in case.\n */\n\n\nfunction getBrowserVersion(version) {\n if (!version) {\n return {\n major: '',\n minor: ''\n };\n }\n\n var parts = version.split('.');\n return {\n major: parts[0],\n minor: parts[1]\n };\n}\n/**\n * Get the UA data fom UAParser and then convert it to the format we're\n * expecting for our APIS.\n */\n\n\nvar parser = new UAParser();\nvar results = parser.getResult(); // Do some conversion first.\n\nvar browserVersionData = getBrowserVersion(results.browser.version);\nvar uaData = {\n browserArchitecture: results.cpu.architecture || UNKNOWN,\n browserFullVersion: results.browser.version || UNKNOWN,\n browserMinorVersion: browserVersionData.minor || UNKNOWN,\n browserName: results.browser.name || UNKNOWN,\n browserVersion: results.browser.major || UNKNOWN,\n deviceName: results.device.model || UNKNOWN,\n engineName: results.engine.name || UNKNOWN,\n engineVersion: results.engine.version || UNKNOWN,\n platformArchitecture: results.cpu.architecture || UNKNOWN,\n platformName: convertPlatformName(results.os.name) || UNKNOWN,\n platformVersion: results.os.version || UNKNOWN,\n platformFullVersion: results.os.version || UNKNOWN\n};\nmodule.exports = uaData;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar invariant = require(\"./invariant\");\n\nvar componentRegex = /\\./;\nvar orRegex = /\\|\\|/;\nvar rangeRegex = /\\s+\\-\\s+/;\nvar modifierRegex = /^(<=|<|=|>=|~>|~|>|)?\\s*(.+)/;\nvar numericRegex = /^(\\d*)(.*)/;\n/**\n * Splits input `range` on \"||\" and returns true if any subrange matches\n * `version`.\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n\nfunction checkOrExpression(range, version) {\n var expressions = range.split(orRegex);\n\n if (expressions.length > 1) {\n return expressions.some(function (range) {\n return VersionRange.contains(range, version);\n });\n } else {\n range = expressions[0].trim();\n return checkRangeExpression(range, version);\n }\n}\n/**\n * Splits input `range` on \" - \" (the surrounding whitespace is required) and\n * returns true if version falls between the two operands.\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n\n\nfunction checkRangeExpression(range, version) {\n var expressions = range.split(rangeRegex);\n !(expressions.length > 0 && expressions.length <= 2) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'the \"-\" operator expects exactly 2 operands') : invariant(false) : void 0;\n\n if (expressions.length === 1) {\n return checkSimpleExpression(expressions[0], version);\n } else {\n var startVersion = expressions[0],\n endVersion = expressions[1];\n !(isSimpleVersion(startVersion) && isSimpleVersion(endVersion)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'operands to the \"-\" operator must be simple (no modifiers)') : invariant(false) : void 0;\n return checkSimpleExpression('>=' + startVersion, version) && checkSimpleExpression('<=' + endVersion, version);\n }\n}\n/**\n * Checks if `range` matches `version`. `range` should be a \"simple\" range (ie.\n * not a compound range using the \" - \" or \"||\" operators).\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n\n\nfunction checkSimpleExpression(range, version) {\n range = range.trim();\n\n if (range === '') {\n return true;\n }\n\n var versionComponents = version.split(componentRegex);\n\n var _getModifierAndCompon = getModifierAndComponents(range),\n modifier = _getModifierAndCompon.modifier,\n rangeComponents = _getModifierAndCompon.rangeComponents;\n\n switch (modifier) {\n case '<':\n return checkLessThan(versionComponents, rangeComponents);\n\n case '<=':\n return checkLessThanOrEqual(versionComponents, rangeComponents);\n\n case '>=':\n return checkGreaterThanOrEqual(versionComponents, rangeComponents);\n\n case '>':\n return checkGreaterThan(versionComponents, rangeComponents);\n\n case '~':\n case '~>':\n return checkApproximateVersion(versionComponents, rangeComponents);\n\n default:\n return checkEqual(versionComponents, rangeComponents);\n }\n}\n/**\n * Checks whether `a` is less than `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkLessThan(a, b) {\n return compareComponents(a, b) === -1;\n}\n/**\n * Checks whether `a` is less than or equal to `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkLessThanOrEqual(a, b) {\n var result = compareComponents(a, b);\n return result === -1 || result === 0;\n}\n/**\n * Checks whether `a` is equal to `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkEqual(a, b) {\n return compareComponents(a, b) === 0;\n}\n/**\n * Checks whether `a` is greater than or equal to `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkGreaterThanOrEqual(a, b) {\n var result = compareComponents(a, b);\n return result === 1 || result === 0;\n}\n/**\n * Checks whether `a` is greater than `b`.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkGreaterThan(a, b) {\n return compareComponents(a, b) === 1;\n}\n/**\n * Checks whether `a` is \"reasonably close\" to `b` (as described in\n * https://www.npmjs.org/doc/misc/semver.html). For example, if `b` is \"1.3.1\"\n * then \"reasonably close\" is defined as \">= 1.3.1 and < 1.4\".\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {boolean}\n */\n\n\nfunction checkApproximateVersion(a, b) {\n var lowerBound = b.slice();\n var upperBound = b.slice();\n\n if (upperBound.length > 1) {\n upperBound.pop();\n }\n\n var lastIndex = upperBound.length - 1;\n var numeric = parseInt(upperBound[lastIndex], 10);\n\n if (isNumber(numeric)) {\n upperBound[lastIndex] = numeric + 1 + '';\n }\n\n return checkGreaterThanOrEqual(a, lowerBound) && checkLessThan(a, upperBound);\n}\n/**\n * Extracts the optional modifier (<, <=, =, >=, >, ~, ~>) and version\n * components from `range`.\n *\n * For example, given `range` \">= 1.2.3\" returns an object with a `modifier` of\n * `\">=\"` and `components` of `[1, 2, 3]`.\n *\n * @param {string} range\n * @returns {object}\n */\n\n\nfunction getModifierAndComponents(range) {\n var rangeComponents = range.split(componentRegex);\n var matches = rangeComponents[0].match(modifierRegex);\n !matches ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'expected regex to match but it did not') : invariant(false) : void 0;\n return {\n modifier: matches[1],\n rangeComponents: [matches[2]].concat(rangeComponents.slice(1))\n };\n}\n/**\n * Determines if `number` is a number.\n *\n * @param {mixed} number\n * @returns {boolean}\n */\n\n\nfunction isNumber(number) {\n return !isNaN(number) && isFinite(number);\n}\n/**\n * Tests whether `range` is a \"simple\" version number without any modifiers\n * (\">\", \"~\" etc).\n *\n * @param {string} range\n * @returns {boolean}\n */\n\n\nfunction isSimpleVersion(range) {\n return !getModifierAndComponents(range).modifier;\n}\n/**\n * Zero-pads array `array` until it is at least `length` long.\n *\n * @param {array} array\n * @param {number} length\n */\n\n\nfunction zeroPad(array, length) {\n for (var i = array.length; i < length; i++) {\n array[i] = '0';\n }\n}\n/**\n * Normalizes `a` and `b` in preparation for comparison by doing the following:\n *\n * - zero-pads `a` and `b`\n * - marks any \"x\", \"X\" or \"*\" component in `b` as equivalent by zero-ing it out\n * in both `a` and `b`\n * - marks any final \"*\" component in `b` as a greedy wildcard by zero-ing it\n * and all of its successors in `a`\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {array<array<string>>}\n */\n\n\nfunction normalizeVersions(a, b) {\n a = a.slice();\n b = b.slice();\n zeroPad(a, b.length); // mark \"x\" and \"*\" components as equal\n\n for (var i = 0; i < b.length; i++) {\n var matches = b[i].match(/^[x*]$/i);\n\n if (matches) {\n b[i] = a[i] = '0'; // final \"*\" greedily zeros all remaining components\n\n if (matches[0] === '*' && i === b.length - 1) {\n for (var j = i; j < a.length; j++) {\n a[j] = '0';\n }\n }\n }\n }\n\n zeroPad(b, a.length);\n return [a, b];\n}\n/**\n * Returns the numerical -- not the lexicographical -- ordering of `a` and `b`.\n *\n * For example, `10-alpha` is greater than `2-beta`.\n *\n * @param {string} a\n * @param {string} b\n * @returns {number} -1, 0 or 1 to indicate whether `a` is less than, equal to,\n * or greater than `b`, respectively\n */\n\n\nfunction compareNumeric(a, b) {\n var aPrefix = a.match(numericRegex)[1];\n var bPrefix = b.match(numericRegex)[1];\n var aNumeric = parseInt(aPrefix, 10);\n var bNumeric = parseInt(bPrefix, 10);\n\n if (isNumber(aNumeric) && isNumber(bNumeric) && aNumeric !== bNumeric) {\n return compare(aNumeric, bNumeric);\n } else {\n return compare(a, b);\n }\n}\n/**\n * Returns the ordering of `a` and `b`.\n *\n * @param {string|number} a\n * @param {string|number} b\n * @returns {number} -1, 0 or 1 to indicate whether `a` is less than, equal to,\n * or greater than `b`, respectively\n */\n\n\nfunction compare(a, b) {\n !(typeof a === typeof b) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '\"a\" and \"b\" must be of the same type') : invariant(false) : void 0;\n\n if (a > b) {\n return 1;\n } else if (a < b) {\n return -1;\n } else {\n return 0;\n }\n}\n/**\n * Compares arrays of version components.\n *\n * @param {array<string>} a\n * @param {array<string>} b\n * @returns {number} -1, 0 or 1 to indicate whether `a` is less than, equal to,\n * or greater than `b`, respectively\n */\n\n\nfunction compareComponents(a, b) {\n var _normalizeVersions = normalizeVersions(a, b),\n aNormalized = _normalizeVersions[0],\n bNormalized = _normalizeVersions[1];\n\n for (var i = 0; i < bNormalized.length; i++) {\n var result = compareNumeric(aNormalized[i], bNormalized[i]);\n\n if (result) {\n return result;\n }\n }\n\n return 0;\n}\n\nvar VersionRange = {\n /**\n * Checks whether `version` satisfies the `range` specification.\n *\n * We support a subset of the expressions defined in\n * https://www.npmjs.org/doc/misc/semver.html:\n *\n * version Must match version exactly\n * =version Same as just version\n * >version Must be greater than version\n * >=version Must be greater than or equal to version\n * <version Must be less than version\n * <=version Must be less than or equal to version\n * ~version Must be at least version, but less than the next significant\n * revision above version:\n * \"~1.2.3\" is equivalent to \">= 1.2.3 and < 1.3\"\n * ~>version Equivalent to ~version\n * 1.2.x Must match \"1.2.x\", where \"x\" is a wildcard that matches\n * anything\n * 1.2.* Similar to \"1.2.x\", but \"*\" in the trailing position is a\n * \"greedy\" wildcard, so will match any number of additional\n * components:\n * \"1.2.*\" will match \"1.2.1\", \"1.2.1.1\", \"1.2.1.1.1\" etc\n * * Any version\n * \"\" (Empty string) Same as *\n * v1 - v2 Equivalent to \">= v1 and <= v2\"\n * r1 || r2 Passes if either r1 or r2 are satisfied\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n contains: function contains(range, version) {\n return checkOrExpression(range.trim(), version.trim());\n }\n};\nmodule.exports = VersionRange;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar _hyphenPattern = /-(.)/g;\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\n\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar isTextNode = require(\"./isTextNode\");\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\n\n\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar invariant = require(\"./invariant\");\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\n\n\nfunction toArray(obj) {\n var length = obj.length; // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n\n !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n !(typeof length === 'number') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0; // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {// IE < 9 does not support Array#slice on collections objects\n }\n } // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n\n\n var ret = Array(length);\n\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n\n return ret;\n}\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\n\n\nfunction hasArrayNature(obj) {\n return (// not null/false\n !!obj && ( // arrays are objects, NodeLists are functions in Safari\n typeof obj == 'object' || typeof obj == 'function') && // quacks like an array\n 'length' in obj && // not window\n !('setInterval' in obj) && // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && ( // a real array\n Array.isArray(obj) || // arguments\n 'callee' in obj || // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\n\n\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * This function is used to mark string literals representing CSS class names\n * so that they can be transformed statically. This allows for modularization\n * and minification of CSS class names.\n *\n * In static_upstream, this function is actually implemented, but it should\n * eventually be replaced with something more descriptive, and the transform\n * that is used in the main stack should be ported for use elsewhere.\n *\n * @param string|object className to modularize, or an object of key/values.\n * In the object case, the values are conditions that\n * determine if the className keys should be included.\n * @param [string ...] Variable list of classNames in the string case.\n * @return string Renderable space-separated CSS className.\n */\nfunction cx(classNames) {\n if (typeof classNames == 'object') {\n return Object.keys(classNames).filter(function (className) {\n return classNames[className];\n }).map(replace).join(' ');\n }\n\n return Array.prototype.map.call(arguments, replace).join(' ');\n}\n\nfunction replace(str) {\n return str.replace(/\\//g, '-');\n}\n\nmodule.exports = cx;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\n\n\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\n\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc)\n/*?DOMElement*/\n{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n\n if (typeof doc === 'undefined') {\n return null;\n }\n\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nmodule.exports = getActiveElement;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n'use strict';\n\nvar isWebkit = typeof navigator !== 'undefined' && navigator.userAgent.indexOf('AppleWebKit') > -1;\n/**\n * Gets the element with the document scroll properties such as `scrollLeft` and\n * `scrollHeight`. This may differ across different browsers.\n *\n * NOTE: The return value can be null if the DOM is not yet ready.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\n\nfunction getDocumentScrollElement(doc) {\n doc = doc || document;\n\n if (doc.scrollingElement) {\n return doc.scrollingElement;\n }\n\n return !isWebkit && doc.compatMode === 'CSS1Compat' ? doc.documentElement : doc.body;\n}\n\nmodule.exports = getDocumentScrollElement;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar getElementRect = require(\"./getElementRect\");\n/**\n * Gets an element's position in pixels relative to the viewport. The returned\n * object represents the position of the element's top left corner.\n *\n * @param {DOMElement} element\n * @return {object}\n */\n\n\nfunction getElementPosition(element) {\n var rect = getElementRect(element);\n return {\n x: rect.left,\n y: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n}\n\nmodule.exports = getElementPosition;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar containsNode = require(\"./containsNode\");\n/**\n * Gets an element's bounding rect in pixels relative to the viewport.\n *\n * @param {DOMElement} elem\n * @return {object}\n */\n\n\nfunction getElementRect(elem) {\n var docElem = elem.ownerDocument.documentElement; // FF 2, Safari 3 and Opera 9.5- do not support getBoundingClientRect().\n // IE9- will throw if the element is not in the document.\n\n if (!('getBoundingClientRect' in elem) || !containsNode(docElem, elem)) {\n return {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n } // Subtracts clientTop/Left because IE8- added a 2px border to the\n // <html> element (see http://fburl.com/1493213). IE 7 in\n // Quicksmode does not report clientLeft/clientTop so there\n // will be an unaccounted offset of 2px when in quirksmode\n\n\n var rect = elem.getBoundingClientRect();\n return {\n left: Math.round(rect.left) - docElem.clientLeft,\n right: Math.round(rect.right) - docElem.clientLeft,\n top: Math.round(rect.top) - docElem.clientTop,\n bottom: Math.round(rect.bottom) - docElem.clientTop\n };\n}\n\nmodule.exports = getElementRect;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n'use strict';\n\nvar getDocumentScrollElement = require(\"./getDocumentScrollElement\");\n\nvar getUnboundedScrollPosition = require(\"./getUnboundedScrollPosition\");\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are bounded. This means that if the scroll position is\n * negative or exceeds the element boundaries (which is possible using inertial\n * scrolling), you will get zero or the maximum scroll position, respectively.\n *\n * If you need the unbound scroll position, use `getUnboundedScrollPosition`.\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\n\nfunction getScrollPosition(scrollable) {\n var documentScrollElement = getDocumentScrollElement(scrollable.ownerDocument || scrollable.document);\n\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n scrollable = documentScrollElement;\n }\n\n var scrollPosition = getUnboundedScrollPosition(scrollable);\n var viewport = scrollable === documentScrollElement ? scrollable.ownerDocument.documentElement : scrollable;\n var xMax = scrollable.scrollWidth - viewport.clientWidth;\n var yMax = scrollable.scrollHeight - viewport.clientHeight;\n scrollPosition.x = Math.max(0, Math.min(scrollPosition.x, xMax));\n scrollPosition.y = Math.max(0, Math.min(scrollPosition.y, yMax));\n return scrollPosition;\n}\n\nmodule.exports = getScrollPosition;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar camelize = require(\"./camelize\");\n\nvar hyphenate = require(\"./hyphenate\");\n\nfunction asString(value)\n/*?string*/\n{\n return value == null ? value : String(value);\n}\n\nfunction getStyleProperty(\n/*DOMNode*/\nnode,\n/*string*/\nname)\n/*?string*/\n{\n var computedStyle; // W3C Standard\n\n if (window.getComputedStyle) {\n // In certain cases such as within an iframe in FF3, this returns null.\n computedStyle = window.getComputedStyle(node, null);\n\n if (computedStyle) {\n return asString(computedStyle.getPropertyValue(hyphenate(name)));\n }\n } // Safari\n\n\n if (document.defaultView && document.defaultView.getComputedStyle) {\n computedStyle = document.defaultView.getComputedStyle(node, null); // A Safari bug causes this to return null for `display: none` elements.\n\n if (computedStyle) {\n return asString(computedStyle.getPropertyValue(hyphenate(name)));\n }\n\n if (name === 'display') {\n return 'none';\n }\n } // Internet Explorer\n\n\n if (node.currentStyle) {\n if (name === 'float') {\n return asString(node.currentStyle.cssFloat || node.currentStyle.styleFloat);\n }\n\n return asString(node.currentStyle[camelize(name)]);\n }\n\n return asString(node.style && node.style[camelize(name)]);\n}\n\nmodule.exports = getStyleProperty;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n'use strict';\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n return {\n x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n };\n }\n\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks\n */\nfunction getViewportWidth() {\n var width;\n\n if (document.documentElement) {\n width = document.documentElement.clientWidth;\n }\n\n if (!width && document.body) {\n width = document.body.clientWidth;\n }\n\n return width || 0;\n}\n\nfunction getViewportHeight() {\n var height;\n\n if (document.documentElement) {\n height = document.documentElement.clientHeight;\n }\n\n if (!height && document.body) {\n height = document.body.clientHeight;\n }\n\n return height || 0;\n}\n/**\n * Gets the viewport dimensions including any scrollbars.\n */\n\n\nfunction getViewportDimensions() {\n return {\n width: window.innerWidth || getViewportWidth(),\n height: window.innerHeight || getViewportHeight()\n };\n}\n/**\n * Gets the viewport dimensions excluding any scrollbars.\n */\n\n\ngetViewportDimensions.withoutScrollbars = function () {\n return {\n width: getViewportWidth(),\n height: getViewportHeight()\n };\n};\n\nmodule.exports = getViewportDimensions;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar _uppercasePattern = /([A-Z])/g;\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\n\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\n\nvar validateFormat = process.env.NODE_ENV !== \"production\" ? function (format) {\n if (format === undefined) {\n throw new Error('invariant(...): Second argument must be a string.');\n }\n} : function (format) {};\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments to provide\n * information about what broke and what you were expecting.\n *\n * The invariant message will be stripped in production, but the invariant will\n * remain to ensure logic does not differ in production.\n */\n\nfunction invariant(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n validateFormat(format);\n\n if (!condition) {\n var error;\n\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return String(args[argIndex++]);\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // Skip invariant's own stack frame.\n\n throw error;\n }\n}\n\nmodule.exports = invariant;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n var doc = object ? object.ownerDocument || object : document;\n var defaultView = doc.defaultView || window;\n return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar isNode = require(\"./isNode\");\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\n\n\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks static-only\n */\n'use strict';\n/**\n * Combines multiple className strings into one.\n */\n\nfunction joinClasses(className) {\n var newClassName = className || '';\n var argLength = arguments.length;\n\n if (argLength > 1) {\n for (var index = 1; index < argLength; index++) {\n var nextClass = arguments[index];\n\n if (nextClass) {\n newClassName = (newClassName ? newClassName + ' ' : '') + nextClass;\n }\n }\n }\n\n return newClassName;\n}\n\nmodule.exports = joinClasses;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Executes the provided `callback` once for each enumerable own property in the\n * object and constructs a new object from the results. The `callback` is\n * invoked with three arguments:\n *\n * - the property value\n * - the property name\n * - the object being traversed\n *\n * Properties that are added after the call to `mapObject` will not be visited\n * by `callback`. If the values of existing properties are changed, the value\n * passed to `callback` will be the value at the time `mapObject` visits them.\n * Properties that are deleted before being visited are not visited.\n *\n * @grep function objectMap()\n * @grep function objMap()\n *\n * @param {?object} object\n * @param {function} callback\n * @param {*} context\n * @return {?object}\n */\n\nfunction mapObject(object, callback, context) {\n if (!object) {\n return null;\n }\n\n var result = {};\n\n for (var name in object) {\n if (hasOwnProperty.call(object, name)) {\n result[name] = callback.call(context, object[name], name, object);\n }\n }\n\n return result;\n}\n\nmodule.exports = mapObject;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks static-only\n */\n'use strict';\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar nullthrows = function nullthrows(x) {\n if (x != null) {\n return x;\n }\n\n throw new Error(\"Got unexpected null or undefined\");\n};\n\nmodule.exports = nullthrows;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict'; // setimmediate adds setImmediate to the global. We want to make sure we export\n// the actual function.\n\nrequire(\"setimmediate\");\n\nmodule.exports = global.setImmediate;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar emptyFunction = require(\"./emptyFunction\");\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\n\nfunction printWarning(format) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n}\n\nvar warning = process.env.NODE_ENV !== \"production\" ? function (condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(void 0, [format].concat(args));\n }\n} : emptyFunction;\nmodule.exports = warning;","/*\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n*\n* By Eli Grey, http://eligrey.com\n*\n* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n* source : http://purl.eligrey.com/github/FileSaver.js\n*/\n\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nvar _global = typeof window === 'object' && window.window === window\n ? window : typeof self === 'object' && self.self === self\n ? self : typeof global === 'object' && global.global === global\n ? global\n : this\n\nfunction bom (blob, opts) {\n if (typeof opts === 'undefined') opts = { autoBom: false }\n else if (typeof opts !== 'object') {\n console.warn('Deprecated: Expected third argument to be a object')\n opts = { autoBom: !opts }\n }\n\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (opts.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xFEFF), blob], { type: blob.type })\n }\n return blob\n}\n\nfunction download (url, name, opts) {\n var xhr = new XMLHttpRequest()\n xhr.open('GET', url)\n xhr.responseType = 'blob'\n xhr.onload = function () {\n saveAs(xhr.response, name, opts)\n }\n xhr.onerror = function () {\n console.error('could not download file')\n }\n xhr.send()\n}\n\nfunction corsEnabled (url) {\n var xhr = new XMLHttpRequest()\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false)\n try {\n xhr.send()\n } catch (e) {}\n return xhr.status >= 200 && xhr.status <= 299\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click (node) {\n try {\n node.dispatchEvent(new MouseEvent('click'))\n } catch (e) {\n var evt = document.createEvent('MouseEvents')\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\n 20, false, false, false, false, 0, null)\n node.dispatchEvent(evt)\n }\n}\n\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nvar isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)\n\nvar saveAs = _global.saveAs || (\n // probably in some web worker\n (typeof window !== 'object' || window !== _global)\n ? function saveAs () { /* noop */ }\n\n // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView\n : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)\n ? function saveAs (blob, name, opts) {\n var URL = _global.URL || _global.webkitURL\n var a = document.createElement('a')\n name = name || blob.name || 'download'\n\n a.download = name\n a.rel = 'noopener' // tabnabbing\n\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob\n if (a.origin !== location.origin) {\n corsEnabled(a.href)\n ? download(blob, name, opts)\n : click(a, a.target = '_blank')\n } else {\n click(a)\n }\n } else {\n // Support blobs\n a.href = URL.createObjectURL(blob)\n setTimeout(function () { URL.revokeObjectURL(a.href) }, 4E4) // 40s\n setTimeout(function () { click(a) }, 0)\n }\n }\n\n // Use msSaveOrOpenBlob as a second approach\n : 'msSaveOrOpenBlob' in navigator\n ? function saveAs (blob, name, opts) {\n name = name || blob.name || 'download'\n\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts)\n } else {\n var a = document.createElement('a')\n a.href = blob\n a.target = '_blank'\n setTimeout(function () { click(a) })\n }\n } else {\n navigator.msSaveOrOpenBlob(bom(blob, opts), name)\n }\n }\n\n // Fallback to using FileReader and a popup\n : function saveAs (blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank')\n if (popup) {\n popup.document.title =\n popup.document.body.innerText = 'downloading...'\n }\n\n if (typeof blob === 'string') return download(blob, name, opts)\n\n var force = blob.type === 'application/octet-stream'\n var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\n\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n var reader = new FileReader()\n reader.onloadend = function () {\n var url = reader.result\n url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\n if (popup) popup.location.href = url\n else location = url\n popup = null // reverse-tabnabbing #460\n }\n reader.readAsDataURL(blob)\n } else {\n var URL = _global.URL || _global.webkitURL\n var url = URL.createObjectURL(blob)\n if (popup) popup.location = url\n else location.href = url\n popup = null // reverse-tabnabbing #460\n setTimeout(function () { URL.revokeObjectURL(url) }, 4E4) // 40s\n }\n }\n)\n\n_global.saveAs = saveAs.saveAs = saveAs\n\nif (typeof module !== 'undefined') {\n module.exports = saveAs;\n}\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"immutable\"),require(\"draft-js\")):\"function\"==typeof define&&define.amd?define([\"immutable\",\"draft-js\"],t):\"object\"==typeof exports?exports.htmlToDraftjs=t(require(\"immutable\"),require(\"draft-js\")):e.htmlToDraftjs=t(e.immutable,e[\"draft-js\"])}(window,function(n,r){return o={},i.m=a=[function(e,t){e.exports=n},function(e,t){e.exports=r},function(e,t,n){e.exports=n(3)},function(e,t,n){\"use strict\";n.r(t);var v=n(1),u=n(0),s=function(e){var t,n=null;return document.implementation&&document.implementation.createHTMLDocument&&((t=document.implementation.createHTMLDocument(\"foo\")).documentElement.innerHTML=e,n=t.getElementsByTagName(\"body\")[0]),n},x=function(e,t,n){var r,i=e.textContent;return\"\"===i.trim()?{chunk:(r=n,{text:\" \",inlines:[new u.OrderedSet],entities:[r],blocks:[]})}:{chunk:{text:i,inlines:Array(i.length).fill(t),entities:Array(i.length).fill(n),blocks:[]}}},M=function(){return{text:\"\\n\",inlines:[new u.OrderedSet],entities:new Array(1),blocks:[]}},k=function(){return{text:\"\",inlines:[],entities:[],blocks:[]}},E=function(e,t){return{text:\"\",inlines:[],entities:[],blocks:[{type:e,depth:0,data:t||new u.Map({})}]}},w=function(e,t,n){return{text:\"\\r\",inlines:[],entities:[],blocks:[{type:e,depth:Math.max(0,Math.min(4,t)),data:n||new u.Map({})}]}},T=function(e){return{text:\"\\r \",inlines:[new u.OrderedSet],entities:[e],blocks:[{type:\"atomic\",depth:0,data:new u.Map({})}]}},L=function(e,t){return{text:e.text+t.text,inlines:e.inlines.concat(t.inlines),entities:e.entities.concat(t.entities),blocks:e.blocks.concat(t.blocks)}},A=new u.Map({\"header-one\":{element:\"h1\"},\"header-two\":{element:\"h2\"},\"header-three\":{element:\"h3\"},\"header-four\":{element:\"h4\"},\"header-five\":{element:\"h5\"},\"header-six\":{element:\"h6\"},\"unordered-list-item\":{element:\"li\",wrapper:\"ul\"},\"ordered-list-item\":{element:\"li\",wrapper:\"ol\"},blockquote:{element:\"blockquote\"},code:{element:\"pre\"},atomic:{element:\"figure\"},unstyled:{element:\"p\",aliasedElements:[\"div\"]}});var O={code:\"CODE\",del:\"STRIKETHROUGH\",em:\"ITALIC\",strong:\"BOLD\",ins:\"UNDERLINE\",sub:\"SUBSCRIPT\",sup:\"SUPERSCRIPT\"};function S(e){return e.style.textAlign?new u.Map({\"text-align\":e.style.textAlign}):e.style.marginLeft?new u.Map({\"margin-left\":e.style.marginLeft}):void 0}var _=function(e){var t=void 0;if(e instanceof HTMLAnchorElement){var n={};t=e.dataset&&void 0!==e.dataset.mention?(n.url=e.href,n.text=e.innerHTML,n.value=e.dataset.value,v.Entity.__create(\"MENTION\",\"IMMUTABLE\",n)):(n.url=e.getAttribute&&e.getAttribute(\"href\")||e.href,n.title=e.innerHTML,n.targetOption=e.target,v.Entity.__create(\"LINK\",\"MUTABLE\",n))}return t};n.d(t,\"default\",function(){return r});var d=\" \",f=new RegExp(\" \",\"g\"),j=!0;function I(e,t,n,r,i,a){var o=e.nodeName.toLowerCase();if(a){var l=a(o,e);if(l){var c=v.Entity.__create(l.type,l.mutability,l.data||{});return{chunk:T(c)}}}if(\"#text\"===o&&\"\\n\"!==e.textContent)return x(e,t,i);if(\"br\"===o)return{chunk:M()};if(\"img\"===o&&e instanceof HTMLImageElement){var u={};u.src=e.getAttribute&&e.getAttribute(\"src\")||e.src,u.alt=e.alt,u.height=e.style.height,u.width=e.style.width,e.style.float&&(u.alignment=e.style.float);var s=v.Entity.__create(\"IMAGE\",\"MUTABLE\",u);return{chunk:T(s)}}if(\"video\"===o&&e instanceof HTMLVideoElement){var d={};d.src=e.getAttribute&&e.getAttribute(\"src\")||e.src,d.alt=e.alt,d.height=e.style.height,d.width=e.style.width,e.style.float&&(d.alignment=e.style.float);var f=v.Entity.__create(\"VIDEO\",\"MUTABLE\",d);return{chunk:T(f)}}if(\"iframe\"===o&&e instanceof HTMLIFrameElement){var m={};m.src=e.getAttribute&&e.getAttribute(\"src\")||e.src,m.height=e.height,m.width=e.width;var p=v.Entity.__create(\"EMBEDDED_LINK\",\"MUTABLE\",m);return{chunk:T(p)}}var h,y=function(t,n){var e=A.filter(function(e){return e.element===t&&(!e.wrapper||e.wrapper===n)||e.wrapper===t||e.aliasedElements&&-1<e.aliasedElements.indexOf(t)}).keySeq().toSet().toArray();if(1===e.length)return e[0]}(o,r);y&&(\"ul\"===o||\"ol\"===o?(r=o,n+=1):(\"unordered-list-item\"!==y&&\"ordered-list-item\"!==y&&(r=\"\",n=-1),j?(h=E(y,S(e)),j=!1):h=w(y,n,S(e)))),h=h||k(),t=function(e,t,n){var r,i=O[e];if(i)r=n.add(i).toOrderedSet();else if(t instanceof HTMLElement){var c=t;r=(r=n).withMutations(function(e){var t=c.style.color,n=c.style.backgroundColor,r=c.style.fontSize,i=c.style.fontFamily.replace(/^\"|\"$/g,\"\"),a=c.style.fontWeight,o=c.style.textDecoration,l=c.style.fontStyle;t&&e.add(\"color-\".concat(t.replace(/ /g,\"\"))),n&&e.add(\"bgcolor-\".concat(n.replace(/ /g,\"\"))),r&&e.add(\"fontsize-\".concat(r.replace(/px$/g,\"\"))),i&&e.add(\"fontfamily-\".concat(i)),\"bold\"===a&&e.add(O.strong),\"underline\"===o&&e.add(O.ins),\"italic\"===l&&e.add(O.em)}).toOrderedSet()}return r}(o,e,t);for(var b=e.firstChild;b;){var g=I(b,t,n,r,_(b)||i,a).chunk;h=L(h,g),b=b.nextSibling}return{chunk:h}}function r(e,t){var n,r,i,a=(n=t,r=e.trim().replace(f,d),(i=s(r))?(j=!0,{chunk:I(i,new u.OrderedSet,-1,\"\",void 0,n).chunk}):null);if(a){var o=a.chunk,l=new u.OrderedMap({});o.entities&&o.entities.forEach(function(e){e&&(l=l.set(e,v.Entity.__get(e)))});var c=0;return{contentBlocks:o.text.split(\"\\r\").map(function(e,t){var n=c+e.length,r=o&&o.inlines.slice(c,n),i=o&&o.entities.slice(c,n),a=new u.List(r.map(function(e,t){var n={style:e,entity:null};return i[t]&&(n.entity=i[t]),v.CharacterMetadata.create(n)}));return c=n,new v.ContentBlock({key:Object(v.genKey)(),type:o&&o.blocks[t]&&o.blocks[t].type||\"unstyled\",depth:o&&o.blocks[t]&&o.blocks[t].depth,data:o&&o.blocks[t]&&o.blocks[t].data||new u.Map({}),text:e,characterList:a})}),entityMap:l}}return null}}],i.c=o,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=2);function i(e){if(o[e])return o[e].exports;var t=o[e]={i:e,l:!1,exports:{}};return a[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}var a,o});","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.Immutable = factory();\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step > 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n findEntry: function(predicate, context) {\n var found;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findLastEntry: function(predicate, context) {\n return this.toSeq().reverse().findEntry(predicate, context);\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n // Temporary warning about using length\n (function () {\n try {\n Object.defineProperty(IterablePrototype, 'length', {\n get: function () {\n if (!Iterable.noLengthWarning) {\n var stack;\n try {\n throw new Error();\n } catch (error) {\n stack = error.stack;\n }\n if (stack.indexOf('_wrapObject') === -1) {\n console && console.warn && console.warn(\n 'iterable.length has been deprecated, '+\n 'use iterable.size or iterable.count(). '+\n 'This warning will become a silent error in a future version. ' +\n stack\n );\n return this.size;\n }\n }\n }\n });\n } catch (e) {}\n })();\n\n\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLastKey: function(predicate, context) {\n return this.toSeq().reverse().findKey(predicate, context);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n lastKeyOf: function(searchValue) {\n return this.findLastKey(function(value ) {return is(value, searchValue)});\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.toKeyedSeq().keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.toKeyedSeq().reverse().keyOf(searchValue);\n return key === undefined ? -1 : key;\n\n // var index =\n // return this.toSeq().reverse().indexOf(searchValue);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var key = this.toKeyedSeq().findLastKey(predicate, context);\n return key === undefined ? -1 : key;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : value;\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = prefix || defaultDelimiter\n var pattern = capture || group\n var prevText = prefix || (typeof tokens[tokens.length - 1] === 'string' ? tokens[tokens.length - 1] : '')\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : restrictBacktrack(delimiter, prevText))\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\nfunction restrictBacktrack(delimiter, prevText) {\n if (!prevText || prevText.indexOf(delimiter) > -1) {\n return '[^' + escapeString(delimiter) + ']+?'\n }\n\n return escapeString(prevText) + '|(?:(?!' + escapeString(prevText) + ')[^' + escapeString(delimiter) + '])+?'\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar nullListeners = {\n notify: function notify() {},\n get: function get() {\n return [];\n }\n};\nexport function createSubscription(store, parentSub) {\n var unsubscribe;\n var listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n var subscription = {\n addNestedSub: addNestedSub,\n notifyNestedSubs: notifyNestedSubs,\n handleChangeWrapper: handleChangeWrapper,\n isSubscribed: isSubscribed,\n trySubscribe: trySubscribe,\n tryUnsubscribe: tryUnsubscribe,\n getListeners: function getListeners() {\n return listeners;\n }\n };\n return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = createSubscription(store);\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useIsomorphicLayoutEffect(function () {\n var subscription = contextValue.subscription;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"],\n _excluded2 = [\"reactReduxForwardedRef\"];\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(function () {\n return effectFunc.apply(void 0, effectArgs);\n }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n error: error\n }\n });\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n var unsubscribeWrapper = function unsubscribeWrapper() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n selectorFactory is a func that is responsible for returning the selector function used to\r\n compute new props from state, props, and dispatch. For example:\r\n export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n thing: state.things[props.thingId],\r\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n }))(YourComponent)\r\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n if (process.env.NODE_ENV !== 'production') {\n if (renderCountProp !== undefined) {\n throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n }\n\n if (withRef) {\n throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n }\n\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. ' + 'You may also pass a {context : MyContext} option to connect';\n\n if (storeKey !== 'store') {\n throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n }\n }\n\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = useMemo(function () {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n var reactReduxForwardedRef = props.reactReduxForwardedRef,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded2);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n reactReduxForwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = useMemo(function () {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + \"or pass a custom React context provider to <Provider> and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n } // Based on the previous check, one of these must be true\n\n\n var store = didStoreComeFromProps ? props.store : contextValue.store;\n var childPropsSelector = useMemo(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = useMemo(function () {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n var subscription = createSubscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n\n var overriddenContextValue = useMemo(function () {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function () {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n var renderedWrappedComponent = useMemo(function () {\n return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }));\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n var renderedChild = useMemo(function () {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","function is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","export default function bindActionCreators(actionCreators, dispatch) {\n var boundActionCreators = {};\n\n var _loop = function _loop(key) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = function () {\n return dispatch(actionCreator.apply(void 0, arguments));\n };\n }\n };\n\n for (var key in actionCreators) {\n _loop(key);\n }\n\n return boundActionCreators;\n}","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"];\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\r\n connect is a facade over connectAdvanced. It turns its args into a compatible\r\n selectorFactory, which has the signature:\r\n\r\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n \r\n connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n selectorFactory returns a final props selector from its mapStateToProps,\r\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n mergePropsFactories, and pure args.\r\n\r\n The resulting final props selector is called by the Connect component instance whenever\r\n it receives new props or store state.\r\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, _excluded);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default /*#__PURE__*/createConnect();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return createSubscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n selectedState = newSelectedState;\n } else {\n selectedState = latestSelectedState.current;\n }\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n if (newStoreState === latestStoreState.current) {\n return;\n }\n\n var _newSelectedState = latestSelector.current(newStoreState);\n\n if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = _newSelectedState;\n latestStoreState.current = newStoreState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n\n if (typeof selector !== 'function') {\n throw new Error(\"You must pass a function as a selector to useSelector\");\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(\"You must pass a function as an equality function to useSelector\");\n }\n }\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return <div>{counter}</div>\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","import { useState, useRef, useEffect } from 'react';\n\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction useMemoOne(getResult, inputs) {\n var initial = useState(function () {\n return {\n inputs: inputs,\n result: getResult()\n };\n })[0];\n var isFirstRun = useRef(true);\n var committed = useRef(initial);\n var useCache = isFirstRun.current || Boolean(inputs && committed.current.inputs && areInputsEqual(inputs, committed.current.inputs));\n var cache = useCache ? committed.current : {\n inputs: inputs,\n result: getResult()\n };\n useEffect(function () {\n isFirstRun.current = false;\n committed.current = cache;\n }, [cache]);\n return cache.result;\n}\nfunction useCallbackOne(callback, inputs) {\n return useMemoOne(function () {\n return callback;\n }, inputs);\n}\nvar useMemo = useMemoOne;\nvar useCallback = useCallbackOne;\n\nexport { useCallback, useCallbackOne, useMemo, useMemoOne };\n","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","import invariant from 'tiny-invariant';\n\nvar getRect = function getRect(_ref) {\n var top = _ref.top,\n right = _ref.right,\n bottom = _ref.bottom,\n left = _ref.left;\n var width = right - left;\n var height = bottom - top;\n var rect = {\n top: top,\n right: right,\n bottom: bottom,\n left: left,\n width: width,\n height: height,\n x: left,\n y: top,\n center: {\n x: (right + left) / 2,\n y: (bottom + top) / 2\n }\n };\n return rect;\n};\nvar expand = function expand(target, expandBy) {\n return {\n top: target.top - expandBy.top,\n left: target.left - expandBy.left,\n bottom: target.bottom + expandBy.bottom,\n right: target.right + expandBy.right\n };\n};\nvar shrink = function shrink(target, shrinkBy) {\n return {\n top: target.top + shrinkBy.top,\n left: target.left + shrinkBy.left,\n bottom: target.bottom - shrinkBy.bottom,\n right: target.right - shrinkBy.right\n };\n};\n\nvar shift = function shift(target, shiftBy) {\n return {\n top: target.top + shiftBy.y,\n left: target.left + shiftBy.x,\n bottom: target.bottom + shiftBy.y,\n right: target.right + shiftBy.x\n };\n};\n\nvar noSpacing = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\nvar createBox = function createBox(_ref2) {\n var borderBox = _ref2.borderBox,\n _ref2$margin = _ref2.margin,\n margin = _ref2$margin === void 0 ? noSpacing : _ref2$margin,\n _ref2$border = _ref2.border,\n border = _ref2$border === void 0 ? noSpacing : _ref2$border,\n _ref2$padding = _ref2.padding,\n padding = _ref2$padding === void 0 ? noSpacing : _ref2$padding;\n var marginBox = getRect(expand(borderBox, margin));\n var paddingBox = getRect(shrink(borderBox, border));\n var contentBox = getRect(shrink(paddingBox, padding));\n return {\n marginBox: marginBox,\n borderBox: getRect(borderBox),\n paddingBox: paddingBox,\n contentBox: contentBox,\n margin: margin,\n border: border,\n padding: padding\n };\n};\n\nvar parse = function parse(raw) {\n var value = raw.slice(0, -2);\n var suffix = raw.slice(-2);\n\n if (suffix !== 'px') {\n return 0;\n }\n\n var result = Number(value);\n !!isNaN(result) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not parse value [raw: \" + raw + \", without suffix: \" + value + \"]\") : invariant(false) : void 0;\n return result;\n};\n\nvar getWindowScroll = function getWindowScroll() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n};\n\nvar offset = function offset(original, change) {\n var borderBox = original.borderBox,\n border = original.border,\n margin = original.margin,\n padding = original.padding;\n var shifted = shift(borderBox, change);\n return createBox({\n borderBox: shifted,\n border: border,\n margin: margin,\n padding: padding\n });\n};\nvar withScroll = function withScroll(original, scroll) {\n if (scroll === void 0) {\n scroll = getWindowScroll();\n }\n\n return offset(original, scroll);\n};\nvar calculateBox = function calculateBox(borderBox, styles) {\n var margin = {\n top: parse(styles.marginTop),\n right: parse(styles.marginRight),\n bottom: parse(styles.marginBottom),\n left: parse(styles.marginLeft)\n };\n var padding = {\n top: parse(styles.paddingTop),\n right: parse(styles.paddingRight),\n bottom: parse(styles.paddingBottom),\n left: parse(styles.paddingLeft)\n };\n var border = {\n top: parse(styles.borderTopWidth),\n right: parse(styles.borderRightWidth),\n bottom: parse(styles.borderBottomWidth),\n left: parse(styles.borderLeftWidth)\n };\n return createBox({\n borderBox: borderBox,\n margin: margin,\n padding: padding,\n border: border\n });\n};\nvar getBox = function getBox(el) {\n var borderBox = el.getBoundingClientRect();\n var styles = window.getComputedStyle(el);\n return calculateBox(borderBox, styles);\n};\n\nexport { calculateBox, createBox, expand, getBox, getRect, offset, shrink, withScroll };\n","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","var rafSchd = function rafSchd(fn) {\n var lastArgs = [];\n var frameId = null;\n\n var wrapperFn = function wrapperFn() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n lastArgs = args;\n\n if (frameId) {\n return;\n }\n\n frameId = requestAnimationFrame(function () {\n frameId = null;\n fn.apply(void 0, lastArgs);\n });\n };\n\n wrapperFn.cancel = function () {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n\n return wrapperFn;\n};\n\nexport default rafSchd;\n","import React, { useLayoutEffect, useEffect, useRef, useState, useContext } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport { createStore as createStore$1, applyMiddleware, compose, bindActionCreators } from 'redux';\nimport { Provider, connect } from 'react-redux';\nimport { useMemo, useCallback } from 'use-memo-one';\nimport { getRect, expand, offset, withScroll, getBox, createBox, calculateBox } from 'css-box-model';\nimport memoizeOne from 'memoize-one';\nimport rafSchd from 'raf-schd';\nimport ReactDOM from 'react-dom';\n\nvar isProduction = process.env.NODE_ENV === 'production';\nvar spacesAndTabs = /[ \\t]{2,}/g;\nvar lineStartWithSpaces = /^[ \\t]*/gm;\n\nvar clean = function clean(value) {\n return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\n};\n\nvar getDevMessage = function getDevMessage(message) {\n return clean(\"\\n %creact-beautiful-dnd\\n\\n %c\" + clean(message) + \"\\n\\n %c\\uD83D\\uDC77\\u200D This is a development only message. It will be removed in production builds.\\n\");\n};\n\nvar getFormattedMessage = function getFormattedMessage(message) {\n return [getDevMessage(message), 'color: #00C584; font-size: 1.2em; font-weight: bold;', 'line-height: 1.5', 'color: #723874;'];\n};\nvar isDisabledFlag = '__react-beautiful-dnd-disable-dev-warnings';\nfunction log(type, message) {\n var _console;\n\n if (isProduction) {\n return;\n }\n\n if (typeof window !== 'undefined' && window[isDisabledFlag]) {\n return;\n }\n\n (_console = console)[type].apply(_console, getFormattedMessage(message));\n}\nvar warning = log.bind(null, 'warn');\nvar error = log.bind(null, 'error');\n\nfunction noop() {}\n\nfunction getOptions(shared, fromBinding) {\n return _extends({}, shared, {}, fromBinding);\n}\n\nfunction bindEvents(el, bindings, sharedOptions) {\n var unbindings = bindings.map(function (binding) {\n var options = getOptions(sharedOptions, binding.options);\n el.addEventListener(binding.eventName, binding.fn, options);\n return function unbind() {\n el.removeEventListener(binding.eventName, binding.fn, options);\n };\n });\n return function unbindAll() {\n unbindings.forEach(function (unbind) {\n unbind();\n });\n };\n}\n\nvar isProduction$1 = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction RbdInvariant(message) {\n this.message = message;\n}\n\nRbdInvariant.prototype.toString = function toString() {\n return this.message;\n};\n\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n\n if (isProduction$1) {\n throw new RbdInvariant(prefix);\n } else {\n throw new RbdInvariant(prefix + \": \" + (message || ''));\n }\n}\n\nvar ErrorBoundary = function (_React$Component) {\n _inheritsLoose(ErrorBoundary, _React$Component);\n\n function ErrorBoundary() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.callbacks = null;\n _this.unbind = noop;\n\n _this.onWindowError = function (event) {\n var callbacks = _this.getCallbacks();\n\n if (callbacks.isDragging()) {\n callbacks.tryAbort();\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n An error was caught by our window 'error' event listener while a drag was occurring.\\n The active drag has been aborted.\\n \") : void 0;\n }\n\n var err = event.error;\n\n if (err instanceof RbdInvariant) {\n event.preventDefault();\n\n if (process.env.NODE_ENV !== 'production') {\n error(err.message);\n }\n }\n };\n\n _this.getCallbacks = function () {\n if (!_this.callbacks) {\n throw new Error('Unable to find AppCallbacks in <ErrorBoundary/>');\n }\n\n return _this.callbacks;\n };\n\n _this.setCallbacks = function (callbacks) {\n _this.callbacks = callbacks;\n };\n\n return _this;\n }\n\n var _proto = ErrorBoundary.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.unbind = bindEvents(window, [{\n eventName: 'error',\n fn: this.onWindowError\n }]);\n };\n\n _proto.componentDidCatch = function componentDidCatch(err) {\n if (err instanceof RbdInvariant) {\n if (process.env.NODE_ENV !== 'production') {\n error(err.message);\n }\n\n this.setState({});\n return;\n }\n\n throw err;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.unbind();\n };\n\n _proto.render = function render() {\n return this.props.children(this.setCallbacks);\n };\n\n return ErrorBoundary;\n}(React.Component);\n\nvar dragHandleUsageInstructions = \"\\n Press space bar to start a drag.\\n When dragging you can use the arrow keys to move the item around and escape to cancel.\\n Some screen readers may require you to be in focus mode or to use your pass through key\\n\";\n\nvar position = function position(index) {\n return index + 1;\n};\n\nvar onDragStart = function onDragStart(start) {\n return \"\\n You have lifted an item in position \" + position(start.source.index) + \"\\n\";\n};\n\nvar withLocation = function withLocation(source, destination) {\n var isInHomeList = source.droppableId === destination.droppableId;\n var startPosition = position(source.index);\n var endPosition = position(destination.index);\n\n if (isInHomeList) {\n return \"\\n You have moved the item from position \" + startPosition + \"\\n to position \" + endPosition + \"\\n \";\n }\n\n return \"\\n You have moved the item from position \" + startPosition + \"\\n in list \" + source.droppableId + \"\\n to list \" + destination.droppableId + \"\\n in position \" + endPosition + \"\\n \";\n};\n\nvar withCombine = function withCombine(id, source, combine) {\n var inHomeList = source.droppableId === combine.droppableId;\n\n if (inHomeList) {\n return \"\\n The item \" + id + \"\\n has been combined with \" + combine.draggableId;\n }\n\n return \"\\n The item \" + id + \"\\n in list \" + source.droppableId + \"\\n has been combined with \" + combine.draggableId + \"\\n in list \" + combine.droppableId + \"\\n \";\n};\n\nvar onDragUpdate = function onDragUpdate(update) {\n var location = update.destination;\n\n if (location) {\n return withLocation(update.source, location);\n }\n\n var combine = update.combine;\n\n if (combine) {\n return withCombine(update.draggableId, update.source, combine);\n }\n\n return 'You are over an area that cannot be dropped on';\n};\n\nvar returnedToStart = function returnedToStart(source) {\n return \"\\n The item has returned to its starting position\\n of \" + position(source.index) + \"\\n\";\n};\n\nvar onDragEnd = function onDragEnd(result) {\n if (result.reason === 'CANCEL') {\n return \"\\n Movement cancelled.\\n \" + returnedToStart(result.source) + \"\\n \";\n }\n\n var location = result.destination;\n var combine = result.combine;\n\n if (location) {\n return \"\\n You have dropped the item.\\n \" + withLocation(result.source, location) + \"\\n \";\n }\n\n if (combine) {\n return \"\\n You have dropped the item.\\n \" + withCombine(result.draggableId, result.source, combine) + \"\\n \";\n }\n\n return \"\\n The item has been dropped while not over a drop area.\\n \" + returnedToStart(result.source) + \"\\n \";\n};\n\nvar preset = {\n dragHandleUsageInstructions: dragHandleUsageInstructions,\n onDragStart: onDragStart,\n onDragUpdate: onDragUpdate,\n onDragEnd: onDragEnd\n};\n\nvar origin = {\n x: 0,\n y: 0\n};\nvar add = function add(point1, point2) {\n return {\n x: point1.x + point2.x,\n y: point1.y + point2.y\n };\n};\nvar subtract = function subtract(point1, point2) {\n return {\n x: point1.x - point2.x,\n y: point1.y - point2.y\n };\n};\nvar isEqual = function isEqual(point1, point2) {\n return point1.x === point2.x && point1.y === point2.y;\n};\nvar negate = function negate(point) {\n return {\n x: point.x !== 0 ? -point.x : 0,\n y: point.y !== 0 ? -point.y : 0\n };\n};\nvar patch = function patch(line, value, otherValue) {\n var _ref;\n\n if (otherValue === void 0) {\n otherValue = 0;\n }\n\n return _ref = {}, _ref[line] = value, _ref[line === 'x' ? 'y' : 'x'] = otherValue, _ref;\n};\nvar distance = function distance(point1, point2) {\n return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2));\n};\nvar closest = function closest(target, points) {\n return Math.min.apply(Math, points.map(function (point) {\n return distance(target, point);\n }));\n};\nvar apply = function apply(fn) {\n return function (point) {\n return {\n x: fn(point.x),\n y: fn(point.y)\n };\n };\n};\n\nvar executeClip = (function (frame, subject) {\n var result = getRect({\n top: Math.max(subject.top, frame.top),\n right: Math.min(subject.right, frame.right),\n bottom: Math.min(subject.bottom, frame.bottom),\n left: Math.max(subject.left, frame.left)\n });\n\n if (result.width <= 0 || result.height <= 0) {\n return null;\n }\n\n return result;\n});\n\nvar offsetByPosition = function offsetByPosition(spacing, point) {\n return {\n top: spacing.top + point.y,\n left: spacing.left + point.x,\n bottom: spacing.bottom + point.y,\n right: spacing.right + point.x\n };\n};\nvar getCorners = function getCorners(spacing) {\n return [{\n x: spacing.left,\n y: spacing.top\n }, {\n x: spacing.right,\n y: spacing.top\n }, {\n x: spacing.left,\n y: spacing.bottom\n }, {\n x: spacing.right,\n y: spacing.bottom\n }];\n};\nvar noSpacing = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\n\nvar scroll = function scroll(target, frame) {\n if (!frame) {\n return target;\n }\n\n return offsetByPosition(target, frame.scroll.diff.displacement);\n};\n\nvar increase = function increase(target, axis, withPlaceholder) {\n if (withPlaceholder && withPlaceholder.increasedBy) {\n var _extends2;\n\n return _extends({}, target, (_extends2 = {}, _extends2[axis.end] = target[axis.end] + withPlaceholder.increasedBy[axis.line], _extends2));\n }\n\n return target;\n};\n\nvar clip = function clip(target, frame) {\n if (frame && frame.shouldClipSubject) {\n return executeClip(frame.pageMarginBox, target);\n }\n\n return getRect(target);\n};\n\nvar getSubject = (function (_ref) {\n var page = _ref.page,\n withPlaceholder = _ref.withPlaceholder,\n axis = _ref.axis,\n frame = _ref.frame;\n var scrolled = scroll(page.marginBox, frame);\n var increased = increase(scrolled, axis, withPlaceholder);\n var clipped = clip(increased, frame);\n return {\n page: page,\n withPlaceholder: withPlaceholder,\n active: clipped\n };\n});\n\nvar scrollDroppable = (function (droppable, newScroll) {\n !droppable.frame ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n var scrollable = droppable.frame;\n var scrollDiff = subtract(newScroll, scrollable.scroll.initial);\n var scrollDisplacement = negate(scrollDiff);\n\n var frame = _extends({}, scrollable, {\n scroll: {\n initial: scrollable.scroll.initial,\n current: newScroll,\n diff: {\n value: scrollDiff,\n displacement: scrollDisplacement\n },\n max: scrollable.scroll.max\n }\n });\n\n var subject = getSubject({\n page: droppable.subject.page,\n withPlaceholder: droppable.subject.withPlaceholder,\n axis: droppable.axis,\n frame: frame\n });\n\n var result = _extends({}, droppable, {\n frame: frame,\n subject: subject\n });\n\n return result;\n});\n\nfunction isInteger(value) {\n if (Number.isInteger) {\n return Number.isInteger(value);\n }\n\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\nfunction values(map) {\n if (Object.values) {\n return Object.values(map);\n }\n\n return Object.keys(map).map(function (key) {\n return map[key];\n });\n}\nfunction findIndex(list, predicate) {\n if (list.findIndex) {\n return list.findIndex(predicate);\n }\n\n for (var i = 0; i < list.length; i++) {\n if (predicate(list[i])) {\n return i;\n }\n }\n\n return -1;\n}\nfunction find(list, predicate) {\n if (list.find) {\n return list.find(predicate);\n }\n\n var index = findIndex(list, predicate);\n\n if (index !== -1) {\n return list[index];\n }\n\n return undefined;\n}\nfunction toArray(list) {\n return Array.prototype.slice.call(list);\n}\n\nvar toDroppableMap = memoizeOne(function (droppables) {\n return droppables.reduce(function (previous, current) {\n previous[current.descriptor.id] = current;\n return previous;\n }, {});\n});\nvar toDraggableMap = memoizeOne(function (draggables) {\n return draggables.reduce(function (previous, current) {\n previous[current.descriptor.id] = current;\n return previous;\n }, {});\n});\nvar toDroppableList = memoizeOne(function (droppables) {\n return values(droppables);\n});\nvar toDraggableList = memoizeOne(function (draggables) {\n return values(draggables);\n});\n\nvar getDraggablesInsideDroppable = memoizeOne(function (droppableId, draggables) {\n var result = toDraggableList(draggables).filter(function (draggable) {\n return droppableId === draggable.descriptor.droppableId;\n }).sort(function (a, b) {\n return a.descriptor.index - b.descriptor.index;\n });\n return result;\n});\n\nfunction tryGetDestination(impact) {\n if (impact.at && impact.at.type === 'REORDER') {\n return impact.at.destination;\n }\n\n return null;\n}\nfunction tryGetCombine(impact) {\n if (impact.at && impact.at.type === 'COMBINE') {\n return impact.at.combine;\n }\n\n return null;\n}\n\nvar removeDraggableFromList = memoizeOne(function (remove, list) {\n return list.filter(function (item) {\n return item.descriptor.id !== remove.descriptor.id;\n });\n});\n\nvar moveToNextCombine = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n draggable = _ref.draggable,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n previousImpact = _ref.previousImpact;\n\n if (!destination.isCombineEnabled) {\n return null;\n }\n\n var location = tryGetDestination(previousImpact);\n\n if (!location) {\n return null;\n }\n\n function getImpact(target) {\n var at = {\n type: 'COMBINE',\n combine: {\n draggableId: target,\n droppableId: destination.descriptor.id\n }\n };\n return _extends({}, previousImpact, {\n at: at\n });\n }\n\n var all = previousImpact.displaced.all;\n var closestId = all.length ? all[0] : null;\n\n if (isMovingForward) {\n return closestId ? getImpact(closestId) : null;\n }\n\n var withoutDraggable = removeDraggableFromList(draggable, insideDestination);\n\n if (!closestId) {\n if (!withoutDraggable.length) {\n return null;\n }\n\n var last = withoutDraggable[withoutDraggable.length - 1];\n return getImpact(last.descriptor.id);\n }\n\n var indexOfClosest = findIndex(withoutDraggable, function (d) {\n return d.descriptor.id === closestId;\n });\n !(indexOfClosest !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find displaced item in set') : invariant(false) : void 0;\n var proposedIndex = indexOfClosest - 1;\n\n if (proposedIndex < 0) {\n return null;\n }\n\n var before = withoutDraggable[proposedIndex];\n return getImpact(before.descriptor.id);\n});\n\nvar isHomeOf = (function (draggable, destination) {\n return draggable.descriptor.droppableId === destination.descriptor.id;\n});\n\nvar noDisplacedBy = {\n point: origin,\n value: 0\n};\nvar emptyGroups = {\n invisible: {},\n visible: {},\n all: []\n};\nvar noImpact = {\n displaced: emptyGroups,\n displacedBy: noDisplacedBy,\n at: null\n};\n\nvar isWithin = (function (lowerBound, upperBound) {\n return function (value) {\n return lowerBound <= value && value <= upperBound;\n };\n});\n\nvar isPartiallyVisibleThroughFrame = (function (frame) {\n var isWithinVertical = isWithin(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin(frame.left, frame.right);\n return function (subject) {\n var isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n\n if (isContained) {\n return true;\n }\n\n var isPartiallyVisibleVertically = isWithinVertical(subject.top) || isWithinVertical(subject.bottom);\n var isPartiallyVisibleHorizontally = isWithinHorizontal(subject.left) || isWithinHorizontal(subject.right);\n var isPartiallyContained = isPartiallyVisibleVertically && isPartiallyVisibleHorizontally;\n\n if (isPartiallyContained) {\n return true;\n }\n\n var isBiggerVertically = subject.top < frame.top && subject.bottom > frame.bottom;\n var isBiggerHorizontally = subject.left < frame.left && subject.right > frame.right;\n var isTargetBiggerThanFrame = isBiggerVertically && isBiggerHorizontally;\n\n if (isTargetBiggerThanFrame) {\n return true;\n }\n\n var isTargetBiggerOnOneAxis = isBiggerVertically && isPartiallyVisibleHorizontally || isBiggerHorizontally && isPartiallyVisibleVertically;\n return isTargetBiggerOnOneAxis;\n };\n});\n\nvar isTotallyVisibleThroughFrame = (function (frame) {\n var isWithinVertical = isWithin(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin(frame.left, frame.right);\n return function (subject) {\n var isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n return isContained;\n };\n});\n\nvar vertical = {\n direction: 'vertical',\n line: 'y',\n crossAxisLine: 'x',\n start: 'top',\n end: 'bottom',\n size: 'height',\n crossAxisStart: 'left',\n crossAxisEnd: 'right',\n crossAxisSize: 'width'\n};\nvar horizontal = {\n direction: 'horizontal',\n line: 'x',\n crossAxisLine: 'y',\n start: 'left',\n end: 'right',\n size: 'width',\n crossAxisStart: 'top',\n crossAxisEnd: 'bottom',\n crossAxisSize: 'height'\n};\n\nvar isTotallyVisibleThroughFrameOnAxis = (function (axis) {\n return function (frame) {\n var isWithinVertical = isWithin(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin(frame.left, frame.right);\n return function (subject) {\n if (axis === vertical) {\n return isWithinVertical(subject.top) && isWithinVertical(subject.bottom);\n }\n\n return isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n };\n };\n});\n\nvar getDroppableDisplaced = function getDroppableDisplaced(target, destination) {\n var displacement = destination.frame ? destination.frame.scroll.diff.displacement : origin;\n return offsetByPosition(target, displacement);\n};\n\nvar isVisibleInDroppable = function isVisibleInDroppable(target, destination, isVisibleThroughFrameFn) {\n if (!destination.subject.active) {\n return false;\n }\n\n return isVisibleThroughFrameFn(destination.subject.active)(target);\n};\n\nvar isVisibleInViewport = function isVisibleInViewport(target, viewport, isVisibleThroughFrameFn) {\n return isVisibleThroughFrameFn(viewport)(target);\n};\n\nvar isVisible = function isVisible(_ref) {\n var toBeDisplaced = _ref.target,\n destination = _ref.destination,\n viewport = _ref.viewport,\n withDroppableDisplacement = _ref.withDroppableDisplacement,\n isVisibleThroughFrameFn = _ref.isVisibleThroughFrameFn;\n var displacedTarget = withDroppableDisplacement ? getDroppableDisplaced(toBeDisplaced, destination) : toBeDisplaced;\n return isVisibleInDroppable(displacedTarget, destination, isVisibleThroughFrameFn) && isVisibleInViewport(displacedTarget, viewport, isVisibleThroughFrameFn);\n};\n\nvar isPartiallyVisible = function isPartiallyVisible(args) {\n return isVisible(_extends({}, args, {\n isVisibleThroughFrameFn: isPartiallyVisibleThroughFrame\n }));\n};\nvar isTotallyVisible = function isTotallyVisible(args) {\n return isVisible(_extends({}, args, {\n isVisibleThroughFrameFn: isTotallyVisibleThroughFrame\n }));\n};\nvar isTotallyVisibleOnAxis = function isTotallyVisibleOnAxis(args) {\n return isVisible(_extends({}, args, {\n isVisibleThroughFrameFn: isTotallyVisibleThroughFrameOnAxis(args.destination.axis)\n }));\n};\n\nvar getShouldAnimate = function getShouldAnimate(id, last, forceShouldAnimate) {\n if (typeof forceShouldAnimate === 'boolean') {\n return forceShouldAnimate;\n }\n\n if (!last) {\n return true;\n }\n\n var invisible = last.invisible,\n visible = last.visible;\n\n if (invisible[id]) {\n return false;\n }\n\n var previous = visible[id];\n return previous ? previous.shouldAnimate : true;\n};\n\nfunction getTarget(draggable, displacedBy) {\n var marginBox = draggable.page.marginBox;\n var expandBy = {\n top: displacedBy.point.y,\n right: 0,\n bottom: 0,\n left: displacedBy.point.x\n };\n return getRect(expand(marginBox, expandBy));\n}\n\nfunction getDisplacementGroups(_ref) {\n var afterDragging = _ref.afterDragging,\n destination = _ref.destination,\n displacedBy = _ref.displacedBy,\n viewport = _ref.viewport,\n forceShouldAnimate = _ref.forceShouldAnimate,\n last = _ref.last;\n return afterDragging.reduce(function process(groups, draggable) {\n var target = getTarget(draggable, displacedBy);\n var id = draggable.descriptor.id;\n groups.all.push(id);\n var isVisible = isPartiallyVisible({\n target: target,\n destination: destination,\n viewport: viewport,\n withDroppableDisplacement: true\n });\n\n if (!isVisible) {\n groups.invisible[draggable.descriptor.id] = true;\n return groups;\n }\n\n var shouldAnimate = getShouldAnimate(id, last, forceShouldAnimate);\n var displacement = {\n draggableId: id,\n shouldAnimate: shouldAnimate\n };\n groups.visible[id] = displacement;\n return groups;\n }, {\n all: [],\n visible: {},\n invisible: {}\n });\n}\n\nfunction getIndexOfLastItem(draggables, options) {\n if (!draggables.length) {\n return 0;\n }\n\n var indexOfLastItem = draggables[draggables.length - 1].descriptor.index;\n return options.inHomeList ? indexOfLastItem : indexOfLastItem + 1;\n}\n\nfunction goAtEnd(_ref) {\n var insideDestination = _ref.insideDestination,\n inHomeList = _ref.inHomeList,\n displacedBy = _ref.displacedBy,\n destination = _ref.destination;\n var newIndex = getIndexOfLastItem(insideDestination, {\n inHomeList: inHomeList\n });\n return {\n displaced: emptyGroups,\n displacedBy: displacedBy,\n at: {\n type: 'REORDER',\n destination: {\n droppableId: destination.descriptor.id,\n index: newIndex\n }\n }\n };\n}\n\nfunction calculateReorderImpact(_ref2) {\n var draggable = _ref2.draggable,\n insideDestination = _ref2.insideDestination,\n destination = _ref2.destination,\n viewport = _ref2.viewport,\n displacedBy = _ref2.displacedBy,\n last = _ref2.last,\n index = _ref2.index,\n forceShouldAnimate = _ref2.forceShouldAnimate;\n var inHomeList = isHomeOf(draggable, destination);\n\n if (index == null) {\n return goAtEnd({\n insideDestination: insideDestination,\n inHomeList: inHomeList,\n displacedBy: displacedBy,\n destination: destination\n });\n }\n\n var match = find(insideDestination, function (item) {\n return item.descriptor.index === index;\n });\n\n if (!match) {\n return goAtEnd({\n insideDestination: insideDestination,\n inHomeList: inHomeList,\n displacedBy: displacedBy,\n destination: destination\n });\n }\n\n var withoutDragging = removeDraggableFromList(draggable, insideDestination);\n var sliceFrom = insideDestination.indexOf(match);\n var impacted = withoutDragging.slice(sliceFrom);\n var displaced = getDisplacementGroups({\n afterDragging: impacted,\n destination: destination,\n displacedBy: displacedBy,\n last: last,\n viewport: viewport.frame,\n forceShouldAnimate: forceShouldAnimate\n });\n return {\n displaced: displaced,\n displacedBy: displacedBy,\n at: {\n type: 'REORDER',\n destination: {\n droppableId: destination.descriptor.id,\n index: index\n }\n }\n };\n}\n\nfunction didStartAfterCritical(draggableId, afterCritical) {\n return Boolean(afterCritical.effected[draggableId]);\n}\n\nvar fromCombine = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n destination = _ref.destination,\n draggables = _ref.draggables,\n combine = _ref.combine,\n afterCritical = _ref.afterCritical;\n\n if (!destination.isCombineEnabled) {\n return null;\n }\n\n var combineId = combine.draggableId;\n var combineWith = draggables[combineId];\n var combineWithIndex = combineWith.descriptor.index;\n var didCombineWithStartAfterCritical = didStartAfterCritical(combineId, afterCritical);\n\n if (didCombineWithStartAfterCritical) {\n if (isMovingForward) {\n return combineWithIndex;\n }\n\n return combineWithIndex - 1;\n }\n\n if (isMovingForward) {\n return combineWithIndex + 1;\n }\n\n return combineWithIndex;\n});\n\nvar fromReorder = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n isInHomeList = _ref.isInHomeList,\n insideDestination = _ref.insideDestination,\n location = _ref.location;\n\n if (!insideDestination.length) {\n return null;\n }\n\n var currentIndex = location.index;\n var proposedIndex = isMovingForward ? currentIndex + 1 : currentIndex - 1;\n var firstIndex = insideDestination[0].descriptor.index;\n var lastIndex = insideDestination[insideDestination.length - 1].descriptor.index;\n var upperBound = isInHomeList ? lastIndex : lastIndex + 1;\n\n if (proposedIndex < firstIndex) {\n return null;\n }\n\n if (proposedIndex > upperBound) {\n return null;\n }\n\n return proposedIndex;\n});\n\nvar moveToNextIndex = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n isInHomeList = _ref.isInHomeList,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n previousImpact = _ref.previousImpact,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var wasAt = previousImpact.at;\n !wasAt ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot move in direction without previous impact location') : invariant(false) : void 0;\n\n if (wasAt.type === 'REORDER') {\n var _newIndex = fromReorder({\n isMovingForward: isMovingForward,\n isInHomeList: isInHomeList,\n location: wasAt.destination,\n insideDestination: insideDestination\n });\n\n if (_newIndex == null) {\n return null;\n }\n\n return calculateReorderImpact({\n draggable: draggable,\n insideDestination: insideDestination,\n destination: destination,\n viewport: viewport,\n last: previousImpact.displaced,\n displacedBy: previousImpact.displacedBy,\n index: _newIndex\n });\n }\n\n var newIndex = fromCombine({\n isMovingForward: isMovingForward,\n destination: destination,\n displaced: previousImpact.displaced,\n draggables: draggables,\n combine: wasAt.combine,\n afterCritical: afterCritical\n });\n\n if (newIndex == null) {\n return null;\n }\n\n return calculateReorderImpact({\n draggable: draggable,\n insideDestination: insideDestination,\n destination: destination,\n viewport: viewport,\n last: previousImpact.displaced,\n displacedBy: previousImpact.displacedBy,\n index: newIndex\n });\n});\n\nvar getCombinedItemDisplacement = (function (_ref) {\n var displaced = _ref.displaced,\n afterCritical = _ref.afterCritical,\n combineWith = _ref.combineWith,\n displacedBy = _ref.displacedBy;\n var isDisplaced = Boolean(displaced.visible[combineWith] || displaced.invisible[combineWith]);\n\n if (didStartAfterCritical(combineWith, afterCritical)) {\n return isDisplaced ? origin : negate(displacedBy.point);\n }\n\n return isDisplaced ? displacedBy.point : origin;\n});\n\nvar whenCombining = (function (_ref) {\n var afterCritical = _ref.afterCritical,\n impact = _ref.impact,\n draggables = _ref.draggables;\n var combine = tryGetCombine(impact);\n !combine ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n var combineWith = combine.draggableId;\n var center = draggables[combineWith].page.borderBox.center;\n var displaceBy = getCombinedItemDisplacement({\n displaced: impact.displaced,\n afterCritical: afterCritical,\n combineWith: combineWith,\n displacedBy: impact.displacedBy\n });\n return add(center, displaceBy);\n});\n\nvar distanceFromStartToBorderBoxCenter = function distanceFromStartToBorderBoxCenter(axis, box) {\n return box.margin[axis.start] + box.borderBox[axis.size] / 2;\n};\n\nvar distanceFromEndToBorderBoxCenter = function distanceFromEndToBorderBoxCenter(axis, box) {\n return box.margin[axis.end] + box.borderBox[axis.size] / 2;\n};\n\nvar getCrossAxisBorderBoxCenter = function getCrossAxisBorderBoxCenter(axis, target, isMoving) {\n return target[axis.crossAxisStart] + isMoving.margin[axis.crossAxisStart] + isMoving.borderBox[axis.crossAxisSize] / 2;\n};\n\nvar goAfter = function goAfter(_ref) {\n var axis = _ref.axis,\n moveRelativeTo = _ref.moveRelativeTo,\n isMoving = _ref.isMoving;\n return patch(axis.line, moveRelativeTo.marginBox[axis.end] + distanceFromStartToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveRelativeTo.marginBox, isMoving));\n};\nvar goBefore = function goBefore(_ref2) {\n var axis = _ref2.axis,\n moveRelativeTo = _ref2.moveRelativeTo,\n isMoving = _ref2.isMoving;\n return patch(axis.line, moveRelativeTo.marginBox[axis.start] - distanceFromEndToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveRelativeTo.marginBox, isMoving));\n};\nvar goIntoStart = function goIntoStart(_ref3) {\n var axis = _ref3.axis,\n moveInto = _ref3.moveInto,\n isMoving = _ref3.isMoving;\n return patch(axis.line, moveInto.contentBox[axis.start] + distanceFromStartToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveInto.contentBox, isMoving));\n};\n\nvar whenReordering = (function (_ref) {\n var impact = _ref.impact,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n droppable = _ref.droppable,\n afterCritical = _ref.afterCritical;\n var insideDestination = getDraggablesInsideDroppable(droppable.descriptor.id, draggables);\n var draggablePage = draggable.page;\n var axis = droppable.axis;\n\n if (!insideDestination.length) {\n return goIntoStart({\n axis: axis,\n moveInto: droppable.page,\n isMoving: draggablePage\n });\n }\n\n var displaced = impact.displaced,\n displacedBy = impact.displacedBy;\n var closestAfter = displaced.all[0];\n\n if (closestAfter) {\n var closest = draggables[closestAfter];\n\n if (didStartAfterCritical(closestAfter, afterCritical)) {\n return goBefore({\n axis: axis,\n moveRelativeTo: closest.page,\n isMoving: draggablePage\n });\n }\n\n var withDisplacement = offset(closest.page, displacedBy.point);\n return goBefore({\n axis: axis,\n moveRelativeTo: withDisplacement,\n isMoving: draggablePage\n });\n }\n\n var last = insideDestination[insideDestination.length - 1];\n\n if (last.descriptor.id === draggable.descriptor.id) {\n return draggablePage.borderBox.center;\n }\n\n if (didStartAfterCritical(last.descriptor.id, afterCritical)) {\n var page = offset(last.page, negate(afterCritical.displacedBy.point));\n return goAfter({\n axis: axis,\n moveRelativeTo: page,\n isMoving: draggablePage\n });\n }\n\n return goAfter({\n axis: axis,\n moveRelativeTo: last.page,\n isMoving: draggablePage\n });\n});\n\nvar withDroppableDisplacement = (function (droppable, point) {\n var frame = droppable.frame;\n\n if (!frame) {\n return point;\n }\n\n return add(point, frame.scroll.diff.displacement);\n});\n\nvar getResultWithoutDroppableDisplacement = function getResultWithoutDroppableDisplacement(_ref) {\n var impact = _ref.impact,\n draggable = _ref.draggable,\n droppable = _ref.droppable,\n draggables = _ref.draggables,\n afterCritical = _ref.afterCritical;\n var original = draggable.page.borderBox.center;\n var at = impact.at;\n\n if (!droppable) {\n return original;\n }\n\n if (!at) {\n return original;\n }\n\n if (at.type === 'REORDER') {\n return whenReordering({\n impact: impact,\n draggable: draggable,\n draggables: draggables,\n droppable: droppable,\n afterCritical: afterCritical\n });\n }\n\n return whenCombining({\n impact: impact,\n draggables: draggables,\n afterCritical: afterCritical\n });\n};\n\nvar getPageBorderBoxCenterFromImpact = (function (args) {\n var withoutDisplacement = getResultWithoutDroppableDisplacement(args);\n var droppable = args.droppable;\n var withDisplacement = droppable ? withDroppableDisplacement(droppable, withoutDisplacement) : withoutDisplacement;\n return withDisplacement;\n});\n\nvar scrollViewport = (function (viewport, newScroll) {\n var diff = subtract(newScroll, viewport.scroll.initial);\n var displacement = negate(diff);\n var frame = getRect({\n top: newScroll.y,\n bottom: newScroll.y + viewport.frame.height,\n left: newScroll.x,\n right: newScroll.x + viewport.frame.width\n });\n var updated = {\n frame: frame,\n scroll: {\n initial: viewport.scroll.initial,\n max: viewport.scroll.max,\n current: newScroll,\n diff: {\n value: diff,\n displacement: displacement\n }\n }\n };\n return updated;\n});\n\nfunction getDraggables(ids, draggables) {\n return ids.map(function (id) {\n return draggables[id];\n });\n}\n\nfunction tryGetVisible(id, groups) {\n for (var i = 0; i < groups.length; i++) {\n var displacement = groups[i].visible[id];\n\n if (displacement) {\n return displacement;\n }\n }\n\n return null;\n}\n\nvar speculativelyIncrease = (function (_ref) {\n var impact = _ref.impact,\n viewport = _ref.viewport,\n destination = _ref.destination,\n draggables = _ref.draggables,\n maxScrollChange = _ref.maxScrollChange;\n var scrolledViewport = scrollViewport(viewport, add(viewport.scroll.current, maxScrollChange));\n var scrolledDroppable = destination.frame ? scrollDroppable(destination, add(destination.frame.scroll.current, maxScrollChange)) : destination;\n var last = impact.displaced;\n var withViewportScroll = getDisplacementGroups({\n afterDragging: getDraggables(last.all, draggables),\n destination: destination,\n displacedBy: impact.displacedBy,\n viewport: scrolledViewport.frame,\n last: last,\n forceShouldAnimate: false\n });\n var withDroppableScroll = getDisplacementGroups({\n afterDragging: getDraggables(last.all, draggables),\n destination: scrolledDroppable,\n displacedBy: impact.displacedBy,\n viewport: viewport.frame,\n last: last,\n forceShouldAnimate: false\n });\n var invisible = {};\n var visible = {};\n var groups = [last, withViewportScroll, withDroppableScroll];\n last.all.forEach(function (id) {\n var displacement = tryGetVisible(id, groups);\n\n if (displacement) {\n visible[id] = displacement;\n return;\n }\n\n invisible[id] = true;\n });\n\n var newImpact = _extends({}, impact, {\n displaced: {\n all: last.all,\n invisible: invisible,\n visible: visible\n }\n });\n\n return newImpact;\n});\n\nvar withViewportDisplacement = (function (viewport, point) {\n return add(viewport.scroll.diff.displacement, point);\n});\n\nvar getClientFromPageBorderBoxCenter = (function (_ref) {\n var pageBorderBoxCenter = _ref.pageBorderBoxCenter,\n draggable = _ref.draggable,\n viewport = _ref.viewport;\n var withoutPageScrollChange = withViewportDisplacement(viewport, pageBorderBoxCenter);\n var offset = subtract(withoutPageScrollChange, draggable.page.borderBox.center);\n return add(draggable.client.borderBox.center, offset);\n});\n\nvar isTotallyVisibleInNewLocation = (function (_ref) {\n var draggable = _ref.draggable,\n destination = _ref.destination,\n newPageBorderBoxCenter = _ref.newPageBorderBoxCenter,\n viewport = _ref.viewport,\n withDroppableDisplacement = _ref.withDroppableDisplacement,\n _ref$onlyOnMainAxis = _ref.onlyOnMainAxis,\n onlyOnMainAxis = _ref$onlyOnMainAxis === void 0 ? false : _ref$onlyOnMainAxis;\n var changeNeeded = subtract(newPageBorderBoxCenter, draggable.page.borderBox.center);\n var shifted = offsetByPosition(draggable.page.borderBox, changeNeeded);\n var args = {\n target: shifted,\n destination: destination,\n withDroppableDisplacement: withDroppableDisplacement,\n viewport: viewport\n };\n return onlyOnMainAxis ? isTotallyVisibleOnAxis(args) : isTotallyVisible(args);\n});\n\nvar moveToNextPlace = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n draggable = _ref.draggable,\n destination = _ref.destination,\n draggables = _ref.draggables,\n previousImpact = _ref.previousImpact,\n viewport = _ref.viewport,\n previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter,\n previousClientSelection = _ref.previousClientSelection,\n afterCritical = _ref.afterCritical;\n\n if (!destination.isEnabled) {\n return null;\n }\n\n var insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n var isInHomeList = isHomeOf(draggable, destination);\n var impact = moveToNextCombine({\n isMovingForward: isMovingForward,\n draggable: draggable,\n destination: destination,\n insideDestination: insideDestination,\n previousImpact: previousImpact\n }) || moveToNextIndex({\n isMovingForward: isMovingForward,\n isInHomeList: isInHomeList,\n draggable: draggable,\n draggables: draggables,\n destination: destination,\n insideDestination: insideDestination,\n previousImpact: previousImpact,\n viewport: viewport,\n afterCritical: afterCritical\n });\n\n if (!impact) {\n return null;\n }\n\n var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact: impact,\n draggable: draggable,\n droppable: destination,\n draggables: draggables,\n afterCritical: afterCritical\n });\n var isVisibleInNewLocation = isTotallyVisibleInNewLocation({\n draggable: draggable,\n destination: destination,\n newPageBorderBoxCenter: pageBorderBoxCenter,\n viewport: viewport.frame,\n withDroppableDisplacement: false,\n onlyOnMainAxis: true\n });\n\n if (isVisibleInNewLocation) {\n var clientSelection = getClientFromPageBorderBoxCenter({\n pageBorderBoxCenter: pageBorderBoxCenter,\n draggable: draggable,\n viewport: viewport\n });\n return {\n clientSelection: clientSelection,\n impact: impact,\n scrollJumpRequest: null\n };\n }\n\n var distance = subtract(pageBorderBoxCenter, previousPageBorderBoxCenter);\n var cautious = speculativelyIncrease({\n impact: impact,\n viewport: viewport,\n destination: destination,\n draggables: draggables,\n maxScrollChange: distance\n });\n return {\n clientSelection: previousClientSelection,\n impact: cautious,\n scrollJumpRequest: distance\n };\n});\n\nvar getKnownActive = function getKnownActive(droppable) {\n var rect = droppable.subject.active;\n !rect ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot get clipped area from droppable') : invariant(false) : void 0;\n return rect;\n};\n\nvar getBestCrossAxisDroppable = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n pageBorderBoxCenter = _ref.pageBorderBoxCenter,\n source = _ref.source,\n droppables = _ref.droppables,\n viewport = _ref.viewport;\n var active = source.subject.active;\n\n if (!active) {\n return null;\n }\n\n var axis = source.axis;\n var isBetweenSourceClipped = isWithin(active[axis.start], active[axis.end]);\n var candidates = toDroppableList(droppables).filter(function (droppable) {\n return droppable !== source;\n }).filter(function (droppable) {\n return droppable.isEnabled;\n }).filter(function (droppable) {\n return Boolean(droppable.subject.active);\n }).filter(function (droppable) {\n return isPartiallyVisibleThroughFrame(viewport.frame)(getKnownActive(droppable));\n }).filter(function (droppable) {\n var activeOfTarget = getKnownActive(droppable);\n\n if (isMovingForward) {\n return active[axis.crossAxisEnd] < activeOfTarget[axis.crossAxisEnd];\n }\n\n return activeOfTarget[axis.crossAxisStart] < active[axis.crossAxisStart];\n }).filter(function (droppable) {\n var activeOfTarget = getKnownActive(droppable);\n var isBetweenDestinationClipped = isWithin(activeOfTarget[axis.start], activeOfTarget[axis.end]);\n return isBetweenSourceClipped(activeOfTarget[axis.start]) || isBetweenSourceClipped(activeOfTarget[axis.end]) || isBetweenDestinationClipped(active[axis.start]) || isBetweenDestinationClipped(active[axis.end]);\n }).sort(function (a, b) {\n var first = getKnownActive(a)[axis.crossAxisStart];\n var second = getKnownActive(b)[axis.crossAxisStart];\n\n if (isMovingForward) {\n return first - second;\n }\n\n return second - first;\n }).filter(function (droppable, index, array) {\n return getKnownActive(droppable)[axis.crossAxisStart] === getKnownActive(array[0])[axis.crossAxisStart];\n });\n\n if (!candidates.length) {\n return null;\n }\n\n if (candidates.length === 1) {\n return candidates[0];\n }\n\n var contains = candidates.filter(function (droppable) {\n var isWithinDroppable = isWithin(getKnownActive(droppable)[axis.start], getKnownActive(droppable)[axis.end]);\n return isWithinDroppable(pageBorderBoxCenter[axis.line]);\n });\n\n if (contains.length === 1) {\n return contains[0];\n }\n\n if (contains.length > 1) {\n return contains.sort(function (a, b) {\n return getKnownActive(a)[axis.start] - getKnownActive(b)[axis.start];\n })[0];\n }\n\n return candidates.sort(function (a, b) {\n var first = closest(pageBorderBoxCenter, getCorners(getKnownActive(a)));\n var second = closest(pageBorderBoxCenter, getCorners(getKnownActive(b)));\n\n if (first !== second) {\n return first - second;\n }\n\n return getKnownActive(a)[axis.start] - getKnownActive(b)[axis.start];\n })[0];\n});\n\nvar getCurrentPageBorderBoxCenter = function getCurrentPageBorderBoxCenter(draggable, afterCritical) {\n var original = draggable.page.borderBox.center;\n return didStartAfterCritical(draggable.descriptor.id, afterCritical) ? subtract(original, afterCritical.displacedBy.point) : original;\n};\nvar getCurrentPageBorderBox = function getCurrentPageBorderBox(draggable, afterCritical) {\n var original = draggable.page.borderBox;\n return didStartAfterCritical(draggable.descriptor.id, afterCritical) ? offsetByPosition(original, negate(afterCritical.displacedBy.point)) : original;\n};\n\nvar getClosestDraggable = (function (_ref) {\n var pageBorderBoxCenter = _ref.pageBorderBoxCenter,\n viewport = _ref.viewport,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n afterCritical = _ref.afterCritical;\n var sorted = insideDestination.filter(function (draggable) {\n return isTotallyVisible({\n target: getCurrentPageBorderBox(draggable, afterCritical),\n destination: destination,\n viewport: viewport.frame,\n withDroppableDisplacement: true\n });\n }).sort(function (a, b) {\n var distanceToA = distance(pageBorderBoxCenter, withDroppableDisplacement(destination, getCurrentPageBorderBoxCenter(a, afterCritical)));\n var distanceToB = distance(pageBorderBoxCenter, withDroppableDisplacement(destination, getCurrentPageBorderBoxCenter(b, afterCritical)));\n\n if (distanceToA < distanceToB) {\n return -1;\n }\n\n if (distanceToB < distanceToA) {\n return 1;\n }\n\n return a.descriptor.index - b.descriptor.index;\n });\n return sorted[0] || null;\n});\n\nvar getDisplacedBy = memoizeOne(function getDisplacedBy(axis, displaceBy) {\n var displacement = displaceBy[axis.line];\n return {\n value: displacement,\n point: patch(axis.line, displacement)\n };\n});\n\nvar getRequiredGrowthForPlaceholder = function getRequiredGrowthForPlaceholder(droppable, placeholderSize, draggables) {\n var axis = droppable.axis;\n\n if (droppable.descriptor.mode === 'virtual') {\n return patch(axis.line, placeholderSize[axis.line]);\n }\n\n var availableSpace = droppable.subject.page.contentBox[axis.size];\n var insideDroppable = getDraggablesInsideDroppable(droppable.descriptor.id, draggables);\n var spaceUsed = insideDroppable.reduce(function (sum, dimension) {\n return sum + dimension.client.marginBox[axis.size];\n }, 0);\n var requiredSpace = spaceUsed + placeholderSize[axis.line];\n var needsToGrowBy = requiredSpace - availableSpace;\n\n if (needsToGrowBy <= 0) {\n return null;\n }\n\n return patch(axis.line, needsToGrowBy);\n};\n\nvar withMaxScroll = function withMaxScroll(frame, max) {\n return _extends({}, frame, {\n scroll: _extends({}, frame.scroll, {\n max: max\n })\n });\n};\n\nvar addPlaceholder = function addPlaceholder(droppable, draggable, draggables) {\n var frame = droppable.frame;\n !!isHomeOf(draggable, droppable) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should not add placeholder space to home list') : invariant(false) : void 0;\n !!droppable.subject.withPlaceholder ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot add placeholder size to a subject when it already has one') : invariant(false) : void 0;\n var placeholderSize = getDisplacedBy(droppable.axis, draggable.displaceBy).point;\n var requiredGrowth = getRequiredGrowthForPlaceholder(droppable, placeholderSize, draggables);\n var added = {\n placeholderSize: placeholderSize,\n increasedBy: requiredGrowth,\n oldFrameMaxScroll: droppable.frame ? droppable.frame.scroll.max : null\n };\n\n if (!frame) {\n var _subject = getSubject({\n page: droppable.subject.page,\n withPlaceholder: added,\n axis: droppable.axis,\n frame: droppable.frame\n });\n\n return _extends({}, droppable, {\n subject: _subject\n });\n }\n\n var maxScroll = requiredGrowth ? add(frame.scroll.max, requiredGrowth) : frame.scroll.max;\n var newFrame = withMaxScroll(frame, maxScroll);\n var subject = getSubject({\n page: droppable.subject.page,\n withPlaceholder: added,\n axis: droppable.axis,\n frame: newFrame\n });\n return _extends({}, droppable, {\n subject: subject,\n frame: newFrame\n });\n};\nvar removePlaceholder = function removePlaceholder(droppable) {\n var added = droppable.subject.withPlaceholder;\n !added ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot remove placeholder form subject when there was none') : invariant(false) : void 0;\n var frame = droppable.frame;\n\n if (!frame) {\n var _subject2 = getSubject({\n page: droppable.subject.page,\n axis: droppable.axis,\n frame: null,\n withPlaceholder: null\n });\n\n return _extends({}, droppable, {\n subject: _subject2\n });\n }\n\n var oldMaxScroll = added.oldFrameMaxScroll;\n !oldMaxScroll ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected droppable with frame to have old max frame scroll when removing placeholder') : invariant(false) : void 0;\n var newFrame = withMaxScroll(frame, oldMaxScroll);\n var subject = getSubject({\n page: droppable.subject.page,\n axis: droppable.axis,\n frame: newFrame,\n withPlaceholder: null\n });\n return _extends({}, droppable, {\n subject: subject,\n frame: newFrame\n });\n};\n\nvar moveToNewDroppable = (function (_ref) {\n var previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter,\n moveRelativeTo = _ref.moveRelativeTo,\n insideDestination = _ref.insideDestination,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n destination = _ref.destination,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n\n if (!moveRelativeTo) {\n if (insideDestination.length) {\n return null;\n }\n\n var proposed = {\n displaced: emptyGroups,\n displacedBy: noDisplacedBy,\n at: {\n type: 'REORDER',\n destination: {\n droppableId: destination.descriptor.id,\n index: 0\n }\n }\n };\n var proposedPageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact: proposed,\n draggable: draggable,\n droppable: destination,\n draggables: draggables,\n afterCritical: afterCritical\n });\n var withPlaceholder = isHomeOf(draggable, destination) ? destination : addPlaceholder(destination, draggable, draggables);\n var isVisibleInNewLocation = isTotallyVisibleInNewLocation({\n draggable: draggable,\n destination: withPlaceholder,\n newPageBorderBoxCenter: proposedPageBorderBoxCenter,\n viewport: viewport.frame,\n withDroppableDisplacement: false,\n onlyOnMainAxis: true\n });\n return isVisibleInNewLocation ? proposed : null;\n }\n\n var isGoingBeforeTarget = Boolean(previousPageBorderBoxCenter[destination.axis.line] <= moveRelativeTo.page.borderBox.center[destination.axis.line]);\n\n var proposedIndex = function () {\n var relativeTo = moveRelativeTo.descriptor.index;\n\n if (moveRelativeTo.descriptor.id === draggable.descriptor.id) {\n return relativeTo;\n }\n\n if (isGoingBeforeTarget) {\n return relativeTo;\n }\n\n return relativeTo + 1;\n }();\n\n var displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n return calculateReorderImpact({\n draggable: draggable,\n insideDestination: insideDestination,\n destination: destination,\n viewport: viewport,\n displacedBy: displacedBy,\n last: emptyGroups,\n index: proposedIndex\n });\n});\n\nvar moveCrossAxis = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter,\n draggable = _ref.draggable,\n isOver = _ref.isOver,\n draggables = _ref.draggables,\n droppables = _ref.droppables,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var destination = getBestCrossAxisDroppable({\n isMovingForward: isMovingForward,\n pageBorderBoxCenter: previousPageBorderBoxCenter,\n source: isOver,\n droppables: droppables,\n viewport: viewport\n });\n\n if (!destination) {\n return null;\n }\n\n var insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n var moveRelativeTo = getClosestDraggable({\n pageBorderBoxCenter: previousPageBorderBoxCenter,\n viewport: viewport,\n destination: destination,\n insideDestination: insideDestination,\n afterCritical: afterCritical\n });\n var impact = moveToNewDroppable({\n previousPageBorderBoxCenter: previousPageBorderBoxCenter,\n destination: destination,\n draggable: draggable,\n draggables: draggables,\n moveRelativeTo: moveRelativeTo,\n insideDestination: insideDestination,\n viewport: viewport,\n afterCritical: afterCritical\n });\n\n if (!impact) {\n return null;\n }\n\n var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact: impact,\n draggable: draggable,\n droppable: destination,\n draggables: draggables,\n afterCritical: afterCritical\n });\n var clientSelection = getClientFromPageBorderBoxCenter({\n pageBorderBoxCenter: pageBorderBoxCenter,\n draggable: draggable,\n viewport: viewport\n });\n return {\n clientSelection: clientSelection,\n impact: impact,\n scrollJumpRequest: null\n };\n});\n\nvar whatIsDraggedOver = (function (impact) {\n var at = impact.at;\n\n if (!at) {\n return null;\n }\n\n if (at.type === 'REORDER') {\n return at.destination.droppableId;\n }\n\n return at.combine.droppableId;\n});\n\nvar getDroppableOver = function getDroppableOver(impact, droppables) {\n var id = whatIsDraggedOver(impact);\n return id ? droppables[id] : null;\n};\n\nvar moveInDirection = (function (_ref) {\n var state = _ref.state,\n type = _ref.type;\n var isActuallyOver = getDroppableOver(state.impact, state.dimensions.droppables);\n var isMainAxisMovementAllowed = Boolean(isActuallyOver);\n var home = state.dimensions.droppables[state.critical.droppable.id];\n var isOver = isActuallyOver || home;\n var direction = isOver.axis.direction;\n var isMovingOnMainAxis = direction === 'vertical' && (type === 'MOVE_UP' || type === 'MOVE_DOWN') || direction === 'horizontal' && (type === 'MOVE_LEFT' || type === 'MOVE_RIGHT');\n\n if (isMovingOnMainAxis && !isMainAxisMovementAllowed) {\n return null;\n }\n\n var isMovingForward = type === 'MOVE_DOWN' || type === 'MOVE_RIGHT';\n var draggable = state.dimensions.draggables[state.critical.draggable.id];\n var previousPageBorderBoxCenter = state.current.page.borderBoxCenter;\n var _state$dimensions = state.dimensions,\n draggables = _state$dimensions.draggables,\n droppables = _state$dimensions.droppables;\n return isMovingOnMainAxis ? moveToNextPlace({\n isMovingForward: isMovingForward,\n previousPageBorderBoxCenter: previousPageBorderBoxCenter,\n draggable: draggable,\n destination: isOver,\n draggables: draggables,\n viewport: state.viewport,\n previousClientSelection: state.current.client.selection,\n previousImpact: state.impact,\n afterCritical: state.afterCritical\n }) : moveCrossAxis({\n isMovingForward: isMovingForward,\n previousPageBorderBoxCenter: previousPageBorderBoxCenter,\n draggable: draggable,\n isOver: isOver,\n draggables: draggables,\n droppables: droppables,\n viewport: state.viewport,\n afterCritical: state.afterCritical\n });\n});\n\nfunction isMovementAllowed(state) {\n return state.phase === 'DRAGGING' || state.phase === 'COLLECTING';\n}\n\nfunction isPositionInFrame(frame) {\n var isWithinVertical = isWithin(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin(frame.left, frame.right);\n return function run(point) {\n return isWithinVertical(point.y) && isWithinHorizontal(point.x);\n };\n}\n\nfunction getHasOverlap(first, second) {\n return first.left < second.right && first.right > second.left && first.top < second.bottom && first.bottom > second.top;\n}\n\nfunction getFurthestAway(_ref) {\n var pageBorderBox = _ref.pageBorderBox,\n draggable = _ref.draggable,\n candidates = _ref.candidates;\n var startCenter = draggable.page.borderBox.center;\n var sorted = candidates.map(function (candidate) {\n var axis = candidate.axis;\n var target = patch(candidate.axis.line, pageBorderBox.center[axis.line], candidate.page.borderBox.center[axis.crossAxisLine]);\n return {\n id: candidate.descriptor.id,\n distance: distance(startCenter, target)\n };\n }).sort(function (a, b) {\n return b.distance - a.distance;\n });\n return sorted[0] ? sorted[0].id : null;\n}\n\nfunction getDroppableOver$1(_ref2) {\n var pageBorderBox = _ref2.pageBorderBox,\n draggable = _ref2.draggable,\n droppables = _ref2.droppables;\n var candidates = toDroppableList(droppables).filter(function (item) {\n if (!item.isEnabled) {\n return false;\n }\n\n var active = item.subject.active;\n\n if (!active) {\n return false;\n }\n\n if (!getHasOverlap(pageBorderBox, active)) {\n return false;\n }\n\n if (isPositionInFrame(active)(pageBorderBox.center)) {\n return true;\n }\n\n var axis = item.axis;\n var childCenter = active.center[axis.crossAxisLine];\n var crossAxisStart = pageBorderBox[axis.crossAxisStart];\n var crossAxisEnd = pageBorderBox[axis.crossAxisEnd];\n var isContained = isWithin(active[axis.crossAxisStart], active[axis.crossAxisEnd]);\n var isStartContained = isContained(crossAxisStart);\n var isEndContained = isContained(crossAxisEnd);\n\n if (!isStartContained && !isEndContained) {\n return true;\n }\n\n if (isStartContained) {\n return crossAxisStart < childCenter;\n }\n\n return crossAxisEnd > childCenter;\n });\n\n if (!candidates.length) {\n return null;\n }\n\n if (candidates.length === 1) {\n return candidates[0].descriptor.id;\n }\n\n return getFurthestAway({\n pageBorderBox: pageBorderBox,\n draggable: draggable,\n candidates: candidates\n });\n}\n\nvar offsetRectByPosition = function offsetRectByPosition(rect, point) {\n return getRect(offsetByPosition(rect, point));\n};\n\nvar withDroppableScroll = (function (droppable, area) {\n var frame = droppable.frame;\n\n if (!frame) {\n return area;\n }\n\n return offsetRectByPosition(area, frame.scroll.diff.value);\n});\n\nfunction getIsDisplaced(_ref) {\n var displaced = _ref.displaced,\n id = _ref.id;\n return Boolean(displaced.visible[id] || displaced.invisible[id]);\n}\n\nfunction atIndex(_ref) {\n var draggable = _ref.draggable,\n closest = _ref.closest,\n inHomeList = _ref.inHomeList;\n\n if (!closest) {\n return null;\n }\n\n if (!inHomeList) {\n return closest.descriptor.index;\n }\n\n if (closest.descriptor.index > draggable.descriptor.index) {\n return closest.descriptor.index - 1;\n }\n\n return closest.descriptor.index;\n}\n\nvar getReorderImpact = (function (_ref2) {\n var targetRect = _ref2.pageBorderBoxWithDroppableScroll,\n draggable = _ref2.draggable,\n destination = _ref2.destination,\n insideDestination = _ref2.insideDestination,\n last = _ref2.last,\n viewport = _ref2.viewport,\n afterCritical = _ref2.afterCritical;\n var axis = destination.axis;\n var displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n var displacement = displacedBy.value;\n var targetStart = targetRect[axis.start];\n var targetEnd = targetRect[axis.end];\n var withoutDragging = removeDraggableFromList(draggable, insideDestination);\n var closest = find(withoutDragging, function (child) {\n var id = child.descriptor.id;\n var childCenter = child.page.borderBox.center[axis.line];\n var didStartAfterCritical$1 = didStartAfterCritical(id, afterCritical);\n var isDisplaced = getIsDisplaced({\n displaced: last,\n id: id\n });\n\n if (didStartAfterCritical$1) {\n if (isDisplaced) {\n return targetEnd <= childCenter;\n }\n\n return targetStart < childCenter - displacement;\n }\n\n if (isDisplaced) {\n return targetEnd <= childCenter + displacement;\n }\n\n return targetStart < childCenter;\n });\n var newIndex = atIndex({\n draggable: draggable,\n closest: closest,\n inHomeList: isHomeOf(draggable, destination)\n });\n return calculateReorderImpact({\n draggable: draggable,\n insideDestination: insideDestination,\n destination: destination,\n viewport: viewport,\n last: last,\n displacedBy: displacedBy,\n index: newIndex\n });\n});\n\nvar combineThresholdDivisor = 4;\nvar getCombineImpact = (function (_ref) {\n var draggable = _ref.draggable,\n targetRect = _ref.pageBorderBoxWithDroppableScroll,\n previousImpact = _ref.previousImpact,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n afterCritical = _ref.afterCritical;\n\n if (!destination.isCombineEnabled) {\n return null;\n }\n\n var axis = destination.axis;\n var displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n var displacement = displacedBy.value;\n var targetStart = targetRect[axis.start];\n var targetEnd = targetRect[axis.end];\n var withoutDragging = removeDraggableFromList(draggable, insideDestination);\n var combineWith = find(withoutDragging, function (child) {\n var id = child.descriptor.id;\n var childRect = child.page.borderBox;\n var childSize = childRect[axis.size];\n var threshold = childSize / combineThresholdDivisor;\n var didStartAfterCritical$1 = didStartAfterCritical(id, afterCritical);\n var isDisplaced = getIsDisplaced({\n displaced: previousImpact.displaced,\n id: id\n });\n\n if (didStartAfterCritical$1) {\n if (isDisplaced) {\n return targetEnd > childRect[axis.start] + threshold && targetEnd < childRect[axis.end] - threshold;\n }\n\n return targetStart > childRect[axis.start] - displacement + threshold && targetStart < childRect[axis.end] - displacement - threshold;\n }\n\n if (isDisplaced) {\n return targetEnd > childRect[axis.start] + displacement + threshold && targetEnd < childRect[axis.end] + displacement - threshold;\n }\n\n return targetStart > childRect[axis.start] + threshold && targetStart < childRect[axis.end] - threshold;\n });\n\n if (!combineWith) {\n return null;\n }\n\n var impact = {\n displacedBy: displacedBy,\n displaced: previousImpact.displaced,\n at: {\n type: 'COMBINE',\n combine: {\n draggableId: combineWith.descriptor.id,\n droppableId: destination.descriptor.id\n }\n }\n };\n return impact;\n});\n\nvar getDragImpact = (function (_ref) {\n var pageOffset = _ref.pageOffset,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n droppables = _ref.droppables,\n previousImpact = _ref.previousImpact,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var pageBorderBox = offsetRectByPosition(draggable.page.borderBox, pageOffset);\n var destinationId = getDroppableOver$1({\n pageBorderBox: pageBorderBox,\n draggable: draggable,\n droppables: droppables\n });\n\n if (!destinationId) {\n return noImpact;\n }\n\n var destination = droppables[destinationId];\n var insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n var pageBorderBoxWithDroppableScroll = withDroppableScroll(destination, pageBorderBox);\n return getCombineImpact({\n pageBorderBoxWithDroppableScroll: pageBorderBoxWithDroppableScroll,\n draggable: draggable,\n previousImpact: previousImpact,\n destination: destination,\n insideDestination: insideDestination,\n afterCritical: afterCritical\n }) || getReorderImpact({\n pageBorderBoxWithDroppableScroll: pageBorderBoxWithDroppableScroll,\n draggable: draggable,\n destination: destination,\n insideDestination: insideDestination,\n last: previousImpact.displaced,\n viewport: viewport,\n afterCritical: afterCritical\n });\n});\n\nvar patchDroppableMap = (function (droppables, updated) {\n var _extends2;\n\n return _extends({}, droppables, (_extends2 = {}, _extends2[updated.descriptor.id] = updated, _extends2));\n});\n\nvar clearUnusedPlaceholder = function clearUnusedPlaceholder(_ref) {\n var previousImpact = _ref.previousImpact,\n impact = _ref.impact,\n droppables = _ref.droppables;\n var last = whatIsDraggedOver(previousImpact);\n var now = whatIsDraggedOver(impact);\n\n if (!last) {\n return droppables;\n }\n\n if (last === now) {\n return droppables;\n }\n\n var lastDroppable = droppables[last];\n\n if (!lastDroppable.subject.withPlaceholder) {\n return droppables;\n }\n\n var updated = removePlaceholder(lastDroppable);\n return patchDroppableMap(droppables, updated);\n};\n\nvar recomputePlaceholders = (function (_ref2) {\n var draggable = _ref2.draggable,\n draggables = _ref2.draggables,\n droppables = _ref2.droppables,\n previousImpact = _ref2.previousImpact,\n impact = _ref2.impact;\n var cleaned = clearUnusedPlaceholder({\n previousImpact: previousImpact,\n impact: impact,\n droppables: droppables\n });\n var isOver = whatIsDraggedOver(impact);\n\n if (!isOver) {\n return cleaned;\n }\n\n var droppable = droppables[isOver];\n\n if (isHomeOf(draggable, droppable)) {\n return cleaned;\n }\n\n if (droppable.subject.withPlaceholder) {\n return cleaned;\n }\n\n var patched = addPlaceholder(droppable, draggable, draggables);\n return patchDroppableMap(cleaned, patched);\n});\n\nvar update = (function (_ref) {\n var state = _ref.state,\n forcedClientSelection = _ref.clientSelection,\n forcedDimensions = _ref.dimensions,\n forcedViewport = _ref.viewport,\n forcedImpact = _ref.impact,\n scrollJumpRequest = _ref.scrollJumpRequest;\n var viewport = forcedViewport || state.viewport;\n var dimensions = forcedDimensions || state.dimensions;\n var clientSelection = forcedClientSelection || state.current.client.selection;\n var offset = subtract(clientSelection, state.initial.client.selection);\n var client = {\n offset: offset,\n selection: clientSelection,\n borderBoxCenter: add(state.initial.client.borderBoxCenter, offset)\n };\n var page = {\n selection: add(client.selection, viewport.scroll.current),\n borderBoxCenter: add(client.borderBoxCenter, viewport.scroll.current),\n offset: add(client.offset, viewport.scroll.diff.value)\n };\n var current = {\n client: client,\n page: page\n };\n\n if (state.phase === 'COLLECTING') {\n return _extends({\n phase: 'COLLECTING'\n }, state, {\n dimensions: dimensions,\n viewport: viewport,\n current: current\n });\n }\n\n var draggable = dimensions.draggables[state.critical.draggable.id];\n var newImpact = forcedImpact || getDragImpact({\n pageOffset: page.offset,\n draggable: draggable,\n draggables: dimensions.draggables,\n droppables: dimensions.droppables,\n previousImpact: state.impact,\n viewport: viewport,\n afterCritical: state.afterCritical\n });\n var withUpdatedPlaceholders = recomputePlaceholders({\n draggable: draggable,\n impact: newImpact,\n previousImpact: state.impact,\n draggables: dimensions.draggables,\n droppables: dimensions.droppables\n });\n\n var result = _extends({}, state, {\n current: current,\n dimensions: {\n draggables: dimensions.draggables,\n droppables: withUpdatedPlaceholders\n },\n impact: newImpact,\n viewport: viewport,\n scrollJumpRequest: scrollJumpRequest || null,\n forceShouldAnimate: scrollJumpRequest ? false : null\n });\n\n return result;\n});\n\nfunction getDraggables$1(ids, draggables) {\n return ids.map(function (id) {\n return draggables[id];\n });\n}\n\nvar recompute = (function (_ref) {\n var impact = _ref.impact,\n viewport = _ref.viewport,\n draggables = _ref.draggables,\n destination = _ref.destination,\n forceShouldAnimate = _ref.forceShouldAnimate;\n var last = impact.displaced;\n var afterDragging = getDraggables$1(last.all, draggables);\n var displaced = getDisplacementGroups({\n afterDragging: afterDragging,\n destination: destination,\n displacedBy: impact.displacedBy,\n viewport: viewport.frame,\n forceShouldAnimate: forceShouldAnimate,\n last: last\n });\n return _extends({}, impact, {\n displaced: displaced\n });\n});\n\nvar getClientBorderBoxCenter = (function (_ref) {\n var impact = _ref.impact,\n draggable = _ref.draggable,\n droppable = _ref.droppable,\n draggables = _ref.draggables,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact: impact,\n draggable: draggable,\n draggables: draggables,\n droppable: droppable,\n afterCritical: afterCritical\n });\n return getClientFromPageBorderBoxCenter({\n pageBorderBoxCenter: pageBorderBoxCenter,\n draggable: draggable,\n viewport: viewport\n });\n});\n\nvar refreshSnap = (function (_ref) {\n var state = _ref.state,\n forcedDimensions = _ref.dimensions,\n forcedViewport = _ref.viewport;\n !(state.movementMode === 'SNAP') ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n var needsVisibilityCheck = state.impact;\n var viewport = forcedViewport || state.viewport;\n var dimensions = forcedDimensions || state.dimensions;\n var draggables = dimensions.draggables,\n droppables = dimensions.droppables;\n var draggable = draggables[state.critical.draggable.id];\n var isOver = whatIsDraggedOver(needsVisibilityCheck);\n !isOver ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Must be over a destination in SNAP movement mode') : invariant(false) : void 0;\n var destination = droppables[isOver];\n var impact = recompute({\n impact: needsVisibilityCheck,\n viewport: viewport,\n destination: destination,\n draggables: draggables\n });\n var clientSelection = getClientBorderBoxCenter({\n impact: impact,\n draggable: draggable,\n droppable: destination,\n draggables: draggables,\n viewport: viewport,\n afterCritical: state.afterCritical\n });\n return update({\n impact: impact,\n clientSelection: clientSelection,\n state: state,\n dimensions: dimensions,\n viewport: viewport\n });\n});\n\nvar getHomeLocation = (function (descriptor) {\n return {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n };\n});\n\nvar getLiftEffect = (function (_ref) {\n var draggable = _ref.draggable,\n home = _ref.home,\n draggables = _ref.draggables,\n viewport = _ref.viewport;\n var displacedBy = getDisplacedBy(home.axis, draggable.displaceBy);\n var insideHome = getDraggablesInsideDroppable(home.descriptor.id, draggables);\n var rawIndex = insideHome.indexOf(draggable);\n !(rawIndex !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected draggable to be inside home list') : invariant(false) : void 0;\n var afterDragging = insideHome.slice(rawIndex + 1);\n var effected = afterDragging.reduce(function (previous, item) {\n previous[item.descriptor.id] = true;\n return previous;\n }, {});\n var afterCritical = {\n inVirtualList: home.descriptor.mode === 'virtual',\n displacedBy: displacedBy,\n effected: effected\n };\n var displaced = getDisplacementGroups({\n afterDragging: afterDragging,\n destination: home,\n displacedBy: displacedBy,\n last: null,\n viewport: viewport.frame,\n forceShouldAnimate: false\n });\n var impact = {\n displaced: displaced,\n displacedBy: displacedBy,\n at: {\n type: 'REORDER',\n destination: getHomeLocation(draggable.descriptor)\n }\n };\n return {\n impact: impact,\n afterCritical: afterCritical\n };\n});\n\nvar patchDimensionMap = (function (dimensions, updated) {\n return {\n draggables: dimensions.draggables,\n droppables: patchDroppableMap(dimensions.droppables, updated)\n };\n});\n\nvar start = function start(key) {\n if (process.env.NODE_ENV !== 'production') {\n {\n return;\n }\n }\n};\nvar finish = function finish(key) {\n if (process.env.NODE_ENV !== 'production') {\n {\n return;\n }\n }\n};\n\nvar offsetDraggable = (function (_ref) {\n var draggable = _ref.draggable,\n offset$1 = _ref.offset,\n initialWindowScroll = _ref.initialWindowScroll;\n var client = offset(draggable.client, offset$1);\n var page = withScroll(client, initialWindowScroll);\n\n var moved = _extends({}, draggable, {\n placeholder: _extends({}, draggable.placeholder, {\n client: client\n }),\n client: client,\n page: page\n });\n\n return moved;\n});\n\nvar getFrame = (function (droppable) {\n var frame = droppable.frame;\n !frame ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected Droppable to have a frame') : invariant(false) : void 0;\n return frame;\n});\n\nvar adjustAdditionsForScrollChanges = (function (_ref) {\n var additions = _ref.additions,\n updatedDroppables = _ref.updatedDroppables,\n viewport = _ref.viewport;\n var windowScrollChange = viewport.scroll.diff.value;\n return additions.map(function (draggable) {\n var droppableId = draggable.descriptor.droppableId;\n var modified = updatedDroppables[droppableId];\n var frame = getFrame(modified);\n var droppableScrollChange = frame.scroll.diff.value;\n var totalChange = add(windowScrollChange, droppableScrollChange);\n var moved = offsetDraggable({\n draggable: draggable,\n offset: totalChange,\n initialWindowScroll: viewport.scroll.initial\n });\n return moved;\n });\n});\n\nvar publishWhileDraggingInVirtual = (function (_ref) {\n var state = _ref.state,\n published = _ref.published;\n start();\n var withScrollChange = published.modified.map(function (update) {\n var existing = state.dimensions.droppables[update.droppableId];\n var scrolled = scrollDroppable(existing, update.scroll);\n return scrolled;\n });\n\n var droppables = _extends({}, state.dimensions.droppables, {}, toDroppableMap(withScrollChange));\n\n var updatedAdditions = toDraggableMap(adjustAdditionsForScrollChanges({\n additions: published.additions,\n updatedDroppables: droppables,\n viewport: state.viewport\n }));\n\n var draggables = _extends({}, state.dimensions.draggables, {}, updatedAdditions);\n\n published.removals.forEach(function (id) {\n delete draggables[id];\n });\n var dimensions = {\n droppables: droppables,\n draggables: draggables\n };\n var wasOverId = whatIsDraggedOver(state.impact);\n var wasOver = wasOverId ? dimensions.droppables[wasOverId] : null;\n var draggable = dimensions.draggables[state.critical.draggable.id];\n var home = dimensions.droppables[state.critical.droppable.id];\n\n var _getLiftEffect = getLiftEffect({\n draggable: draggable,\n home: home,\n draggables: draggables,\n viewport: state.viewport\n }),\n onLiftImpact = _getLiftEffect.impact,\n afterCritical = _getLiftEffect.afterCritical;\n\n var previousImpact = wasOver && wasOver.isCombineEnabled ? state.impact : onLiftImpact;\n var impact = getDragImpact({\n pageOffset: state.current.page.offset,\n draggable: dimensions.draggables[state.critical.draggable.id],\n draggables: dimensions.draggables,\n droppables: dimensions.droppables,\n previousImpact: previousImpact,\n viewport: state.viewport,\n afterCritical: afterCritical\n });\n finish();\n\n var draggingState = _extends({\n phase: 'DRAGGING'\n }, state, {\n phase: 'DRAGGING',\n impact: impact,\n onLiftImpact: onLiftImpact,\n dimensions: dimensions,\n afterCritical: afterCritical,\n forceShouldAnimate: false\n });\n\n if (state.phase === 'COLLECTING') {\n return draggingState;\n }\n\n var dropPending = _extends({\n phase: 'DROP_PENDING'\n }, draggingState, {\n phase: 'DROP_PENDING',\n reason: state.reason,\n isWaiting: false\n });\n\n return dropPending;\n});\n\nvar isSnapping = function isSnapping(state) {\n return state.movementMode === 'SNAP';\n};\n\nvar postDroppableChange = function postDroppableChange(state, updated, isEnabledChanging) {\n var dimensions = patchDimensionMap(state.dimensions, updated);\n\n if (!isSnapping(state) || isEnabledChanging) {\n return update({\n state: state,\n dimensions: dimensions\n });\n }\n\n return refreshSnap({\n state: state,\n dimensions: dimensions\n });\n};\n\nfunction removeScrollJumpRequest(state) {\n if (state.isDragging && state.movementMode === 'SNAP') {\n return _extends({\n phase: 'DRAGGING'\n }, state, {\n scrollJumpRequest: null\n });\n }\n\n return state;\n}\n\nvar idle = {\n phase: 'IDLE',\n completed: null,\n shouldFlush: false\n};\nvar reducer = (function (state, action) {\n if (state === void 0) {\n state = idle;\n }\n\n if (action.type === 'FLUSH') {\n return _extends({}, idle, {\n shouldFlush: true\n });\n }\n\n if (action.type === 'INITIAL_PUBLISH') {\n !(state.phase === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'INITIAL_PUBLISH must come after a IDLE phase') : invariant(false) : void 0;\n var _action$payload = action.payload,\n critical = _action$payload.critical,\n clientSelection = _action$payload.clientSelection,\n viewport = _action$payload.viewport,\n dimensions = _action$payload.dimensions,\n movementMode = _action$payload.movementMode;\n var draggable = dimensions.draggables[critical.draggable.id];\n var home = dimensions.droppables[critical.droppable.id];\n var client = {\n selection: clientSelection,\n borderBoxCenter: draggable.client.borderBox.center,\n offset: origin\n };\n var initial = {\n client: client,\n page: {\n selection: add(client.selection, viewport.scroll.initial),\n borderBoxCenter: add(client.selection, viewport.scroll.initial),\n offset: add(client.selection, viewport.scroll.diff.value)\n }\n };\n var isWindowScrollAllowed = toDroppableList(dimensions.droppables).every(function (item) {\n return !item.isFixedOnPage;\n });\n\n var _getLiftEffect = getLiftEffect({\n draggable: draggable,\n home: home,\n draggables: dimensions.draggables,\n viewport: viewport\n }),\n impact = _getLiftEffect.impact,\n afterCritical = _getLiftEffect.afterCritical;\n\n var result = {\n phase: 'DRAGGING',\n isDragging: true,\n critical: critical,\n movementMode: movementMode,\n dimensions: dimensions,\n initial: initial,\n current: initial,\n isWindowScrollAllowed: isWindowScrollAllowed,\n impact: impact,\n afterCritical: afterCritical,\n onLiftImpact: impact,\n viewport: viewport,\n scrollJumpRequest: null,\n forceShouldAnimate: null\n };\n return result;\n }\n\n if (action.type === 'COLLECTION_STARTING') {\n if (state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Collection cannot start from phase \" + state.phase) : invariant(false) : void 0;\n\n var _result = _extends({\n phase: 'COLLECTING'\n }, state, {\n phase: 'COLLECTING'\n });\n\n return _result;\n }\n\n if (action.type === 'PUBLISH_WHILE_DRAGGING') {\n !(state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Unexpected \" + action.type + \" received in phase \" + state.phase) : invariant(false) : void 0;\n return publishWhileDraggingInVirtual({\n state: state,\n published: action.payload\n });\n }\n\n if (action.type === 'MOVE') {\n if (state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, action.type + \" not permitted in phase \" + state.phase) : invariant(false) : void 0;\n var _clientSelection = action.payload.client;\n\n if (isEqual(_clientSelection, state.current.client.selection)) {\n return state;\n }\n\n return update({\n state: state,\n clientSelection: _clientSelection,\n impact: isSnapping(state) ? state.impact : null\n });\n }\n\n if (action.type === 'UPDATE_DROPPABLE_SCROLL') {\n if (state.phase === 'DROP_PENDING') {\n return removeScrollJumpRequest(state);\n }\n\n if (state.phase === 'COLLECTING') {\n return removeScrollJumpRequest(state);\n }\n\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, action.type + \" not permitted in phase \" + state.phase) : invariant(false) : void 0;\n var _action$payload2 = action.payload,\n id = _action$payload2.id,\n newScroll = _action$payload2.newScroll;\n var target = state.dimensions.droppables[id];\n\n if (!target) {\n return state;\n }\n\n var scrolled = scrollDroppable(target, newScroll);\n return postDroppableChange(state, scrolled, false);\n }\n\n if (action.type === 'UPDATE_DROPPABLE_IS_ENABLED') {\n if (state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Attempting to move in an unsupported phase \" + state.phase) : invariant(false) : void 0;\n var _action$payload3 = action.payload,\n _id = _action$payload3.id,\n isEnabled = _action$payload3.isEnabled;\n var _target = state.dimensions.droppables[_id];\n !_target ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find Droppable[id: \" + _id + \"] to toggle its enabled state\") : invariant(false) : void 0;\n !(_target.isEnabled !== isEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Trying to set droppable isEnabled to \" + String(isEnabled) + \"\\n but it is already \" + String(_target.isEnabled)) : invariant(false) : void 0;\n\n var updated = _extends({}, _target, {\n isEnabled: isEnabled\n });\n\n return postDroppableChange(state, updated, true);\n }\n\n if (action.type === 'UPDATE_DROPPABLE_IS_COMBINE_ENABLED') {\n if (state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Attempting to move in an unsupported phase \" + state.phase) : invariant(false) : void 0;\n var _action$payload4 = action.payload,\n _id2 = _action$payload4.id,\n isCombineEnabled = _action$payload4.isCombineEnabled;\n var _target2 = state.dimensions.droppables[_id2];\n !_target2 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find Droppable[id: \" + _id2 + \"] to toggle its isCombineEnabled state\") : invariant(false) : void 0;\n !(_target2.isCombineEnabled !== isCombineEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Trying to set droppable isCombineEnabled to \" + String(isCombineEnabled) + \"\\n but it is already \" + String(_target2.isCombineEnabled)) : invariant(false) : void 0;\n\n var _updated = _extends({}, _target2, {\n isCombineEnabled: isCombineEnabled\n });\n\n return postDroppableChange(state, _updated, true);\n }\n\n if (action.type === 'MOVE_BY_WINDOW_SCROLL') {\n if (state.phase === 'DROP_PENDING' || state.phase === 'DROP_ANIMATING') {\n return state;\n }\n\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot move by window in phase \" + state.phase) : invariant(false) : void 0;\n !state.isWindowScrollAllowed ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Window scrolling is currently not supported for fixed lists') : invariant(false) : void 0;\n var _newScroll = action.payload.newScroll;\n\n if (isEqual(state.viewport.scroll.current, _newScroll)) {\n return removeScrollJumpRequest(state);\n }\n\n var _viewport = scrollViewport(state.viewport, _newScroll);\n\n if (isSnapping(state)) {\n return refreshSnap({\n state: state,\n viewport: _viewport\n });\n }\n\n return update({\n state: state,\n viewport: _viewport\n });\n }\n\n if (action.type === 'UPDATE_VIEWPORT_MAX_SCROLL') {\n if (!isMovementAllowed(state)) {\n return state;\n }\n\n var maxScroll = action.payload.maxScroll;\n\n if (isEqual(maxScroll, state.viewport.scroll.max)) {\n return state;\n }\n\n var withMaxScroll = _extends({}, state.viewport, {\n scroll: _extends({}, state.viewport.scroll, {\n max: maxScroll\n })\n });\n\n return _extends({\n phase: 'DRAGGING'\n }, state, {\n viewport: withMaxScroll\n });\n }\n\n if (action.type === 'MOVE_UP' || action.type === 'MOVE_DOWN' || action.type === 'MOVE_LEFT' || action.type === 'MOVE_RIGHT') {\n if (state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, action.type + \" received while not in DRAGGING phase\") : invariant(false) : void 0;\n\n var _result2 = moveInDirection({\n state: state,\n type: action.type\n });\n\n if (!_result2) {\n return state;\n }\n\n return update({\n state: state,\n impact: _result2.impact,\n clientSelection: _result2.clientSelection,\n scrollJumpRequest: _result2.scrollJumpRequest\n });\n }\n\n if (action.type === 'DROP_PENDING') {\n var reason = action.payload.reason;\n !(state.phase === 'COLLECTING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only move into the DROP_PENDING phase from the COLLECTING phase') : invariant(false) : void 0;\n\n var newState = _extends({\n phase: 'DROP_PENDING'\n }, state, {\n phase: 'DROP_PENDING',\n isWaiting: true,\n reason: reason\n });\n\n return newState;\n }\n\n if (action.type === 'DROP_ANIMATE') {\n var _action$payload5 = action.payload,\n completed = _action$payload5.completed,\n dropDuration = _action$payload5.dropDuration,\n newHomeClientOffset = _action$payload5.newHomeClientOffset;\n !(state.phase === 'DRAGGING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot animate drop from phase \" + state.phase) : invariant(false) : void 0;\n var _result3 = {\n phase: 'DROP_ANIMATING',\n completed: completed,\n dropDuration: dropDuration,\n newHomeClientOffset: newHomeClientOffset,\n dimensions: state.dimensions\n };\n return _result3;\n }\n\n if (action.type === 'DROP_COMPLETE') {\n var _completed = action.payload.completed;\n return {\n phase: 'IDLE',\n completed: _completed,\n shouldFlush: false\n };\n }\n\n return state;\n});\n\nvar beforeInitialCapture = function beforeInitialCapture(args) {\n return {\n type: 'BEFORE_INITIAL_CAPTURE',\n payload: args\n };\n};\nvar lift = function lift(args) {\n return {\n type: 'LIFT',\n payload: args\n };\n};\nvar initialPublish = function initialPublish(args) {\n return {\n type: 'INITIAL_PUBLISH',\n payload: args\n };\n};\nvar publishWhileDragging = function publishWhileDragging(args) {\n return {\n type: 'PUBLISH_WHILE_DRAGGING',\n payload: args\n };\n};\nvar collectionStarting = function collectionStarting() {\n return {\n type: 'COLLECTION_STARTING',\n payload: null\n };\n};\nvar updateDroppableScroll = function updateDroppableScroll(args) {\n return {\n type: 'UPDATE_DROPPABLE_SCROLL',\n payload: args\n };\n};\nvar updateDroppableIsEnabled = function updateDroppableIsEnabled(args) {\n return {\n type: 'UPDATE_DROPPABLE_IS_ENABLED',\n payload: args\n };\n};\nvar updateDroppableIsCombineEnabled = function updateDroppableIsCombineEnabled(args) {\n return {\n type: 'UPDATE_DROPPABLE_IS_COMBINE_ENABLED',\n payload: args\n };\n};\nvar move = function move(args) {\n return {\n type: 'MOVE',\n payload: args\n };\n};\nvar moveByWindowScroll = function moveByWindowScroll(args) {\n return {\n type: 'MOVE_BY_WINDOW_SCROLL',\n payload: args\n };\n};\nvar updateViewportMaxScroll = function updateViewportMaxScroll(args) {\n return {\n type: 'UPDATE_VIEWPORT_MAX_SCROLL',\n payload: args\n };\n};\nvar moveUp = function moveUp() {\n return {\n type: 'MOVE_UP',\n payload: null\n };\n};\nvar moveDown = function moveDown() {\n return {\n type: 'MOVE_DOWN',\n payload: null\n };\n};\nvar moveRight = function moveRight() {\n return {\n type: 'MOVE_RIGHT',\n payload: null\n };\n};\nvar moveLeft = function moveLeft() {\n return {\n type: 'MOVE_LEFT',\n payload: null\n };\n};\nvar flush = function flush() {\n return {\n type: 'FLUSH',\n payload: null\n };\n};\nvar animateDrop = function animateDrop(args) {\n return {\n type: 'DROP_ANIMATE',\n payload: args\n };\n};\nvar completeDrop = function completeDrop(args) {\n return {\n type: 'DROP_COMPLETE',\n payload: args\n };\n};\nvar drop = function drop(args) {\n return {\n type: 'DROP',\n payload: args\n };\n};\nvar dropPending = function dropPending(args) {\n return {\n type: 'DROP_PENDING',\n payload: args\n };\n};\nvar dropAnimationFinished = function dropAnimationFinished() {\n return {\n type: 'DROP_ANIMATION_FINISHED',\n payload: null\n };\n};\n\nfunction checkIndexes(insideDestination) {\n if (insideDestination.length <= 1) {\n return;\n }\n\n var indexes = insideDestination.map(function (d) {\n return d.descriptor.index;\n });\n var errors = {};\n\n for (var i = 1; i < indexes.length; i++) {\n var current = indexes[i];\n var previous = indexes[i - 1];\n\n if (current !== previous + 1) {\n errors[current] = true;\n }\n }\n\n if (!Object.keys(errors).length) {\n return;\n }\n\n var formatted = indexes.map(function (index) {\n var hasError = Boolean(errors[index]);\n return hasError ? \"[\\uD83D\\uDD25\" + index + \"]\" : \"\" + index;\n }).join(', ');\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Detected non-consecutive <Draggable /> indexes.\\n\\n (This can cause unexpected bugs)\\n\\n \" + formatted + \"\\n \") : void 0;\n}\n\nfunction validateDimensions(critical, dimensions) {\n if (process.env.NODE_ENV !== 'production') {\n var insideDestination = getDraggablesInsideDroppable(critical.droppable.id, dimensions.draggables);\n checkIndexes(insideDestination);\n }\n}\n\nvar lift$1 = (function (marshal) {\n return function (_ref) {\n var getState = _ref.getState,\n dispatch = _ref.dispatch;\n return function (next) {\n return function (action) {\n if (action.type !== 'LIFT') {\n next(action);\n return;\n }\n\n var _action$payload = action.payload,\n id = _action$payload.id,\n clientSelection = _action$payload.clientSelection,\n movementMode = _action$payload.movementMode;\n var initial = getState();\n\n if (initial.phase === 'DROP_ANIMATING') {\n dispatch(completeDrop({\n completed: initial.completed\n }));\n }\n\n !(getState().phase === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unexpected phase to start a drag') : invariant(false) : void 0;\n dispatch(flush());\n dispatch(beforeInitialCapture({\n draggableId: id,\n movementMode: movementMode\n }));\n var scrollOptions = {\n shouldPublishImmediately: movementMode === 'SNAP'\n };\n var request = {\n draggableId: id,\n scrollOptions: scrollOptions\n };\n\n var _marshal$startPublish = marshal.startPublishing(request),\n critical = _marshal$startPublish.critical,\n dimensions = _marshal$startPublish.dimensions,\n viewport = _marshal$startPublish.viewport;\n\n validateDimensions(critical, dimensions);\n dispatch(initialPublish({\n critical: critical,\n dimensions: dimensions,\n clientSelection: clientSelection,\n movementMode: movementMode,\n viewport: viewport\n }));\n };\n };\n };\n});\n\nvar style = (function (marshal) {\n return function () {\n return function (next) {\n return function (action) {\n if (action.type === 'INITIAL_PUBLISH') {\n marshal.dragging();\n }\n\n if (action.type === 'DROP_ANIMATE') {\n marshal.dropping(action.payload.completed.result.reason);\n }\n\n if (action.type === 'FLUSH' || action.type === 'DROP_COMPLETE') {\n marshal.resting();\n }\n\n next(action);\n };\n };\n };\n});\n\nvar curves = {\n outOfTheWay: 'cubic-bezier(0.2, 0, 0, 1)',\n drop: 'cubic-bezier(.2,1,.1,1)'\n};\nvar combine = {\n opacity: {\n drop: 0,\n combining: 0.7\n },\n scale: {\n drop: 0.75\n }\n};\nvar timings = {\n outOfTheWay: 0.2,\n minDropTime: 0.33,\n maxDropTime: 0.55\n};\nvar outOfTheWayTiming = timings.outOfTheWay + \"s \" + curves.outOfTheWay;\nvar transitions = {\n fluid: \"opacity \" + outOfTheWayTiming,\n snap: \"transform \" + outOfTheWayTiming + \", opacity \" + outOfTheWayTiming,\n drop: function drop(duration) {\n var timing = duration + \"s \" + curves.drop;\n return \"transform \" + timing + \", opacity \" + timing;\n },\n outOfTheWay: \"transform \" + outOfTheWayTiming,\n placeholder: \"height \" + outOfTheWayTiming + \", width \" + outOfTheWayTiming + \", margin \" + outOfTheWayTiming\n};\n\nvar moveTo = function moveTo(offset) {\n return isEqual(offset, origin) ? null : \"translate(\" + offset.x + \"px, \" + offset.y + \"px)\";\n};\n\nvar transforms = {\n moveTo: moveTo,\n drop: function drop(offset, isCombining) {\n var translate = moveTo(offset);\n\n if (!translate) {\n return null;\n }\n\n if (!isCombining) {\n return translate;\n }\n\n return translate + \" scale(\" + combine.scale.drop + \")\";\n }\n};\n\nvar minDropTime = timings.minDropTime,\n maxDropTime = timings.maxDropTime;\nvar dropTimeRange = maxDropTime - minDropTime;\nvar maxDropTimeAtDistance = 1500;\nvar cancelDropModifier = 0.6;\nvar getDropDuration = (function (_ref) {\n var current = _ref.current,\n destination = _ref.destination,\n reason = _ref.reason;\n var distance$1 = distance(current, destination);\n\n if (distance$1 <= 0) {\n return minDropTime;\n }\n\n if (distance$1 >= maxDropTimeAtDistance) {\n return maxDropTime;\n }\n\n var percentage = distance$1 / maxDropTimeAtDistance;\n var duration = minDropTime + dropTimeRange * percentage;\n var withDuration = reason === 'CANCEL' ? duration * cancelDropModifier : duration;\n return Number(withDuration.toFixed(2));\n});\n\nvar getNewHomeClientOffset = (function (_ref) {\n var impact = _ref.impact,\n draggable = _ref.draggable,\n dimensions = _ref.dimensions,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var draggables = dimensions.draggables,\n droppables = dimensions.droppables;\n var droppableId = whatIsDraggedOver(impact);\n var destination = droppableId ? droppables[droppableId] : null;\n var home = droppables[draggable.descriptor.droppableId];\n var newClientCenter = getClientBorderBoxCenter({\n impact: impact,\n draggable: draggable,\n draggables: draggables,\n afterCritical: afterCritical,\n droppable: destination || home,\n viewport: viewport\n });\n var offset = subtract(newClientCenter, draggable.client.borderBox.center);\n return offset;\n});\n\nvar getDropImpact = (function (_ref) {\n var draggables = _ref.draggables,\n reason = _ref.reason,\n lastImpact = _ref.lastImpact,\n home = _ref.home,\n viewport = _ref.viewport,\n onLiftImpact = _ref.onLiftImpact;\n\n if (!lastImpact.at || reason !== 'DROP') {\n var recomputedHomeImpact = recompute({\n draggables: draggables,\n impact: onLiftImpact,\n destination: home,\n viewport: viewport,\n forceShouldAnimate: true\n });\n return {\n impact: recomputedHomeImpact,\n didDropInsideDroppable: false\n };\n }\n\n if (lastImpact.at.type === 'REORDER') {\n return {\n impact: lastImpact,\n didDropInsideDroppable: true\n };\n }\n\n var withoutMovement = _extends({}, lastImpact, {\n displaced: emptyGroups\n });\n\n return {\n impact: withoutMovement,\n didDropInsideDroppable: true\n };\n});\n\nvar drop$1 = (function (_ref) {\n var getState = _ref.getState,\n dispatch = _ref.dispatch;\n return function (next) {\n return function (action) {\n if (action.type !== 'DROP') {\n next(action);\n return;\n }\n\n var state = getState();\n var reason = action.payload.reason;\n\n if (state.phase === 'COLLECTING') {\n dispatch(dropPending({\n reason: reason\n }));\n return;\n }\n\n if (state.phase === 'IDLE') {\n return;\n }\n\n var isWaitingForDrop = state.phase === 'DROP_PENDING' && state.isWaiting;\n !!isWaitingForDrop ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'A DROP action occurred while DROP_PENDING and still waiting') : invariant(false) : void 0;\n !(state.phase === 'DRAGGING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot drop in phase: \" + state.phase) : invariant(false) : void 0;\n var critical = state.critical;\n var dimensions = state.dimensions;\n var draggable = dimensions.draggables[state.critical.draggable.id];\n\n var _getDropImpact = getDropImpact({\n reason: reason,\n lastImpact: state.impact,\n afterCritical: state.afterCritical,\n onLiftImpact: state.onLiftImpact,\n home: state.dimensions.droppables[state.critical.droppable.id],\n viewport: state.viewport,\n draggables: state.dimensions.draggables\n }),\n impact = _getDropImpact.impact,\n didDropInsideDroppable = _getDropImpact.didDropInsideDroppable;\n\n var destination = didDropInsideDroppable ? tryGetDestination(impact) : null;\n var combine = didDropInsideDroppable ? tryGetCombine(impact) : null;\n var source = {\n index: critical.draggable.index,\n droppableId: critical.droppable.id\n };\n var result = {\n draggableId: draggable.descriptor.id,\n type: draggable.descriptor.type,\n source: source,\n reason: reason,\n mode: state.movementMode,\n destination: destination,\n combine: combine\n };\n var newHomeClientOffset = getNewHomeClientOffset({\n impact: impact,\n draggable: draggable,\n dimensions: dimensions,\n viewport: state.viewport,\n afterCritical: state.afterCritical\n });\n var completed = {\n critical: state.critical,\n afterCritical: state.afterCritical,\n result: result,\n impact: impact\n };\n var isAnimationRequired = !isEqual(state.current.client.offset, newHomeClientOffset) || Boolean(result.combine);\n\n if (!isAnimationRequired) {\n dispatch(completeDrop({\n completed: completed\n }));\n return;\n }\n\n var dropDuration = getDropDuration({\n current: state.current.client.offset,\n destination: newHomeClientOffset,\n reason: reason\n });\n var args = {\n newHomeClientOffset: newHomeClientOffset,\n dropDuration: dropDuration,\n completed: completed\n };\n dispatch(animateDrop(args));\n };\n };\n});\n\nvar getWindowScroll = (function () {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n});\n\nfunction getWindowScrollBinding(update) {\n return {\n eventName: 'scroll',\n options: {\n passive: true,\n capture: false\n },\n fn: function fn(event) {\n if (event.target !== window && event.target !== window.document) {\n return;\n }\n\n update();\n }\n };\n}\n\nfunction getScrollListener(_ref) {\n var onWindowScroll = _ref.onWindowScroll;\n\n function updateScroll() {\n onWindowScroll(getWindowScroll());\n }\n\n var scheduled = rafSchd(updateScroll);\n var binding = getWindowScrollBinding(scheduled);\n var unbind = noop;\n\n function isActive() {\n return unbind !== noop;\n }\n\n function start() {\n !!isActive() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start scroll listener when already active') : invariant(false) : void 0;\n unbind = bindEvents(window, [binding]);\n }\n\n function stop() {\n !isActive() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop scroll listener when not active') : invariant(false) : void 0;\n scheduled.cancel();\n unbind();\n unbind = noop;\n }\n\n return {\n start: start,\n stop: stop,\n isActive: isActive\n };\n}\n\nvar shouldEnd = function shouldEnd(action) {\n return action.type === 'DROP_COMPLETE' || action.type === 'DROP_ANIMATE' || action.type === 'FLUSH';\n};\n\nvar scrollListener = (function (store) {\n var listener = getScrollListener({\n onWindowScroll: function onWindowScroll(newScroll) {\n store.dispatch(moveByWindowScroll({\n newScroll: newScroll\n }));\n }\n });\n return function (next) {\n return function (action) {\n if (!listener.isActive() && action.type === 'INITIAL_PUBLISH') {\n listener.start();\n }\n\n if (listener.isActive() && shouldEnd(action)) {\n listener.stop();\n }\n\n next(action);\n };\n };\n});\n\nvar getExpiringAnnounce = (function (announce) {\n var wasCalled = false;\n var isExpired = false;\n var timeoutId = setTimeout(function () {\n isExpired = true;\n });\n\n var result = function result(message) {\n if (wasCalled) {\n process.env.NODE_ENV !== \"production\" ? warning('Announcement already made. Not making a second announcement') : void 0;\n return;\n }\n\n if (isExpired) {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Announcements cannot be made asynchronously.\\n Default message has already been announced.\\n \") : void 0;\n return;\n }\n\n wasCalled = true;\n announce(message);\n clearTimeout(timeoutId);\n };\n\n result.wasCalled = function () {\n return wasCalled;\n };\n\n return result;\n});\n\nvar getAsyncMarshal = (function () {\n var entries = [];\n\n var execute = function execute(timerId) {\n var index = findIndex(entries, function (item) {\n return item.timerId === timerId;\n });\n !(index !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find timer') : invariant(false) : void 0;\n\n var _entries$splice = entries.splice(index, 1),\n entry = _entries$splice[0];\n\n entry.callback();\n };\n\n var add = function add(fn) {\n var timerId = setTimeout(function () {\n return execute(timerId);\n });\n var entry = {\n timerId: timerId,\n callback: fn\n };\n entries.push(entry);\n };\n\n var flush = function flush() {\n if (!entries.length) {\n return;\n }\n\n var shallow = [].concat(entries);\n entries.length = 0;\n shallow.forEach(function (entry) {\n clearTimeout(entry.timerId);\n entry.callback();\n });\n };\n\n return {\n add: add,\n flush: flush\n };\n});\n\nvar areLocationsEqual = function areLocationsEqual(first, second) {\n if (first == null && second == null) {\n return true;\n }\n\n if (first == null || second == null) {\n return false;\n }\n\n return first.droppableId === second.droppableId && first.index === second.index;\n};\nvar isCombineEqual = function isCombineEqual(first, second) {\n if (first == null && second == null) {\n return true;\n }\n\n if (first == null || second == null) {\n return false;\n }\n\n return first.draggableId === second.draggableId && first.droppableId === second.droppableId;\n};\nvar isCriticalEqual = function isCriticalEqual(first, second) {\n if (first === second) {\n return true;\n }\n\n var isDraggableEqual = first.draggable.id === second.draggable.id && first.draggable.droppableId === second.draggable.droppableId && first.draggable.type === second.draggable.type && first.draggable.index === second.draggable.index;\n var isDroppableEqual = first.droppable.id === second.droppable.id && first.droppable.type === second.droppable.type;\n return isDraggableEqual && isDroppableEqual;\n};\n\nvar withTimings = function withTimings(key, fn) {\n start();\n fn();\n finish();\n};\n\nvar getDragStart = function getDragStart(critical, mode) {\n return {\n draggableId: critical.draggable.id,\n type: critical.droppable.type,\n source: {\n droppableId: critical.droppable.id,\n index: critical.draggable.index\n },\n mode: mode\n };\n};\n\nvar execute = function execute(responder, data, announce, getDefaultMessage) {\n if (!responder) {\n announce(getDefaultMessage(data));\n return;\n }\n\n var willExpire = getExpiringAnnounce(announce);\n var provided = {\n announce: willExpire\n };\n responder(data, provided);\n\n if (!willExpire.wasCalled()) {\n announce(getDefaultMessage(data));\n }\n};\n\nvar getPublisher = (function (getResponders, announce) {\n var asyncMarshal = getAsyncMarshal();\n var dragging = null;\n\n var beforeCapture = function beforeCapture(draggableId, mode) {\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeCapture as a drag start has already been published') : invariant(false) : void 0;\n withTimings('onBeforeCapture', function () {\n var fn = getResponders().onBeforeCapture;\n\n if (fn) {\n var before = {\n draggableId: draggableId,\n mode: mode\n };\n fn(before);\n }\n });\n };\n\n var beforeStart = function beforeStart(critical, mode) {\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeDragStart as a drag start has already been published') : invariant(false) : void 0;\n withTimings('onBeforeDragStart', function () {\n var fn = getResponders().onBeforeDragStart;\n\n if (fn) {\n fn(getDragStart(critical, mode));\n }\n });\n };\n\n var start = function start(critical, mode) {\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeDragStart as a drag start has already been published') : invariant(false) : void 0;\n var data = getDragStart(critical, mode);\n dragging = {\n mode: mode,\n lastCritical: critical,\n lastLocation: data.source,\n lastCombine: null\n };\n asyncMarshal.add(function () {\n withTimings('onDragStart', function () {\n return execute(getResponders().onDragStart, data, announce, preset.onDragStart);\n });\n });\n };\n\n var update = function update(critical, impact) {\n var location = tryGetDestination(impact);\n var combine = tryGetCombine(impact);\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onDragMove when onDragStart has not been called') : invariant(false) : void 0;\n var hasCriticalChanged = !isCriticalEqual(critical, dragging.lastCritical);\n\n if (hasCriticalChanged) {\n dragging.lastCritical = critical;\n }\n\n var hasLocationChanged = !areLocationsEqual(dragging.lastLocation, location);\n\n if (hasLocationChanged) {\n dragging.lastLocation = location;\n }\n\n var hasGroupingChanged = !isCombineEqual(dragging.lastCombine, combine);\n\n if (hasGroupingChanged) {\n dragging.lastCombine = combine;\n }\n\n if (!hasCriticalChanged && !hasLocationChanged && !hasGroupingChanged) {\n return;\n }\n\n var data = _extends({}, getDragStart(critical, dragging.mode), {\n combine: combine,\n destination: location\n });\n\n asyncMarshal.add(function () {\n withTimings('onDragUpdate', function () {\n return execute(getResponders().onDragUpdate, data, announce, preset.onDragUpdate);\n });\n });\n };\n\n var flush = function flush() {\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only flush responders while dragging') : invariant(false) : void 0;\n asyncMarshal.flush();\n };\n\n var drop = function drop(result) {\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onDragEnd when there is no matching onDragStart') : invariant(false) : void 0;\n dragging = null;\n withTimings('onDragEnd', function () {\n return execute(getResponders().onDragEnd, result, announce, preset.onDragEnd);\n });\n };\n\n var abort = function abort() {\n if (!dragging) {\n return;\n }\n\n var result = _extends({}, getDragStart(dragging.lastCritical, dragging.mode), {\n combine: null,\n destination: null,\n reason: 'CANCEL'\n });\n\n drop(result);\n };\n\n return {\n beforeCapture: beforeCapture,\n beforeStart: beforeStart,\n start: start,\n update: update,\n flush: flush,\n drop: drop,\n abort: abort\n };\n});\n\nvar responders = (function (getResponders, announce) {\n var publisher = getPublisher(getResponders, announce);\n return function (store) {\n return function (next) {\n return function (action) {\n if (action.type === 'BEFORE_INITIAL_CAPTURE') {\n publisher.beforeCapture(action.payload.draggableId, action.payload.movementMode);\n return;\n }\n\n if (action.type === 'INITIAL_PUBLISH') {\n var critical = action.payload.critical;\n publisher.beforeStart(critical, action.payload.movementMode);\n next(action);\n publisher.start(critical, action.payload.movementMode);\n return;\n }\n\n if (action.type === 'DROP_COMPLETE') {\n var result = action.payload.completed.result;\n publisher.flush();\n next(action);\n publisher.drop(result);\n return;\n }\n\n next(action);\n\n if (action.type === 'FLUSH') {\n publisher.abort();\n return;\n }\n\n var state = store.getState();\n\n if (state.phase === 'DRAGGING') {\n publisher.update(state.critical, state.impact);\n }\n };\n };\n };\n});\n\nvar dropAnimationFinish = (function (store) {\n return function (next) {\n return function (action) {\n if (action.type !== 'DROP_ANIMATION_FINISHED') {\n next(action);\n return;\n }\n\n var state = store.getState();\n !(state.phase === 'DROP_ANIMATING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot finish a drop animating when no drop is occurring') : invariant(false) : void 0;\n store.dispatch(completeDrop({\n completed: state.completed\n }));\n };\n };\n});\n\nvar dropAnimationFlushOnScroll = (function (store) {\n var unbind = null;\n var frameId = null;\n\n function clear() {\n if (frameId) {\n cancelAnimationFrame(frameId);\n frameId = null;\n }\n\n if (unbind) {\n unbind();\n unbind = null;\n }\n }\n\n return function (next) {\n return function (action) {\n if (action.type === 'FLUSH' || action.type === 'DROP_COMPLETE' || action.type === 'DROP_ANIMATION_FINISHED') {\n clear();\n }\n\n next(action);\n\n if (action.type !== 'DROP_ANIMATE') {\n return;\n }\n\n var binding = {\n eventName: 'scroll',\n options: {\n capture: true,\n passive: false,\n once: true\n },\n fn: function flushDropAnimation() {\n var state = store.getState();\n\n if (state.phase === 'DROP_ANIMATING') {\n store.dispatch(dropAnimationFinished());\n }\n }\n };\n frameId = requestAnimationFrame(function () {\n frameId = null;\n unbind = bindEvents(window, [binding]);\n });\n };\n };\n});\n\nvar dimensionMarshalStopper = (function (marshal) {\n return function () {\n return function (next) {\n return function (action) {\n if (action.type === 'DROP_COMPLETE' || action.type === 'FLUSH' || action.type === 'DROP_ANIMATE') {\n marshal.stopPublishing();\n }\n\n next(action);\n };\n };\n };\n});\n\nvar focus = (function (marshal) {\n var isWatching = false;\n return function () {\n return function (next) {\n return function (action) {\n if (action.type === 'INITIAL_PUBLISH') {\n isWatching = true;\n marshal.tryRecordFocus(action.payload.critical.draggable.id);\n next(action);\n marshal.tryRestoreFocusRecorded();\n return;\n }\n\n next(action);\n\n if (!isWatching) {\n return;\n }\n\n if (action.type === 'FLUSH') {\n isWatching = false;\n marshal.tryRestoreFocusRecorded();\n return;\n }\n\n if (action.type === 'DROP_COMPLETE') {\n isWatching = false;\n var result = action.payload.completed.result;\n\n if (result.combine) {\n marshal.tryShiftRecord(result.draggableId, result.combine.draggableId);\n }\n\n marshal.tryRestoreFocusRecorded();\n }\n };\n };\n };\n});\n\nvar shouldStop = function shouldStop(action) {\n return action.type === 'DROP_COMPLETE' || action.type === 'DROP_ANIMATE' || action.type === 'FLUSH';\n};\n\nvar autoScroll = (function (autoScroller) {\n return function (store) {\n return function (next) {\n return function (action) {\n if (shouldStop(action)) {\n autoScroller.stop();\n next(action);\n return;\n }\n\n if (action.type === 'INITIAL_PUBLISH') {\n next(action);\n var state = store.getState();\n !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected phase to be DRAGGING after INITIAL_PUBLISH') : invariant(false) : void 0;\n autoScroller.start(state);\n return;\n }\n\n next(action);\n autoScroller.scroll(store.getState());\n };\n };\n };\n});\n\nvar pendingDrop = (function (store) {\n return function (next) {\n return function (action) {\n next(action);\n\n if (action.type !== 'PUBLISH_WHILE_DRAGGING') {\n return;\n }\n\n var postActionState = store.getState();\n\n if (postActionState.phase !== 'DROP_PENDING') {\n return;\n }\n\n if (postActionState.isWaiting) {\n return;\n }\n\n store.dispatch(drop({\n reason: postActionState.reason\n }));\n };\n };\n});\n\nvar composeEnhancers = process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n name: 'react-beautiful-dnd'\n}) : compose;\nvar createStore = (function (_ref) {\n var dimensionMarshal = _ref.dimensionMarshal,\n focusMarshal = _ref.focusMarshal,\n styleMarshal = _ref.styleMarshal,\n getResponders = _ref.getResponders,\n announce = _ref.announce,\n autoScroller = _ref.autoScroller;\n return createStore$1(reducer, composeEnhancers(applyMiddleware(style(styleMarshal), dimensionMarshalStopper(dimensionMarshal), lift$1(dimensionMarshal), drop$1, dropAnimationFinish, dropAnimationFlushOnScroll, pendingDrop, autoScroll(autoScroller), scrollListener, focus(focusMarshal), responders(getResponders, announce))));\n});\n\nvar clean$1 = function clean() {\n return {\n additions: {},\n removals: {},\n modified: {}\n };\n};\nfunction createPublisher(_ref) {\n var registry = _ref.registry,\n callbacks = _ref.callbacks;\n var staging = clean$1();\n var frameId = null;\n\n var collect = function collect() {\n if (frameId) {\n return;\n }\n\n callbacks.collectionStarting();\n frameId = requestAnimationFrame(function () {\n frameId = null;\n start();\n var _staging = staging,\n additions = _staging.additions,\n removals = _staging.removals,\n modified = _staging.modified;\n var added = Object.keys(additions).map(function (id) {\n return registry.draggable.getById(id).getDimension(origin);\n }).sort(function (a, b) {\n return a.descriptor.index - b.descriptor.index;\n });\n var updated = Object.keys(modified).map(function (id) {\n var entry = registry.droppable.getById(id);\n var scroll = entry.callbacks.getScrollWhileDragging();\n return {\n droppableId: id,\n scroll: scroll\n };\n });\n var result = {\n additions: added,\n removals: Object.keys(removals),\n modified: updated\n };\n staging = clean$1();\n finish();\n callbacks.publish(result);\n });\n };\n\n var add = function add(entry) {\n var id = entry.descriptor.id;\n staging.additions[id] = entry;\n staging.modified[entry.descriptor.droppableId] = true;\n\n if (staging.removals[id]) {\n delete staging.removals[id];\n }\n\n collect();\n };\n\n var remove = function remove(entry) {\n var descriptor = entry.descriptor;\n staging.removals[descriptor.id] = true;\n staging.modified[descriptor.droppableId] = true;\n\n if (staging.additions[descriptor.id]) {\n delete staging.additions[descriptor.id];\n }\n\n collect();\n };\n\n var stop = function stop() {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n staging = clean$1();\n };\n\n return {\n add: add,\n remove: remove,\n stop: stop\n };\n}\n\nvar getMaxScroll = (function (_ref) {\n var scrollHeight = _ref.scrollHeight,\n scrollWidth = _ref.scrollWidth,\n height = _ref.height,\n width = _ref.width;\n var maxScroll = subtract({\n x: scrollWidth,\n y: scrollHeight\n }, {\n x: width,\n y: height\n });\n var adjustedMaxScroll = {\n x: Math.max(0, maxScroll.x),\n y: Math.max(0, maxScroll.y)\n };\n return adjustedMaxScroll;\n});\n\nvar getDocumentElement = (function () {\n var doc = document.documentElement;\n !doc ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find document.documentElement') : invariant(false) : void 0;\n return doc;\n});\n\nvar getMaxWindowScroll = (function () {\n var doc = getDocumentElement();\n var maxScroll = getMaxScroll({\n scrollHeight: doc.scrollHeight,\n scrollWidth: doc.scrollWidth,\n width: doc.clientWidth,\n height: doc.clientHeight\n });\n return maxScroll;\n});\n\nvar getViewport = (function () {\n var scroll = getWindowScroll();\n var maxScroll = getMaxWindowScroll();\n var top = scroll.y;\n var left = scroll.x;\n var doc = getDocumentElement();\n var width = doc.clientWidth;\n var height = doc.clientHeight;\n var right = left + width;\n var bottom = top + height;\n var frame = getRect({\n top: top,\n left: left,\n right: right,\n bottom: bottom\n });\n var viewport = {\n frame: frame,\n scroll: {\n initial: scroll,\n current: scroll,\n max: maxScroll,\n diff: {\n value: origin,\n displacement: origin\n }\n }\n };\n return viewport;\n});\n\nvar getInitialPublish = (function (_ref) {\n var critical = _ref.critical,\n scrollOptions = _ref.scrollOptions,\n registry = _ref.registry;\n start();\n var viewport = getViewport();\n var windowScroll = viewport.scroll.current;\n var home = critical.droppable;\n var droppables = registry.droppable.getAllByType(home.type).map(function (entry) {\n return entry.callbacks.getDimensionAndWatchScroll(windowScroll, scrollOptions);\n });\n var draggables = registry.draggable.getAllByType(critical.draggable.type).map(function (entry) {\n return entry.getDimension(windowScroll);\n });\n var dimensions = {\n draggables: toDraggableMap(draggables),\n droppables: toDroppableMap(droppables)\n };\n finish();\n var result = {\n dimensions: dimensions,\n critical: critical,\n viewport: viewport\n };\n return result;\n});\n\nfunction shouldPublishUpdate(registry, dragging, entry) {\n if (entry.descriptor.id === dragging.id) {\n return false;\n }\n\n if (entry.descriptor.type !== dragging.type) {\n return false;\n }\n\n var home = registry.droppable.getById(entry.descriptor.droppableId);\n\n if (home.descriptor.mode !== 'virtual') {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n You are attempting to add or remove a Draggable [id: \" + entry.descriptor.id + \"]\\n while a drag is occurring. This is only supported for virtual lists.\\n\\n See https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/patterns/virtual-lists.md\\n \") : void 0;\n return false;\n }\n\n return true;\n}\n\nvar createDimensionMarshal = (function (registry, callbacks) {\n var collection = null;\n var publisher = createPublisher({\n callbacks: {\n publish: callbacks.publishWhileDragging,\n collectionStarting: callbacks.collectionStarting\n },\n registry: registry\n });\n\n var updateDroppableIsEnabled = function updateDroppableIsEnabled(id, isEnabled) {\n !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot update is enabled flag of Droppable \" + id + \" as it is not registered\") : invariant(false) : void 0;\n\n if (!collection) {\n return;\n }\n\n callbacks.updateDroppableIsEnabled({\n id: id,\n isEnabled: isEnabled\n });\n };\n\n var updateDroppableIsCombineEnabled = function updateDroppableIsCombineEnabled(id, isCombineEnabled) {\n if (!collection) {\n return;\n }\n\n !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot update isCombineEnabled flag of Droppable \" + id + \" as it is not registered\") : invariant(false) : void 0;\n callbacks.updateDroppableIsCombineEnabled({\n id: id,\n isCombineEnabled: isCombineEnabled\n });\n };\n\n var updateDroppableScroll = function updateDroppableScroll(id, newScroll) {\n if (!collection) {\n return;\n }\n\n !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot update the scroll on Droppable \" + id + \" as it is not registered\") : invariant(false) : void 0;\n callbacks.updateDroppableScroll({\n id: id,\n newScroll: newScroll\n });\n };\n\n var scrollDroppable = function scrollDroppable(id, change) {\n if (!collection) {\n return;\n }\n\n registry.droppable.getById(id).callbacks.scroll(change);\n };\n\n var stopPublishing = function stopPublishing() {\n if (!collection) {\n return;\n }\n\n publisher.stop();\n var home = collection.critical.droppable;\n registry.droppable.getAllByType(home.type).forEach(function (entry) {\n return entry.callbacks.dragStopped();\n });\n collection.unsubscribe();\n collection = null;\n };\n\n var subscriber = function subscriber(event) {\n !collection ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should only be subscribed when a collection is occurring') : invariant(false) : void 0;\n var dragging = collection.critical.draggable;\n\n if (event.type === 'ADDITION') {\n if (shouldPublishUpdate(registry, dragging, event.value)) {\n publisher.add(event.value);\n }\n }\n\n if (event.type === 'REMOVAL') {\n if (shouldPublishUpdate(registry, dragging, event.value)) {\n publisher.remove(event.value);\n }\n }\n };\n\n var startPublishing = function startPublishing(request) {\n !!collection ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start capturing critical dimensions as there is already a collection') : invariant(false) : void 0;\n var entry = registry.draggable.getById(request.draggableId);\n var home = registry.droppable.getById(entry.descriptor.droppableId);\n var critical = {\n draggable: entry.descriptor,\n droppable: home.descriptor\n };\n var unsubscribe = registry.subscribe(subscriber);\n collection = {\n critical: critical,\n unsubscribe: unsubscribe\n };\n return getInitialPublish({\n critical: critical,\n registry: registry,\n scrollOptions: request.scrollOptions\n });\n };\n\n var marshal = {\n updateDroppableIsEnabled: updateDroppableIsEnabled,\n updateDroppableIsCombineEnabled: updateDroppableIsCombineEnabled,\n scrollDroppable: scrollDroppable,\n updateDroppableScroll: updateDroppableScroll,\n startPublishing: startPublishing,\n stopPublishing: stopPublishing\n };\n return marshal;\n});\n\nvar canStartDrag = (function (state, id) {\n if (state.phase === 'IDLE') {\n return true;\n }\n\n if (state.phase !== 'DROP_ANIMATING') {\n return false;\n }\n\n if (state.completed.result.draggableId === id) {\n return false;\n }\n\n return state.completed.result.reason === 'DROP';\n});\n\nvar scrollWindow = (function (change) {\n window.scrollBy(change.x, change.y);\n});\n\nvar getScrollableDroppables = memoizeOne(function (droppables) {\n return toDroppableList(droppables).filter(function (droppable) {\n if (!droppable.isEnabled) {\n return false;\n }\n\n if (!droppable.frame) {\n return false;\n }\n\n return true;\n });\n});\n\nvar getScrollableDroppableOver = function getScrollableDroppableOver(target, droppables) {\n var maybe = find(getScrollableDroppables(droppables), function (droppable) {\n !droppable.frame ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid result') : invariant(false) : void 0;\n return isPositionInFrame(droppable.frame.pageMarginBox)(target);\n });\n return maybe;\n};\n\nvar getBestScrollableDroppable = (function (_ref) {\n var center = _ref.center,\n destination = _ref.destination,\n droppables = _ref.droppables;\n\n if (destination) {\n var _dimension = droppables[destination];\n\n if (!_dimension.frame) {\n return null;\n }\n\n return _dimension;\n }\n\n var dimension = getScrollableDroppableOver(center, droppables);\n return dimension;\n});\n\nvar config = {\n startFromPercentage: 0.25,\n maxScrollAtPercentage: 0.05,\n maxPixelScroll: 28,\n ease: function ease(percentage) {\n return Math.pow(percentage, 2);\n },\n durationDampening: {\n stopDampeningAt: 1200,\n accelerateAt: 360\n }\n};\n\nvar getDistanceThresholds = (function (container, axis) {\n var startScrollingFrom = container[axis.size] * config.startFromPercentage;\n var maxScrollValueAt = container[axis.size] * config.maxScrollAtPercentage;\n var thresholds = {\n startScrollingFrom: startScrollingFrom,\n maxScrollValueAt: maxScrollValueAt\n };\n return thresholds;\n});\n\nvar getPercentage = (function (_ref) {\n var startOfRange = _ref.startOfRange,\n endOfRange = _ref.endOfRange,\n current = _ref.current;\n var range = endOfRange - startOfRange;\n\n if (range === 0) {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Detected distance range of 0 in the fluid auto scroller\\n This is unexpected and would cause a divide by 0 issue.\\n Not allowing an auto scroll\\n \") : void 0;\n return 0;\n }\n\n var currentInRange = current - startOfRange;\n var percentage = currentInRange / range;\n return percentage;\n});\n\nvar minScroll = 1;\n\nvar getValueFromDistance = (function (distanceToEdge, thresholds) {\n if (distanceToEdge > thresholds.startScrollingFrom) {\n return 0;\n }\n\n if (distanceToEdge <= thresholds.maxScrollValueAt) {\n return config.maxPixelScroll;\n }\n\n if (distanceToEdge === thresholds.startScrollingFrom) {\n return minScroll;\n }\n\n var percentageFromMaxScrollValueAt = getPercentage({\n startOfRange: thresholds.maxScrollValueAt,\n endOfRange: thresholds.startScrollingFrom,\n current: distanceToEdge\n });\n var percentageFromStartScrollingFrom = 1 - percentageFromMaxScrollValueAt;\n var scroll = config.maxPixelScroll * config.ease(percentageFromStartScrollingFrom);\n return Math.ceil(scroll);\n});\n\nvar accelerateAt = config.durationDampening.accelerateAt;\nvar stopAt = config.durationDampening.stopDampeningAt;\nvar dampenValueByTime = (function (proposedScroll, dragStartTime) {\n var startOfRange = dragStartTime;\n var endOfRange = stopAt;\n var now = Date.now();\n var runTime = now - startOfRange;\n\n if (runTime >= stopAt) {\n return proposedScroll;\n }\n\n if (runTime < accelerateAt) {\n return minScroll;\n }\n\n var betweenAccelerateAtAndStopAtPercentage = getPercentage({\n startOfRange: accelerateAt,\n endOfRange: endOfRange,\n current: runTime\n });\n var scroll = proposedScroll * config.ease(betweenAccelerateAtAndStopAtPercentage);\n return Math.ceil(scroll);\n});\n\nvar getValue = (function (_ref) {\n var distanceToEdge = _ref.distanceToEdge,\n thresholds = _ref.thresholds,\n dragStartTime = _ref.dragStartTime,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var scroll = getValueFromDistance(distanceToEdge, thresholds);\n\n if (scroll === 0) {\n return 0;\n }\n\n if (!shouldUseTimeDampening) {\n return scroll;\n }\n\n return Math.max(dampenValueByTime(scroll, dragStartTime), minScroll);\n});\n\nvar getScrollOnAxis = (function (_ref) {\n var container = _ref.container,\n distanceToEdges = _ref.distanceToEdges,\n dragStartTime = _ref.dragStartTime,\n axis = _ref.axis,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var thresholds = getDistanceThresholds(container, axis);\n var isCloserToEnd = distanceToEdges[axis.end] < distanceToEdges[axis.start];\n\n if (isCloserToEnd) {\n return getValue({\n distanceToEdge: distanceToEdges[axis.end],\n thresholds: thresholds,\n dragStartTime: dragStartTime,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n }\n\n return -1 * getValue({\n distanceToEdge: distanceToEdges[axis.start],\n thresholds: thresholds,\n dragStartTime: dragStartTime,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n});\n\nvar adjustForSizeLimits = (function (_ref) {\n var container = _ref.container,\n subject = _ref.subject,\n proposedScroll = _ref.proposedScroll;\n var isTooBigVertically = subject.height > container.height;\n var isTooBigHorizontally = subject.width > container.width;\n\n if (!isTooBigHorizontally && !isTooBigVertically) {\n return proposedScroll;\n }\n\n if (isTooBigHorizontally && isTooBigVertically) {\n return null;\n }\n\n return {\n x: isTooBigHorizontally ? 0 : proposedScroll.x,\n y: isTooBigVertically ? 0 : proposedScroll.y\n };\n});\n\nvar clean$2 = apply(function (value) {\n return value === 0 ? 0 : value;\n});\nvar getScroll = (function (_ref) {\n var dragStartTime = _ref.dragStartTime,\n container = _ref.container,\n subject = _ref.subject,\n center = _ref.center,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var distanceToEdges = {\n top: center.y - container.top,\n right: container.right - center.x,\n bottom: container.bottom - center.y,\n left: center.x - container.left\n };\n var y = getScrollOnAxis({\n container: container,\n distanceToEdges: distanceToEdges,\n dragStartTime: dragStartTime,\n axis: vertical,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n var x = getScrollOnAxis({\n container: container,\n distanceToEdges: distanceToEdges,\n dragStartTime: dragStartTime,\n axis: horizontal,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n var required = clean$2({\n x: x,\n y: y\n });\n\n if (isEqual(required, origin)) {\n return null;\n }\n\n var limited = adjustForSizeLimits({\n container: container,\n subject: subject,\n proposedScroll: required\n });\n\n if (!limited) {\n return null;\n }\n\n return isEqual(limited, origin) ? null : limited;\n});\n\nvar smallestSigned = apply(function (value) {\n if (value === 0) {\n return 0;\n }\n\n return value > 0 ? 1 : -1;\n});\nvar getOverlap = function () {\n var getRemainder = function getRemainder(target, max) {\n if (target < 0) {\n return target;\n }\n\n if (target > max) {\n return target - max;\n }\n\n return 0;\n };\n\n return function (_ref) {\n var current = _ref.current,\n max = _ref.max,\n change = _ref.change;\n var targetScroll = add(current, change);\n var overlap = {\n x: getRemainder(targetScroll.x, max.x),\n y: getRemainder(targetScroll.y, max.y)\n };\n\n if (isEqual(overlap, origin)) {\n return null;\n }\n\n return overlap;\n };\n}();\nvar canPartiallyScroll = function canPartiallyScroll(_ref2) {\n var rawMax = _ref2.max,\n current = _ref2.current,\n change = _ref2.change;\n var max = {\n x: Math.max(current.x, rawMax.x),\n y: Math.max(current.y, rawMax.y)\n };\n var smallestChange = smallestSigned(change);\n var overlap = getOverlap({\n max: max,\n current: current,\n change: smallestChange\n });\n\n if (!overlap) {\n return true;\n }\n\n if (smallestChange.x !== 0 && overlap.x === 0) {\n return true;\n }\n\n if (smallestChange.y !== 0 && overlap.y === 0) {\n return true;\n }\n\n return false;\n};\nvar canScrollWindow = function canScrollWindow(viewport, change) {\n return canPartiallyScroll({\n current: viewport.scroll.current,\n max: viewport.scroll.max,\n change: change\n });\n};\nvar getWindowOverlap = function getWindowOverlap(viewport, change) {\n if (!canScrollWindow(viewport, change)) {\n return null;\n }\n\n var max = viewport.scroll.max;\n var current = viewport.scroll.current;\n return getOverlap({\n current: current,\n max: max,\n change: change\n });\n};\nvar canScrollDroppable = function canScrollDroppable(droppable, change) {\n var frame = droppable.frame;\n\n if (!frame) {\n return false;\n }\n\n return canPartiallyScroll({\n current: frame.scroll.current,\n max: frame.scroll.max,\n change: change\n });\n};\nvar getDroppableOverlap = function getDroppableOverlap(droppable, change) {\n var frame = droppable.frame;\n\n if (!frame) {\n return null;\n }\n\n if (!canScrollDroppable(droppable, change)) {\n return null;\n }\n\n return getOverlap({\n current: frame.scroll.current,\n max: frame.scroll.max,\n change: change\n });\n};\n\nvar getWindowScrollChange = (function (_ref) {\n var viewport = _ref.viewport,\n subject = _ref.subject,\n center = _ref.center,\n dragStartTime = _ref.dragStartTime,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var scroll = getScroll({\n dragStartTime: dragStartTime,\n container: viewport.frame,\n subject: subject,\n center: center,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n return scroll && canScrollWindow(viewport, scroll) ? scroll : null;\n});\n\nvar getDroppableScrollChange = (function (_ref) {\n var droppable = _ref.droppable,\n subject = _ref.subject,\n center = _ref.center,\n dragStartTime = _ref.dragStartTime,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var frame = droppable.frame;\n\n if (!frame) {\n return null;\n }\n\n var scroll = getScroll({\n dragStartTime: dragStartTime,\n container: frame.pageMarginBox,\n subject: subject,\n center: center,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n return scroll && canScrollDroppable(droppable, scroll) ? scroll : null;\n});\n\nvar scroll$1 = (function (_ref) {\n var state = _ref.state,\n dragStartTime = _ref.dragStartTime,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening,\n scrollWindow = _ref.scrollWindow,\n scrollDroppable = _ref.scrollDroppable;\n var center = state.current.page.borderBoxCenter;\n var draggable = state.dimensions.draggables[state.critical.draggable.id];\n var subject = draggable.page.marginBox;\n\n if (state.isWindowScrollAllowed) {\n var viewport = state.viewport;\n\n var _change = getWindowScrollChange({\n dragStartTime: dragStartTime,\n viewport: viewport,\n subject: subject,\n center: center,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n\n if (_change) {\n scrollWindow(_change);\n return;\n }\n }\n\n var droppable = getBestScrollableDroppable({\n center: center,\n destination: whatIsDraggedOver(state.impact),\n droppables: state.dimensions.droppables\n });\n\n if (!droppable) {\n return;\n }\n\n var change = getDroppableScrollChange({\n dragStartTime: dragStartTime,\n droppable: droppable,\n subject: subject,\n center: center,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n\n if (change) {\n scrollDroppable(droppable.descriptor.id, change);\n }\n});\n\nvar createFluidScroller = (function (_ref) {\n var scrollWindow = _ref.scrollWindow,\n scrollDroppable = _ref.scrollDroppable;\n var scheduleWindowScroll = rafSchd(scrollWindow);\n var scheduleDroppableScroll = rafSchd(scrollDroppable);\n var dragging = null;\n\n var tryScroll = function tryScroll(state) {\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fluid scroll if not dragging') : invariant(false) : void 0;\n var _dragging = dragging,\n shouldUseTimeDampening = _dragging.shouldUseTimeDampening,\n dragStartTime = _dragging.dragStartTime;\n scroll$1({\n state: state,\n scrollWindow: scheduleWindowScroll,\n scrollDroppable: scheduleDroppableScroll,\n dragStartTime: dragStartTime,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n };\n\n var start$1 = function start$1(state) {\n start();\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start auto scrolling when already started') : invariant(false) : void 0;\n var dragStartTime = Date.now();\n var wasScrollNeeded = false;\n\n var fakeScrollCallback = function fakeScrollCallback() {\n wasScrollNeeded = true;\n };\n\n scroll$1({\n state: state,\n dragStartTime: 0,\n shouldUseTimeDampening: false,\n scrollWindow: fakeScrollCallback,\n scrollDroppable: fakeScrollCallback\n });\n dragging = {\n dragStartTime: dragStartTime,\n shouldUseTimeDampening: wasScrollNeeded\n };\n finish();\n\n if (wasScrollNeeded) {\n tryScroll(state);\n }\n };\n\n var stop = function stop() {\n if (!dragging) {\n return;\n }\n\n scheduleWindowScroll.cancel();\n scheduleDroppableScroll.cancel();\n dragging = null;\n };\n\n return {\n start: start$1,\n stop: stop,\n scroll: tryScroll\n };\n});\n\nvar createJumpScroller = (function (_ref) {\n var move = _ref.move,\n scrollDroppable = _ref.scrollDroppable,\n scrollWindow = _ref.scrollWindow;\n\n var moveByOffset = function moveByOffset(state, offset) {\n var client = add(state.current.client.selection, offset);\n move({\n client: client\n });\n };\n\n var scrollDroppableAsMuchAsItCan = function scrollDroppableAsMuchAsItCan(droppable, change) {\n if (!canScrollDroppable(droppable, change)) {\n return change;\n }\n\n var overlap = getDroppableOverlap(droppable, change);\n\n if (!overlap) {\n scrollDroppable(droppable.descriptor.id, change);\n return null;\n }\n\n var whatTheDroppableCanScroll = subtract(change, overlap);\n scrollDroppable(droppable.descriptor.id, whatTheDroppableCanScroll);\n var remainder = subtract(change, whatTheDroppableCanScroll);\n return remainder;\n };\n\n var scrollWindowAsMuchAsItCan = function scrollWindowAsMuchAsItCan(isWindowScrollAllowed, viewport, change) {\n if (!isWindowScrollAllowed) {\n return change;\n }\n\n if (!canScrollWindow(viewport, change)) {\n return change;\n }\n\n var overlap = getWindowOverlap(viewport, change);\n\n if (!overlap) {\n scrollWindow(change);\n return null;\n }\n\n var whatTheWindowCanScroll = subtract(change, overlap);\n scrollWindow(whatTheWindowCanScroll);\n var remainder = subtract(change, whatTheWindowCanScroll);\n return remainder;\n };\n\n var jumpScroller = function jumpScroller(state) {\n var request = state.scrollJumpRequest;\n\n if (!request) {\n return;\n }\n\n var destination = whatIsDraggedOver(state.impact);\n !destination ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot perform a jump scroll when there is no destination') : invariant(false) : void 0;\n var droppableRemainder = scrollDroppableAsMuchAsItCan(state.dimensions.droppables[destination], request);\n\n if (!droppableRemainder) {\n return;\n }\n\n var viewport = state.viewport;\n var windowRemainder = scrollWindowAsMuchAsItCan(state.isWindowScrollAllowed, viewport, droppableRemainder);\n\n if (!windowRemainder) {\n return;\n }\n\n moveByOffset(state, windowRemainder);\n };\n\n return jumpScroller;\n});\n\nvar createAutoScroller = (function (_ref) {\n var scrollDroppable = _ref.scrollDroppable,\n scrollWindow = _ref.scrollWindow,\n move = _ref.move;\n var fluidScroller = createFluidScroller({\n scrollWindow: scrollWindow,\n scrollDroppable: scrollDroppable\n });\n var jumpScroll = createJumpScroller({\n move: move,\n scrollWindow: scrollWindow,\n scrollDroppable: scrollDroppable\n });\n\n var scroll = function scroll(state) {\n if (state.phase !== 'DRAGGING') {\n return;\n }\n\n if (state.movementMode === 'FLUID') {\n fluidScroller.scroll(state);\n return;\n }\n\n if (!state.scrollJumpRequest) {\n return;\n }\n\n jumpScroll(state);\n };\n\n var scroller = {\n scroll: scroll,\n start: fluidScroller.start,\n stop: fluidScroller.stop\n };\n return scroller;\n});\n\nvar prefix$1 = 'data-rbd';\nvar dragHandle = function () {\n var base = prefix$1 + \"-drag-handle\";\n return {\n base: base,\n draggableId: base + \"-draggable-id\",\n contextId: base + \"-context-id\"\n };\n}();\nvar draggable = function () {\n var base = prefix$1 + \"-draggable\";\n return {\n base: base,\n contextId: base + \"-context-id\",\n id: base + \"-id\"\n };\n}();\nvar droppable = function () {\n var base = prefix$1 + \"-droppable\";\n return {\n base: base,\n contextId: base + \"-context-id\",\n id: base + \"-id\"\n };\n}();\nvar scrollContainer = {\n contextId: prefix$1 + \"-scroll-container-context-id\"\n};\n\nvar makeGetSelector = function makeGetSelector(context) {\n return function (attribute) {\n return \"[\" + attribute + \"=\\\"\" + context + \"\\\"]\";\n };\n};\n\nvar getStyles = function getStyles(rules, property) {\n return rules.map(function (rule) {\n var value = rule.styles[property];\n\n if (!value) {\n return '';\n }\n\n return rule.selector + \" { \" + value + \" }\";\n }).join(' ');\n};\n\nvar noPointerEvents = 'pointer-events: none;';\nvar getStyles$1 = (function (contextId) {\n var getSelector = makeGetSelector(contextId);\n\n var dragHandle$1 = function () {\n var grabCursor = \"\\n cursor: -webkit-grab;\\n cursor: grab;\\n \";\n return {\n selector: getSelector(dragHandle.contextId),\n styles: {\n always: \"\\n -webkit-touch-callout: none;\\n -webkit-tap-highlight-color: rgba(0,0,0,0);\\n touch-action: manipulation;\\n \",\n resting: grabCursor,\n dragging: noPointerEvents,\n dropAnimating: grabCursor\n }\n };\n }();\n\n var draggable$1 = function () {\n var transition = \"\\n transition: \" + transitions.outOfTheWay + \";\\n \";\n return {\n selector: getSelector(draggable.contextId),\n styles: {\n dragging: transition,\n dropAnimating: transition,\n userCancel: transition\n }\n };\n }();\n\n var droppable$1 = {\n selector: getSelector(droppable.contextId),\n styles: {\n always: \"overflow-anchor: none;\"\n }\n };\n var body = {\n selector: 'body',\n styles: {\n dragging: \"\\n cursor: grabbing;\\n cursor: -webkit-grabbing;\\n user-select: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n overflow-anchor: none;\\n \"\n }\n };\n var rules = [draggable$1, dragHandle$1, droppable$1, body];\n return {\n always: getStyles(rules, 'always'),\n resting: getStyles(rules, 'resting'),\n dragging: getStyles(rules, 'dragging'),\n dropAnimating: getStyles(rules, 'dropAnimating'),\n userCancel: getStyles(rules, 'userCancel')\n };\n});\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;\n\nvar getHead = function getHead() {\n var head = document.querySelector('head');\n !head ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find the head to append a style to') : invariant(false) : void 0;\n return head;\n};\n\nvar createStyleEl = function createStyleEl(nonce) {\n var el = document.createElement('style');\n\n if (nonce) {\n el.setAttribute('nonce', nonce);\n }\n\n el.type = 'text/css';\n return el;\n};\n\nfunction useStyleMarshal(contextId, nonce) {\n var styles = useMemo(function () {\n return getStyles$1(contextId);\n }, [contextId]);\n var alwaysRef = useRef(null);\n var dynamicRef = useRef(null);\n var setDynamicStyle = useCallback(memoizeOne(function (proposed) {\n var el = dynamicRef.current;\n !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot set dynamic style element if it is not set') : invariant(false) : void 0;\n el.textContent = proposed;\n }), []);\n var setAlwaysStyle = useCallback(function (proposed) {\n var el = alwaysRef.current;\n !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot set dynamic style element if it is not set') : invariant(false) : void 0;\n el.textContent = proposed;\n }, []);\n useIsomorphicLayoutEffect(function () {\n !(!alwaysRef.current && !dynamicRef.current) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'style elements already mounted') : invariant(false) : void 0;\n var always = createStyleEl(nonce);\n var dynamic = createStyleEl(nonce);\n alwaysRef.current = always;\n dynamicRef.current = dynamic;\n always.setAttribute(prefix$1 + \"-always\", contextId);\n dynamic.setAttribute(prefix$1 + \"-dynamic\", contextId);\n getHead().appendChild(always);\n getHead().appendChild(dynamic);\n setAlwaysStyle(styles.always);\n setDynamicStyle(styles.resting);\n return function () {\n var remove = function remove(ref) {\n var current = ref.current;\n !current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot unmount ref as it is not set') : invariant(false) : void 0;\n getHead().removeChild(current);\n ref.current = null;\n };\n\n remove(alwaysRef);\n remove(dynamicRef);\n };\n }, [nonce, setAlwaysStyle, setDynamicStyle, styles.always, styles.resting, contextId]);\n var dragging = useCallback(function () {\n return setDynamicStyle(styles.dragging);\n }, [setDynamicStyle, styles.dragging]);\n var dropping = useCallback(function (reason) {\n if (reason === 'DROP') {\n setDynamicStyle(styles.dropAnimating);\n return;\n }\n\n setDynamicStyle(styles.userCancel);\n }, [setDynamicStyle, styles.dropAnimating, styles.userCancel]);\n var resting = useCallback(function () {\n if (!dynamicRef.current) {\n return;\n }\n\n setDynamicStyle(styles.resting);\n }, [setDynamicStyle, styles.resting]);\n var marshal = useMemo(function () {\n return {\n dragging: dragging,\n dropping: dropping,\n resting: resting\n };\n }, [dragging, dropping, resting]);\n return marshal;\n}\n\nvar getWindowFromEl = (function (el) {\n return el && el.ownerDocument ? el.ownerDocument.defaultView : window;\n});\n\nfunction isHtmlElement(el) {\n return el instanceof getWindowFromEl(el).HTMLElement;\n}\n\nfunction findDragHandle(contextId, draggableId) {\n var selector = \"[\" + dragHandle.contextId + \"=\\\"\" + contextId + \"\\\"]\";\n var possible = toArray(document.querySelectorAll(selector));\n\n if (!possible.length) {\n process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find any drag handles in the context \\\"\" + contextId + \"\\\"\") : void 0;\n return null;\n }\n\n var handle = find(possible, function (el) {\n return el.getAttribute(dragHandle.draggableId) === draggableId;\n });\n\n if (!handle) {\n process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find drag handle with id \\\"\" + draggableId + \"\\\" as no handle with a matching id was found\") : void 0;\n return null;\n }\n\n if (!isHtmlElement(handle)) {\n process.env.NODE_ENV !== \"production\" ? warning('drag handle needs to be a HTMLElement') : void 0;\n return null;\n }\n\n return handle;\n}\n\nfunction useFocusMarshal(contextId) {\n var entriesRef = useRef({});\n var recordRef = useRef(null);\n var restoreFocusFrameRef = useRef(null);\n var isMountedRef = useRef(false);\n var register = useCallback(function register(id, focus) {\n var entry = {\n id: id,\n focus: focus\n };\n entriesRef.current[id] = entry;\n return function unregister() {\n var entries = entriesRef.current;\n var current = entries[id];\n\n if (current !== entry) {\n delete entries[id];\n }\n };\n }, []);\n var tryGiveFocus = useCallback(function tryGiveFocus(tryGiveFocusTo) {\n var handle = findDragHandle(contextId, tryGiveFocusTo);\n\n if (handle && handle !== document.activeElement) {\n handle.focus();\n }\n }, [contextId]);\n var tryShiftRecord = useCallback(function tryShiftRecord(previous, redirectTo) {\n if (recordRef.current === previous) {\n recordRef.current = redirectTo;\n }\n }, []);\n var tryRestoreFocusRecorded = useCallback(function tryRestoreFocusRecorded() {\n if (restoreFocusFrameRef.current) {\n return;\n }\n\n if (!isMountedRef.current) {\n return;\n }\n\n restoreFocusFrameRef.current = requestAnimationFrame(function () {\n restoreFocusFrameRef.current = null;\n var record = recordRef.current;\n\n if (record) {\n tryGiveFocus(record);\n }\n });\n }, [tryGiveFocus]);\n var tryRecordFocus = useCallback(function tryRecordFocus(id) {\n recordRef.current = null;\n var focused = document.activeElement;\n\n if (!focused) {\n return;\n }\n\n if (focused.getAttribute(dragHandle.draggableId) !== id) {\n return;\n }\n\n recordRef.current = id;\n }, []);\n useIsomorphicLayoutEffect(function () {\n isMountedRef.current = true;\n return function clearFrameOnUnmount() {\n isMountedRef.current = false;\n var frameId = restoreFocusFrameRef.current;\n\n if (frameId) {\n cancelAnimationFrame(frameId);\n }\n };\n }, []);\n var marshal = useMemo(function () {\n return {\n register: register,\n tryRecordFocus: tryRecordFocus,\n tryRestoreFocusRecorded: tryRestoreFocusRecorded,\n tryShiftRecord: tryShiftRecord\n };\n }, [register, tryRecordFocus, tryRestoreFocusRecorded, tryShiftRecord]);\n return marshal;\n}\n\nfunction createRegistry() {\n var entries = {\n draggables: {},\n droppables: {}\n };\n var subscribers = [];\n\n function subscribe(cb) {\n subscribers.push(cb);\n return function unsubscribe() {\n var index = subscribers.indexOf(cb);\n\n if (index === -1) {\n return;\n }\n\n subscribers.splice(index, 1);\n };\n }\n\n function notify(event) {\n if (subscribers.length) {\n subscribers.forEach(function (cb) {\n return cb(event);\n });\n }\n }\n\n function findDraggableById(id) {\n return entries.draggables[id] || null;\n }\n\n function getDraggableById(id) {\n var entry = findDraggableById(id);\n !entry ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find draggable entry with id [\" + id + \"]\") : invariant(false) : void 0;\n return entry;\n }\n\n var draggableAPI = {\n register: function register(entry) {\n entries.draggables[entry.descriptor.id] = entry;\n notify({\n type: 'ADDITION',\n value: entry\n });\n },\n update: function update(entry, last) {\n var current = entries.draggables[last.descriptor.id];\n\n if (!current) {\n return;\n }\n\n if (current.uniqueId !== entry.uniqueId) {\n return;\n }\n\n delete entries.draggables[last.descriptor.id];\n entries.draggables[entry.descriptor.id] = entry;\n },\n unregister: function unregister(entry) {\n var draggableId = entry.descriptor.id;\n var current = findDraggableById(draggableId);\n\n if (!current) {\n return;\n }\n\n if (entry.uniqueId !== current.uniqueId) {\n return;\n }\n\n delete entries.draggables[draggableId];\n notify({\n type: 'REMOVAL',\n value: entry\n });\n },\n getById: getDraggableById,\n findById: findDraggableById,\n exists: function exists(id) {\n return Boolean(findDraggableById(id));\n },\n getAllByType: function getAllByType(type) {\n return values(entries.draggables).filter(function (entry) {\n return entry.descriptor.type === type;\n });\n }\n };\n\n function findDroppableById(id) {\n return entries.droppables[id] || null;\n }\n\n function getDroppableById(id) {\n var entry = findDroppableById(id);\n !entry ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find droppable entry with id [\" + id + \"]\") : invariant(false) : void 0;\n return entry;\n }\n\n var droppableAPI = {\n register: function register(entry) {\n entries.droppables[entry.descriptor.id] = entry;\n },\n unregister: function unregister(entry) {\n var current = findDroppableById(entry.descriptor.id);\n\n if (!current) {\n return;\n }\n\n if (entry.uniqueId !== current.uniqueId) {\n return;\n }\n\n delete entries.droppables[entry.descriptor.id];\n },\n getById: getDroppableById,\n findById: findDroppableById,\n exists: function exists(id) {\n return Boolean(findDroppableById(id));\n },\n getAllByType: function getAllByType(type) {\n return values(entries.droppables).filter(function (entry) {\n return entry.descriptor.type === type;\n });\n }\n };\n\n function clean() {\n entries.draggables = {};\n entries.droppables = {};\n subscribers.length = 0;\n }\n\n return {\n draggable: draggableAPI,\n droppable: droppableAPI,\n subscribe: subscribe,\n clean: clean\n };\n}\n\nfunction useRegistry() {\n var registry = useMemo(createRegistry, []);\n useEffect(function () {\n return function unmount() {\n requestAnimationFrame(registry.clean);\n };\n }, [registry]);\n return registry;\n}\n\nvar StoreContext = React.createContext(null);\n\nvar getBodyElement = (function () {\n var body = document.body;\n !body ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find document.body') : invariant(false) : void 0;\n return body;\n});\n\nvar visuallyHidden = {\n position: 'absolute',\n width: '1px',\n height: '1px',\n margin: '-1px',\n border: '0',\n padding: '0',\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n 'clip-path': 'inset(100%)'\n};\n\nvar getId = function getId(contextId) {\n return \"rbd-announcement-\" + contextId;\n};\nfunction useAnnouncer(contextId) {\n var id = useMemo(function () {\n return getId(contextId);\n }, [contextId]);\n var ref = useRef(null);\n useEffect(function setup() {\n var el = document.createElement('div');\n ref.current = el;\n el.id = id;\n el.setAttribute('aria-live', 'assertive');\n el.setAttribute('aria-atomic', 'true');\n\n _extends(el.style, visuallyHidden);\n\n getBodyElement().appendChild(el);\n return function cleanup() {\n setTimeout(function remove() {\n var body = getBodyElement();\n\n if (body.contains(el)) {\n body.removeChild(el);\n }\n\n if (el === ref.current) {\n ref.current = null;\n }\n });\n };\n }, [id]);\n var announce = useCallback(function (message) {\n var el = ref.current;\n\n if (el) {\n el.textContent = message;\n return;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n A screen reader message was trying to be announced but it was unable to do so.\\n This can occur if you unmount your <DragDropContext /> in your onDragEnd.\\n Consider calling provided.announce() before the unmount so that the instruction will\\n not be lost for users relying on a screen reader.\\n\\n Message not passed to screen reader:\\n\\n \\\"\" + message + \"\\\"\\n \") : void 0;\n }, []);\n return announce;\n}\n\nvar count = 0;\nvar defaults = {\n separator: '::'\n};\nfunction reset() {\n count = 0;\n}\nfunction useUniqueId(prefix, options) {\n if (options === void 0) {\n options = defaults;\n }\n\n return useMemo(function () {\n return \"\" + prefix + options.separator + count++;\n }, [options.separator, prefix]);\n}\n\nfunction getElementId(_ref) {\n var contextId = _ref.contextId,\n uniqueId = _ref.uniqueId;\n return \"rbd-hidden-text-\" + contextId + \"-\" + uniqueId;\n}\nfunction useHiddenTextElement(_ref2) {\n var contextId = _ref2.contextId,\n text = _ref2.text;\n var uniqueId = useUniqueId('hidden-text', {\n separator: '-'\n });\n var id = useMemo(function () {\n return getElementId({\n contextId: contextId,\n uniqueId: uniqueId\n });\n }, [uniqueId, contextId]);\n useEffect(function mount() {\n var el = document.createElement('div');\n el.id = id;\n el.textContent = text;\n el.style.display = 'none';\n getBodyElement().appendChild(el);\n return function unmount() {\n var body = getBodyElement();\n\n if (body.contains(el)) {\n body.removeChild(el);\n }\n };\n }, [id, text]);\n return id;\n}\n\nvar AppContext = React.createContext(null);\n\nvar peerDependencies = {\n\treact: \"^16.8.5 || ^17.0.0 || ^18.0.0\",\n\t\"react-dom\": \"^16.8.5 || ^17.0.0 || ^18.0.0\"\n};\n\nvar semver = /(\\d+)\\.(\\d+)\\.(\\d+)/;\n\nvar getVersion = function getVersion(value) {\n var result = semver.exec(value);\n !(result != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Unable to parse React version \" + value) : invariant(false) : void 0;\n var major = Number(result[1]);\n var minor = Number(result[2]);\n var patch = Number(result[3]);\n return {\n major: major,\n minor: minor,\n patch: patch,\n raw: value\n };\n};\n\nvar isSatisfied = function isSatisfied(expected, actual) {\n if (actual.major > expected.major) {\n return true;\n }\n\n if (actual.major < expected.major) {\n return false;\n }\n\n if (actual.minor > expected.minor) {\n return true;\n }\n\n if (actual.minor < expected.minor) {\n return false;\n }\n\n return actual.patch >= expected.patch;\n};\n\nvar checkReactVersion = (function (peerDepValue, actualValue) {\n var peerDep = getVersion(peerDepValue);\n var actual = getVersion(actualValue);\n\n if (isSatisfied(peerDep, actual)) {\n return;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n React version: [\" + actual.raw + \"]\\n does not satisfy expected peer dependency version: [\" + peerDep.raw + \"]\\n\\n This can result in run time bugs, and even fatal crashes\\n \") : void 0;\n});\n\nvar suffix = \"\\n We expect a html5 doctype: <!doctype html>\\n This is to ensure consistent browser layout and measurement\\n\\n More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/doctype.md\\n\";\nvar checkDoctype = (function (doc) {\n var doctype = doc.doctype;\n\n if (!doctype) {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n No <!doctype html> found.\\n\\n \" + suffix + \"\\n \") : void 0;\n return;\n }\n\n if (doctype.name.toLowerCase() !== 'html') {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Unexpected <!doctype> found: (\" + doctype.name + \")\\n\\n \" + suffix + \"\\n \") : void 0;\n }\n\n if (doctype.publicId !== '') {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Unexpected <!doctype> publicId found: (\" + doctype.publicId + \")\\n A html5 doctype does not have a publicId\\n\\n \" + suffix + \"\\n \") : void 0;\n }\n});\n\nfunction useDev(useHook) {\n if (process.env.NODE_ENV !== 'production') {\n useHook();\n }\n}\n\nfunction useDevSetupWarning(fn, inputs) {\n useDev(function () {\n useEffect(function () {\n try {\n fn();\n } catch (e) {\n error(\"\\n A setup problem was encountered.\\n\\n > \" + e.message + \"\\n \");\n }\n }, inputs);\n });\n}\n\nfunction useStartupValidation() {\n useDevSetupWarning(function () {\n checkReactVersion(peerDependencies.react, React.version);\n checkDoctype(document);\n }, []);\n}\n\nfunction usePrevious(current) {\n var ref = useRef(current);\n useEffect(function () {\n ref.current = current;\n });\n return ref;\n}\n\nfunction create() {\n var lock = null;\n\n function isClaimed() {\n return Boolean(lock);\n }\n\n function isActive(value) {\n return value === lock;\n }\n\n function claim(abandon) {\n !!lock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot claim lock as it is already claimed') : invariant(false) : void 0;\n var newLock = {\n abandon: abandon\n };\n lock = newLock;\n return newLock;\n }\n\n function release() {\n !lock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot release lock when there is no lock') : invariant(false) : void 0;\n lock = null;\n }\n\n function tryAbandon() {\n if (lock) {\n lock.abandon();\n release();\n }\n }\n\n return {\n isClaimed: isClaimed,\n isActive: isActive,\n claim: claim,\n release: release,\n tryAbandon: tryAbandon\n };\n}\n\nvar tab = 9;\nvar enter = 13;\nvar escape = 27;\nvar space = 32;\nvar pageUp = 33;\nvar pageDown = 34;\nvar end = 35;\nvar home = 36;\nvar arrowLeft = 37;\nvar arrowUp = 38;\nvar arrowRight = 39;\nvar arrowDown = 40;\n\nvar _preventedKeys;\nvar preventedKeys = (_preventedKeys = {}, _preventedKeys[enter] = true, _preventedKeys[tab] = true, _preventedKeys);\nvar preventStandardKeyEvents = (function (event) {\n if (preventedKeys[event.keyCode]) {\n event.preventDefault();\n }\n});\n\nvar supportedEventName = function () {\n var base = 'visibilitychange';\n\n if (typeof document === 'undefined') {\n return base;\n }\n\n var candidates = [base, \"ms\" + base, \"webkit\" + base, \"moz\" + base, \"o\" + base];\n var supported = find(candidates, function (eventName) {\n return \"on\" + eventName in document;\n });\n return supported || base;\n}();\n\nvar primaryButton = 0;\nvar sloppyClickThreshold = 5;\n\nfunction isSloppyClickThresholdExceeded(original, current) {\n return Math.abs(current.x - original.x) >= sloppyClickThreshold || Math.abs(current.y - original.y) >= sloppyClickThreshold;\n}\n\nvar idle$1 = {\n type: 'IDLE'\n};\n\nfunction getCaptureBindings(_ref) {\n var cancel = _ref.cancel,\n completed = _ref.completed,\n getPhase = _ref.getPhase,\n setPhase = _ref.setPhase;\n return [{\n eventName: 'mousemove',\n fn: function fn(event) {\n var button = event.button,\n clientX = event.clientX,\n clientY = event.clientY;\n\n if (button !== primaryButton) {\n return;\n }\n\n var point = {\n x: clientX,\n y: clientY\n };\n var phase = getPhase();\n\n if (phase.type === 'DRAGGING') {\n event.preventDefault();\n phase.actions.move(point);\n return;\n }\n\n !(phase.type === 'PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot be IDLE') : invariant(false) : void 0;\n var pending = phase.point;\n\n if (!isSloppyClickThresholdExceeded(pending, point)) {\n return;\n }\n\n event.preventDefault();\n var actions = phase.actions.fluidLift(point);\n setPhase({\n type: 'DRAGGING',\n actions: actions\n });\n }\n }, {\n eventName: 'mouseup',\n fn: function fn(event) {\n var phase = getPhase();\n\n if (phase.type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n event.preventDefault();\n phase.actions.drop({\n shouldBlockNextClick: true\n });\n completed();\n }\n }, {\n eventName: 'mousedown',\n fn: function fn(event) {\n if (getPhase().type === 'DRAGGING') {\n event.preventDefault();\n }\n\n cancel();\n }\n }, {\n eventName: 'keydown',\n fn: function fn(event) {\n var phase = getPhase();\n\n if (phase.type === 'PENDING') {\n cancel();\n return;\n }\n\n if (event.keyCode === escape) {\n event.preventDefault();\n cancel();\n return;\n }\n\n preventStandardKeyEvents(event);\n }\n }, {\n eventName: 'resize',\n fn: cancel\n }, {\n eventName: 'scroll',\n options: {\n passive: true,\n capture: false\n },\n fn: function fn() {\n if (getPhase().type === 'PENDING') {\n cancel();\n }\n }\n }, {\n eventName: 'webkitmouseforcedown',\n fn: function fn(event) {\n var phase = getPhase();\n !(phase.type !== 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unexpected phase') : invariant(false) : void 0;\n\n if (phase.actions.shouldRespectForcePress()) {\n cancel();\n return;\n }\n\n event.preventDefault();\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\n\nfunction useMouseSensor(api) {\n var phaseRef = useRef(idle$1);\n var unbindEventsRef = useRef(noop);\n var startCaptureBinding = useMemo(function () {\n return {\n eventName: 'mousedown',\n fn: function onMouseDown(event) {\n if (event.defaultPrevented) {\n return;\n }\n\n if (event.button !== primaryButton) {\n return;\n }\n\n if (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) {\n return;\n }\n\n var draggableId = api.findClosestDraggableId(event);\n\n if (!draggableId) {\n return;\n }\n\n var actions = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n\n if (!actions) {\n return;\n }\n\n event.preventDefault();\n var point = {\n x: event.clientX,\n y: event.clientY\n };\n unbindEventsRef.current();\n startPendingDrag(actions, point);\n }\n };\n }, [api]);\n var preventForcePressBinding = useMemo(function () {\n return {\n eventName: 'webkitmouseforcewillbegin',\n fn: function fn(event) {\n if (event.defaultPrevented) {\n return;\n }\n\n var id = api.findClosestDraggableId(event);\n\n if (!id) {\n return;\n }\n\n var options = api.findOptionsForDraggable(id);\n\n if (!options) {\n return;\n }\n\n if (options.shouldRespectForcePress) {\n return;\n }\n\n if (!api.canGetLock(id)) {\n return;\n }\n\n event.preventDefault();\n }\n };\n }, [api]);\n var listenForCapture = useCallback(function listenForCapture() {\n var options = {\n passive: false,\n capture: true\n };\n unbindEventsRef.current = bindEvents(window, [preventForcePressBinding, startCaptureBinding], options);\n }, [preventForcePressBinding, startCaptureBinding]);\n var stop = useCallback(function () {\n var current = phaseRef.current;\n\n if (current.type === 'IDLE') {\n return;\n }\n\n phaseRef.current = idle$1;\n unbindEventsRef.current();\n listenForCapture();\n }, [listenForCapture]);\n var cancel = useCallback(function () {\n var phase = phaseRef.current;\n stop();\n\n if (phase.type === 'DRAGGING') {\n phase.actions.cancel({\n shouldBlockNextClick: true\n });\n }\n\n if (phase.type === 'PENDING') {\n phase.actions.abort();\n }\n }, [stop]);\n var bindCapturingEvents = useCallback(function bindCapturingEvents() {\n var options = {\n capture: true,\n passive: false\n };\n var bindings = getCaptureBindings({\n cancel: cancel,\n completed: stop,\n getPhase: function getPhase() {\n return phaseRef.current;\n },\n setPhase: function setPhase(phase) {\n phaseRef.current = phase;\n }\n });\n unbindEventsRef.current = bindEvents(window, bindings, options);\n }, [cancel, stop]);\n var startPendingDrag = useCallback(function startPendingDrag(actions, point) {\n !(phaseRef.current.type === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected to move from IDLE to PENDING drag') : invariant(false) : void 0;\n phaseRef.current = {\n type: 'PENDING',\n point: point,\n actions: actions\n };\n bindCapturingEvents();\n }, [bindCapturingEvents]);\n useIsomorphicLayoutEffect(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n };\n }, [listenForCapture]);\n}\n\nvar _scrollJumpKeys;\n\nfunction noop$1() {}\n\nvar scrollJumpKeys = (_scrollJumpKeys = {}, _scrollJumpKeys[pageDown] = true, _scrollJumpKeys[pageUp] = true, _scrollJumpKeys[home] = true, _scrollJumpKeys[end] = true, _scrollJumpKeys);\n\nfunction getDraggingBindings(actions, stop) {\n function cancel() {\n stop();\n actions.cancel();\n }\n\n function drop() {\n stop();\n actions.drop();\n }\n\n return [{\n eventName: 'keydown',\n fn: function fn(event) {\n if (event.keyCode === escape) {\n event.preventDefault();\n cancel();\n return;\n }\n\n if (event.keyCode === space) {\n event.preventDefault();\n drop();\n return;\n }\n\n if (event.keyCode === arrowDown) {\n event.preventDefault();\n actions.moveDown();\n return;\n }\n\n if (event.keyCode === arrowUp) {\n event.preventDefault();\n actions.moveUp();\n return;\n }\n\n if (event.keyCode === arrowRight) {\n event.preventDefault();\n actions.moveRight();\n return;\n }\n\n if (event.keyCode === arrowLeft) {\n event.preventDefault();\n actions.moveLeft();\n return;\n }\n\n if (scrollJumpKeys[event.keyCode]) {\n event.preventDefault();\n return;\n }\n\n preventStandardKeyEvents(event);\n }\n }, {\n eventName: 'mousedown',\n fn: cancel\n }, {\n eventName: 'mouseup',\n fn: cancel\n }, {\n eventName: 'click',\n fn: cancel\n }, {\n eventName: 'touchstart',\n fn: cancel\n }, {\n eventName: 'resize',\n fn: cancel\n }, {\n eventName: 'wheel',\n fn: cancel,\n options: {\n passive: true\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\n\nfunction useKeyboardSensor(api) {\n var unbindEventsRef = useRef(noop$1);\n var startCaptureBinding = useMemo(function () {\n return {\n eventName: 'keydown',\n fn: function onKeyDown(event) {\n if (event.defaultPrevented) {\n return;\n }\n\n if (event.keyCode !== space) {\n return;\n }\n\n var draggableId = api.findClosestDraggableId(event);\n\n if (!draggableId) {\n return;\n }\n\n var preDrag = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n\n if (!preDrag) {\n return;\n }\n\n event.preventDefault();\n var isCapturing = true;\n var actions = preDrag.snapLift();\n unbindEventsRef.current();\n\n function stop() {\n !isCapturing ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop capturing a keyboard drag when not capturing') : invariant(false) : void 0;\n isCapturing = false;\n unbindEventsRef.current();\n listenForCapture();\n }\n\n unbindEventsRef.current = bindEvents(window, getDraggingBindings(actions, stop), {\n capture: true,\n passive: false\n });\n }\n };\n }, [api]);\n var listenForCapture = useCallback(function tryStartCapture() {\n var options = {\n passive: false,\n capture: true\n };\n unbindEventsRef.current = bindEvents(window, [startCaptureBinding], options);\n }, [startCaptureBinding]);\n useIsomorphicLayoutEffect(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n };\n }, [listenForCapture]);\n}\n\nvar idle$2 = {\n type: 'IDLE'\n};\nvar timeForLongPress = 120;\nvar forcePressThreshold = 0.15;\n\nfunction getWindowBindings(_ref) {\n var cancel = _ref.cancel,\n getPhase = _ref.getPhase;\n return [{\n eventName: 'orientationchange',\n fn: cancel\n }, {\n eventName: 'resize',\n fn: cancel\n }, {\n eventName: 'contextmenu',\n fn: function fn(event) {\n event.preventDefault();\n }\n }, {\n eventName: 'keydown',\n fn: function fn(event) {\n if (getPhase().type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n if (event.keyCode === escape) {\n event.preventDefault();\n }\n\n cancel();\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\n\nfunction getHandleBindings(_ref2) {\n var cancel = _ref2.cancel,\n completed = _ref2.completed,\n getPhase = _ref2.getPhase;\n return [{\n eventName: 'touchmove',\n options: {\n capture: false\n },\n fn: function fn(event) {\n var phase = getPhase();\n\n if (phase.type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n phase.hasMoved = true;\n var _event$touches$ = event.touches[0],\n clientX = _event$touches$.clientX,\n clientY = _event$touches$.clientY;\n var point = {\n x: clientX,\n y: clientY\n };\n event.preventDefault();\n phase.actions.move(point);\n }\n }, {\n eventName: 'touchend',\n fn: function fn(event) {\n var phase = getPhase();\n\n if (phase.type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n event.preventDefault();\n phase.actions.drop({\n shouldBlockNextClick: true\n });\n completed();\n }\n }, {\n eventName: 'touchcancel',\n fn: function fn(event) {\n if (getPhase().type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n event.preventDefault();\n cancel();\n }\n }, {\n eventName: 'touchforcechange',\n fn: function fn(event) {\n var phase = getPhase();\n !(phase.type !== 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n var touch = event.touches[0];\n\n if (!touch) {\n return;\n }\n\n var isForcePress = touch.force >= forcePressThreshold;\n\n if (!isForcePress) {\n return;\n }\n\n var shouldRespect = phase.actions.shouldRespectForcePress();\n\n if (phase.type === 'PENDING') {\n if (shouldRespect) {\n cancel();\n }\n\n return;\n }\n\n if (shouldRespect) {\n if (phase.hasMoved) {\n event.preventDefault();\n return;\n }\n\n cancel();\n return;\n }\n\n event.preventDefault();\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\n\nfunction useTouchSensor(api) {\n var phaseRef = useRef(idle$2);\n var unbindEventsRef = useRef(noop);\n var getPhase = useCallback(function getPhase() {\n return phaseRef.current;\n }, []);\n var setPhase = useCallback(function setPhase(phase) {\n phaseRef.current = phase;\n }, []);\n var startCaptureBinding = useMemo(function () {\n return {\n eventName: 'touchstart',\n fn: function onTouchStart(event) {\n if (event.defaultPrevented) {\n return;\n }\n\n var draggableId = api.findClosestDraggableId(event);\n\n if (!draggableId) {\n return;\n }\n\n var actions = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n\n if (!actions) {\n return;\n }\n\n var touch = event.touches[0];\n var clientX = touch.clientX,\n clientY = touch.clientY;\n var point = {\n x: clientX,\n y: clientY\n };\n unbindEventsRef.current();\n startPendingDrag(actions, point);\n }\n };\n }, [api]);\n var listenForCapture = useCallback(function listenForCapture() {\n var options = {\n capture: true,\n passive: false\n };\n unbindEventsRef.current = bindEvents(window, [startCaptureBinding], options);\n }, [startCaptureBinding]);\n var stop = useCallback(function () {\n var current = phaseRef.current;\n\n if (current.type === 'IDLE') {\n return;\n }\n\n if (current.type === 'PENDING') {\n clearTimeout(current.longPressTimerId);\n }\n\n setPhase(idle$2);\n unbindEventsRef.current();\n listenForCapture();\n }, [listenForCapture, setPhase]);\n var cancel = useCallback(function () {\n var phase = phaseRef.current;\n stop();\n\n if (phase.type === 'DRAGGING') {\n phase.actions.cancel({\n shouldBlockNextClick: true\n });\n }\n\n if (phase.type === 'PENDING') {\n phase.actions.abort();\n }\n }, [stop]);\n var bindCapturingEvents = useCallback(function bindCapturingEvents() {\n var options = {\n capture: true,\n passive: false\n };\n var args = {\n cancel: cancel,\n completed: stop,\n getPhase: getPhase\n };\n var unbindTarget = bindEvents(window, getHandleBindings(args), options);\n var unbindWindow = bindEvents(window, getWindowBindings(args), options);\n\n unbindEventsRef.current = function unbindAll() {\n unbindTarget();\n unbindWindow();\n };\n }, [cancel, getPhase, stop]);\n var startDragging = useCallback(function startDragging() {\n var phase = getPhase();\n !(phase.type === 'PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot start dragging from phase \" + phase.type) : invariant(false) : void 0;\n var actions = phase.actions.fluidLift(phase.point);\n setPhase({\n type: 'DRAGGING',\n actions: actions,\n hasMoved: false\n });\n }, [getPhase, setPhase]);\n var startPendingDrag = useCallback(function startPendingDrag(actions, point) {\n !(getPhase().type === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected to move from IDLE to PENDING drag') : invariant(false) : void 0;\n var longPressTimerId = setTimeout(startDragging, timeForLongPress);\n setPhase({\n type: 'PENDING',\n point: point,\n actions: actions,\n longPressTimerId: longPressTimerId\n });\n bindCapturingEvents();\n }, [bindCapturingEvents, getPhase, setPhase, startDragging]);\n useIsomorphicLayoutEffect(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n var phase = getPhase();\n\n if (phase.type === 'PENDING') {\n clearTimeout(phase.longPressTimerId);\n setPhase(idle$2);\n }\n };\n }, [getPhase, listenForCapture, setPhase]);\n useIsomorphicLayoutEffect(function webkitHack() {\n var unbind = bindEvents(window, [{\n eventName: 'touchmove',\n fn: function fn() {},\n options: {\n capture: false,\n passive: false\n }\n }]);\n return unbind;\n }, []);\n}\n\nfunction useValidateSensorHooks(sensorHooks) {\n useDev(function () {\n var previousRef = usePrevious(sensorHooks);\n useDevSetupWarning(function () {\n !(previousRef.current.length === sensorHooks.length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot change the amount of sensor hooks after mounting') : invariant(false) : void 0;\n });\n });\n}\n\nvar interactiveTagNames = {\n input: true,\n button: true,\n textarea: true,\n select: true,\n option: true,\n optgroup: true,\n video: true,\n audio: true\n};\n\nfunction isAnInteractiveElement(parent, current) {\n if (current == null) {\n return false;\n }\n\n var hasAnInteractiveTag = Boolean(interactiveTagNames[current.tagName.toLowerCase()]);\n\n if (hasAnInteractiveTag) {\n return true;\n }\n\n var attribute = current.getAttribute('contenteditable');\n\n if (attribute === 'true' || attribute === '') {\n return true;\n }\n\n if (current === parent) {\n return false;\n }\n\n return isAnInteractiveElement(parent, current.parentElement);\n}\n\nfunction isEventInInteractiveElement(draggable, event) {\n var target = event.target;\n\n if (!isHtmlElement(target)) {\n return false;\n }\n\n return isAnInteractiveElement(draggable, target);\n}\n\nvar getBorderBoxCenterPosition = (function (el) {\n return getRect(el.getBoundingClientRect()).center;\n});\n\nfunction isElement(el) {\n return el instanceof getWindowFromEl(el).Element;\n}\n\nvar supportedMatchesName = function () {\n var base = 'matches';\n\n if (typeof document === 'undefined') {\n return base;\n }\n\n var candidates = [base, 'msMatchesSelector', 'webkitMatchesSelector'];\n var value = find(candidates, function (name) {\n return name in Element.prototype;\n });\n return value || base;\n}();\n\nfunction closestPonyfill(el, selector) {\n if (el == null) {\n return null;\n }\n\n if (el[supportedMatchesName](selector)) {\n return el;\n }\n\n return closestPonyfill(el.parentElement, selector);\n}\n\nfunction closest$1(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n }\n\n return closestPonyfill(el, selector);\n}\n\nfunction getSelector(contextId) {\n return \"[\" + dragHandle.contextId + \"=\\\"\" + contextId + \"\\\"]\";\n}\n\nfunction findClosestDragHandleFromEvent(contextId, event) {\n var target = event.target;\n\n if (!isElement(target)) {\n process.env.NODE_ENV !== \"production\" ? warning('event.target must be a Element') : void 0;\n return null;\n }\n\n var selector = getSelector(contextId);\n var handle = closest$1(target, selector);\n\n if (!handle) {\n return null;\n }\n\n if (!isHtmlElement(handle)) {\n process.env.NODE_ENV !== \"production\" ? warning('drag handle must be a HTMLElement') : void 0;\n return null;\n }\n\n return handle;\n}\n\nfunction tryGetClosestDraggableIdFromEvent(contextId, event) {\n var handle = findClosestDragHandleFromEvent(contextId, event);\n\n if (!handle) {\n return null;\n }\n\n return handle.getAttribute(dragHandle.draggableId);\n}\n\nfunction findDraggable(contextId, draggableId) {\n var selector = \"[\" + draggable.contextId + \"=\\\"\" + contextId + \"\\\"]\";\n var possible = toArray(document.querySelectorAll(selector));\n var draggable$1 = find(possible, function (el) {\n return el.getAttribute(draggable.id) === draggableId;\n });\n\n if (!draggable$1) {\n return null;\n }\n\n if (!isHtmlElement(draggable$1)) {\n process.env.NODE_ENV !== \"production\" ? warning('Draggable element is not a HTMLElement') : void 0;\n return null;\n }\n\n return draggable$1;\n}\n\nfunction preventDefault(event) {\n event.preventDefault();\n}\n\nfunction _isActive(_ref) {\n var expected = _ref.expected,\n phase = _ref.phase,\n isLockActive = _ref.isLockActive,\n shouldWarn = _ref.shouldWarn;\n\n if (!isLockActive()) {\n if (shouldWarn) {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Cannot perform action.\\n The sensor no longer has an action lock.\\n\\n Tips:\\n\\n - Throw away your action handlers when forceStop() is called\\n - Check actions.isActive() if you really need to\\n \") : void 0;\n }\n\n return false;\n }\n\n if (expected !== phase) {\n if (shouldWarn) {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Cannot perform action.\\n The actions you used belong to an outdated phase\\n\\n Current phase: \" + expected + \"\\n You called an action from outdated phase: \" + phase + \"\\n\\n Tips:\\n\\n - Do not use preDragActions actions after calling preDragActions.lift()\\n \") : void 0;\n }\n\n return false;\n }\n\n return true;\n}\n\nfunction canStart(_ref2) {\n var lockAPI = _ref2.lockAPI,\n store = _ref2.store,\n registry = _ref2.registry,\n draggableId = _ref2.draggableId;\n\n if (lockAPI.isClaimed()) {\n return false;\n }\n\n var entry = registry.draggable.findById(draggableId);\n\n if (!entry) {\n process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find draggable with id: \" + draggableId) : void 0;\n return false;\n }\n\n if (!entry.options.isEnabled) {\n return false;\n }\n\n if (!canStartDrag(store.getState(), draggableId)) {\n return false;\n }\n\n return true;\n}\n\nfunction tryStart(_ref3) {\n var lockAPI = _ref3.lockAPI,\n contextId = _ref3.contextId,\n store = _ref3.store,\n registry = _ref3.registry,\n draggableId = _ref3.draggableId,\n forceSensorStop = _ref3.forceSensorStop,\n sourceEvent = _ref3.sourceEvent;\n var shouldStart = canStart({\n lockAPI: lockAPI,\n store: store,\n registry: registry,\n draggableId: draggableId\n });\n\n if (!shouldStart) {\n return null;\n }\n\n var entry = registry.draggable.getById(draggableId);\n var el = findDraggable(contextId, entry.descriptor.id);\n\n if (!el) {\n process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find draggable element with id: \" + draggableId) : void 0;\n return null;\n }\n\n if (sourceEvent && !entry.options.canDragInteractiveElements && isEventInInteractiveElement(el, sourceEvent)) {\n return null;\n }\n\n var lock = lockAPI.claim(forceSensorStop || noop);\n var phase = 'PRE_DRAG';\n\n function getShouldRespectForcePress() {\n return entry.options.shouldRespectForcePress;\n }\n\n function isLockActive() {\n return lockAPI.isActive(lock);\n }\n\n function tryDispatch(expected, getAction) {\n if (_isActive({\n expected: expected,\n phase: phase,\n isLockActive: isLockActive,\n shouldWarn: true\n })) {\n store.dispatch(getAction());\n }\n }\n\n var tryDispatchWhenDragging = tryDispatch.bind(null, 'DRAGGING');\n\n function lift$1(args) {\n function completed() {\n lockAPI.release();\n phase = 'COMPLETED';\n }\n\n if (phase !== 'PRE_DRAG') {\n completed();\n !(phase === 'PRE_DRAG') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot lift in phase \" + phase) : invariant(false) : void 0;\n }\n\n store.dispatch(lift(args.liftActionArgs));\n phase = 'DRAGGING';\n\n function finish(reason, options) {\n if (options === void 0) {\n options = {\n shouldBlockNextClick: false\n };\n }\n\n args.cleanup();\n\n if (options.shouldBlockNextClick) {\n var unbind = bindEvents(window, [{\n eventName: 'click',\n fn: preventDefault,\n options: {\n once: true,\n passive: false,\n capture: true\n }\n }]);\n setTimeout(unbind);\n }\n\n completed();\n store.dispatch(drop({\n reason: reason\n }));\n }\n\n return _extends({\n isActive: function isActive() {\n return _isActive({\n expected: 'DRAGGING',\n phase: phase,\n isLockActive: isLockActive,\n shouldWarn: false\n });\n },\n shouldRespectForcePress: getShouldRespectForcePress,\n drop: function drop(options) {\n return finish('DROP', options);\n },\n cancel: function cancel(options) {\n return finish('CANCEL', options);\n }\n }, args.actions);\n }\n\n function fluidLift(clientSelection) {\n var move$1 = rafSchd(function (client) {\n tryDispatchWhenDragging(function () {\n return move({\n client: client\n });\n });\n });\n var api = lift$1({\n liftActionArgs: {\n id: draggableId,\n clientSelection: clientSelection,\n movementMode: 'FLUID'\n },\n cleanup: function cleanup() {\n return move$1.cancel();\n },\n actions: {\n move: move$1\n }\n });\n return _extends({}, api, {\n move: move$1\n });\n }\n\n function snapLift() {\n var actions = {\n moveUp: function moveUp$1() {\n return tryDispatchWhenDragging(moveUp);\n },\n moveRight: function moveRight$1() {\n return tryDispatchWhenDragging(moveRight);\n },\n moveDown: function moveDown$1() {\n return tryDispatchWhenDragging(moveDown);\n },\n moveLeft: function moveLeft$1() {\n return tryDispatchWhenDragging(moveLeft);\n }\n };\n return lift$1({\n liftActionArgs: {\n id: draggableId,\n clientSelection: getBorderBoxCenterPosition(el),\n movementMode: 'SNAP'\n },\n cleanup: noop,\n actions: actions\n });\n }\n\n function abortPreDrag() {\n var shouldRelease = _isActive({\n expected: 'PRE_DRAG',\n phase: phase,\n isLockActive: isLockActive,\n shouldWarn: true\n });\n\n if (shouldRelease) {\n lockAPI.release();\n }\n }\n\n var preDrag = {\n isActive: function isActive() {\n return _isActive({\n expected: 'PRE_DRAG',\n phase: phase,\n isLockActive: isLockActive,\n shouldWarn: false\n });\n },\n shouldRespectForcePress: getShouldRespectForcePress,\n fluidLift: fluidLift,\n snapLift: snapLift,\n abort: abortPreDrag\n };\n return preDrag;\n}\n\nvar defaultSensors = [useMouseSensor, useKeyboardSensor, useTouchSensor];\nfunction useSensorMarshal(_ref4) {\n var contextId = _ref4.contextId,\n store = _ref4.store,\n registry = _ref4.registry,\n customSensors = _ref4.customSensors,\n enableDefaultSensors = _ref4.enableDefaultSensors;\n var useSensors = [].concat(enableDefaultSensors ? defaultSensors : [], customSensors || []);\n var lockAPI = useState(function () {\n return create();\n })[0];\n var tryAbandonLock = useCallback(function tryAbandonLock(previous, current) {\n if (previous.isDragging && !current.isDragging) {\n lockAPI.tryAbandon();\n }\n }, [lockAPI]);\n useIsomorphicLayoutEffect(function listenToStore() {\n var previous = store.getState();\n var unsubscribe = store.subscribe(function () {\n var current = store.getState();\n tryAbandonLock(previous, current);\n previous = current;\n });\n return unsubscribe;\n }, [lockAPI, store, tryAbandonLock]);\n useIsomorphicLayoutEffect(function () {\n return lockAPI.tryAbandon;\n }, [lockAPI.tryAbandon]);\n var canGetLock = useCallback(function (draggableId) {\n return canStart({\n lockAPI: lockAPI,\n registry: registry,\n store: store,\n draggableId: draggableId\n });\n }, [lockAPI, registry, store]);\n var tryGetLock = useCallback(function (draggableId, forceStop, options) {\n return tryStart({\n lockAPI: lockAPI,\n registry: registry,\n contextId: contextId,\n store: store,\n draggableId: draggableId,\n forceSensorStop: forceStop,\n sourceEvent: options && options.sourceEvent ? options.sourceEvent : null\n });\n }, [contextId, lockAPI, registry, store]);\n var findClosestDraggableId = useCallback(function (event) {\n return tryGetClosestDraggableIdFromEvent(contextId, event);\n }, [contextId]);\n var findOptionsForDraggable = useCallback(function (id) {\n var entry = registry.draggable.findById(id);\n return entry ? entry.options : null;\n }, [registry.draggable]);\n var tryReleaseLock = useCallback(function tryReleaseLock() {\n if (!lockAPI.isClaimed()) {\n return;\n }\n\n lockAPI.tryAbandon();\n\n if (store.getState().phase !== 'IDLE') {\n store.dispatch(flush());\n }\n }, [lockAPI, store]);\n var isLockClaimed = useCallback(lockAPI.isClaimed, [lockAPI]);\n var api = useMemo(function () {\n return {\n canGetLock: canGetLock,\n tryGetLock: tryGetLock,\n findClosestDraggableId: findClosestDraggableId,\n findOptionsForDraggable: findOptionsForDraggable,\n tryReleaseLock: tryReleaseLock,\n isLockClaimed: isLockClaimed\n };\n }, [canGetLock, tryGetLock, findClosestDraggableId, findOptionsForDraggable, tryReleaseLock, isLockClaimed]);\n useValidateSensorHooks(useSensors);\n\n for (var i = 0; i < useSensors.length; i++) {\n useSensors[i](api);\n }\n}\n\nvar createResponders = function createResponders(props) {\n return {\n onBeforeCapture: props.onBeforeCapture,\n onBeforeDragStart: props.onBeforeDragStart,\n onDragStart: props.onDragStart,\n onDragEnd: props.onDragEnd,\n onDragUpdate: props.onDragUpdate\n };\n};\n\nfunction getStore(lazyRef) {\n !lazyRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find store from lazy ref') : invariant(false) : void 0;\n return lazyRef.current;\n}\n\nfunction App(props) {\n var contextId = props.contextId,\n setCallbacks = props.setCallbacks,\n sensors = props.sensors,\n nonce = props.nonce,\n dragHandleUsageInstructions = props.dragHandleUsageInstructions;\n var lazyStoreRef = useRef(null);\n useStartupValidation();\n var lastPropsRef = usePrevious(props);\n var getResponders = useCallback(function () {\n return createResponders(lastPropsRef.current);\n }, [lastPropsRef]);\n var announce = useAnnouncer(contextId);\n var dragHandleUsageInstructionsId = useHiddenTextElement({\n contextId: contextId,\n text: dragHandleUsageInstructions\n });\n var styleMarshal = useStyleMarshal(contextId, nonce);\n var lazyDispatch = useCallback(function (action) {\n getStore(lazyStoreRef).dispatch(action);\n }, []);\n var marshalCallbacks = useMemo(function () {\n return bindActionCreators({\n publishWhileDragging: publishWhileDragging,\n updateDroppableScroll: updateDroppableScroll,\n updateDroppableIsEnabled: updateDroppableIsEnabled,\n updateDroppableIsCombineEnabled: updateDroppableIsCombineEnabled,\n collectionStarting: collectionStarting\n }, lazyDispatch);\n }, [lazyDispatch]);\n var registry = useRegistry();\n var dimensionMarshal = useMemo(function () {\n return createDimensionMarshal(registry, marshalCallbacks);\n }, [registry, marshalCallbacks]);\n var autoScroller = useMemo(function () {\n return createAutoScroller(_extends({\n scrollWindow: scrollWindow,\n scrollDroppable: dimensionMarshal.scrollDroppable\n }, bindActionCreators({\n move: move\n }, lazyDispatch)));\n }, [dimensionMarshal.scrollDroppable, lazyDispatch]);\n var focusMarshal = useFocusMarshal(contextId);\n var store = useMemo(function () {\n return createStore({\n announce: announce,\n autoScroller: autoScroller,\n dimensionMarshal: dimensionMarshal,\n focusMarshal: focusMarshal,\n getResponders: getResponders,\n styleMarshal: styleMarshal\n });\n }, [announce, autoScroller, dimensionMarshal, focusMarshal, getResponders, styleMarshal]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (lazyStoreRef.current && lazyStoreRef.current !== store) {\n process.env.NODE_ENV !== \"production\" ? warning('unexpected store change') : void 0;\n }\n }\n\n lazyStoreRef.current = store;\n var tryResetStore = useCallback(function () {\n var current = getStore(lazyStoreRef);\n var state = current.getState();\n\n if (state.phase !== 'IDLE') {\n current.dispatch(flush());\n }\n }, []);\n var isDragging = useCallback(function () {\n var state = getStore(lazyStoreRef).getState();\n return state.isDragging || state.phase === 'DROP_ANIMATING';\n }, []);\n var appCallbacks = useMemo(function () {\n return {\n isDragging: isDragging,\n tryAbort: tryResetStore\n };\n }, [isDragging, tryResetStore]);\n setCallbacks(appCallbacks);\n var getCanLift = useCallback(function (id) {\n return canStartDrag(getStore(lazyStoreRef).getState(), id);\n }, []);\n var getIsMovementAllowed = useCallback(function () {\n return isMovementAllowed(getStore(lazyStoreRef).getState());\n }, []);\n var appContext = useMemo(function () {\n return {\n marshal: dimensionMarshal,\n focus: focusMarshal,\n contextId: contextId,\n canLift: getCanLift,\n isMovementAllowed: getIsMovementAllowed,\n dragHandleUsageInstructionsId: dragHandleUsageInstructionsId,\n registry: registry\n };\n }, [contextId, dimensionMarshal, dragHandleUsageInstructionsId, focusMarshal, getCanLift, getIsMovementAllowed, registry]);\n useSensorMarshal({\n contextId: contextId,\n store: store,\n registry: registry,\n customSensors: sensors,\n enableDefaultSensors: props.enableDefaultSensors !== false\n });\n useEffect(function () {\n return tryResetStore;\n }, [tryResetStore]);\n return React.createElement(AppContext.Provider, {\n value: appContext\n }, React.createElement(Provider, {\n context: StoreContext,\n store: store\n }, props.children));\n}\n\nvar count$1 = 0;\nfunction reset$1() {\n count$1 = 0;\n}\nfunction useInstanceCount() {\n return useMemo(function () {\n return \"\" + count$1++;\n }, []);\n}\n\nfunction resetServerContext() {\n reset$1();\n reset();\n}\nfunction DragDropContext(props) {\n var contextId = useInstanceCount();\n var dragHandleUsageInstructions = props.dragHandleUsageInstructions || preset.dragHandleUsageInstructions;\n return React.createElement(ErrorBoundary, null, function (setCallbacks) {\n return React.createElement(App, {\n nonce: props.nonce,\n contextId: contextId,\n setCallbacks: setCallbacks,\n dragHandleUsageInstructions: dragHandleUsageInstructions,\n enableDefaultSensors: props.enableDefaultSensors,\n sensors: props.sensors,\n onBeforeCapture: props.onBeforeCapture,\n onBeforeDragStart: props.onBeforeDragStart,\n onDragStart: props.onDragStart,\n onDragUpdate: props.onDragUpdate,\n onDragEnd: props.onDragEnd\n }, props.children);\n });\n}\n\nvar isEqual$1 = function isEqual(base) {\n return function (value) {\n return base === value;\n };\n};\n\nvar isScroll = isEqual$1('scroll');\nvar isAuto = isEqual$1('auto');\nvar isVisible$1 = isEqual$1('visible');\n\nvar isEither = function isEither(overflow, fn) {\n return fn(overflow.overflowX) || fn(overflow.overflowY);\n};\n\nvar isBoth = function isBoth(overflow, fn) {\n return fn(overflow.overflowX) && fn(overflow.overflowY);\n};\n\nvar isElementScrollable = function isElementScrollable(el) {\n var style = window.getComputedStyle(el);\n var overflow = {\n overflowX: style.overflowX,\n overflowY: style.overflowY\n };\n return isEither(overflow, isScroll) || isEither(overflow, isAuto);\n};\n\nvar isBodyScrollable = function isBodyScrollable() {\n if (process.env.NODE_ENV === 'production') {\n return false;\n }\n\n var body = getBodyElement();\n var html = document.documentElement;\n !html ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n\n if (!isElementScrollable(body)) {\n return false;\n }\n\n var htmlStyle = window.getComputedStyle(html);\n var htmlOverflow = {\n overflowX: htmlStyle.overflowX,\n overflowY: htmlStyle.overflowY\n };\n\n if (isBoth(htmlOverflow, isVisible$1)) {\n return false;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n We have detected that your <body> element might be a scroll container.\\n We have found no reliable way of detecting whether the <body> element is a scroll container.\\n Under most circumstances a <body> scroll bar will be on the <html> element (document.documentElement)\\n\\n Because we cannot determine if the <body> is a scroll container, and generally it is not one,\\n we will be treating the <body> as *not* a scroll container\\n\\n More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/how-we-detect-scroll-containers.md\\n \") : void 0;\n return false;\n};\n\nvar getClosestScrollable = function getClosestScrollable(el) {\n if (el == null) {\n return null;\n }\n\n if (el === document.body) {\n return isBodyScrollable() ? el : null;\n }\n\n if (el === document.documentElement) {\n return null;\n }\n\n if (!isElementScrollable(el)) {\n return getClosestScrollable(el.parentElement);\n }\n\n return el;\n};\n\nvar checkForNestedScrollContainers = (function (scrollable) {\n if (!scrollable) {\n return;\n }\n\n var anotherScrollParent = getClosestScrollable(scrollable.parentElement);\n\n if (!anotherScrollParent) {\n return;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Droppable: unsupported nested scroll container detected.\\n A Droppable can only have one scroll parent (which can be itself)\\n Nested scroll containers are currently not supported.\\n\\n We hope to support nested scroll containers soon: https://github.com/atlassian/react-beautiful-dnd/issues/131\\n \") : void 0;\n});\n\nvar getScroll$1 = (function (el) {\n return {\n x: el.scrollLeft,\n y: el.scrollTop\n };\n});\n\nvar getIsFixed = function getIsFixed(el) {\n if (!el) {\n return false;\n }\n\n var style = window.getComputedStyle(el);\n\n if (style.position === 'fixed') {\n return true;\n }\n\n return getIsFixed(el.parentElement);\n};\n\nvar getEnv = (function (start) {\n var closestScrollable = getClosestScrollable(start);\n var isFixedOnPage = getIsFixed(start);\n return {\n closestScrollable: closestScrollable,\n isFixedOnPage: isFixedOnPage\n };\n});\n\nvar getDroppableDimension = (function (_ref) {\n var descriptor = _ref.descriptor,\n isEnabled = _ref.isEnabled,\n isCombineEnabled = _ref.isCombineEnabled,\n isFixedOnPage = _ref.isFixedOnPage,\n direction = _ref.direction,\n client = _ref.client,\n page = _ref.page,\n closest = _ref.closest;\n\n var frame = function () {\n if (!closest) {\n return null;\n }\n\n var scrollSize = closest.scrollSize,\n frameClient = closest.client;\n var maxScroll = getMaxScroll({\n scrollHeight: scrollSize.scrollHeight,\n scrollWidth: scrollSize.scrollWidth,\n height: frameClient.paddingBox.height,\n width: frameClient.paddingBox.width\n });\n return {\n pageMarginBox: closest.page.marginBox,\n frameClient: frameClient,\n scrollSize: scrollSize,\n shouldClipSubject: closest.shouldClipSubject,\n scroll: {\n initial: closest.scroll,\n current: closest.scroll,\n max: maxScroll,\n diff: {\n value: origin,\n displacement: origin\n }\n }\n };\n }();\n\n var axis = direction === 'vertical' ? vertical : horizontal;\n var subject = getSubject({\n page: page,\n withPlaceholder: null,\n axis: axis,\n frame: frame\n });\n var dimension = {\n descriptor: descriptor,\n isCombineEnabled: isCombineEnabled,\n isFixedOnPage: isFixedOnPage,\n axis: axis,\n isEnabled: isEnabled,\n client: client,\n page: page,\n frame: frame,\n subject: subject\n };\n return dimension;\n});\n\nvar getClient = function getClient(targetRef, closestScrollable) {\n var base = getBox(targetRef);\n\n if (!closestScrollable) {\n return base;\n }\n\n if (targetRef !== closestScrollable) {\n return base;\n }\n\n var top = base.paddingBox.top - closestScrollable.scrollTop;\n var left = base.paddingBox.left - closestScrollable.scrollLeft;\n var bottom = top + closestScrollable.scrollHeight;\n var right = left + closestScrollable.scrollWidth;\n var paddingBox = {\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n var borderBox = expand(paddingBox, base.border);\n var client = createBox({\n borderBox: borderBox,\n margin: base.margin,\n border: base.border,\n padding: base.padding\n });\n return client;\n};\n\nvar getDimension = (function (_ref) {\n var ref = _ref.ref,\n descriptor = _ref.descriptor,\n env = _ref.env,\n windowScroll = _ref.windowScroll,\n direction = _ref.direction,\n isDropDisabled = _ref.isDropDisabled,\n isCombineEnabled = _ref.isCombineEnabled,\n shouldClipSubject = _ref.shouldClipSubject;\n var closestScrollable = env.closestScrollable;\n var client = getClient(ref, closestScrollable);\n var page = withScroll(client, windowScroll);\n\n var closest = function () {\n if (!closestScrollable) {\n return null;\n }\n\n var frameClient = getBox(closestScrollable);\n var scrollSize = {\n scrollHeight: closestScrollable.scrollHeight,\n scrollWidth: closestScrollable.scrollWidth\n };\n return {\n client: frameClient,\n page: withScroll(frameClient, windowScroll),\n scroll: getScroll$1(closestScrollable),\n scrollSize: scrollSize,\n shouldClipSubject: shouldClipSubject\n };\n }();\n\n var dimension = getDroppableDimension({\n descriptor: descriptor,\n isEnabled: !isDropDisabled,\n isCombineEnabled: isCombineEnabled,\n isFixedOnPage: env.isFixedOnPage,\n direction: direction,\n client: client,\n page: page,\n closest: closest\n });\n return dimension;\n});\n\nvar immediate = {\n passive: false\n};\nvar delayed = {\n passive: true\n};\nvar getListenerOptions = (function (options) {\n return options.shouldPublishImmediately ? immediate : delayed;\n});\n\nfunction useRequiredContext(Context) {\n var result = useContext(Context);\n !result ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find required context') : invariant(false) : void 0;\n return result;\n}\n\nvar getClosestScrollableFromDrag = function getClosestScrollableFromDrag(dragging) {\n return dragging && dragging.env.closestScrollable || null;\n};\n\nfunction useDroppablePublisher(args) {\n var whileDraggingRef = useRef(null);\n var appContext = useRequiredContext(AppContext);\n var uniqueId = useUniqueId('droppable');\n var registry = appContext.registry,\n marshal = appContext.marshal;\n var previousRef = usePrevious(args);\n var descriptor = useMemo(function () {\n return {\n id: args.droppableId,\n type: args.type,\n mode: args.mode\n };\n }, [args.droppableId, args.mode, args.type]);\n var publishedDescriptorRef = useRef(descriptor);\n var memoizedUpdateScroll = useMemo(function () {\n return memoizeOne(function (x, y) {\n !whileDraggingRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only update scroll when dragging') : invariant(false) : void 0;\n var scroll = {\n x: x,\n y: y\n };\n marshal.updateDroppableScroll(descriptor.id, scroll);\n });\n }, [descriptor.id, marshal]);\n var getClosestScroll = useCallback(function () {\n var dragging = whileDraggingRef.current;\n\n if (!dragging || !dragging.env.closestScrollable) {\n return origin;\n }\n\n return getScroll$1(dragging.env.closestScrollable);\n }, []);\n var updateScroll = useCallback(function () {\n var scroll = getClosestScroll();\n memoizedUpdateScroll(scroll.x, scroll.y);\n }, [getClosestScroll, memoizedUpdateScroll]);\n var scheduleScrollUpdate = useMemo(function () {\n return rafSchd(updateScroll);\n }, [updateScroll]);\n var onClosestScroll = useCallback(function () {\n var dragging = whileDraggingRef.current;\n var closest = getClosestScrollableFromDrag(dragging);\n !(dragging && closest) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find scroll options while scrolling') : invariant(false) : void 0;\n var options = dragging.scrollOptions;\n\n if (options.shouldPublishImmediately) {\n updateScroll();\n return;\n }\n\n scheduleScrollUpdate();\n }, [scheduleScrollUpdate, updateScroll]);\n var getDimensionAndWatchScroll = useCallback(function (windowScroll, options) {\n !!whileDraggingRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot collect a droppable while a drag is occurring') : invariant(false) : void 0;\n var previous = previousRef.current;\n var ref = previous.getDroppableRef();\n !ref ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot collect without a droppable ref') : invariant(false) : void 0;\n var env = getEnv(ref);\n var dragging = {\n ref: ref,\n descriptor: descriptor,\n env: env,\n scrollOptions: options\n };\n whileDraggingRef.current = dragging;\n var dimension = getDimension({\n ref: ref,\n descriptor: descriptor,\n env: env,\n windowScroll: windowScroll,\n direction: previous.direction,\n isDropDisabled: previous.isDropDisabled,\n isCombineEnabled: previous.isCombineEnabled,\n shouldClipSubject: !previous.ignoreContainerClipping\n });\n var scrollable = env.closestScrollable;\n\n if (scrollable) {\n scrollable.setAttribute(scrollContainer.contextId, appContext.contextId);\n scrollable.addEventListener('scroll', onClosestScroll, getListenerOptions(dragging.scrollOptions));\n\n if (process.env.NODE_ENV !== 'production') {\n checkForNestedScrollContainers(scrollable);\n }\n }\n\n return dimension;\n }, [appContext.contextId, descriptor, onClosestScroll, previousRef]);\n var getScrollWhileDragging = useCallback(function () {\n var dragging = whileDraggingRef.current;\n var closest = getClosestScrollableFromDrag(dragging);\n !(dragging && closest) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only recollect Droppable client for Droppables that have a scroll container') : invariant(false) : void 0;\n return getScroll$1(closest);\n }, []);\n var dragStopped = useCallback(function () {\n var dragging = whileDraggingRef.current;\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop drag when no active drag') : invariant(false) : void 0;\n var closest = getClosestScrollableFromDrag(dragging);\n whileDraggingRef.current = null;\n\n if (!closest) {\n return;\n }\n\n scheduleScrollUpdate.cancel();\n closest.removeAttribute(scrollContainer.contextId);\n closest.removeEventListener('scroll', onClosestScroll, getListenerOptions(dragging.scrollOptions));\n }, [onClosestScroll, scheduleScrollUpdate]);\n var scroll = useCallback(function (change) {\n var dragging = whileDraggingRef.current;\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot scroll when there is no drag') : invariant(false) : void 0;\n var closest = getClosestScrollableFromDrag(dragging);\n !closest ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot scroll a droppable with no closest scrollable') : invariant(false) : void 0;\n closest.scrollTop += change.y;\n closest.scrollLeft += change.x;\n }, []);\n var callbacks = useMemo(function () {\n return {\n getDimensionAndWatchScroll: getDimensionAndWatchScroll,\n getScrollWhileDragging: getScrollWhileDragging,\n dragStopped: dragStopped,\n scroll: scroll\n };\n }, [dragStopped, getDimensionAndWatchScroll, getScrollWhileDragging, scroll]);\n var entry = useMemo(function () {\n return {\n uniqueId: uniqueId,\n descriptor: descriptor,\n callbacks: callbacks\n };\n }, [callbacks, descriptor, uniqueId]);\n useIsomorphicLayoutEffect(function () {\n publishedDescriptorRef.current = entry.descriptor;\n registry.droppable.register(entry);\n return function () {\n if (whileDraggingRef.current) {\n process.env.NODE_ENV !== \"production\" ? warning('Unsupported: changing the droppableId or type of a Droppable during a drag') : void 0;\n dragStopped();\n }\n\n registry.droppable.unregister(entry);\n };\n }, [callbacks, descriptor, dragStopped, entry, marshal, registry.droppable]);\n useIsomorphicLayoutEffect(function () {\n if (!whileDraggingRef.current) {\n return;\n }\n\n marshal.updateDroppableIsEnabled(publishedDescriptorRef.current.id, !args.isDropDisabled);\n }, [args.isDropDisabled, marshal]);\n useIsomorphicLayoutEffect(function () {\n if (!whileDraggingRef.current) {\n return;\n }\n\n marshal.updateDroppableIsCombineEnabled(publishedDescriptorRef.current.id, args.isCombineEnabled);\n }, [args.isCombineEnabled, marshal]);\n}\n\nfunction noop$2() {}\n\nvar empty = {\n width: 0,\n height: 0,\n margin: noSpacing\n};\n\nvar getSize = function getSize(_ref) {\n var isAnimatingOpenOnMount = _ref.isAnimatingOpenOnMount,\n placeholder = _ref.placeholder,\n animate = _ref.animate;\n\n if (isAnimatingOpenOnMount) {\n return empty;\n }\n\n if (animate === 'close') {\n return empty;\n }\n\n return {\n height: placeholder.client.borderBox.height,\n width: placeholder.client.borderBox.width,\n margin: placeholder.client.margin\n };\n};\n\nvar getStyle = function getStyle(_ref2) {\n var isAnimatingOpenOnMount = _ref2.isAnimatingOpenOnMount,\n placeholder = _ref2.placeholder,\n animate = _ref2.animate;\n var size = getSize({\n isAnimatingOpenOnMount: isAnimatingOpenOnMount,\n placeholder: placeholder,\n animate: animate\n });\n return {\n display: placeholder.display,\n boxSizing: 'border-box',\n width: size.width,\n height: size.height,\n marginTop: size.margin.top,\n marginRight: size.margin.right,\n marginBottom: size.margin.bottom,\n marginLeft: size.margin.left,\n flexShrink: '0',\n flexGrow: '0',\n pointerEvents: 'none',\n transition: animate !== 'none' ? transitions.placeholder : null\n };\n};\n\nfunction Placeholder(props) {\n var animateOpenTimerRef = useRef(null);\n var tryClearAnimateOpenTimer = useCallback(function () {\n if (!animateOpenTimerRef.current) {\n return;\n }\n\n clearTimeout(animateOpenTimerRef.current);\n animateOpenTimerRef.current = null;\n }, []);\n var animate = props.animate,\n onTransitionEnd = props.onTransitionEnd,\n onClose = props.onClose,\n contextId = props.contextId;\n\n var _useState = useState(props.animate === 'open'),\n isAnimatingOpenOnMount = _useState[0],\n setIsAnimatingOpenOnMount = _useState[1];\n\n useEffect(function () {\n if (!isAnimatingOpenOnMount) {\n return noop$2;\n }\n\n if (animate !== 'open') {\n tryClearAnimateOpenTimer();\n setIsAnimatingOpenOnMount(false);\n return noop$2;\n }\n\n if (animateOpenTimerRef.current) {\n return noop$2;\n }\n\n animateOpenTimerRef.current = setTimeout(function () {\n animateOpenTimerRef.current = null;\n setIsAnimatingOpenOnMount(false);\n });\n return tryClearAnimateOpenTimer;\n }, [animate, isAnimatingOpenOnMount, tryClearAnimateOpenTimer]);\n var onSizeChangeEnd = useCallback(function (event) {\n if (event.propertyName !== 'height') {\n return;\n }\n\n onTransitionEnd();\n\n if (animate === 'close') {\n onClose();\n }\n }, [animate, onClose, onTransitionEnd]);\n var style = getStyle({\n isAnimatingOpenOnMount: isAnimatingOpenOnMount,\n animate: props.animate,\n placeholder: props.placeholder\n });\n return React.createElement(props.placeholder.tagName, {\n style: style,\n 'data-rbd-placeholder-context-id': contextId,\n onTransitionEnd: onSizeChangeEnd,\n ref: props.innerRef\n });\n}\n\nvar Placeholder$1 = React.memo(Placeholder);\n\nvar DroppableContext = React.createContext(null);\n\nfunction checkIsValidInnerRef(el) {\n !(el && isHtmlElement(el)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"\\n provided.innerRef has not been provided with a HTMLElement.\\n\\n You can find a guide on using the innerRef callback functions at:\\n https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/using-inner-ref.md\\n \") : invariant(false) : void 0;\n}\n\nfunction isBoolean(value) {\n return typeof value === 'boolean';\n}\n\nfunction runChecks(args, checks) {\n checks.forEach(function (check) {\n return check(args);\n });\n}\n\nvar shared = [function required(_ref) {\n var props = _ref.props;\n !props.droppableId ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'A Droppable requires a droppableId prop') : invariant(false) : void 0;\n !(typeof props.droppableId === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"A Droppable requires a [string] droppableId. Provided: [\" + typeof props.droppableId + \"]\") : invariant(false) : void 0;\n}, function _boolean(_ref2) {\n var props = _ref2.props;\n !isBoolean(props.isDropDisabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isDropDisabled must be a boolean') : invariant(false) : void 0;\n !isBoolean(props.isCombineEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isCombineEnabled must be a boolean') : invariant(false) : void 0;\n !isBoolean(props.ignoreContainerClipping) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ignoreContainerClipping must be a boolean') : invariant(false) : void 0;\n}, function ref(_ref3) {\n var getDroppableRef = _ref3.getDroppableRef;\n checkIsValidInnerRef(getDroppableRef());\n}];\nvar standard = [function placeholder(_ref4) {\n var props = _ref4.props,\n getPlaceholderRef = _ref4.getPlaceholderRef;\n\n if (!props.placeholder) {\n return;\n }\n\n var ref = getPlaceholderRef();\n\n if (ref) {\n return;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Droppable setup issue [droppableId: \\\"\" + props.droppableId + \"\\\"]:\\n DroppableProvided > placeholder could not be found.\\n\\n Please be sure to add the {provided.placeholder} React Node as a child of your Droppable.\\n More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/api/droppable.md\\n \") : void 0;\n}];\nvar virtual = [function hasClone(_ref5) {\n var props = _ref5.props;\n !props.renderClone ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Must provide a clone render function (renderClone) for virtual lists') : invariant(false) : void 0;\n}, function hasNoPlaceholder(_ref6) {\n var getPlaceholderRef = _ref6.getPlaceholderRef;\n !!getPlaceholderRef() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected virtual list to not have a placeholder') : invariant(false) : void 0;\n}];\nfunction useValidation(args) {\n useDevSetupWarning(function () {\n runChecks(args, shared);\n\n if (args.props.mode === 'standard') {\n runChecks(args, standard);\n }\n\n if (args.props.mode === 'virtual') {\n runChecks(args, virtual);\n }\n });\n}\n\nvar AnimateInOut = function (_React$PureComponent) {\n _inheritsLoose(AnimateInOut, _React$PureComponent);\n\n function AnimateInOut() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args)) || this;\n _this.state = {\n isVisible: Boolean(_this.props.on),\n data: _this.props.on,\n animate: _this.props.shouldAnimate && _this.props.on ? 'open' : 'none'\n };\n\n _this.onClose = function () {\n if (_this.state.animate !== 'close') {\n return;\n }\n\n _this.setState({\n isVisible: false\n });\n };\n\n return _this;\n }\n\n AnimateInOut.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n if (!props.shouldAnimate) {\n return {\n isVisible: Boolean(props.on),\n data: props.on,\n animate: 'none'\n };\n }\n\n if (props.on) {\n return {\n isVisible: true,\n data: props.on,\n animate: 'open'\n };\n }\n\n if (state.isVisible) {\n return {\n isVisible: true,\n data: state.data,\n animate: 'close'\n };\n }\n\n return {\n isVisible: false,\n animate: 'close',\n data: null\n };\n };\n\n var _proto = AnimateInOut.prototype;\n\n _proto.render = function render() {\n if (!this.state.isVisible) {\n return null;\n }\n\n var provided = {\n onClose: this.onClose,\n data: this.state.data,\n animate: this.state.animate\n };\n return this.props.children(provided);\n };\n\n return AnimateInOut;\n}(React.PureComponent);\n\nvar zIndexOptions = {\n dragging: 5000,\n dropAnimating: 4500\n};\n\nvar getDraggingTransition = function getDraggingTransition(shouldAnimateDragMovement, dropping) {\n if (dropping) {\n return transitions.drop(dropping.duration);\n }\n\n if (shouldAnimateDragMovement) {\n return transitions.snap;\n }\n\n return transitions.fluid;\n};\n\nvar getDraggingOpacity = function getDraggingOpacity(isCombining, isDropAnimating) {\n if (!isCombining) {\n return null;\n }\n\n return isDropAnimating ? combine.opacity.drop : combine.opacity.combining;\n};\n\nvar getShouldDraggingAnimate = function getShouldDraggingAnimate(dragging) {\n if (dragging.forceShouldAnimate != null) {\n return dragging.forceShouldAnimate;\n }\n\n return dragging.mode === 'SNAP';\n};\n\nfunction getDraggingStyle(dragging) {\n var dimension = dragging.dimension;\n var box = dimension.client;\n var offset = dragging.offset,\n combineWith = dragging.combineWith,\n dropping = dragging.dropping;\n var isCombining = Boolean(combineWith);\n var shouldAnimate = getShouldDraggingAnimate(dragging);\n var isDropAnimating = Boolean(dropping);\n var transform = isDropAnimating ? transforms.drop(offset, isCombining) : transforms.moveTo(offset);\n var style = {\n position: 'fixed',\n top: box.marginBox.top,\n left: box.marginBox.left,\n boxSizing: 'border-box',\n width: box.borderBox.width,\n height: box.borderBox.height,\n transition: getDraggingTransition(shouldAnimate, dropping),\n transform: transform,\n opacity: getDraggingOpacity(isCombining, isDropAnimating),\n zIndex: isDropAnimating ? zIndexOptions.dropAnimating : zIndexOptions.dragging,\n pointerEvents: 'none'\n };\n return style;\n}\n\nfunction getSecondaryStyle(secondary) {\n return {\n transform: transforms.moveTo(secondary.offset),\n transition: secondary.shouldAnimateDisplacement ? null : 'none'\n };\n}\n\nfunction getStyle$1(mapped) {\n return mapped.type === 'DRAGGING' ? getDraggingStyle(mapped) : getSecondaryStyle(mapped);\n}\n\nfunction getDimension$1(descriptor, el, windowScroll) {\n if (windowScroll === void 0) {\n windowScroll = origin;\n }\n\n var computedStyles = window.getComputedStyle(el);\n var borderBox = el.getBoundingClientRect();\n var client = calculateBox(borderBox, computedStyles);\n var page = withScroll(client, windowScroll);\n var placeholder = {\n client: client,\n tagName: el.tagName.toLowerCase(),\n display: computedStyles.display\n };\n var displaceBy = {\n x: client.marginBox.width,\n y: client.marginBox.height\n };\n var dimension = {\n descriptor: descriptor,\n placeholder: placeholder,\n displaceBy: displaceBy,\n client: client,\n page: page\n };\n return dimension;\n}\n\nfunction useDraggablePublisher(args) {\n var uniqueId = useUniqueId('draggable');\n var descriptor = args.descriptor,\n registry = args.registry,\n getDraggableRef = args.getDraggableRef,\n canDragInteractiveElements = args.canDragInteractiveElements,\n shouldRespectForcePress = args.shouldRespectForcePress,\n isEnabled = args.isEnabled;\n var options = useMemo(function () {\n return {\n canDragInteractiveElements: canDragInteractiveElements,\n shouldRespectForcePress: shouldRespectForcePress,\n isEnabled: isEnabled\n };\n }, [canDragInteractiveElements, isEnabled, shouldRespectForcePress]);\n var getDimension = useCallback(function (windowScroll) {\n var el = getDraggableRef();\n !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot get dimension when no ref is set') : invariant(false) : void 0;\n return getDimension$1(descriptor, el, windowScroll);\n }, [descriptor, getDraggableRef]);\n var entry = useMemo(function () {\n return {\n uniqueId: uniqueId,\n descriptor: descriptor,\n options: options,\n getDimension: getDimension\n };\n }, [descriptor, getDimension, options, uniqueId]);\n var publishedRef = useRef(entry);\n var isFirstPublishRef = useRef(true);\n useIsomorphicLayoutEffect(function () {\n registry.draggable.register(publishedRef.current);\n return function () {\n return registry.draggable.unregister(publishedRef.current);\n };\n }, [registry.draggable]);\n useIsomorphicLayoutEffect(function () {\n if (isFirstPublishRef.current) {\n isFirstPublishRef.current = false;\n return;\n }\n\n var last = publishedRef.current;\n publishedRef.current = entry;\n registry.draggable.update(entry, last);\n }, [entry, registry.draggable]);\n}\n\nfunction useValidation$1(props, contextId, getRef) {\n useDevSetupWarning(function () {\n function prefix(id) {\n return \"Draggable[id: \" + id + \"]: \";\n }\n\n var id = props.draggableId;\n !id ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Draggable requires a draggableId') : invariant(false) : void 0;\n !(typeof id === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Draggable requires a [string] draggableId.\\n Provided: [type: \" + typeof id + \"] (value: \" + id + \")\") : invariant(false) : void 0;\n !isInteger(props.index) ? process.env.NODE_ENV !== \"production\" ? invariant(false, prefix(id) + \" requires an integer index prop\") : invariant(false) : void 0;\n\n if (props.mapped.type === 'DRAGGING') {\n return;\n }\n\n checkIsValidInnerRef(getRef());\n\n if (props.isEnabled) {\n !findDragHandle(contextId, id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, prefix(id) + \" Unable to find drag handle\") : invariant(false) : void 0;\n }\n });\n}\nfunction useClonePropValidation(isClone) {\n useDev(function () {\n var initialRef = useRef(isClone);\n useDevSetupWarning(function () {\n !(isClone === initialRef.current) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Draggable isClone prop value changed during component life') : invariant(false) : void 0;\n }, [isClone]);\n });\n}\n\nfunction preventHtml5Dnd(event) {\n event.preventDefault();\n}\n\nfunction Draggable(props) {\n var ref = useRef(null);\n var setRef = useCallback(function (el) {\n ref.current = el;\n }, []);\n var getRef = useCallback(function () {\n return ref.current;\n }, []);\n\n var _useRequiredContext = useRequiredContext(AppContext),\n contextId = _useRequiredContext.contextId,\n dragHandleUsageInstructionsId = _useRequiredContext.dragHandleUsageInstructionsId,\n registry = _useRequiredContext.registry;\n\n var _useRequiredContext2 = useRequiredContext(DroppableContext),\n type = _useRequiredContext2.type,\n droppableId = _useRequiredContext2.droppableId;\n\n var descriptor = useMemo(function () {\n return {\n id: props.draggableId,\n index: props.index,\n type: type,\n droppableId: droppableId\n };\n }, [props.draggableId, props.index, type, droppableId]);\n var children = props.children,\n draggableId = props.draggableId,\n isEnabled = props.isEnabled,\n shouldRespectForcePress = props.shouldRespectForcePress,\n canDragInteractiveElements = props.canDragInteractiveElements,\n isClone = props.isClone,\n mapped = props.mapped,\n dropAnimationFinishedAction = props.dropAnimationFinished;\n useValidation$1(props, contextId, getRef);\n useClonePropValidation(isClone);\n\n if (!isClone) {\n var forPublisher = useMemo(function () {\n return {\n descriptor: descriptor,\n registry: registry,\n getDraggableRef: getRef,\n canDragInteractiveElements: canDragInteractiveElements,\n shouldRespectForcePress: shouldRespectForcePress,\n isEnabled: isEnabled\n };\n }, [descriptor, registry, getRef, canDragInteractiveElements, shouldRespectForcePress, isEnabled]);\n useDraggablePublisher(forPublisher);\n }\n\n var dragHandleProps = useMemo(function () {\n return isEnabled ? {\n tabIndex: 0,\n role: 'button',\n 'aria-describedby': dragHandleUsageInstructionsId,\n 'data-rbd-drag-handle-draggable-id': draggableId,\n 'data-rbd-drag-handle-context-id': contextId,\n draggable: false,\n onDragStart: preventHtml5Dnd\n } : null;\n }, [contextId, dragHandleUsageInstructionsId, draggableId, isEnabled]);\n var onMoveEnd = useCallback(function (event) {\n if (mapped.type !== 'DRAGGING') {\n return;\n }\n\n if (!mapped.dropping) {\n return;\n }\n\n if (event.propertyName !== 'transform') {\n return;\n }\n\n dropAnimationFinishedAction();\n }, [dropAnimationFinishedAction, mapped]);\n var provided = useMemo(function () {\n var style = getStyle$1(mapped);\n var onTransitionEnd = mapped.type === 'DRAGGING' && mapped.dropping ? onMoveEnd : null;\n var result = {\n innerRef: setRef,\n draggableProps: {\n 'data-rbd-draggable-context-id': contextId,\n 'data-rbd-draggable-id': draggableId,\n style: style,\n onTransitionEnd: onTransitionEnd\n },\n dragHandleProps: dragHandleProps\n };\n return result;\n }, [contextId, dragHandleProps, draggableId, mapped, onMoveEnd, setRef]);\n var rubric = useMemo(function () {\n return {\n draggableId: descriptor.id,\n type: descriptor.type,\n source: {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n }\n };\n }, [descriptor.droppableId, descriptor.id, descriptor.index, descriptor.type]);\n return children(provided, mapped.snapshot, rubric);\n}\n\nvar isStrictEqual = (function (a, b) {\n return a === b;\n});\n\nvar whatIsDraggedOverFromResult = (function (result) {\n var combine = result.combine,\n destination = result.destination;\n\n if (destination) {\n return destination.droppableId;\n }\n\n if (combine) {\n return combine.droppableId;\n }\n\n return null;\n});\n\nvar getCombineWithFromResult = function getCombineWithFromResult(result) {\n return result.combine ? result.combine.draggableId : null;\n};\n\nvar getCombineWithFromImpact = function getCombineWithFromImpact(impact) {\n return impact.at && impact.at.type === 'COMBINE' ? impact.at.combine.draggableId : null;\n};\n\nfunction getDraggableSelector() {\n var memoizedOffset = memoizeOne(function (x, y) {\n return {\n x: x,\n y: y\n };\n });\n var getMemoizedSnapshot = memoizeOne(function (mode, isClone, draggingOver, combineWith, dropping) {\n return {\n isDragging: true,\n isClone: isClone,\n isDropAnimating: Boolean(dropping),\n dropAnimation: dropping,\n mode: mode,\n draggingOver: draggingOver,\n combineWith: combineWith,\n combineTargetFor: null\n };\n });\n var getMemoizedProps = memoizeOne(function (offset, mode, dimension, isClone, draggingOver, combineWith, forceShouldAnimate) {\n return {\n mapped: {\n type: 'DRAGGING',\n dropping: null,\n draggingOver: draggingOver,\n combineWith: combineWith,\n mode: mode,\n offset: offset,\n dimension: dimension,\n forceShouldAnimate: forceShouldAnimate,\n snapshot: getMemoizedSnapshot(mode, isClone, draggingOver, combineWith, null)\n }\n };\n });\n\n var selector = function selector(state, ownProps) {\n if (state.isDragging) {\n if (state.critical.draggable.id !== ownProps.draggableId) {\n return null;\n }\n\n var offset = state.current.client.offset;\n var dimension = state.dimensions.draggables[ownProps.draggableId];\n var draggingOver = whatIsDraggedOver(state.impact);\n var combineWith = getCombineWithFromImpact(state.impact);\n var forceShouldAnimate = state.forceShouldAnimate;\n return getMemoizedProps(memoizedOffset(offset.x, offset.y), state.movementMode, dimension, ownProps.isClone, draggingOver, combineWith, forceShouldAnimate);\n }\n\n if (state.phase === 'DROP_ANIMATING') {\n var completed = state.completed;\n\n if (completed.result.draggableId !== ownProps.draggableId) {\n return null;\n }\n\n var isClone = ownProps.isClone;\n var _dimension = state.dimensions.draggables[ownProps.draggableId];\n var result = completed.result;\n var mode = result.mode;\n\n var _draggingOver = whatIsDraggedOverFromResult(result);\n\n var _combineWith = getCombineWithFromResult(result);\n\n var duration = state.dropDuration;\n var dropping = {\n duration: duration,\n curve: curves.drop,\n moveTo: state.newHomeClientOffset,\n opacity: _combineWith ? combine.opacity.drop : null,\n scale: _combineWith ? combine.scale.drop : null\n };\n return {\n mapped: {\n type: 'DRAGGING',\n offset: state.newHomeClientOffset,\n dimension: _dimension,\n dropping: dropping,\n draggingOver: _draggingOver,\n combineWith: _combineWith,\n mode: mode,\n forceShouldAnimate: null,\n snapshot: getMemoizedSnapshot(mode, isClone, _draggingOver, _combineWith, dropping)\n }\n };\n }\n\n return null;\n };\n\n return selector;\n}\n\nfunction getSecondarySnapshot(combineTargetFor) {\n return {\n isDragging: false,\n isDropAnimating: false,\n isClone: false,\n dropAnimation: null,\n mode: null,\n draggingOver: null,\n combineTargetFor: combineTargetFor,\n combineWith: null\n };\n}\n\nvar atRest = {\n mapped: {\n type: 'SECONDARY',\n offset: origin,\n combineTargetFor: null,\n shouldAnimateDisplacement: true,\n snapshot: getSecondarySnapshot(null)\n }\n};\n\nfunction getSecondarySelector() {\n var memoizedOffset = memoizeOne(function (x, y) {\n return {\n x: x,\n y: y\n };\n });\n var getMemoizedSnapshot = memoizeOne(getSecondarySnapshot);\n var getMemoizedProps = memoizeOne(function (offset, combineTargetFor, shouldAnimateDisplacement) {\n if (combineTargetFor === void 0) {\n combineTargetFor = null;\n }\n\n return {\n mapped: {\n type: 'SECONDARY',\n offset: offset,\n combineTargetFor: combineTargetFor,\n shouldAnimateDisplacement: shouldAnimateDisplacement,\n snapshot: getMemoizedSnapshot(combineTargetFor)\n }\n };\n });\n\n var getFallback = function getFallback(combineTargetFor) {\n return combineTargetFor ? getMemoizedProps(origin, combineTargetFor, true) : null;\n };\n\n var getProps = function getProps(ownId, draggingId, impact, afterCritical) {\n var visualDisplacement = impact.displaced.visible[ownId];\n var isAfterCriticalInVirtualList = Boolean(afterCritical.inVirtualList && afterCritical.effected[ownId]);\n var combine = tryGetCombine(impact);\n var combineTargetFor = combine && combine.draggableId === ownId ? draggingId : null;\n\n if (!visualDisplacement) {\n if (!isAfterCriticalInVirtualList) {\n return getFallback(combineTargetFor);\n }\n\n if (impact.displaced.invisible[ownId]) {\n return null;\n }\n\n var change = negate(afterCritical.displacedBy.point);\n\n var _offset = memoizedOffset(change.x, change.y);\n\n return getMemoizedProps(_offset, combineTargetFor, true);\n }\n\n if (isAfterCriticalInVirtualList) {\n return getFallback(combineTargetFor);\n }\n\n var displaceBy = impact.displacedBy.point;\n var offset = memoizedOffset(displaceBy.x, displaceBy.y);\n return getMemoizedProps(offset, combineTargetFor, visualDisplacement.shouldAnimate);\n };\n\n var selector = function selector(state, ownProps) {\n if (state.isDragging) {\n if (state.critical.draggable.id === ownProps.draggableId) {\n return null;\n }\n\n return getProps(ownProps.draggableId, state.critical.draggable.id, state.impact, state.afterCritical);\n }\n\n if (state.phase === 'DROP_ANIMATING') {\n var completed = state.completed;\n\n if (completed.result.draggableId === ownProps.draggableId) {\n return null;\n }\n\n return getProps(ownProps.draggableId, completed.result.draggableId, completed.impact, completed.afterCritical);\n }\n\n return null;\n };\n\n return selector;\n}\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n var draggingSelector = getDraggableSelector();\n var secondarySelector = getSecondarySelector();\n\n var selector = function selector(state, ownProps) {\n return draggingSelector(state, ownProps) || secondarySelector(state, ownProps) || atRest;\n };\n\n return selector;\n};\nvar mapDispatchToProps = {\n dropAnimationFinished: dropAnimationFinished\n};\nvar ConnectedDraggable = connect(makeMapStateToProps, mapDispatchToProps, null, {\n context: StoreContext,\n pure: true,\n areStatePropsEqual: isStrictEqual\n})(Draggable);\n\nfunction PrivateDraggable(props) {\n var droppableContext = useRequiredContext(DroppableContext);\n var isUsingCloneFor = droppableContext.isUsingCloneFor;\n\n if (isUsingCloneFor === props.draggableId && !props.isClone) {\n return null;\n }\n\n return React.createElement(ConnectedDraggable, props);\n}\nfunction PublicDraggable(props) {\n var isEnabled = typeof props.isDragDisabled === 'boolean' ? !props.isDragDisabled : true;\n var canDragInteractiveElements = Boolean(props.disableInteractiveElementBlocking);\n var shouldRespectForcePress = Boolean(props.shouldRespectForcePress);\n return React.createElement(PrivateDraggable, _extends({}, props, {\n isClone: false,\n isEnabled: isEnabled,\n canDragInteractiveElements: canDragInteractiveElements,\n shouldRespectForcePress: shouldRespectForcePress\n }));\n}\n\nfunction Droppable(props) {\n var appContext = useContext(AppContext);\n !appContext ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find app context') : invariant(false) : void 0;\n var contextId = appContext.contextId,\n isMovementAllowed = appContext.isMovementAllowed;\n var droppableRef = useRef(null);\n var placeholderRef = useRef(null);\n var children = props.children,\n droppableId = props.droppableId,\n type = props.type,\n mode = props.mode,\n direction = props.direction,\n ignoreContainerClipping = props.ignoreContainerClipping,\n isDropDisabled = props.isDropDisabled,\n isCombineEnabled = props.isCombineEnabled,\n snapshot = props.snapshot,\n useClone = props.useClone,\n updateViewportMaxScroll = props.updateViewportMaxScroll,\n getContainerForClone = props.getContainerForClone;\n var getDroppableRef = useCallback(function () {\n return droppableRef.current;\n }, []);\n var setDroppableRef = useCallback(function (value) {\n droppableRef.current = value;\n }, []);\n var getPlaceholderRef = useCallback(function () {\n return placeholderRef.current;\n }, []);\n var setPlaceholderRef = useCallback(function (value) {\n placeholderRef.current = value;\n }, []);\n useValidation({\n props: props,\n getDroppableRef: getDroppableRef,\n getPlaceholderRef: getPlaceholderRef\n });\n var onPlaceholderTransitionEnd = useCallback(function () {\n if (isMovementAllowed()) {\n updateViewportMaxScroll({\n maxScroll: getMaxWindowScroll()\n });\n }\n }, [isMovementAllowed, updateViewportMaxScroll]);\n useDroppablePublisher({\n droppableId: droppableId,\n type: type,\n mode: mode,\n direction: direction,\n isDropDisabled: isDropDisabled,\n isCombineEnabled: isCombineEnabled,\n ignoreContainerClipping: ignoreContainerClipping,\n getDroppableRef: getDroppableRef\n });\n var placeholder = React.createElement(AnimateInOut, {\n on: props.placeholder,\n shouldAnimate: props.shouldAnimatePlaceholder\n }, function (_ref) {\n var onClose = _ref.onClose,\n data = _ref.data,\n animate = _ref.animate;\n return React.createElement(Placeholder$1, {\n placeholder: data,\n onClose: onClose,\n innerRef: setPlaceholderRef,\n animate: animate,\n contextId: contextId,\n onTransitionEnd: onPlaceholderTransitionEnd\n });\n });\n var provided = useMemo(function () {\n return {\n innerRef: setDroppableRef,\n placeholder: placeholder,\n droppableProps: {\n 'data-rbd-droppable-id': droppableId,\n 'data-rbd-droppable-context-id': contextId\n }\n };\n }, [contextId, droppableId, placeholder, setDroppableRef]);\n var isUsingCloneFor = useClone ? useClone.dragging.draggableId : null;\n var droppableContext = useMemo(function () {\n return {\n droppableId: droppableId,\n type: type,\n isUsingCloneFor: isUsingCloneFor\n };\n }, [droppableId, isUsingCloneFor, type]);\n\n function getClone() {\n if (!useClone) {\n return null;\n }\n\n var dragging = useClone.dragging,\n render = useClone.render;\n var node = React.createElement(PrivateDraggable, {\n draggableId: dragging.draggableId,\n index: dragging.source.index,\n isClone: true,\n isEnabled: true,\n shouldRespectForcePress: false,\n canDragInteractiveElements: true\n }, function (draggableProvided, draggableSnapshot) {\n return render(draggableProvided, draggableSnapshot, dragging);\n });\n return ReactDOM.createPortal(node, getContainerForClone());\n }\n\n return React.createElement(DroppableContext.Provider, {\n value: droppableContext\n }, children(provided, snapshot), getClone());\n}\n\nvar isMatchingType = function isMatchingType(type, critical) {\n return type === critical.droppable.type;\n};\n\nvar getDraggable = function getDraggable(critical, dimensions) {\n return dimensions.draggables[critical.draggable.id];\n};\n\nvar makeMapStateToProps$1 = function makeMapStateToProps() {\n var idleWithAnimation = {\n placeholder: null,\n shouldAnimatePlaceholder: true,\n snapshot: {\n isDraggingOver: false,\n draggingOverWith: null,\n draggingFromThisWith: null,\n isUsingPlaceholder: false\n },\n useClone: null\n };\n\n var idleWithoutAnimation = _extends({}, idleWithAnimation, {\n shouldAnimatePlaceholder: false\n });\n\n var getDraggableRubric = memoizeOne(function (descriptor) {\n return {\n draggableId: descriptor.id,\n type: descriptor.type,\n source: {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n }\n };\n });\n var getMapProps = memoizeOne(function (id, isEnabled, isDraggingOverForConsumer, isDraggingOverForImpact, dragging, renderClone) {\n var draggableId = dragging.descriptor.id;\n var isHome = dragging.descriptor.droppableId === id;\n\n if (isHome) {\n var useClone = renderClone ? {\n render: renderClone,\n dragging: getDraggableRubric(dragging.descriptor)\n } : null;\n var _snapshot = {\n isDraggingOver: isDraggingOverForConsumer,\n draggingOverWith: isDraggingOverForConsumer ? draggableId : null,\n draggingFromThisWith: draggableId,\n isUsingPlaceholder: true\n };\n return {\n placeholder: dragging.placeholder,\n shouldAnimatePlaceholder: false,\n snapshot: _snapshot,\n useClone: useClone\n };\n }\n\n if (!isEnabled) {\n return idleWithoutAnimation;\n }\n\n if (!isDraggingOverForImpact) {\n return idleWithAnimation;\n }\n\n var snapshot = {\n isDraggingOver: isDraggingOverForConsumer,\n draggingOverWith: draggableId,\n draggingFromThisWith: null,\n isUsingPlaceholder: true\n };\n return {\n placeholder: dragging.placeholder,\n shouldAnimatePlaceholder: true,\n snapshot: snapshot,\n useClone: null\n };\n });\n\n var selector = function selector(state, ownProps) {\n var id = ownProps.droppableId;\n var type = ownProps.type;\n var isEnabled = !ownProps.isDropDisabled;\n var renderClone = ownProps.renderClone;\n\n if (state.isDragging) {\n var critical = state.critical;\n\n if (!isMatchingType(type, critical)) {\n return idleWithoutAnimation;\n }\n\n var dragging = getDraggable(critical, state.dimensions);\n var isDraggingOver = whatIsDraggedOver(state.impact) === id;\n return getMapProps(id, isEnabled, isDraggingOver, isDraggingOver, dragging, renderClone);\n }\n\n if (state.phase === 'DROP_ANIMATING') {\n var completed = state.completed;\n\n if (!isMatchingType(type, completed.critical)) {\n return idleWithoutAnimation;\n }\n\n var _dragging = getDraggable(completed.critical, state.dimensions);\n\n return getMapProps(id, isEnabled, whatIsDraggedOverFromResult(completed.result) === id, whatIsDraggedOver(completed.impact) === id, _dragging, renderClone);\n }\n\n if (state.phase === 'IDLE' && state.completed && !state.shouldFlush) {\n var _completed = state.completed;\n\n if (!isMatchingType(type, _completed.critical)) {\n return idleWithoutAnimation;\n }\n\n var wasOver = whatIsDraggedOver(_completed.impact) === id;\n var wasCombining = Boolean(_completed.impact.at && _completed.impact.at.type === 'COMBINE');\n var isHome = _completed.critical.droppable.id === id;\n\n if (wasOver) {\n return wasCombining ? idleWithAnimation : idleWithoutAnimation;\n }\n\n if (isHome) {\n return idleWithAnimation;\n }\n\n return idleWithoutAnimation;\n }\n\n return idleWithoutAnimation;\n };\n\n return selector;\n};\nvar mapDispatchToProps$1 = {\n updateViewportMaxScroll: updateViewportMaxScroll\n};\n\nfunction getBody() {\n !document.body ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'document.body is not ready') : invariant(false) : void 0;\n return document.body;\n}\n\nvar defaultProps = {\n mode: 'standard',\n type: 'DEFAULT',\n direction: 'vertical',\n isDropDisabled: false,\n isCombineEnabled: false,\n ignoreContainerClipping: false,\n renderClone: null,\n getContainerForClone: getBody\n};\nvar ConnectedDroppable = connect(makeMapStateToProps$1, mapDispatchToProps$1, null, {\n context: StoreContext,\n pure: true,\n areStatePropsEqual: isStrictEqual\n})(Droppable);\nConnectedDroppable.defaultProps = defaultProps;\n\nexport { DragDropContext, PublicDraggable as Draggable, ConnectedDroppable as Droppable, resetServerContext, useKeyboardSensor, useMouseSensor, useTouchSensor };\n","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports,require(\"react\"),require(\"prop-types\"),require(\"classnames\"),require(\"date-fns/isDate\"),require(\"date-fns/isValid\"),require(\"date-fns/format\"),require(\"date-fns/addMinutes\"),require(\"date-fns/addHours\"),require(\"date-fns/addDays\"),require(\"date-fns/addWeeks\"),require(\"date-fns/addMonths\"),require(\"date-fns/addQuarters\"),require(\"date-fns/addYears\"),require(\"date-fns/subDays\"),require(\"date-fns/subWeeks\"),require(\"date-fns/subMonths\"),require(\"date-fns/subQuarters\"),require(\"date-fns/subYears\"),require(\"date-fns/getSeconds\"),require(\"date-fns/getMinutes\"),require(\"date-fns/getHours\"),require(\"date-fns/getDay\"),require(\"date-fns/getDate\"),require(\"date-fns/getISOWeek\"),require(\"date-fns/getMonth\"),require(\"date-fns/getQuarter\"),require(\"date-fns/getYear\"),require(\"date-fns/getTime\"),require(\"date-fns/setSeconds\"),require(\"date-fns/setMinutes\"),require(\"date-fns/setHours\"),require(\"date-fns/setMonth\"),require(\"date-fns/setQuarter\"),require(\"date-fns/setYear\"),require(\"date-fns/min\"),require(\"date-fns/max\"),require(\"date-fns/differenceInCalendarDays\"),require(\"date-fns/differenceInCalendarMonths\"),require(\"date-fns/differenceInCalendarYears\"),require(\"date-fns/startOfDay\"),require(\"date-fns/startOfWeek\"),require(\"date-fns/startOfMonth\"),require(\"date-fns/startOfQuarter\"),require(\"date-fns/startOfYear\"),require(\"date-fns/endOfDay\"),require(\"date-fns/endOfWeek\"),require(\"date-fns/endOfMonth\"),require(\"date-fns/endOfYear\"),require(\"date-fns/isEqual\"),require(\"date-fns/isSameDay\"),require(\"date-fns/isSameMonth\"),require(\"date-fns/isSameYear\"),require(\"date-fns/isSameQuarter\"),require(\"date-fns/isAfter\"),require(\"date-fns/isBefore\"),require(\"date-fns/isWithinInterval\"),require(\"date-fns/toDate\"),require(\"date-fns/parse\"),require(\"date-fns/parseISO\"),require(\"react-onclickoutside\"),require(\"react-dom\"),require(\"react-popper\"),require(\"date-fns/set\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"react\",\"prop-types\",\"classnames\",\"date-fns/isDate\",\"date-fns/isValid\",\"date-fns/format\",\"date-fns/addMinutes\",\"date-fns/addHours\",\"date-fns/addDays\",\"date-fns/addWeeks\",\"date-fns/addMonths\",\"date-fns/addQuarters\",\"date-fns/addYears\",\"date-fns/subDays\",\"date-fns/subWeeks\",\"date-fns/subMonths\",\"date-fns/subQuarters\",\"date-fns/subYears\",\"date-fns/getSeconds\",\"date-fns/getMinutes\",\"date-fns/getHours\",\"date-fns/getDay\",\"date-fns/getDate\",\"date-fns/getISOWeek\",\"date-fns/getMonth\",\"date-fns/getQuarter\",\"date-fns/getYear\",\"date-fns/getTime\",\"date-fns/setSeconds\",\"date-fns/setMinutes\",\"date-fns/setHours\",\"date-fns/setMonth\",\"date-fns/setQuarter\",\"date-fns/setYear\",\"date-fns/min\",\"date-fns/max\",\"date-fns/differenceInCalendarDays\",\"date-fns/differenceInCalendarMonths\",\"date-fns/differenceInCalendarYears\",\"date-fns/startOfDay\",\"date-fns/startOfWeek\",\"date-fns/startOfMonth\",\"date-fns/startOfQuarter\",\"date-fns/startOfYear\",\"date-fns/endOfDay\",\"date-fns/endOfWeek\",\"date-fns/endOfMonth\",\"date-fns/endOfYear\",\"date-fns/isEqual\",\"date-fns/isSameDay\",\"date-fns/isSameMonth\",\"date-fns/isSameYear\",\"date-fns/isSameQuarter\",\"date-fns/isAfter\",\"date-fns/isBefore\",\"date-fns/isWithinInterval\",\"date-fns/toDate\",\"date-fns/parse\",\"date-fns/parseISO\",\"react-onclickoutside\",\"react-dom\",\"react-popper\",\"date-fns/set\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).DatePicker={},e.React,e.PropTypes,e.classNames,e.isDate,e.isValidDate,e.format,e.addMinutes,e.addHours,e.addDays,e.addWeeks,e.addMonths,e.addQuarters,e.addYears,e.subDays,e.subWeeks,e.subMonths,e.subQuarters,e.subYears,e.getSeconds,e.getMinutes,e.getHours,e.getDay,e.getDate,e.getISOWeek,e.getMonth,e.getQuarter,e.getYear,e.getTime,e.setSeconds,e.setMinutes,e.setHours,e.setMonth,e.setQuarter,e.setYear,e.min,e.max,e.differenceInCalendarDays,e.differenceInCalendarMonths,e.differenceInCalendarYears,e.startOfDay,e.startOfWeek,e.startOfMonth,e.startOfQuarter,e.startOfYear,e.endOfDay,null,e.endOfMonth,e.endOfYear,e.dfIsEqual,e.dfIsSameDay,e.dfIsSameMonth,e.dfIsSameYear,e.dfIsSameQuarter,e.isAfter,e.isBefore,e.isWithinInterval,e.toDate,e.parse,e.parseISO,e.onClickOutside,e.ReactDOM,e.ReactPopper,e.set)}(this,(function(e,t,r,a,n,o,s,i,p,l,c,d,u,f,h,m,y,v,D,g,k,w,b,S,C,_,M,P,E,N,x,Y,O,I,T,R,L,F,A,W,q,K,B,Q,H,j,V,U,z,$,G,J,X,Z,ee,te,re,ae,ne,oe,se,ie,pe,le){\"use strict\";function ce(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var de=ce(t),ue=ce(a),fe=ce(n),he=ce(o),me=ce(s),ye=ce(i),ve=ce(p),De=ce(l),ge=ce(c),ke=ce(d),we=ce(u),be=ce(f),Se=ce(h),Ce=ce(m),_e=ce(y),Me=ce(v),Pe=ce(D),Ee=ce(g),Ne=ce(k),xe=ce(w),Ye=ce(b),Oe=ce(S),Ie=ce(C),Te=ce(_),Re=ce(M),Le=ce(P),Fe=ce(E),Ae=ce(N),We=ce(x),qe=ce(Y),Ke=ce(O),Be=ce(I),Qe=ce(T),He=ce(R),je=ce(L),Ve=ce(F),Ue=ce(A),ze=ce(W),$e=ce(q),Ge=ce(K),Je=ce(B),Xe=ce(Q),Ze=ce(H),et=ce(j),tt=ce(U),rt=ce(z),at=ce($),nt=ce(G),ot=ce(J),st=ce(X),it=ce(Z),pt=ce(ee),lt=ce(te),ct=ce(re),dt=ce(ae),ut=ce(ne),ft=ce(oe),ht=ce(se),mt=ce(ie),yt=ce(le);function vt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function Dt(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?vt(Object(r),!0).forEach((function(t){St(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):vt(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function gt(e){return gt=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},gt(e)}function kt(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function wt(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(e,Ot(a.key),a)}}function bt(e,t,r){return t&&wt(e.prototype,t),r&&wt(e,r),Object.defineProperty(e,\"prototype\",{writable:!1}),e}function St(e,t,r){return(t=Ot(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ct(){return Ct=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e},Ct.apply(this,arguments)}function _t(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&Pt(e,t)}function Mt(e){return Mt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Mt(e)}function Pt(e,t){return Pt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Pt(e,t)}function Et(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}function Nt(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,a=Mt(e);if(t){var n=Mt(this).constructor;r=Reflect.construct(a,arguments,n)}else r=a.apply(this,arguments);return function(e,t){if(t&&(\"object\"==typeof t||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return Et(e)}(this,r)}}function xt(e){return function(e){if(Array.isArray(e))return Yt(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||function(e,t){if(!e)return;if(\"string\"==typeof e)return Yt(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===r&&e.constructor&&(r=e.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(e);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Yt(e,t)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function Yt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,a=new Array(t);r<t;r++)a[r]=e[r];return a}function Ot(e){var t=function(e,t){if(\"object\"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var a=r.call(e,t||\"default\");if(\"object\"!=typeof a)return a;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"==typeof t?t:String(t)}var It=function(e,t){switch(e){case\"P\":return t.date({width:\"short\"});case\"PP\":return t.date({width:\"medium\"});case\"PPP\":return t.date({width:\"long\"});default:return t.date({width:\"full\"})}},Tt=function(e,t){switch(e){case\"p\":return t.time({width:\"short\"});case\"pp\":return t.time({width:\"medium\"});case\"ppp\":return t.time({width:\"long\"});default:return t.time({width:\"full\"})}},Rt={p:Tt,P:function(e,t){var r,a=e.match(/(P+)(p+)?/)||[],n=a[1],o=a[2];if(!o)return It(e,t);switch(n){case\"P\":r=t.dateTime({width:\"short\"});break;case\"PP\":r=t.dateTime({width:\"medium\"});break;case\"PPP\":r=t.dateTime({width:\"long\"});break;default:r=t.dateTime({width:\"full\"})}return r.replace(\"{{date}}\",It(n,t)).replace(\"{{time}}\",Tt(o,t))}},Lt=12,Ft=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;function At(e){var t=e?\"string\"==typeof e||e instanceof String?ft.default(e):dt.default(e):new Date;return Wt(t)?t:null}function Wt(e,t){return t=t||new Date(\"1/1/1000\"),he.default(e)&&!lt.default(e,t)}function qt(e,t,r){if(\"en\"===r)return me.default(e,t,{awareOfUnicodeTokens:!0});var a=tr(r);return r&&!a&&console.warn('A locale object was not found for the provided string [\"'.concat(r,'\"].')),!a&&er()&&tr(er())&&(a=tr(er())),me.default(e,t,{locale:a||null,awareOfUnicodeTokens:!0})}function Kt(e,t){var r=t.dateFormat,a=t.locale;return e&&qt(e,Array.isArray(r)?r[0]:r,a)||\"\"}function Bt(e,t){var r=t.hour,a=void 0===r?0:r,n=t.minute,o=void 0===n?0:n,s=t.second,i=void 0===s?0:s;return qe.default(We.default(Ae.default(e,i),o),a)}function Qt(e,t,r){var a=tr(t||er());return Ge.default(e,{locale:a,weekStartsOn:r})}function Ht(e){return Je.default(e)}function jt(e){return Ze.default(e)}function Vt(e){return Xe.default(e)}function Ut(){return $e.default(At())}function zt(e,t){return e&&t?st.default(e,t):!e&&!t}function $t(e,t){return e&&t?ot.default(e,t):!e&&!t}function Gt(e,t){return e&&t?it.default(e,t):!e&&!t}function Jt(e,t){return e&&t?nt.default(e,t):!e&&!t}function Xt(e,t){return e&&t?at.default(e,t):!e&&!t}function Zt(e,t,r){var a,n=$e.default(t),o=et.default(r);try{a=ct.default(e,{start:n,end:o})}catch(e){a=!1}return a}function er(){return(\"undefined\"!=typeof window?window:globalThis).__localeId__}function tr(e){if(\"string\"==typeof e){var t=\"undefined\"!=typeof window?window:globalThis;return t.__localeData__?t.__localeData__[e]:null}return e}function rr(e,t){return qt(Ke.default(At(),e),\"LLLL\",t)}function ar(e,t){return qt(Ke.default(At(),e),\"LLL\",t)}function nr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.excludeDateIntervals,s=t.includeDates,i=t.includeDateIntervals,p=t.filterDate;return ur(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return Jt(e,t)}))||o&&o.some((function(t){var r=t.start,a=t.end;return ct.default(e,{start:r,end:a})}))||s&&!s.some((function(t){return Jt(e,t)}))||i&&!i.some((function(t){var r=t.start,a=t.end;return ct.default(e,{start:r,end:a})}))||p&&!p(At(e))||!1}function or(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeDates,a=t.excludeDateIntervals;return a&&a.length>0?a.some((function(t){var r=t.start,a=t.end;return ct.default(e,{start:r,end:a})})):r&&r.some((function(t){return Jt(e,t)}))||!1}function sr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return ur(e,{minDate:Je.default(r),maxDate:tt.default(a)})||n&&n.some((function(t){return $t(e,t)}))||o&&!o.some((function(t){return $t(e,t)}))||s&&!s(At(e))||!1}function ir(e,t,r,a){var n=Le.default(e),o=Te.default(e),s=Le.default(t),i=Te.default(t),p=Le.default(a);return n===s&&n===p?o<=r&&r<=i:n<s?p===n&&o<=r||p===s&&i>=r||p<s&&p>n:void 0}function pr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate;return ur(e,{minDate:r,maxDate:a})||n&&n.some((function(t){return Gt(e,t)}))||o&&!o.some((function(t){return Gt(e,t)}))||s&&!s(At(e))||!1}function lr(e,t,r){if(!he.default(t)||!he.default(r))return!1;var a=Le.default(t),n=Le.default(r);return a<=e&&n>=e}function cr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate,n=t.excludeDates,o=t.includeDates,s=t.filterDate,i=new Date(e,0,1);return ur(i,{minDate:Ze.default(r),maxDate:rt.default(a)})||n&&n.some((function(e){return zt(i,e)}))||o&&!o.some((function(e){return zt(i,e)}))||s&&!s(At(i))||!1}function dr(e,t,r,a){var n=Le.default(e),o=Re.default(e),s=Le.default(t),i=Re.default(t),p=Le.default(a);return n===s&&n===p?o<=r&&r<=i:n<s?p===n&&o<=r||p===s&&i>=r||p<s&&p>n:void 0}function ur(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.maxDate;return r&&Ve.default(e,r)<0||a&&Ve.default(e,a)>0}function fr(e,t){return t.some((function(t){return xe.default(t)===xe.default(e)&&Ne.default(t)===Ne.default(e)}))}function hr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeTimes,a=t.includeTimes,n=t.filterTime;return r&&fr(e,r)||a&&!fr(e,a)||n&&!n(e)||!1}function mr(e,t){var r=t.minTime,a=t.maxTime;if(!r||!a)throw new Error(\"Both minTime and maxTime props required\");var n,o=At(),s=qe.default(We.default(o,Ne.default(e)),xe.default(e)),i=qe.default(We.default(o,Ne.default(r)),xe.default(r)),p=qe.default(We.default(o,Ne.default(a)),xe.default(a));try{n=!ct.default(s,{start:i,end:p})}catch(e){n=!1}return n}function yr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.includeDates,n=_e.default(e,1);return r&&Ue.default(r,n)>0||a&&a.every((function(e){return Ue.default(e,n)>0}))||!1}function vr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.includeDates,n=ke.default(e,1);return r&&Ue.default(n,r)>0||a&&a.every((function(e){return Ue.default(n,e)>0}))||!1}function Dr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.includeDates,n=Pe.default(e,1);return r&&ze.default(r,n)>0||a&&a.every((function(e){return ze.default(e,n)>0}))||!1}function gr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.includeDates,n=be.default(e,1);return r&&ze.default(n,r)>0||a&&a.every((function(e){return ze.default(n,e)>0}))||!1}function kr(e){var t=e.minDate,r=e.includeDates;if(r&&t){var a=r.filter((function(e){return Ve.default(e,t)>=0}));return He.default(a)}return r?He.default(r):t}function wr(e){var t=e.maxDate,r=e.includeDates;if(r&&t){var a=r.filter((function(e){return Ve.default(e,t)<=0}));return je.default(a)}return r?je.default(r):t}function br(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"react-datepicker__day--highlighted\",r=new Map,a=0,n=e.length;a<n;a++){var o=e[a];if(fe.default(o)){var s=qt(o,\"MM.dd.yyyy\"),i=r.get(s)||[];i.includes(t)||(i.push(t),r.set(s,i))}else if(\"object\"===gt(o)){var p=Object.keys(o),l=p[0],c=o[p[0]];if(\"string\"==typeof l&&c.constructor===Array)for(var d=0,u=c.length;d<u;d++){var f=qt(c[d],\"MM.dd.yyyy\"),h=r.get(f)||[];h.includes(l)||(h.push(l),r.set(f,h))}}}return r}function Sr(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"react-datepicker__day--holidays\",r=new Map;return e.forEach((function(e){var a=e.date,n=e.holidayName;if(fe.default(a)){var o=qt(a,\"MM.dd.yyyy\"),s=r.get(o)||{};if(!(\"className\"in s)||s.className!==t||(i=s.holidayNames,p=[n],i.length!==p.length||!i.every((function(e,t){return e===p[t]})))){var i,p;s.className=t;var l=s.holidayNames;s.holidayNames=l?[].concat(xt(l),[n]):[n],r.set(o,s)}}})),r}function Cr(e,t,r,a,n){for(var o=n.length,s=[],i=0;i<o;i++){var p=ye.default(ve.default(e,xe.default(n[i])),Ne.default(n[i])),l=ye.default(e,(r+1)*a);pt.default(p,t)&<.default(p,l)&&s.push(n[i])}return s}function _r(e){return e<10?\"0\".concat(e):\"\".concat(e)}function Mr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Lt,r=Math.ceil(Le.default(e)/t)*t;return{startPeriod:r-(t-1),endPeriod:r}}function Pr(e){var t=e.getSeconds(),r=e.getMilliseconds();return dt.default(e.getTime()-1e3*t-r)}function Er(e,t,r,a){for(var n=[],o=0;o<2*t+1;o++){var s=e+t-o,i=!0;r&&(i=Le.default(r)<=s),a&&i&&(i=Le.default(a)>=s),i&&n.push(s)}return n}var Nr=function(e){_t(a,e);var r=Nt(a);function a(e){var n;kt(this,a),St(Et(n=r.call(this,e)),\"renderOptions\",(function(){var e=n.props.year,t=n.state.yearsList.map((function(t){return de.default.createElement(\"div\",{className:e===t?\"react-datepicker__year-option react-datepicker__year-option--selected_year\":\"react-datepicker__year-option\",key:t,onClick:n.onChange.bind(Et(n),t),\"aria-selected\":e===t?\"true\":void 0},e===t?de.default.createElement(\"span\",{className:\"react-datepicker__year-option--selected\"},\"✓\"):\"\",t)})),r=n.props.minDate?Le.default(n.props.minDate):null,a=n.props.maxDate?Le.default(n.props.maxDate):null;return a&&n.state.yearsList.find((function(e){return e===a}))||t.unshift(de.default.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"upcoming\",onClick:n.incrementYears},de.default.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-upcoming\"}))),r&&n.state.yearsList.find((function(e){return e===r}))||t.push(de.default.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"previous\",onClick:n.decrementYears},de.default.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-previous\"}))),t})),St(Et(n),\"onChange\",(function(e){n.props.onChange(e)})),St(Et(n),\"handleClickOutside\",(function(){n.props.onCancel()})),St(Et(n),\"shiftYears\",(function(e){var t=n.state.yearsList.map((function(t){return t+e}));n.setState({yearsList:t})})),St(Et(n),\"incrementYears\",(function(){return n.shiftYears(1)})),St(Et(n),\"decrementYears\",(function(){return n.shiftYears(-1)}));var o=e.yearDropdownItemNumber,s=e.scrollableYearDropdown,i=o||(s?10:5);return n.state={yearsList:Er(n.props.year,i,n.props.minDate,n.props.maxDate)},n.dropdownRef=t.createRef(),n}return bt(a,[{key:\"componentDidMount\",value:function(){var e=this.dropdownRef.current;if(e){var t=e.children?Array.from(e.children):null,r=t?t.find((function(e){return e.ariaSelected})):null;e.scrollTop=r?r.offsetTop+(r.clientHeight-e.clientHeight)/2:(e.scrollHeight-e.clientHeight)/2}}},{key:\"render\",value:function(){var e=ue.default({\"react-datepicker__year-dropdown\":!0,\"react-datepicker__year-dropdown--scrollable\":this.props.scrollableYearDropdown});return de.default.createElement(\"div\",{className:e,ref:this.dropdownRef},this.renderOptions())}}]),a}(de.default.Component),xr=ht.default(Nr),Yr=function(e){_t(r,e);var t=Nt(r);function r(){var e;kt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return St(Et(e=t.call.apply(t,[this].concat(n))),\"state\",{dropdownVisible:!1}),St(Et(e),\"renderSelectOptions\",(function(){for(var t=e.props.minDate?Le.default(e.props.minDate):1900,r=e.props.maxDate?Le.default(e.props.maxDate):2100,a=[],n=t;n<=r;n++)a.push(de.default.createElement(\"option\",{key:n,value:n},n));return a})),St(Et(e),\"onSelectChange\",(function(t){e.onChange(t.target.value)})),St(Et(e),\"renderSelectMode\",(function(){return de.default.createElement(\"select\",{value:e.props.year,className:\"react-datepicker__year-select\",onChange:e.onSelectChange},e.renderSelectOptions())})),St(Et(e),\"renderReadView\",(function(t){return de.default.createElement(\"div\",{key:\"read\",style:{visibility:t?\"visible\":\"hidden\"},className:\"react-datepicker__year-read-view\",onClick:function(t){return e.toggleDropdown(t)}},de.default.createElement(\"span\",{className:\"react-datepicker__year-read-view--down-arrow\"}),de.default.createElement(\"span\",{className:\"react-datepicker__year-read-view--selected-year\"},e.props.year))})),St(Et(e),\"renderDropdown\",(function(){return de.default.createElement(xr,{key:\"dropdown\",year:e.props.year,onChange:e.onChange,onCancel:e.toggleDropdown,minDate:e.props.minDate,maxDate:e.props.maxDate,scrollableYearDropdown:e.props.scrollableYearDropdown,yearDropdownItemNumber:e.props.yearDropdownItemNumber})})),St(Et(e),\"renderScrollMode\",(function(){var t=e.state.dropdownVisible,r=[e.renderReadView(!t)];return t&&r.unshift(e.renderDropdown()),r})),St(Et(e),\"onChange\",(function(t){e.toggleDropdown(),t!==e.props.year&&e.props.onChange(t)})),St(Et(e),\"toggleDropdown\",(function(t){e.setState({dropdownVisible:!e.state.dropdownVisible},(function(){e.props.adjustDateOnChange&&e.handleYearChange(e.props.date,t)}))})),St(Et(e),\"handleYearChange\",(function(t,r){e.onSelect(t,r),e.setOpen()})),St(Et(e),\"onSelect\",(function(t,r){e.props.onSelect&&e.props.onSelect(t,r)})),St(Et(e),\"setOpen\",(function(){e.props.setOpen&&e.props.setOpen(!0)})),e}return bt(r,[{key:\"render\",value:function(){var e;switch(this.props.dropdownMode){case\"scroll\":e=this.renderScrollMode();break;case\"select\":e=this.renderSelectMode()}return de.default.createElement(\"div\",{className:\"react-datepicker__year-dropdown-container react-datepicker__year-dropdown-container--\".concat(this.props.dropdownMode)},e)}}]),r}(de.default.Component),Or=function(e){_t(r,e);var t=Nt(r);function r(){var e;kt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return St(Et(e=t.call.apply(t,[this].concat(n))),\"isSelectedMonth\",(function(t){return e.props.month===t})),St(Et(e),\"renderOptions\",(function(){return e.props.monthNames.map((function(t,r){return de.default.createElement(\"div\",{className:e.isSelectedMonth(r)?\"react-datepicker__month-option react-datepicker__month-option--selected_month\":\"react-datepicker__month-option\",key:t,onClick:e.onChange.bind(Et(e),r),\"aria-selected\":e.isSelectedMonth(r)?\"true\":void 0},e.isSelectedMonth(r)?de.default.createElement(\"span\",{className:\"react-datepicker__month-option--selected\"},\"✓\"):\"\",t)}))})),St(Et(e),\"onChange\",(function(t){return e.props.onChange(t)})),St(Et(e),\"handleClickOutside\",(function(){return e.props.onCancel()})),e}return bt(r,[{key:\"render\",value:function(){return de.default.createElement(\"div\",{className:\"react-datepicker__month-dropdown\"},this.renderOptions())}}]),r}(de.default.Component),Ir=ht.default(Or),Tr=function(e){_t(r,e);var t=Nt(r);function r(){var e;kt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return St(Et(e=t.call.apply(t,[this].concat(n))),\"state\",{dropdownVisible:!1}),St(Et(e),\"renderSelectOptions\",(function(e){return e.map((function(e,t){return de.default.createElement(\"option\",{key:t,value:t},e)}))})),St(Et(e),\"renderSelectMode\",(function(t){return de.default.createElement(\"select\",{value:e.props.month,className:\"react-datepicker__month-select\",onChange:function(t){return e.onChange(t.target.value)}},e.renderSelectOptions(t))})),St(Et(e),\"renderReadView\",(function(t,r){return de.default.createElement(\"div\",{key:\"read\",style:{visibility:t?\"visible\":\"hidden\"},className:\"react-datepicker__month-read-view\",onClick:e.toggleDropdown},de.default.createElement(\"span\",{className:\"react-datepicker__month-read-view--down-arrow\"}),de.default.createElement(\"span\",{className:\"react-datepicker__month-read-view--selected-month\"},r[e.props.month]))})),St(Et(e),\"renderDropdown\",(function(t){return de.default.createElement(Ir,{key:\"dropdown\",month:e.props.month,monthNames:t,onChange:e.onChange,onCancel:e.toggleDropdown})})),St(Et(e),\"renderScrollMode\",(function(t){var r=e.state.dropdownVisible,a=[e.renderReadView(!r,t)];return r&&a.unshift(e.renderDropdown(t)),a})),St(Et(e),\"onChange\",(function(t){e.toggleDropdown(),t!==e.props.month&&e.props.onChange(t)})),St(Et(e),\"toggleDropdown\",(function(){return e.setState({dropdownVisible:!e.state.dropdownVisible})})),e}return bt(r,[{key:\"render\",value:function(){var e,t=this,r=[0,1,2,3,4,5,6,7,8,9,10,11].map(this.props.useShortMonthInDropdown?function(e){return ar(e,t.props.locale)}:function(e){return rr(e,t.props.locale)});switch(this.props.dropdownMode){case\"scroll\":e=this.renderScrollMode(r);break;case\"select\":e=this.renderSelectMode(r)}return de.default.createElement(\"div\",{className:\"react-datepicker__month-dropdown-container react-datepicker__month-dropdown-container--\".concat(this.props.dropdownMode)},e)}}]),r}(de.default.Component);function Rr(e,t){for(var r=[],a=Ht(e),n=Ht(t);!pt.default(a,n);)r.push(At(a)),a=ke.default(a,1);return r}var Lr=function(e){_t(r,e);var t=Nt(r);function r(e){var a;return kt(this,r),St(Et(a=t.call(this,e)),\"renderOptions\",(function(){return a.state.monthYearsList.map((function(e){var t=Fe.default(e),r=zt(a.props.date,e)&&$t(a.props.date,e);return de.default.createElement(\"div\",{className:r?\"react-datepicker__month-year-option--selected_month-year\":\"react-datepicker__month-year-option\",key:t,onClick:a.onChange.bind(Et(a),t),\"aria-selected\":r?\"true\":void 0},r?de.default.createElement(\"span\",{className:\"react-datepicker__month-year-option--selected\"},\"✓\"):\"\",qt(e,a.props.dateFormat,a.props.locale))}))})),St(Et(a),\"onChange\",(function(e){return a.props.onChange(e)})),St(Et(a),\"handleClickOutside\",(function(){a.props.onCancel()})),a.state={monthYearsList:Rr(a.props.minDate,a.props.maxDate)},a}return bt(r,[{key:\"render\",value:function(){var e=ue.default({\"react-datepicker__month-year-dropdown\":!0,\"react-datepicker__month-year-dropdown--scrollable\":this.props.scrollableMonthYearDropdown});return de.default.createElement(\"div\",{className:e},this.renderOptions())}}]),r}(de.default.Component),Fr=ht.default(Lr),Ar=function(e){_t(r,e);var t=Nt(r);function r(){var e;kt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return St(Et(e=t.call.apply(t,[this].concat(n))),\"state\",{dropdownVisible:!1}),St(Et(e),\"renderSelectOptions\",(function(){for(var t=Ht(e.props.minDate),r=Ht(e.props.maxDate),a=[];!pt.default(t,r);){var n=Fe.default(t);a.push(de.default.createElement(\"option\",{key:n,value:n},qt(t,e.props.dateFormat,e.props.locale))),t=ke.default(t,1)}return a})),St(Et(e),\"onSelectChange\",(function(t){e.onChange(t.target.value)})),St(Et(e),\"renderSelectMode\",(function(){return de.default.createElement(\"select\",{value:Fe.default(Ht(e.props.date)),className:\"react-datepicker__month-year-select\",onChange:e.onSelectChange},e.renderSelectOptions())})),St(Et(e),\"renderReadView\",(function(t){var r=qt(e.props.date,e.props.dateFormat,e.props.locale);return de.default.createElement(\"div\",{key:\"read\",style:{visibility:t?\"visible\":\"hidden\"},className:\"react-datepicker__month-year-read-view\",onClick:function(t){return e.toggleDropdown(t)}},de.default.createElement(\"span\",{className:\"react-datepicker__month-year-read-view--down-arrow\"}),de.default.createElement(\"span\",{className:\"react-datepicker__month-year-read-view--selected-month-year\"},r))})),St(Et(e),\"renderDropdown\",(function(){return de.default.createElement(Fr,{key:\"dropdown\",date:e.props.date,dateFormat:e.props.dateFormat,onChange:e.onChange,onCancel:e.toggleDropdown,minDate:e.props.minDate,maxDate:e.props.maxDate,scrollableMonthYearDropdown:e.props.scrollableMonthYearDropdown,locale:e.props.locale})})),St(Et(e),\"renderScrollMode\",(function(){var t=e.state.dropdownVisible,r=[e.renderReadView(!t)];return t&&r.unshift(e.renderDropdown()),r})),St(Et(e),\"onChange\",(function(t){e.toggleDropdown();var r=At(parseInt(t));zt(e.props.date,r)&&$t(e.props.date,r)||e.props.onChange(r)})),St(Et(e),\"toggleDropdown\",(function(){return e.setState({dropdownVisible:!e.state.dropdownVisible})})),e}return bt(r,[{key:\"render\",value:function(){var e;switch(this.props.dropdownMode){case\"scroll\":e=this.renderScrollMode();break;case\"select\":e=this.renderSelectMode()}return de.default.createElement(\"div\",{className:\"react-datepicker__month-year-dropdown-container react-datepicker__month-year-dropdown-container--\".concat(this.props.dropdownMode)},e)}}]),r}(de.default.Component),Wr=function(e){_t(r,e);var t=Nt(r);function r(){var e;kt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return St(Et(e=t.call.apply(t,[this].concat(n))),\"dayEl\",de.default.createRef()),St(Et(e),\"handleClick\",(function(t){!e.isDisabled()&&e.props.onClick&&e.props.onClick(t)})),St(Et(e),\"handleMouseEnter\",(function(t){!e.isDisabled()&&e.props.onMouseEnter&&e.props.onMouseEnter(t)})),St(Et(e),\"handleOnKeyDown\",(function(t){\" \"===t.key&&(t.preventDefault(),t.key=\"Enter\"),e.props.handleOnKeyDown(t)})),St(Et(e),\"isSameDay\",(function(t){return Jt(e.props.day,t)})),St(Et(e),\"isKeyboardSelected\",(function(){return!e.props.disabledKeyboardNavigation&&!(e.isSameDay(e.props.selected)||e.isSameWeek(e.props.selected))&&(e.isSameDay(e.props.preSelection)||e.isSameWeek(e.props.preSelection))})),St(Et(e),\"isDisabled\",(function(){return nr(e.props.day,e.props)})),St(Et(e),\"isExcluded\",(function(){return or(e.props.day,e.props)})),St(Et(e),\"isStartOfWeek\",(function(){return Jt(e.props.day,Qt(e.props.day,e.props.locale,e.props.calendarStartDay))})),St(Et(e),\"isSameWeek\",(function(t){return e.props.showWeekPicker&&Jt(t,Qt(e.props.day,e.props.locale,e.props.calendarStartDay))})),St(Et(e),\"getHighLightedClass\",(function(){var t=e.props,r=t.day,a=t.highlightDates;if(!a)return!1;var n=qt(r,\"MM.dd.yyyy\");return a.get(n)})),St(Et(e),\"getHolidaysClass\",(function(){var t=e.props,r=t.day,a=t.holidays;if(!a)return!1;var n=qt(r,\"MM.dd.yyyy\");return a.has(n)?[a.get(n).className]:void 0})),St(Et(e),\"isInRange\",(function(){var t=e.props,r=t.day,a=t.startDate,n=t.endDate;return!(!a||!n)&&Zt(r,a,n)})),St(Et(e),\"isInSelectingRange\",(function(){var t,r=e.props,a=r.day,n=r.selectsStart,o=r.selectsEnd,s=r.selectsRange,i=r.selectsDisabledDaysInRange,p=r.startDate,l=r.endDate,c=null!==(t=e.props.selectingDate)&&void 0!==t?t:e.props.preSelection;return!(!(n||o||s)||!c||!i&&e.isDisabled())&&(n&&l&&(lt.default(c,l)||Xt(c,l))?Zt(a,c,l):(o&&p&&(pt.default(c,p)||Xt(c,p))||!(!s||!p||l||!pt.default(c,p)&&!Xt(c,p)))&&Zt(a,p,c))})),St(Et(e),\"isSelectingRangeStart\",(function(){var t;if(!e.isInSelectingRange())return!1;var r=e.props,a=r.day,n=r.startDate,o=r.selectsStart,s=null!==(t=e.props.selectingDate)&&void 0!==t?t:e.props.preSelection;return Jt(a,o?s:n)})),St(Et(e),\"isSelectingRangeEnd\",(function(){var t;if(!e.isInSelectingRange())return!1;var r=e.props,a=r.day,n=r.endDate,o=r.selectsEnd,s=r.selectsRange,i=null!==(t=e.props.selectingDate)&&void 0!==t?t:e.props.preSelection;return Jt(a,o||s?i:n)})),St(Et(e),\"isRangeStart\",(function(){var t=e.props,r=t.day,a=t.startDate,n=t.endDate;return!(!a||!n)&&Jt(a,r)})),St(Et(e),\"isRangeEnd\",(function(){var t=e.props,r=t.day,a=t.startDate,n=t.endDate;return!(!a||!n)&&Jt(n,r)})),St(Et(e),\"isWeekend\",(function(){var t=Ye.default(e.props.day);return 0===t||6===t})),St(Et(e),\"isAfterMonth\",(function(){return void 0!==e.props.month&&(e.props.month+1)%12===Te.default(e.props.day)})),St(Et(e),\"isBeforeMonth\",(function(){return void 0!==e.props.month&&(Te.default(e.props.day)+1)%12===e.props.month})),St(Et(e),\"isCurrentDay\",(function(){return e.isSameDay(At())})),St(Et(e),\"isSelected\",(function(){return e.isSameDay(e.props.selected)||e.isSameWeek(e.props.selected)})),St(Et(e),\"getClassNames\",(function(t){var r,a=e.props.dayClassName?e.props.dayClassName(t):void 0;return ue.default(\"react-datepicker__day\",a,\"react-datepicker__day--\"+qt(e.props.day,\"ddd\",r),{\"react-datepicker__day--disabled\":e.isDisabled(),\"react-datepicker__day--excluded\":e.isExcluded(),\"react-datepicker__day--selected\":e.isSelected(),\"react-datepicker__day--keyboard-selected\":e.isKeyboardSelected(),\"react-datepicker__day--range-start\":e.isRangeStart(),\"react-datepicker__day--range-end\":e.isRangeEnd(),\"react-datepicker__day--in-range\":e.isInRange(),\"react-datepicker__day--in-selecting-range\":e.isInSelectingRange(),\"react-datepicker__day--selecting-range-start\":e.isSelectingRangeStart(),\"react-datepicker__day--selecting-range-end\":e.isSelectingRangeEnd(),\"react-datepicker__day--today\":e.isCurrentDay(),\"react-datepicker__day--weekend\":e.isWeekend(),\"react-datepicker__day--outside-month\":e.isAfterMonth()||e.isBeforeMonth()},e.getHighLightedClass(\"react-datepicker__day--highlighted\"),e.getHolidaysClass())})),St(Et(e),\"getAriaLabel\",(function(){var t=e.props,r=t.day,a=t.ariaLabelPrefixWhenEnabled,n=void 0===a?\"Choose\":a,o=t.ariaLabelPrefixWhenDisabled,s=void 0===o?\"Not available\":o,i=e.isDisabled()||e.isExcluded()?s:n;return\"\".concat(i,\" \").concat(qt(r,\"PPPP\",e.props.locale))})),St(Et(e),\"getTitle\",(function(){var t=e.props,r=t.day,a=t.holidays,n=void 0===a?new Map:a,o=qt(r,\"MM.dd.yyyy\");return n.has(o)&&n.get(o).holidayNames.length>0?n.get(o).holidayNames.join(\", \"):\"\"})),St(Et(e),\"getTabIndex\",(function(t,r){var a=t||e.props.selected,n=r||e.props.preSelection;return(!e.props.showWeekPicker||!e.props.showWeekNumber&&e.isStartOfWeek())&&(e.isKeyboardSelected()||e.isSameDay(a)&&Jt(n,a))?0:-1})),St(Et(e),\"handleFocusDay\",(function(){var t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=!1;0===e.getTabIndex()&&!r.isInputFocused&&e.isSameDay(e.props.preSelection)&&(document.activeElement&&document.activeElement!==document.body||(a=!0),e.props.inline&&!e.props.shouldFocusDayInline&&(a=!1),e.props.containerRef&&e.props.containerRef.current&&e.props.containerRef.current.contains(document.activeElement)&&document.activeElement.classList.contains(\"react-datepicker__day\")&&(a=!0),e.props.monthShowsDuplicateDaysEnd&&e.isAfterMonth()&&(a=!1),e.props.monthShowsDuplicateDaysStart&&e.isBeforeMonth()&&(a=!1)),a&&(null===(t=e.dayEl.current)||void 0===t||t.focus({preventScroll:!0}))})),St(Et(e),\"renderDayContents\",(function(){return e.props.monthShowsDuplicateDaysEnd&&e.isAfterMonth()||e.props.monthShowsDuplicateDaysStart&&e.isBeforeMonth()?null:e.props.renderDayContents?e.props.renderDayContents(Oe.default(e.props.day),e.props.day):Oe.default(e.props.day)})),St(Et(e),\"render\",(function(){return de.default.createElement(\"div\",{ref:e.dayEl,className:e.getClassNames(e.props.day),onKeyDown:e.handleOnKeyDown,onClick:e.handleClick,onMouseEnter:e.handleMouseEnter,tabIndex:e.getTabIndex(),\"aria-label\":e.getAriaLabel(),role:\"option\",title:e.getTitle(),\"aria-disabled\":e.isDisabled(),\"aria-current\":e.isCurrentDay()?\"date\":void 0,\"aria-selected\":e.isSelected()||e.isInRange()},e.renderDayContents(),\"\"!==e.getTitle()&&de.default.createElement(\"span\",{className:\"holiday-overlay\"},e.getTitle()))})),e}return bt(r,[{key:\"componentDidMount\",value:function(){this.handleFocusDay()}},{key:\"componentDidUpdate\",value:function(e){this.handleFocusDay(e)}}]),r}(de.default.Component),qr=function(e){_t(r,e);var t=Nt(r);function r(){var e;kt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return St(Et(e=t.call.apply(t,[this].concat(n))),\"weekNumberEl\",de.default.createRef()),St(Et(e),\"handleClick\",(function(t){e.props.onClick&&e.props.onClick(t)})),St(Et(e),\"handleOnKeyDown\",(function(t){\" \"===t.key&&(t.preventDefault(),t.key=\"Enter\"),e.props.handleOnKeyDown(t)})),St(Et(e),\"isKeyboardSelected\",(function(){return!e.props.disabledKeyboardNavigation&&!Jt(e.props.date,e.props.selected)&&Jt(e.props.date,e.props.preSelection)})),St(Et(e),\"getTabIndex\",(function(){return e.props.showWeekPicker&&e.props.showWeekNumber&&(e.isKeyboardSelected()||Jt(e.props.date,e.props.selected)&&Jt(e.props.preSelection,e.props.selected))?0:-1})),St(Et(e),\"handleFocusWeekNumber\",(function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=!1;0===e.getTabIndex()&&!t.isInputFocused&&Jt(e.props.date,e.props.preSelection)&&(document.activeElement&&document.activeElement!==document.body||(r=!0),e.props.inline&&!e.props.shouldFocusDayInline&&(r=!1),e.props.containerRef&&e.props.containerRef.current&&e.props.containerRef.current.contains(document.activeElement)&&document.activeElement&&document.activeElement.classList.contains(\"react-datepicker__week-number\")&&(r=!0)),r&&e.weekNumberEl.current&&e.weekNumberEl.current.focus({preventScroll:!0})})),e}return bt(r,[{key:\"componentDidMount\",value:function(){this.handleFocusWeekNumber()}},{key:\"componentDidUpdate\",value:function(e){this.handleFocusWeekNumber(e)}},{key:\"render\",value:function(){var e=this.props,t=e.weekNumber,r=e.ariaLabelPrefix,a=void 0===r?\"week \":r,n={\"react-datepicker__week-number\":!0,\"react-datepicker__week-number--clickable\":!!e.onClick,\"react-datepicker__week-number--selected\":Jt(this.props.date,this.props.selected),\"react-datepicker__week-number--keyboard-selected\":this.isKeyboardSelected()};return de.default.createElement(\"div\",{ref:this.weekNumberEl,className:ue.default(n),\"aria-label\":\"\".concat(a,\" \").concat(this.props.weekNumber),onClick:this.handleClick,onKeyDown:this.handleOnKeyDown,tabIndex:this.getTabIndex()},t)}}],[{key:\"defaultProps\",get:function(){return{ariaLabelPrefix:\"week \"}}}]),r}(de.default.Component),Kr=function(e){_t(r,e);var t=Nt(r);function r(){var e;kt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return St(Et(e=t.call.apply(t,[this].concat(n))),\"handleDayClick\",(function(t,r){e.props.onDayClick&&e.props.onDayClick(t,r)})),St(Et(e),\"handleDayMouseEnter\",(function(t){e.props.onDayMouseEnter&&e.props.onDayMouseEnter(t)})),St(Et(e),\"handleWeekClick\",(function(t,r,a){if(\"function\"==typeof e.props.onWeekSelect&&e.props.onWeekSelect(t,r,a),e.props.showWeekPicker){var n=Qt(t,e.props.locale,e.props.calendarStartDay);e.handleDayClick(n,a)}e.props.shouldCloseOnSelect&&e.props.setOpen(!1)})),St(Et(e),\"formatWeekNumber\",(function(t){return e.props.formatWeekNumber?e.props.formatWeekNumber(t):function(e,t){var r=t&&tr(t)||er()&&tr(er());return Ie.default(e,r?{locale:r}:null)}(t)})),St(Et(e),\"renderDays\",(function(){var t=Qt(e.props.day,e.props.locale,e.props.calendarStartDay),r=[],a=e.formatWeekNumber(t);if(e.props.showWeekNumber){var n=e.props.onWeekSelect||e.props.showWeekPicker?e.handleWeekClick.bind(Et(e),t,a):void 0;r.push(de.default.createElement(qr,{key:\"W\",weekNumber:a,date:t,onClick:n,selected:e.props.selected,preSelection:e.props.preSelection,ariaLabelPrefix:e.props.ariaLabelPrefix,showWeekPicker:e.props.showWeekPicker,showWeekNumber:e.props.showWeekNumber,disabledKeyboardNavigation:e.props.disabledKeyboardNavigation,handleOnKeyDown:e.props.handleOnKeyDown,isInputFocused:e.props.isInputFocused,containerRef:e.props.containerRef}))}return r.concat([0,1,2,3,4,5,6].map((function(r){var a=De.default(t,r);return de.default.createElement(Wr,{ariaLabelPrefixWhenEnabled:e.props.chooseDayAriaLabelPrefix,ariaLabelPrefixWhenDisabled:e.props.disabledDayAriaLabelPrefix,key:a.valueOf(),day:a,month:e.props.month,onClick:e.handleDayClick.bind(Et(e),a),onMouseEnter:e.handleDayMouseEnter.bind(Et(e),a),minDate:e.props.minDate,maxDate:e.props.maxDate,excludeDates:e.props.excludeDates,excludeDateIntervals:e.props.excludeDateIntervals,includeDates:e.props.includeDates,includeDateIntervals:e.props.includeDateIntervals,highlightDates:e.props.highlightDates,holidays:e.props.holidays,selectingDate:e.props.selectingDate,filterDate:e.props.filterDate,preSelection:e.props.preSelection,selected:e.props.selected,selectsStart:e.props.selectsStart,selectsEnd:e.props.selectsEnd,selectsRange:e.props.selectsRange,showWeekPicker:e.props.showWeekPicker,showWeekNumber:e.props.showWeekNumber,selectsDisabledDaysInRange:e.props.selectsDisabledDaysInRange,startDate:e.props.startDate,endDate:e.props.endDate,dayClassName:e.props.dayClassName,renderDayContents:e.props.renderDayContents,disabledKeyboardNavigation:e.props.disabledKeyboardNavigation,handleOnKeyDown:e.props.handleOnKeyDown,isInputFocused:e.props.isInputFocused,containerRef:e.props.containerRef,inline:e.props.inline,shouldFocusDayInline:e.props.shouldFocusDayInline,monthShowsDuplicateDaysEnd:e.props.monthShowsDuplicateDaysEnd,monthShowsDuplicateDaysStart:e.props.monthShowsDuplicateDaysStart,locale:e.props.locale})})))})),St(Et(e),\"startOfWeek\",(function(){return Qt(e.props.day,e.props.locale,e.props.calendarStartDay)})),St(Et(e),\"isKeyboardSelected\",(function(){return!e.props.disabledKeyboardNavigation&&!Jt(e.startOfWeek(),e.props.selected)&&Jt(e.startOfWeek(),e.props.preSelection)})),e}return bt(r,[{key:\"render\",value:function(){var e={\"react-datepicker__week\":!0,\"react-datepicker__week--selected\":Jt(this.startOfWeek(),this.props.selected),\"react-datepicker__week--keyboard-selected\":this.isKeyboardSelected()};return de.default.createElement(\"div\",{className:ue.default(e)},this.renderDays())}}],[{key:\"defaultProps\",get:function(){return{shouldCloseOnSelect:!0}}}]),r}(de.default.Component),Br=\"two_columns\",Qr=\"three_columns\",Hr=\"four_columns\",jr=St(St(St({},Br,{grid:[[0,1],[2,3],[4,5],[6,7],[8,9],[10,11]],verticalNavigationOffset:2}),Qr,{grid:[[0,1,2],[3,4,5],[6,7,8],[9,10,11]],verticalNavigationOffset:3}),Hr,{grid:[[0,1,2,3],[4,5,6,7],[8,9,10,11]],verticalNavigationOffset:4});function Vr(e,t){return e?Hr:t?Br:Qr}var Ur=function(e){_t(r,e);var t=Nt(r);function r(){var e;kt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return St(Et(e=t.call.apply(t,[this].concat(n))),\"MONTH_REFS\",xt(Array(12)).map((function(){return de.default.createRef()}))),St(Et(e),\"QUARTER_REFS\",xt(Array(4)).map((function(){return de.default.createRef()}))),St(Et(e),\"isDisabled\",(function(t){return nr(t,e.props)})),St(Et(e),\"isExcluded\",(function(t){return or(t,e.props)})),St(Et(e),\"handleDayClick\",(function(t,r){e.props.onDayClick&&e.props.onDayClick(t,r,e.props.orderInDisplay)})),St(Et(e),\"handleDayMouseEnter\",(function(t){e.props.onDayMouseEnter&&e.props.onDayMouseEnter(t)})),St(Et(e),\"handleMouseLeave\",(function(){e.props.onMouseLeave&&e.props.onMouseLeave()})),St(Et(e),\"isRangeStartMonth\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate;return!(!n||!o)&&$t(Ke.default(a,t),n)})),St(Et(e),\"isRangeStartQuarter\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate;return!(!n||!o)&&Gt(Be.default(a,t),n)})),St(Et(e),\"isRangeEndMonth\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate;return!(!n||!o)&&$t(Ke.default(a,t),o)})),St(Et(e),\"isRangeEndQuarter\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate;return!(!n||!o)&&Gt(Be.default(a,t),o)})),St(Et(e),\"isInSelectingRangeMonth\",(function(t){var r,a=e.props,n=a.day,o=a.selectsStart,s=a.selectsEnd,i=a.selectsRange,p=a.startDate,l=a.endDate,c=null!==(r=e.props.selectingDate)&&void 0!==r?r:e.props.preSelection;return!(!(o||s||i)||!c)&&(o&&l?ir(c,l,t,n):(s&&p||!(!i||!p||l))&&ir(p,c,t,n))})),St(Et(e),\"isSelectingMonthRangeStart\",(function(t){var r;if(!e.isInSelectingRangeMonth(t))return!1;var a=e.props,n=a.day,o=a.startDate,s=a.selectsStart,i=Ke.default(n,t),p=null!==(r=e.props.selectingDate)&&void 0!==r?r:e.props.preSelection;return $t(i,s?p:o)})),St(Et(e),\"isSelectingMonthRangeEnd\",(function(t){var r;if(!e.isInSelectingRangeMonth(t))return!1;var a=e.props,n=a.day,o=a.endDate,s=a.selectsEnd,i=a.selectsRange,p=Ke.default(n,t),l=null!==(r=e.props.selectingDate)&&void 0!==r?r:e.props.preSelection;return $t(p,s||i?l:o)})),St(Et(e),\"isInSelectingRangeQuarter\",(function(t){var r,a=e.props,n=a.day,o=a.selectsStart,s=a.selectsEnd,i=a.selectsRange,p=a.startDate,l=a.endDate,c=null!==(r=e.props.selectingDate)&&void 0!==r?r:e.props.preSelection;return!(!(o||s||i)||!c)&&(o&&l?dr(c,l,t,n):(s&&p||!(!i||!p||l))&&dr(p,c,t,n))})),St(Et(e),\"isWeekInMonth\",(function(t){var r=e.props.day,a=De.default(t,6);return $t(t,r)||$t(a,r)})),St(Et(e),\"isCurrentMonth\",(function(e,t){return Le.default(e)===Le.default(At())&&t===Te.default(At())})),St(Et(e),\"isCurrentQuarter\",(function(e,t){return Le.default(e)===Le.default(At())&&t===Re.default(At())})),St(Et(e),\"isSelectedMonth\",(function(e,t,r){return Te.default(r)===t&&Le.default(e)===Le.default(r)})),St(Et(e),\"isSelectedQuarter\",(function(e,t,r){return Re.default(e)===t&&Le.default(e)===Le.default(r)})),St(Et(e),\"renderWeeks\",(function(){for(var t=[],r=e.props.fixedHeight,a=0,n=!1,o=Qt(Ht(e.props.day),e.props.locale,e.props.calendarStartDay);t.push(de.default.createElement(Kr,{ariaLabelPrefix:e.props.weekAriaLabelPrefix,chooseDayAriaLabelPrefix:e.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:e.props.disabledDayAriaLabelPrefix,key:a,day:o,month:Te.default(e.props.day),onDayClick:e.handleDayClick,onDayMouseEnter:e.handleDayMouseEnter,onWeekSelect:e.props.onWeekSelect,formatWeekNumber:e.props.formatWeekNumber,locale:e.props.locale,minDate:e.props.minDate,maxDate:e.props.maxDate,excludeDates:e.props.excludeDates,excludeDateIntervals:e.props.excludeDateIntervals,includeDates:e.props.includeDates,includeDateIntervals:e.props.includeDateIntervals,inline:e.props.inline,shouldFocusDayInline:e.props.shouldFocusDayInline,highlightDates:e.props.highlightDates,holidays:e.props.holidays,selectingDate:e.props.selectingDate,filterDate:e.props.filterDate,preSelection:e.props.preSelection,selected:e.props.selected,selectsStart:e.props.selectsStart,selectsEnd:e.props.selectsEnd,selectsRange:e.props.selectsRange,selectsDisabledDaysInRange:e.props.selectsDisabledDaysInRange,showWeekNumber:e.props.showWeekNumbers,showWeekPicker:e.props.showWeekPicker,startDate:e.props.startDate,endDate:e.props.endDate,dayClassName:e.props.dayClassName,setOpen:e.props.setOpen,shouldCloseOnSelect:e.props.shouldCloseOnSelect,disabledKeyboardNavigation:e.props.disabledKeyboardNavigation,renderDayContents:e.props.renderDayContents,handleOnKeyDown:e.props.handleOnKeyDown,isInputFocused:e.props.isInputFocused,containerRef:e.props.containerRef,calendarStartDay:e.props.calendarStartDay,monthShowsDuplicateDaysEnd:e.props.monthShowsDuplicateDaysEnd,monthShowsDuplicateDaysStart:e.props.monthShowsDuplicateDaysStart})),!n;){a++,o=ge.default(o,1);var s=r&&a>=6,i=!r&&!e.isWeekInMonth(o);if(s||i){if(!e.props.peekNextMonth)break;n=!0}}return t})),St(Et(e),\"onMonthClick\",(function(t,r){e.handleDayClick(Ht(Ke.default(e.props.day,r)),t)})),St(Et(e),\"onMonthMouseEnter\",(function(t){e.handleDayMouseEnter(Ht(Ke.default(e.props.day,t)))})),St(Et(e),\"handleMonthNavigation\",(function(t,r){e.isDisabled(r)||e.isExcluded(r)||(e.props.setPreSelection(r),e.MONTH_REFS[t].current&&e.MONTH_REFS[t].current.focus())})),St(Et(e),\"onMonthKeyDown\",(function(t,r){var a=e.props,n=a.selected,o=a.preSelection,s=a.disabledKeyboardNavigation,i=a.showTwoColumnMonthYearPicker,p=a.showFourColumnMonthYearPicker,l=a.setPreSelection,c=t.key;if(\"Tab\"!==c&&t.preventDefault(),!s){var d=Vr(p,i),u=jr[d].verticalNavigationOffset,f=jr[d].grid;switch(c){case\"Enter\":e.onMonthClick(t,r),l(n);break;case\"ArrowRight\":e.handleMonthNavigation(11===r?0:r+1,ke.default(o,1));break;case\"ArrowLeft\":e.handleMonthNavigation(0===r?11:r-1,_e.default(o,1));break;case\"ArrowUp\":e.handleMonthNavigation(f[0].includes(r)?r+12-u:r-u,_e.default(o,u));break;case\"ArrowDown\":e.handleMonthNavigation(f[f.length-1].includes(r)?r-12+u:r+u,ke.default(o,u))}}})),St(Et(e),\"onQuarterClick\",(function(t,r){e.handleDayClick(Vt(Be.default(e.props.day,r)),t)})),St(Et(e),\"onQuarterMouseEnter\",(function(t){e.handleDayMouseEnter(Vt(Be.default(e.props.day,t)))})),St(Et(e),\"handleQuarterNavigation\",(function(t,r){e.isDisabled(r)||e.isExcluded(r)||(e.props.setPreSelection(r),e.QUARTER_REFS[t-1].current&&e.QUARTER_REFS[t-1].current.focus())})),St(Et(e),\"onQuarterKeyDown\",(function(t,r){var a=t.key;if(!e.props.disabledKeyboardNavigation)switch(a){case\"Enter\":e.onQuarterClick(t,r),e.props.setPreSelection(e.props.selected);break;case\"ArrowRight\":e.handleQuarterNavigation(4===r?1:r+1,we.default(e.props.preSelection,1));break;case\"ArrowLeft\":e.handleQuarterNavigation(1===r?4:r-1,Me.default(e.props.preSelection,1))}})),St(Et(e),\"getMonthClassNames\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate,s=r.selected,i=r.minDate,p=r.maxDate,l=r.preSelection,c=r.monthClassName,d=r.excludeDates,u=r.includeDates,f=c?c(Ke.default(a,t)):void 0,h=Ke.default(a,t);return ue.default(\"react-datepicker__month-text\",\"react-datepicker__month-\".concat(t),f,{\"react-datepicker__month-text--disabled\":(i||p||d||u)&&sr(h,e.props),\"react-datepicker__month-text--selected\":e.isSelectedMonth(a,t,s),\"react-datepicker__month-text--keyboard-selected\":!e.props.disabledKeyboardNavigation&&Te.default(l)===t,\"react-datepicker__month-text--in-selecting-range\":e.isInSelectingRangeMonth(t),\"react-datepicker__month-text--in-range\":ir(n,o,t,a),\"react-datepicker__month-text--range-start\":e.isRangeStartMonth(t),\"react-datepicker__month-text--range-end\":e.isRangeEndMonth(t),\"react-datepicker__month-text--selecting-range-start\":e.isSelectingMonthRangeStart(t),\"react-datepicker__month-text--selecting-range-end\":e.isSelectingMonthRangeEnd(t),\"react-datepicker__month-text--today\":e.isCurrentMonth(a,t)})})),St(Et(e),\"getTabIndex\",(function(t){var r=Te.default(e.props.preSelection);return e.props.disabledKeyboardNavigation||t!==r?\"-1\":\"0\"})),St(Et(e),\"getQuarterTabIndex\",(function(t){var r=Re.default(e.props.preSelection);return e.props.disabledKeyboardNavigation||t!==r?\"-1\":\"0\"})),St(Et(e),\"getAriaLabel\",(function(t){var r=e.props,a=r.chooseDayAriaLabelPrefix,n=void 0===a?\"Choose\":a,o=r.disabledDayAriaLabelPrefix,s=void 0===o?\"Not available\":o,i=r.day,p=Ke.default(i,t),l=e.isDisabled(p)||e.isExcluded(p)?s:n;return\"\".concat(l,\" \").concat(qt(p,\"MMMM yyyy\"))})),St(Et(e),\"getQuarterClassNames\",(function(t){var r=e.props,a=r.day,n=r.startDate,o=r.endDate,s=r.selected,i=r.minDate,p=r.maxDate,l=r.preSelection,c=r.disabledKeyboardNavigation;return ue.default(\"react-datepicker__quarter-text\",\"react-datepicker__quarter-\".concat(t),{\"react-datepicker__quarter-text--disabled\":(i||p)&&pr(Be.default(a,t),e.props),\"react-datepicker__quarter-text--selected\":e.isSelectedQuarter(a,t,s),\"react-datepicker__quarter-text--keyboard-selected\":!c&&Re.default(l)===t,\"react-datepicker__quarter-text--in-selecting-range\":e.isInSelectingRangeQuarter(t),\"react-datepicker__quarter-text--in-range\":dr(n,o,t,a),\"react-datepicker__quarter-text--range-start\":e.isRangeStartQuarter(t),\"react-datepicker__quarter-text--range-end\":e.isRangeEndQuarter(t)})})),St(Et(e),\"getMonthContent\",(function(t){var r=e.props,a=r.showFullMonthYearPicker,n=r.renderMonthContent,o=r.locale,s=r.day,i=ar(t,o),p=rr(t,o);return n?n(t,i,p,s):a?p:i})),St(Et(e),\"getQuarterContent\",(function(t){var r=e.props,a=r.renderQuarterContent,n=function(e,t){return qt(Be.default(At(),e),\"QQQ\",t)}(t,r.locale);return a?a(t,n):n})),St(Et(e),\"renderMonths\",(function(){var t=e.props,r=t.showTwoColumnMonthYearPicker,a=t.showFourColumnMonthYearPicker,n=t.day,o=t.selected;return jr[Vr(a,r)].grid.map((function(t,r){return de.default.createElement(\"div\",{className:\"react-datepicker__month-wrapper\",key:r},t.map((function(t,r){return de.default.createElement(\"div\",{ref:e.MONTH_REFS[t],key:r,onClick:function(r){e.onMonthClick(r,t)},onKeyDown:function(r){e.onMonthKeyDown(r,t)},onMouseEnter:function(){return e.onMonthMouseEnter(t)},tabIndex:e.getTabIndex(t),className:e.getMonthClassNames(t),role:\"option\",\"aria-label\":e.getAriaLabel(t),\"aria-current\":e.isCurrentMonth(n,t)?\"date\":void 0,\"aria-selected\":e.isSelectedMonth(n,t,o)},e.getMonthContent(t))})))}))})),St(Et(e),\"renderQuarters\",(function(){var t=e.props,r=t.day,a=t.selected;return de.default.createElement(\"div\",{className:\"react-datepicker__quarter-wrapper\"},[1,2,3,4].map((function(t,n){return de.default.createElement(\"div\",{key:n,ref:e.QUARTER_REFS[n],role:\"option\",onClick:function(r){e.onQuarterClick(r,t)},onKeyDown:function(r){e.onQuarterKeyDown(r,t)},onMouseEnter:function(){return e.onQuarterMouseEnter(t)},className:e.getQuarterClassNames(t),\"aria-selected\":e.isSelectedQuarter(r,t,a),tabIndex:e.getQuarterTabIndex(t),\"aria-current\":e.isCurrentQuarter(r,t)?\"date\":void 0},e.getQuarterContent(t))})))})),St(Et(e),\"getClassNames\",(function(){var t=e.props,r=t.selectingDate,a=t.selectsStart,n=t.selectsEnd,o=t.showMonthYearPicker,s=t.showQuarterYearPicker,i=t.showWeekPicker;return ue.default(\"react-datepicker__month\",{\"react-datepicker__month--selecting-range\":r&&(a||n)},{\"react-datepicker__monthPicker\":o},{\"react-datepicker__quarterPicker\":s},{\"react-datepicker__weekPicker\":i})})),e}return bt(r,[{key:\"render\",value:function(){var e=this.props,t=e.showMonthYearPicker,r=e.showQuarterYearPicker,a=e.day,n=e.ariaLabelPrefix,o=void 0===n?\"month \":n;return de.default.createElement(\"div\",{className:this.getClassNames(),onMouseLeave:this.handleMouseLeave,\"aria-label\":\"\".concat(o,\" \").concat(qt(a,\"yyyy-MM\")),role:\"listbox\"},t?this.renderMonths():r?this.renderQuarters():this.renderWeeks())}}]),r}(de.default.Component),zr=function(e){_t(r,e);var t=Nt(r);function r(){var e;kt(this,r);for(var a=arguments.length,n=new Array(a),o=0;o<a;o++)n[o]=arguments[o];return St(Et(e=t.call.apply(t,[this].concat(n))),\"state\",{height:null}),St(Et(e),\"scrollToTheSelectedTime\",(function(){requestAnimationFrame((function(){e.list&&(e.list.scrollTop=e.centerLi&&r.calcCenterPosition(e.props.monthRef?e.props.monthRef.clientHeight-e.header.clientHeight:e.list.clientHeight,e.centerLi))}))})),St(Et(e),\"handleClick\",(function(t){(e.props.minTime||e.props.maxTime)&&mr(t,e.props)||(e.props.excludeTimes||e.props.includeTimes||e.props.filterTime)&&hr(t,e.props)||e.props.onChange(t)})),St(Et(e),\"isSelectedTime\",(function(t){return e.props.selected&&(r=e.props.selected,a=t,Pr(r).getTime()===Pr(a).getTime());var r,a})),St(Et(e),\"isDisabledTime\",(function(t){return(e.props.minTime||e.props.maxTime)&&mr(t,e.props)||(e.props.excludeTimes||e.props.includeTimes||e.props.filterTime)&&hr(t,e.props)})),St(Et(e),\"liClasses\",(function(t){var r=[\"react-datepicker__time-list-item\",e.props.timeClassName?e.props.timeClassName(t):void 0];return e.isSelectedTime(t)&&r.push(\"react-datepicker__time-list-item--selected\"),e.isDisabledTime(t)&&r.push(\"react-datepicker__time-list-item--disabled\"),e.props.injectTimes&&(60*xe.default(t)+Ne.default(t))%e.props.intervals!=0&&r.push(\"react-datepicker__time-list-item--injected\"),r.join(\" \")})),St(Et(e),\"handleOnKeyDown\",(function(t,r){\" \"===t.key&&(t.preventDefault(),t.key=\"Enter\"),\"ArrowUp\"!==t.key&&\"ArrowLeft\"!==t.key||!t.target.previousSibling||(t.preventDefault(),t.target.previousSibling.focus()),\"ArrowDown\"!==t.key&&\"ArrowRight\"!==t.key||!t.target.nextSibling||(t.preventDefault(),t.target.nextSibling.focus()),\"Enter\"===t.key&&e.handleClick(r),e.props.handleOnKeyDown(t)})),St(Et(e),\"renderTimes\",(function(){for(var t,r=[],a=e.props.format?e.props.format:\"p\",n=e.props.intervals,o=e.props.selected||e.props.openToDate||At(),s=(t=o,$e.default(t)),i=e.props.injectTimes&&e.props.injectTimes.sort((function(e,t){return e-t})),p=60*function(e){var t=new Date(e.getFullYear(),e.getMonth(),e.getDate()),r=new Date(e.getFullYear(),e.getMonth(),e.getDate(),24);return Math.round((+r-+t)/36e5)}(o),l=p/n,c=0;c<l;c++){var d=ye.default(s,c*n);if(r.push(d),i){var u=Cr(s,d,c,n,i);r=r.concat(u)}}var f=r.reduce((function(e,t){return t.getTime()<=o.getTime()?t:e}),r[0]);return r.map((function(t,r){return de.default.createElement(\"li\",{key:r,onClick:e.handleClick.bind(Et(e),t),className:e.liClasses(t),ref:function(r){t===f&&(e.centerLi=r)},onKeyDown:function(r){e.handleOnKeyDown(r,t)},tabIndex:t===f?0:-1,role:\"option\",\"aria-selected\":e.isSelectedTime(t)?\"true\":void 0,\"aria-disabled\":e.isDisabledTime(t)?\"true\":void 0},qt(t,a,e.props.locale))}))})),e}return bt(r,[{key:\"componentDidMount\",value:function(){this.scrollToTheSelectedTime(),this.props.monthRef&&this.header&&this.setState({height:this.props.monthRef.clientHeight-this.header.clientHeight})}},{key:\"render\",value:function(){var e=this,t=this.state.height;return de.default.createElement(\"div\",{className:\"react-datepicker__time-container \".concat(this.props.todayButton?\"react-datepicker__time-container--with-today-button\":\"\")},de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker__header--time \".concat(this.props.showTimeSelectOnly?\"react-datepicker__header--time--only\":\"\"),ref:function(t){e.header=t}},de.default.createElement(\"div\",{className:\"react-datepicker-time__header\"},this.props.timeCaption)),de.default.createElement(\"div\",{className:\"react-datepicker__time\"},de.default.createElement(\"div\",{className:\"react-datepicker__time-box\"},de.default.createElement(\"ul\",{className:\"react-datepicker__time-list\",ref:function(t){e.list=t},style:t?{height:t}:{},role:\"listbox\",\"aria-label\":this.props.timeCaption},this.renderTimes()))))}}],[{key:\"defaultProps\",get:function(){return{intervals:30,onTimeChange:function(){},todayButton:null,timeCaption:\"Time\"}}}]),r}(de.default.Component);St(zr,\"calcCenterPosition\",(function(e,t){return t.offsetTop-(e/2-t.clientHeight/2)}));var $r=function(e){_t(r,e);var t=Nt(r);function r(e){var a;return kt(this,r),St(Et(a=t.call(this,e)),\"YEAR_REFS\",xt(Array(a.props.yearItemNumber)).map((function(){return de.default.createRef()}))),St(Et(a),\"isDisabled\",(function(e){return nr(e,a.props)})),St(Et(a),\"isExcluded\",(function(e){return or(e,a.props)})),St(Et(a),\"selectingDate\",(function(){var e;return null!==(e=a.props.selectingDate)&&void 0!==e?e:a.props.preSelection})),St(Et(a),\"updateFocusOnPaginate\",(function(e){var t=function(){this.YEAR_REFS[e].current.focus()}.bind(Et(a));window.requestAnimationFrame(t)})),St(Et(a),\"handleYearClick\",(function(e,t){a.props.onDayClick&&a.props.onDayClick(e,t)})),St(Et(a),\"handleYearNavigation\",(function(e,t){var r=a.props,n=r.date,o=r.yearItemNumber,s=Mr(n,o).startPeriod;a.isDisabled(t)||a.isExcluded(t)||(a.props.setPreSelection(t),e-s==-1?a.updateFocusOnPaginate(o-1):e-s===o?a.updateFocusOnPaginate(0):a.YEAR_REFS[e-s].current.focus())})),St(Et(a),\"isSameDay\",(function(e,t){return Jt(e,t)})),St(Et(a),\"isCurrentYear\",(function(e){return e===Le.default(At())})),St(Et(a),\"isRangeStart\",(function(e){return a.props.startDate&&a.props.endDate&&zt(Qe.default(At(),e),a.props.startDate)})),St(Et(a),\"isRangeEnd\",(function(e){return a.props.startDate&&a.props.endDate&&zt(Qe.default(At(),e),a.props.endDate)})),St(Et(a),\"isInRange\",(function(e){return lr(e,a.props.startDate,a.props.endDate)})),St(Et(a),\"isInSelectingRange\",(function(e){var t=a.props,r=t.selectsStart,n=t.selectsEnd,o=t.selectsRange,s=t.startDate,i=t.endDate;return!(!(r||n||o)||!a.selectingDate())&&(r&&i?lr(e,a.selectingDate(),i):(n&&s||!(!o||!s||i))&&lr(e,s,a.selectingDate()))})),St(Et(a),\"isSelectingRangeStart\",(function(e){if(!a.isInSelectingRange(e))return!1;var t=a.props,r=t.startDate,n=t.selectsStart,o=Qe.default(At(),e);return zt(o,n?a.selectingDate():r)})),St(Et(a),\"isSelectingRangeEnd\",(function(e){if(!a.isInSelectingRange(e))return!1;var t=a.props,r=t.endDate,n=t.selectsEnd,o=t.selectsRange,s=Qe.default(At(),e);return zt(s,n||o?a.selectingDate():r)})),St(Et(a),\"isKeyboardSelected\",(function(e){var t=jt(Qe.default(a.props.date,e));return!a.props.disabledKeyboardNavigation&&!a.props.inline&&!Jt(t,jt(a.props.selected))&&Jt(t,jt(a.props.preSelection))})),St(Et(a),\"onYearClick\",(function(e,t){var r=a.props.date;a.handleYearClick(jt(Qe.default(r,t)),e)})),St(Et(a),\"onYearKeyDown\",(function(e,t){var r=e.key;if(!a.props.disabledKeyboardNavigation)switch(r){case\"Enter\":a.onYearClick(e,t),a.props.setPreSelection(a.props.selected);break;case\"ArrowRight\":a.handleYearNavigation(t+1,be.default(a.props.preSelection,1));break;case\"ArrowLeft\":a.handleYearNavigation(t-1,Pe.default(a.props.preSelection,1))}})),St(Et(a),\"getYearClassNames\",(function(e){var t=a.props,r=t.minDate,n=t.maxDate,o=t.selected,s=t.excludeDates,i=t.includeDates,p=t.filterDate;return ue.default(\"react-datepicker__year-text\",{\"react-datepicker__year-text--selected\":e===Le.default(o),\"react-datepicker__year-text--disabled\":(r||n||s||i||p)&&cr(e,a.props),\"react-datepicker__year-text--keyboard-selected\":a.isKeyboardSelected(e),\"react-datepicker__year-text--range-start\":a.isRangeStart(e),\"react-datepicker__year-text--range-end\":a.isRangeEnd(e),\"react-datepicker__year-text--in-range\":a.isInRange(e),\"react-datepicker__year-text--in-selecting-range\":a.isInSelectingRange(e),\"react-datepicker__year-text--selecting-range-start\":a.isSelectingRangeStart(e),\"react-datepicker__year-text--selecting-range-end\":a.isSelectingRangeEnd(e),\"react-datepicker__year-text--today\":a.isCurrentYear(e)})})),St(Et(a),\"getYearTabIndex\",(function(e){return a.props.disabledKeyboardNavigation?\"-1\":e===Le.default(a.props.preSelection)?\"0\":\"-1\"})),St(Et(a),\"getYearContainerClassNames\",(function(){var e=a.props,t=e.selectingDate,r=e.selectsStart,n=e.selectsEnd,o=e.selectsRange;return ue.default(\"react-datepicker__year\",{\"react-datepicker__year--selecting-range\":t&&(r||n||o)})})),St(Et(a),\"getYearContent\",(function(e){return a.props.renderYearContent?a.props.renderYearContent(e):e})),a}return bt(r,[{key:\"render\",value:function(){for(var e=this,t=[],r=this.props,a=r.date,n=r.yearItemNumber,o=r.onYearMouseEnter,s=r.onYearMouseLeave,i=Mr(a,n),p=i.startPeriod,l=i.endPeriod,c=function(r){t.push(de.default.createElement(\"div\",{ref:e.YEAR_REFS[r-p],onClick:function(t){e.onYearClick(t,r)},onKeyDown:function(t){e.onYearKeyDown(t,r)},tabIndex:e.getYearTabIndex(r),className:e.getYearClassNames(r),onMouseEnter:function(e){return o(e,r)},onMouseLeave:function(e){return s(e,r)},key:r,\"aria-current\":e.isCurrentYear(r)?\"date\":void 0},e.getYearContent(r)))},d=p;d<=l;d++)c(d);return de.default.createElement(\"div\",{className:this.getYearContainerClassNames()},de.default.createElement(\"div\",{className:\"react-datepicker__year-wrapper\",onMouseLeave:this.props.clearSelectingDate},t))}}]),r}(de.default.Component),Gr=function(e){_t(r,e);var t=Nt(r);function r(e){var a;return kt(this,r),St(Et(a=t.call(this,e)),\"onTimeChange\",(function(e){a.setState({time:e});var t=a.props.date,r=t instanceof Date&&!isNaN(t)?t:new Date;r.setHours(e.split(\":\")[0]),r.setMinutes(e.split(\":\")[1]),a.props.onChange(r)})),St(Et(a),\"renderTimeInput\",(function(){var e=a.state.time,t=a.props,r=t.date,n=t.timeString,o=t.customTimeInput;return o?de.default.cloneElement(o,{date:r,value:e,onChange:a.onTimeChange}):de.default.createElement(\"input\",{type:\"time\",className:\"react-datepicker-time__input\",placeholder:\"Time\",name:\"time-input\",required:!0,value:e,onChange:function(e){a.onTimeChange(e.target.value||n)}})})),a.state={time:a.props.timeString},a}return bt(r,[{key:\"render\",value:function(){return de.default.createElement(\"div\",{className:\"react-datepicker__input-time-container\"},de.default.createElement(\"div\",{className:\"react-datepicker-time__caption\"},this.props.timeInputLabel),de.default.createElement(\"div\",{className:\"react-datepicker-time__input-container\"},de.default.createElement(\"div\",{className:\"react-datepicker-time__input\"},this.renderTimeInput())))}}],[{key:\"getDerivedStateFromProps\",value:function(e,t){return e.timeString!==t.time?{time:e.timeString}:null}}]),r}(de.default.Component);function Jr(e){var t=e.className,r=e.children,a=e.showPopperArrow,n=e.arrowProps,o=void 0===n?{}:n;return de.default.createElement(\"div\",{className:t},a&&de.default.createElement(\"div\",Ct({className:\"react-datepicker__triangle\"},o)),r)}var Xr=[\"react-datepicker__year-select\",\"react-datepicker__month-select\",\"react-datepicker__month-year-select\"],Zr=function(e){_t(r,e);var t=Nt(r);function r(e){var a;return kt(this,r),St(Et(a=t.call(this,e)),\"handleClickOutside\",(function(e){a.props.onClickOutside(e)})),St(Et(a),\"setClickOutsideRef\",(function(){return a.containerRef.current})),St(Et(a),\"handleDropdownFocus\",(function(e){(function(){var e=((arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).className||\"\").split(/\\s+/);return Xr.some((function(t){return e.indexOf(t)>=0}))})(e.target)&&a.props.onDropdownFocus()})),St(Et(a),\"getDateInView\",(function(){var e=a.props,t=e.preSelection,r=e.selected,n=e.openToDate,o=kr(a.props),s=wr(a.props),i=At(),p=n||r||t;return p||(o&<.default(i,o)?o:s&&pt.default(i,s)?s:i)})),St(Et(a),\"increaseMonth\",(function(){a.setState((function(e){var t=e.date;return{date:ke.default(t,1)}}),(function(){return a.handleMonthChange(a.state.date)}))})),St(Et(a),\"decreaseMonth\",(function(){a.setState((function(e){var t=e.date;return{date:_e.default(t,1)}}),(function(){return a.handleMonthChange(a.state.date)}))})),St(Et(a),\"handleDayClick\",(function(e,t,r){a.props.onSelect(e,t,r),a.props.setPreSelection&&a.props.setPreSelection(e)})),St(Et(a),\"handleDayMouseEnter\",(function(e){a.setState({selectingDate:e}),a.props.onDayMouseEnter&&a.props.onDayMouseEnter(e)})),St(Et(a),\"handleMonthMouseLeave\",(function(){a.setState({selectingDate:null}),a.props.onMonthMouseLeave&&a.props.onMonthMouseLeave()})),St(Et(a),\"handleYearMouseEnter\",(function(e,t){a.setState({selectingDate:Qe.default(At(),t)}),a.props.onYearMouseEnter&&a.props.onYearMouseEnter(e,t)})),St(Et(a),\"handleYearMouseLeave\",(function(e,t){a.props.onYearMouseLeave&&a.props.onYearMouseLeave(e,t)})),St(Et(a),\"handleYearChange\",(function(e){a.props.onYearChange&&(a.props.onYearChange(e),a.setState({isRenderAriaLiveMessage:!0})),a.props.adjustDateOnChange&&(a.props.onSelect&&a.props.onSelect(e),a.props.setOpen&&a.props.setOpen(!0)),a.props.setPreSelection&&a.props.setPreSelection(e)})),St(Et(a),\"handleMonthChange\",(function(e){a.handleCustomMonthChange(e),a.props.adjustDateOnChange&&(a.props.onSelect&&a.props.onSelect(e),a.props.setOpen&&a.props.setOpen(!0)),a.props.setPreSelection&&a.props.setPreSelection(e)})),St(Et(a),\"handleCustomMonthChange\",(function(e){a.props.onMonthChange&&(a.props.onMonthChange(e),a.setState({isRenderAriaLiveMessage:!0}))})),St(Et(a),\"handleMonthYearChange\",(function(e){a.handleYearChange(e),a.handleMonthChange(e)})),St(Et(a),\"changeYear\",(function(e){a.setState((function(t){var r=t.date;return{date:Qe.default(r,e)}}),(function(){return a.handleYearChange(a.state.date)}))})),St(Et(a),\"changeMonth\",(function(e){a.setState((function(t){var r=t.date;return{date:Ke.default(r,e)}}),(function(){return a.handleMonthChange(a.state.date)}))})),St(Et(a),\"changeMonthYear\",(function(e){a.setState((function(t){var r=t.date;return{date:Qe.default(Ke.default(r,Te.default(e)),Le.default(e))}}),(function(){return a.handleMonthYearChange(a.state.date)}))})),St(Et(a),\"header\",(function(){var e=Qt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.state.date,a.props.locale,a.props.calendarStartDay),t=[];return a.props.showWeekNumbers&&t.push(de.default.createElement(\"div\",{key:\"W\",className:\"react-datepicker__day-name\"},a.props.weekLabel||\"#\")),t.concat([0,1,2,3,4,5,6].map((function(t){var r=De.default(e,t),n=a.formatWeekday(r,a.props.locale),o=a.props.weekDayClassName?a.props.weekDayClassName(r):void 0;return de.default.createElement(\"div\",{key:t,className:ue.default(\"react-datepicker__day-name\",o)},n)})))})),St(Et(a),\"formatWeekday\",(function(e,t){return a.props.formatWeekDay?function(e,t,r){return t(qt(e,\"EEEE\",r))}(e,a.props.formatWeekDay,t):a.props.useWeekdaysShort?function(e,t){return qt(e,\"EEE\",t)}(e,t):function(e,t){return qt(e,\"EEEEEE\",t)}(e,t)})),St(Et(a),\"decreaseYear\",(function(){a.setState((function(e){var t=e.date;return{date:Pe.default(t,a.props.showYearPicker?a.props.yearItemNumber:1)}}),(function(){return a.handleYearChange(a.state.date)}))})),St(Et(a),\"clearSelectingDate\",(function(){a.setState({selectingDate:null})})),St(Et(a),\"renderPreviousButton\",(function(){if(!a.props.renderCustomHeader){var e;switch(!0){case a.props.showMonthYearPicker:e=Dr(a.state.date,a.props);break;case a.props.showYearPicker:e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,a=t.yearItemNumber,n=void 0===a?Lt:a,o=Mr(jt(Pe.default(e,n)),n).endPeriod,s=r&&Le.default(r);return s&&s>o||!1}(a.state.date,a.props);break;default:e=yr(a.state.date,a.props)}if((a.props.forceShowMonthNavigation||a.props.showDisabledMonthNavigation||!e)&&!a.props.showTimeSelectOnly){var t=[\"react-datepicker__navigation\",\"react-datepicker__navigation--previous\"],r=a.decreaseMonth;(a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker)&&(r=a.decreaseYear),e&&a.props.showDisabledMonthNavigation&&(t.push(\"react-datepicker__navigation--previous--disabled\"),r=null);var n=a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker,o=a.props,s=o.previousMonthButtonLabel,i=o.previousYearButtonLabel,p=a.props,l=p.previousMonthAriaLabel,c=void 0===l?\"string\"==typeof s?s:\"Previous Month\":l,d=p.previousYearAriaLabel,u=void 0===d?\"string\"==typeof i?i:\"Previous Year\":d;return de.default.createElement(\"button\",{type:\"button\",className:t.join(\" \"),onClick:r,onKeyDown:a.props.handleOnKeyDown,\"aria-label\":n?u:c},de.default.createElement(\"span\",{className:[\"react-datepicker__navigation-icon\",\"react-datepicker__navigation-icon--previous\"].join(\" \")},n?a.props.previousYearButtonLabel:a.props.previousMonthButtonLabel))}}})),St(Et(a),\"increaseYear\",(function(){a.setState((function(e){var t=e.date;return{date:be.default(t,a.props.showYearPicker?a.props.yearItemNumber:1)}}),(function(){return a.handleYearChange(a.state.date)}))})),St(Et(a),\"renderNextButton\",(function(){if(!a.props.renderCustomHeader){var e;switch(!0){case a.props.showMonthYearPicker:e=gr(a.state.date,a.props);break;case a.props.showYearPicker:e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,a=t.yearItemNumber,n=void 0===a?Lt:a,o=Mr(be.default(e,n),n).startPeriod,s=r&&Le.default(r);return s&&s<o||!1}(a.state.date,a.props);break;default:e=vr(a.state.date,a.props)}if((a.props.forceShowMonthNavigation||a.props.showDisabledMonthNavigation||!e)&&!a.props.showTimeSelectOnly){var t=[\"react-datepicker__navigation\",\"react-datepicker__navigation--next\"];a.props.showTimeSelect&&t.push(\"react-datepicker__navigation--next--with-time\"),a.props.todayButton&&t.push(\"react-datepicker__navigation--next--with-today-button\");var r=a.increaseMonth;(a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker)&&(r=a.increaseYear),e&&a.props.showDisabledMonthNavigation&&(t.push(\"react-datepicker__navigation--next--disabled\"),r=null);var n=a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker,o=a.props,s=o.nextMonthButtonLabel,i=o.nextYearButtonLabel,p=a.props,l=p.nextMonthAriaLabel,c=void 0===l?\"string\"==typeof s?s:\"Next Month\":l,d=p.nextYearAriaLabel,u=void 0===d?\"string\"==typeof i?i:\"Next Year\":d;return de.default.createElement(\"button\",{type:\"button\",className:t.join(\" \"),onClick:r,onKeyDown:a.props.handleOnKeyDown,\"aria-label\":n?u:c},de.default.createElement(\"span\",{className:[\"react-datepicker__navigation-icon\",\"react-datepicker__navigation-icon--next\"].join(\" \")},n?a.props.nextYearButtonLabel:a.props.nextMonthButtonLabel))}}})),St(Et(a),\"renderCurrentMonth\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.state.date,t=[\"react-datepicker__current-month\"];return a.props.showYearDropdown&&t.push(\"react-datepicker__current-month--hasYearDropdown\"),a.props.showMonthDropdown&&t.push(\"react-datepicker__current-month--hasMonthDropdown\"),a.props.showMonthYearDropdown&&t.push(\"react-datepicker__current-month--hasMonthYearDropdown\"),de.default.createElement(\"div\",{className:t.join(\" \")},qt(e,a.props.dateFormat,a.props.locale))})),St(Et(a),\"renderYearDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showYearDropdown&&!e)return de.default.createElement(Yr,{adjustDateOnChange:a.props.adjustDateOnChange,date:a.state.date,onSelect:a.props.onSelect,setOpen:a.props.setOpen,dropdownMode:a.props.dropdownMode,onChange:a.changeYear,minDate:a.props.minDate,maxDate:a.props.maxDate,year:Le.default(a.state.date),scrollableYearDropdown:a.props.scrollableYearDropdown,yearDropdownItemNumber:a.props.yearDropdownItemNumber})})),St(Et(a),\"renderMonthDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showMonthDropdown&&!e)return de.default.createElement(Tr,{dropdownMode:a.props.dropdownMode,locale:a.props.locale,onChange:a.changeMonth,month:Te.default(a.state.date),useShortMonthInDropdown:a.props.useShortMonthInDropdown})})),St(Et(a),\"renderMonthYearDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(a.props.showMonthYearDropdown&&!e)return de.default.createElement(Ar,{dropdownMode:a.props.dropdownMode,locale:a.props.locale,dateFormat:a.props.dateFormat,onChange:a.changeMonthYear,minDate:a.props.minDate,maxDate:a.props.maxDate,date:a.state.date,scrollableMonthYearDropdown:a.props.scrollableMonthYearDropdown})})),St(Et(a),\"handleTodayButtonClick\",(function(e){a.props.onSelect(Ut(),e),a.props.setPreSelection&&a.props.setPreSelection(Ut())})),St(Et(a),\"renderTodayButton\",(function(){if(a.props.todayButton&&!a.props.showTimeSelectOnly)return de.default.createElement(\"div\",{className:\"react-datepicker__today-button\",onClick:function(e){return a.handleTodayButtonClick(e)}},a.props.todayButton)})),St(Et(a),\"renderDefaultHeader\",(function(e){var t=e.monthDate,r=e.i;return de.default.createElement(\"div\",{className:\"react-datepicker__header \".concat(a.props.showTimeSelect?\"react-datepicker__header--has-time-select\":\"\")},a.renderCurrentMonth(t),de.default.createElement(\"div\",{className:\"react-datepicker__header__dropdown react-datepicker__header__dropdown--\".concat(a.props.dropdownMode),onFocus:a.handleDropdownFocus},a.renderMonthDropdown(0!==r),a.renderMonthYearDropdown(0!==r),a.renderYearDropdown(0!==r)),de.default.createElement(\"div\",{className:\"react-datepicker__day-names\"},a.header(t)))})),St(Et(a),\"renderCustomHeader\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.monthDate,r=e.i;if(a.props.showTimeSelect&&!a.state.monthContainer||a.props.showTimeSelectOnly)return null;var n=yr(a.state.date,a.props),o=vr(a.state.date,a.props),s=Dr(a.state.date,a.props),i=gr(a.state.date,a.props),p=!a.props.showMonthYearPicker&&!a.props.showQuarterYearPicker&&!a.props.showYearPicker;return de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker__header--custom\",onFocus:a.props.onDropdownFocus},a.props.renderCustomHeader(Dt(Dt({},a.state),{},{customHeaderCount:r,monthDate:t,changeMonth:a.changeMonth,changeYear:a.changeYear,decreaseMonth:a.decreaseMonth,increaseMonth:a.increaseMonth,decreaseYear:a.decreaseYear,increaseYear:a.increaseYear,prevMonthButtonDisabled:n,nextMonthButtonDisabled:o,prevYearButtonDisabled:s,nextYearButtonDisabled:i})),p&&de.default.createElement(\"div\",{className:\"react-datepicker__day-names\"},a.header(t)))})),St(Et(a),\"renderYearHeader\",(function(){var e=a.state.date,t=a.props,r=t.showYearPicker,n=Mr(e,t.yearItemNumber),o=n.startPeriod,s=n.endPeriod;return de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker-year-header\"},r?\"\".concat(o,\" - \").concat(s):Le.default(e))})),St(Et(a),\"renderHeader\",(function(e){switch(!0){case void 0!==a.props.renderCustomHeader:return a.renderCustomHeader(e);case a.props.showMonthYearPicker||a.props.showQuarterYearPicker||a.props.showYearPicker:return a.renderYearHeader(e);default:return a.renderDefaultHeader(e)}})),St(Et(a),\"renderMonths\",(function(){var e;if(!a.props.showTimeSelectOnly&&!a.props.showYearPicker){for(var t=[],r=a.props.showPreviousMonths?a.props.monthsShown-1:0,n=_e.default(a.state.date,r),o=null!==(e=a.props.monthSelectedIn)&&void 0!==e?e:r,s=0;s<a.props.monthsShown;++s){var i=s-o+r,p=ke.default(n,i),l=\"month-\".concat(s),c=s<a.props.monthsShown-1,d=s>0;t.push(de.default.createElement(\"div\",{key:l,ref:function(e){a.monthContainer=e},className:\"react-datepicker__month-container\"},a.renderHeader({monthDate:p,i:s}),de.default.createElement(Ur,{chooseDayAriaLabelPrefix:a.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:a.props.disabledDayAriaLabelPrefix,weekAriaLabelPrefix:a.props.weekAriaLabelPrefix,ariaLabelPrefix:a.props.monthAriaLabelPrefix,onChange:a.changeMonthYear,day:p,dayClassName:a.props.dayClassName,calendarStartDay:a.props.calendarStartDay,monthClassName:a.props.monthClassName,onDayClick:a.handleDayClick,handleOnKeyDown:a.props.handleOnDayKeyDown,onDayMouseEnter:a.handleDayMouseEnter,onMouseLeave:a.handleMonthMouseLeave,onWeekSelect:a.props.onWeekSelect,orderInDisplay:s,formatWeekNumber:a.props.formatWeekNumber,locale:a.props.locale,minDate:a.props.minDate,maxDate:a.props.maxDate,excludeDates:a.props.excludeDates,excludeDateIntervals:a.props.excludeDateIntervals,highlightDates:a.props.highlightDates,holidays:a.props.holidays,selectingDate:a.state.selectingDate,includeDates:a.props.includeDates,includeDateIntervals:a.props.includeDateIntervals,inline:a.props.inline,shouldFocusDayInline:a.props.shouldFocusDayInline,fixedHeight:a.props.fixedHeight,filterDate:a.props.filterDate,preSelection:a.props.preSelection,setPreSelection:a.props.setPreSelection,selected:a.props.selected,selectsStart:a.props.selectsStart,selectsEnd:a.props.selectsEnd,selectsRange:a.props.selectsRange,selectsDisabledDaysInRange:a.props.selectsDisabledDaysInRange,showWeekNumbers:a.props.showWeekNumbers,startDate:a.props.startDate,endDate:a.props.endDate,peekNextMonth:a.props.peekNextMonth,setOpen:a.props.setOpen,shouldCloseOnSelect:a.props.shouldCloseOnSelect,renderDayContents:a.props.renderDayContents,renderMonthContent:a.props.renderMonthContent,renderQuarterContent:a.props.renderQuarterContent,renderYearContent:a.props.renderYearContent,disabledKeyboardNavigation:a.props.disabledKeyboardNavigation,showMonthYearPicker:a.props.showMonthYearPicker,showFullMonthYearPicker:a.props.showFullMonthYearPicker,showTwoColumnMonthYearPicker:a.props.showTwoColumnMonthYearPicker,showFourColumnMonthYearPicker:a.props.showFourColumnMonthYearPicker,showYearPicker:a.props.showYearPicker,showQuarterYearPicker:a.props.showQuarterYearPicker,showWeekPicker:a.props.showWeekPicker,isInputFocused:a.props.isInputFocused,containerRef:a.containerRef,monthShowsDuplicateDaysEnd:c,monthShowsDuplicateDaysStart:d})))}return t}})),St(Et(a),\"renderYears\",(function(){if(!a.props.showTimeSelectOnly)return a.props.showYearPicker?de.default.createElement(\"div\",{className:\"react-datepicker__year--container\"},a.renderHeader(),de.default.createElement($r,Ct({onDayClick:a.handleDayClick,selectingDate:a.state.selectingDate,clearSelectingDate:a.clearSelectingDate,date:a.state.date},a.props,{onYearMouseEnter:a.handleYearMouseEnter,onYearMouseLeave:a.handleYearMouseLeave}))):void 0})),St(Et(a),\"renderTimeSection\",(function(){if(a.props.showTimeSelect&&(a.state.monthContainer||a.props.showTimeSelectOnly))return de.default.createElement(zr,{selected:a.props.selected,openToDate:a.props.openToDate,onChange:a.props.onTimeChange,timeClassName:a.props.timeClassName,format:a.props.timeFormat,includeTimes:a.props.includeTimes,intervals:a.props.timeIntervals,minTime:a.props.minTime,maxTime:a.props.maxTime,excludeTimes:a.props.excludeTimes,filterTime:a.props.filterTime,timeCaption:a.props.timeCaption,todayButton:a.props.todayButton,showMonthDropdown:a.props.showMonthDropdown,showMonthYearDropdown:a.props.showMonthYearDropdown,showYearDropdown:a.props.showYearDropdown,withPortal:a.props.withPortal,monthRef:a.state.monthContainer,injectTimes:a.props.injectTimes,locale:a.props.locale,handleOnKeyDown:a.props.handleOnKeyDown,showTimeSelectOnly:a.props.showTimeSelectOnly})})),St(Et(a),\"renderInputTimeSection\",(function(){var e=new Date(a.props.selected),t=Wt(e)&&Boolean(a.props.selected)?\"\".concat(_r(e.getHours()),\":\").concat(_r(e.getMinutes())):\"\";if(a.props.showTimeInput)return de.default.createElement(Gr,{date:e,timeString:t,timeInputLabel:a.props.timeInputLabel,onChange:a.props.onTimeChange,customTimeInput:a.props.customTimeInput})})),St(Et(a),\"renderAriaLiveRegion\",(function(){var e,t=Mr(a.state.date,a.props.yearItemNumber),r=t.startPeriod,n=t.endPeriod;return e=a.props.showYearPicker?\"\".concat(r,\" - \").concat(n):a.props.showMonthYearPicker||a.props.showQuarterYearPicker?Le.default(a.state.date):\"\".concat(rr(Te.default(a.state.date),a.props.locale),\" \").concat(Le.default(a.state.date)),de.default.createElement(\"span\",{role:\"alert\",\"aria-live\":\"polite\",className:\"react-datepicker__aria-live\"},a.state.isRenderAriaLiveMessage&&e)})),St(Et(a),\"renderChildren\",(function(){if(a.props.children)return de.default.createElement(\"div\",{className:\"react-datepicker__children-container\"},a.props.children)})),a.containerRef=de.default.createRef(),a.state={date:a.getDateInView(),selectingDate:null,monthContainer:null,isRenderAriaLiveMessage:!1},a}return bt(r,[{key:\"componentDidMount\",value:function(){var e=this;this.props.showTimeSelect&&(this.assignMonthContainer=void e.setState({monthContainer:e.monthContainer}))}},{key:\"componentDidUpdate\",value:function(e){var t=this;if(!this.props.preSelection||Jt(this.props.preSelection,e.preSelection)&&this.props.monthSelectedIn===e.monthSelectedIn)this.props.openToDate&&!Jt(this.props.openToDate,e.openToDate)&&this.setState({date:this.props.openToDate});else{var r=!$t(this.state.date,this.props.preSelection);this.setState({date:this.props.preSelection},(function(){return r&&t.handleCustomMonthChange(t.state.date)}))}}},{key:\"render\",value:function(){var e=this.props.container||Jr;return de.default.createElement(\"div\",{style:{display:\"contents\"},ref:this.containerRef},de.default.createElement(e,{className:ue.default(\"react-datepicker\",this.props.className,{\"react-datepicker--time-only\":this.props.showTimeSelectOnly}),showPopperArrow:this.props.showPopperArrow,arrowProps:this.props.arrowProps},this.renderAriaLiveRegion(),this.renderPreviousButton(),this.renderNextButton(),this.renderMonths(),this.renderYears(),this.renderTodayButton(),this.renderTimeSection(),this.renderInputTimeSection(),this.renderChildren()))}}],[{key:\"defaultProps\",get:function(){return{onDropdownFocus:function(){},monthsShown:1,forceShowMonthNavigation:!1,timeCaption:\"Time\",previousYearButtonLabel:\"Previous Year\",nextYearButtonLabel:\"Next Year\",previousMonthButtonLabel:\"Previous Month\",nextMonthButtonLabel:\"Next Month\",customTimeInput:null,yearItemNumber:Lt}}}]),r}(de.default.Component),ea=function(e){var t=e.icon,r=e.className,a=void 0===r?\"\":r,n=e.onClick,o=\"react-datepicker__calendar-icon\";return de.default.isValidElement(t)?de.default.cloneElement(t,{className:\"\".concat(t.props.className||\"\",\" \").concat(o,\" \").concat(a),onClick:function(e){\"function\"==typeof t.props.onClick&&t.props.onClick(e),\"function\"==typeof n&&n(e)}}):\"string\"==typeof t?de.default.createElement(\"i\",{className:\"\".concat(o,\" \").concat(t,\" \").concat(a),\"aria-hidden\":\"true\",onClick:n}):de.default.createElement(\"svg\",{className:\"\".concat(o,\" \").concat(a),xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 448 512\",onClick:n},de.default.createElement(\"path\",{d:\"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192z\"}))},ta=function(e){_t(r,e);var t=Nt(r);function r(e){var a;return kt(this,r),(a=t.call(this,e)).el=document.createElement(\"div\"),a}return bt(r,[{key:\"componentDidMount\",value:function(){this.portalRoot=(this.props.portalHost||document).getElementById(this.props.portalId),this.portalRoot||(this.portalRoot=document.createElement(\"div\"),this.portalRoot.setAttribute(\"id\",this.props.portalId),(this.props.portalHost||document.body).appendChild(this.portalRoot)),this.portalRoot.appendChild(this.el)}},{key:\"componentWillUnmount\",value:function(){this.portalRoot.removeChild(this.el)}},{key:\"render\",value:function(){return mt.default.createPortal(this.props.children,this.el)}}]),r}(de.default.Component),ra=function(e){return!e.disabled&&-1!==e.tabIndex},aa=function(e){_t(r,e);var t=Nt(r);function r(e){var a;return kt(this,r),St(Et(a=t.call(this,e)),\"getTabChildren\",(function(){return Array.prototype.slice.call(a.tabLoopRef.current.querySelectorAll(\"[tabindex], a, button, input, select, textarea\"),1,-1).filter(ra)})),St(Et(a),\"handleFocusStart\",(function(){var e=a.getTabChildren();e&&e.length>1&&e[e.length-1].focus()})),St(Et(a),\"handleFocusEnd\",(function(){var e=a.getTabChildren();e&&e.length>1&&e[0].focus()})),a.tabLoopRef=de.default.createRef(),a}return bt(r,[{key:\"render\",value:function(){return this.props.enableTabLoop?de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop\",ref:this.tabLoopRef},de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop__start\",tabIndex:\"0\",onFocus:this.handleFocusStart}),this.props.children,de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop__end\",tabIndex:\"0\",onFocus:this.handleFocusEnd})):this.props.children}}],[{key:\"defaultProps\",get:function(){return{enableTabLoop:!0}}}]),r}(de.default.Component),na=function(e){_t(r,e);var t=Nt(r);function r(){return kt(this,r),t.apply(this,arguments)}return bt(r,[{key:\"render\",value:function(){var e,t=this.props,r=t.className,a=t.wrapperClassName,n=t.hidePopper,o=t.popperComponent,s=t.popperModifiers,i=t.popperPlacement,p=t.popperProps,l=t.targetComponent,c=t.enableTabLoop,d=t.popperOnKeyDown,u=t.portalId,f=t.portalHost;if(!n){var h=ue.default(\"react-datepicker-popper\",r);e=de.default.createElement(pe.Popper,Ct({modifiers:s,placement:i},p),(function(e){var t=e.ref,r=e.style,a=e.placement,n=e.arrowProps;return de.default.createElement(aa,{enableTabLoop:c},de.default.createElement(\"div\",{ref:t,style:r,className:h,\"data-placement\":a,onKeyDown:d},de.default.cloneElement(o,{arrowProps:n})))}))}this.props.popperContainer&&(e=de.default.createElement(this.props.popperContainer,{},e)),u&&!n&&(e=de.default.createElement(ta,{portalId:u,portalHost:f},e));var m=ue.default(\"react-datepicker-wrapper\",a);return de.default.createElement(pe.Manager,{className:\"react-datepicker-manager\"},de.default.createElement(pe.Reference,null,(function(e){var t=e.ref;return de.default.createElement(\"div\",{ref:t,className:m},l)})),e)}}],[{key:\"defaultProps\",get:function(){return{hidePopper:!0,popperModifiers:[],popperProps:{},popperPlacement:\"bottom-start\"}}}]),r}(de.default.Component),oa=\"react-datepicker-ignore-onclickoutside\",sa=ht.default(Zr);var ia=\"Date input not valid.\",pa=function(e){_t(r,e);var t=Nt(r);function r(e){var a;return kt(this,r),St(Et(a=t.call(this,e)),\"getPreSelection\",(function(){return a.props.openToDate?a.props.openToDate:a.props.selectsEnd&&a.props.startDate?a.props.startDate:a.props.selectsStart&&a.props.endDate?a.props.endDate:At()})),St(Et(a),\"modifyHolidays\",(function(){var e;return null===(e=a.props.holidays)||void 0===e?void 0:e.reduce((function(e,t){var r=new Date(t.date);return he.default(r)?[].concat(xt(e),[Dt(Dt({},t),{},{date:r})]):e}),[])})),St(Et(a),\"calcInitialState\",(function(){var e,t=a.getPreSelection(),r=kr(a.props),n=wr(a.props),o=r&<.default(t,$e.default(r))?r:n&&pt.default(t,et.default(n))?n:t;return{open:a.props.startOpen||!1,preventFocus:!1,preSelection:null!==(e=a.props.selectsRange?a.props.startDate:a.props.selected)&&void 0!==e?e:o,highlightDates:br(a.props.highlightDates),focused:!1,shouldFocusDayInline:!1,isRenderAriaLiveMessage:!1}})),St(Et(a),\"clearPreventFocusTimeout\",(function(){a.preventFocusTimeout&&clearTimeout(a.preventFocusTimeout)})),St(Et(a),\"setFocus\",(function(){a.input&&a.input.focus&&a.input.focus({preventScroll:!0})})),St(Et(a),\"setBlur\",(function(){a.input&&a.input.blur&&a.input.blur(),a.cancelFocusInput()})),St(Et(a),\"setOpen\",(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];a.setState({open:e,preSelection:e&&a.state.open?a.state.preSelection:a.calcInitialState().preSelection,lastPreSelectChange:ca},(function(){e||a.setState((function(e){return{focused:!!t&&e.focused}}),(function(){!t&&a.setBlur(),a.setState({inputValue:null})}))}))})),St(Et(a),\"inputOk\",(function(){return fe.default(a.state.preSelection)})),St(Et(a),\"isCalendarOpen\",(function(){return void 0===a.props.open?a.state.open&&!a.props.disabled&&!a.props.readOnly:a.props.open})),St(Et(a),\"handleFocus\",(function(e){a.state.preventFocus||(a.props.onFocus(e),a.props.preventOpenOnFocus||a.props.readOnly||a.setOpen(!0)),a.setState({focused:!0})})),St(Et(a),\"sendFocusBackToInput\",(function(){a.preventFocusTimeout&&a.clearPreventFocusTimeout(),a.setState({preventFocus:!0},(function(){a.preventFocusTimeout=setTimeout((function(){a.setFocus(),a.setState({preventFocus:!1})}))}))})),St(Et(a),\"cancelFocusInput\",(function(){clearTimeout(a.inputFocusTimeout),a.inputFocusTimeout=null})),St(Et(a),\"deferFocusInput\",(function(){a.cancelFocusInput(),a.inputFocusTimeout=setTimeout((function(){return a.setFocus()}),1)})),St(Et(a),\"handleDropdownFocus\",(function(){a.cancelFocusInput()})),St(Et(a),\"handleBlur\",(function(e){(!a.state.open||a.props.withPortal||a.props.showTimeInput)&&a.props.onBlur(e),a.setState({focused:!1})})),St(Et(a),\"handleCalendarClickOutside\",(function(e){a.props.inline||a.setOpen(!1),a.props.onClickOutside(e),a.props.withPortal&&e.preventDefault()})),St(Et(a),\"handleChange\",(function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var n=t[0];if(!a.props.onChangeRaw||(a.props.onChangeRaw.apply(Et(a),t),\"function\"==typeof n.isDefaultPrevented&&!n.isDefaultPrevented())){a.setState({inputValue:n.target.value,lastPreSelectChange:la});var o,s,i,p,l,c,d,u,f=(o=n.target.value,s=a.props.dateFormat,i=a.props.locale,p=a.props.strictParsing,l=a.props.minDate,c=null,d=tr(i)||tr(er()),u=!0,Array.isArray(s)?(s.forEach((function(e){var t=ut.default(o,e,new Date,{locale:d});p&&(u=Wt(t,l)&&o===qt(t,e,i)),Wt(t,l)&&u&&(c=t)})),c):(c=ut.default(o,s,new Date,{locale:d}),p?u=Wt(c)&&o===qt(c,s,i):Wt(c)||(s=s.match(Ft).map((function(e){var t=e[0];return\"p\"===t||\"P\"===t?d?(0,Rt[t])(e,d.formatLong):t:e})).join(\"\"),o.length>0&&(c=ut.default(o,s.slice(0,o.length),new Date)),Wt(c)||(c=new Date(o))),Wt(c)&&u?c:null));a.props.showTimeSelectOnly&&a.props.selected&&f&&!Jt(f,a.props.selected)&&(f=yt.default(a.props.selected,{hours:xe.default(f),minutes:Ne.default(f),seconds:Ee.default(f)})),!f&&n.target.value||(a.props.showWeekPicker&&(f=Qt(f,a.props.locale,a.props.calendarStartDay)),a.setSelected(f,n,!0))}})),St(Et(a),\"handleSelect\",(function(e,t,r){if(a.props.shouldCloseOnSelect&&!a.props.showTimeSelect&&a.sendFocusBackToInput(),a.props.onChangeRaw&&a.props.onChangeRaw(t),a.props.showWeekPicker&&(e=Qt(e,a.props.locale,a.props.calendarStartDay)),a.setSelected(e,t,!1,r),a.props.showDateSelect&&a.setState({isRenderAriaLiveMessage:!0}),!a.props.shouldCloseOnSelect||a.props.showTimeSelect)a.setPreSelection(e);else if(!a.props.inline){a.props.selectsRange||a.setOpen(!1);var n=a.props,o=n.startDate,s=n.endDate;!o||s||lt.default(e,o)||a.setOpen(!1)}})),St(Et(a),\"setSelected\",(function(e,t,r,n){var o=e;if(a.props.showYearPicker){if(null!==o&&cr(Le.default(o),a.props))return}else if(a.props.showMonthYearPicker){if(null!==o&&sr(o,a.props))return}else if(null!==o&&nr(o,a.props))return;var s=a.props,i=s.onChange,p=s.selectsRange,l=s.startDate,c=s.endDate;if(!Xt(a.props.selected,o)||a.props.allowSameDay||p)if(null!==o&&(!a.props.selected||r&&(a.props.showTimeSelect||a.props.showTimeSelectOnly||a.props.showTimeInput)||(o=Bt(o,{hour:xe.default(a.props.selected),minute:Ne.default(a.props.selected),second:Ee.default(a.props.selected)})),a.props.inline||a.setState({preSelection:o}),a.props.focusSelectedMonth||a.setState({monthSelectedIn:n})),p){var d=l&&!c,u=l&&c;!l&&!c?i([o,null],t):d&&(lt.default(o,l)?i([o,null],t):i([l,o],t)),u&&i([o,null],t)}else i(o,t);r||(a.props.onSelect(o,t),a.setState({inputValue:null}))})),St(Et(a),\"setPreSelection\",(function(e){var t=void 0!==a.props.minDate,r=void 0!==a.props.maxDate,n=!0;if(e){a.props.showWeekPicker&&(e=Qt(e,a.props.locale,a.props.calendarStartDay));var o=$e.default(e);if(t&&r)n=Zt(e,a.props.minDate,a.props.maxDate);else if(t){var s=$e.default(a.props.minDate);n=pt.default(e,s)||Xt(o,s)}else if(r){var i=et.default(a.props.maxDate);n=lt.default(e,i)||Xt(o,i)}}n&&a.setState({preSelection:e})})),St(Et(a),\"toggleCalendar\",(function(){a.setOpen(!a.state.open)})),St(Et(a),\"handleTimeChange\",(function(e){var t=a.props.selected?a.props.selected:a.getPreSelection(),r=a.props.selected?e:Bt(t,{hour:xe.default(e),minute:Ne.default(e)});a.setState({preSelection:r}),a.props.onChange(r),a.props.shouldCloseOnSelect&&(a.sendFocusBackToInput(),a.setOpen(!1)),a.props.showTimeInput&&a.setOpen(!0),(a.props.showTimeSelectOnly||a.props.showTimeSelect)&&a.setState({isRenderAriaLiveMessage:!0}),a.setState({inputValue:null})})),St(Et(a),\"onInputClick\",(function(){a.props.disabled||a.props.readOnly||a.setOpen(!0),a.props.onInputClick()})),St(Et(a),\"onInputKeyDown\",(function(e){a.props.onKeyDown(e);var t=e.key;if(a.state.open||a.props.inline||a.props.preventOpenOnFocus){if(a.state.open){if(\"ArrowDown\"===t||\"ArrowUp\"===t){e.preventDefault();var r=a.props.showWeekPicker&&a.props.showWeekNumbers?'.react-datepicker__week-number[tabindex=\"0\"]':'.react-datepicker__day[tabindex=\"0\"]',n=a.calendar.componentNode&&a.calendar.componentNode.querySelector(r);return void(n&&n.focus({preventScroll:!0}))}var o=At(a.state.preSelection);\"Enter\"===t?(e.preventDefault(),a.inputOk()&&a.state.lastPreSelectChange===ca?(a.handleSelect(o,e),!a.props.shouldCloseOnSelect&&a.setPreSelection(o)):a.setOpen(!1)):\"Escape\"===t?(e.preventDefault(),a.sendFocusBackToInput(),a.setOpen(!1)):\"Tab\"===t&&a.setOpen(!1),a.inputOk()||a.props.onInputError({code:1,msg:ia})}}else\"ArrowDown\"!==t&&\"ArrowUp\"!==t&&\"Enter\"!==t||a.onInputClick()})),St(Et(a),\"onPortalKeyDown\",(function(e){\"Escape\"===e.key&&(e.preventDefault(),a.setState({preventFocus:!0},(function(){a.setOpen(!1),setTimeout((function(){a.setFocus(),a.setState({preventFocus:!1})}))})))})),St(Et(a),\"onDayKeyDown\",(function(e){a.props.onKeyDown(e);var t=e.key,r=At(a.state.preSelection);if(\"Enter\"===t)e.preventDefault(),a.handleSelect(r,e),!a.props.shouldCloseOnSelect&&a.setPreSelection(r);else if(\"Escape\"===t)e.preventDefault(),a.setOpen(!1),a.inputOk()||a.props.onInputError({code:1,msg:ia});else if(!a.props.disabledKeyboardNavigation){var n;switch(t){case\"ArrowLeft\":n=a.props.showWeekPicker?Ce.default(r,1):Se.default(r,1);break;case\"ArrowRight\":n=a.props.showWeekPicker?ge.default(r,1):De.default(r,1);break;case\"ArrowUp\":n=Ce.default(r,1);break;case\"ArrowDown\":n=ge.default(r,1);break;case\"PageUp\":n=_e.default(r,1);break;case\"PageDown\":n=ke.default(r,1);break;case\"Home\":n=Pe.default(r,1);break;case\"End\":n=be.default(r,1);break;default:n=null}if(!n)return void(a.props.onInputError&&a.props.onInputError({code:1,msg:ia}));if(e.preventDefault(),a.setState({lastPreSelectChange:ca}),a.props.adjustDateOnChange&&a.setSelected(n),a.setPreSelection(n),a.props.inline){var o=Te.default(r),s=Te.default(n),i=Le.default(r),p=Le.default(n);o!==s||i!==p?a.setState({shouldFocusDayInline:!0}):a.setState({shouldFocusDayInline:!1})}}})),St(Et(a),\"onPopperKeyDown\",(function(e){\"Escape\"===e.key&&(e.preventDefault(),a.sendFocusBackToInput())})),St(Et(a),\"onClearClick\",(function(e){e&&e.preventDefault&&e.preventDefault(),a.sendFocusBackToInput(),a.props.selectsRange?a.props.onChange([null,null],e):a.props.onChange(null,e),a.setState({inputValue:null})})),St(Et(a),\"clear\",(function(){a.onClearClick()})),St(Et(a),\"onScroll\",(function(e){\"boolean\"==typeof a.props.closeOnScroll&&a.props.closeOnScroll?e.target!==document&&e.target!==document.documentElement&&e.target!==document.body||a.setOpen(!1):\"function\"==typeof a.props.closeOnScroll&&a.props.closeOnScroll(e)&&a.setOpen(!1)})),St(Et(a),\"renderCalendar\",(function(){return a.props.inline||a.isCalendarOpen()?de.default.createElement(sa,{ref:function(e){a.calendar=e},locale:a.props.locale,calendarStartDay:a.props.calendarStartDay,chooseDayAriaLabelPrefix:a.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:a.props.disabledDayAriaLabelPrefix,weekAriaLabelPrefix:a.props.weekAriaLabelPrefix,monthAriaLabelPrefix:a.props.monthAriaLabelPrefix,adjustDateOnChange:a.props.adjustDateOnChange,setOpen:a.setOpen,shouldCloseOnSelect:a.props.shouldCloseOnSelect,dateFormat:a.props.dateFormatCalendar,useWeekdaysShort:a.props.useWeekdaysShort,formatWeekDay:a.props.formatWeekDay,dropdownMode:a.props.dropdownMode,selected:a.props.selected,preSelection:a.state.preSelection,onSelect:a.handleSelect,onWeekSelect:a.props.onWeekSelect,openToDate:a.props.openToDate,minDate:a.props.minDate,maxDate:a.props.maxDate,selectsStart:a.props.selectsStart,selectsEnd:a.props.selectsEnd,selectsRange:a.props.selectsRange,startDate:a.props.startDate,endDate:a.props.endDate,excludeDates:a.props.excludeDates,excludeDateIntervals:a.props.excludeDateIntervals,filterDate:a.props.filterDate,onClickOutside:a.handleCalendarClickOutside,formatWeekNumber:a.props.formatWeekNumber,highlightDates:a.state.highlightDates,holidays:Sr(a.modifyHolidays()),includeDates:a.props.includeDates,includeDateIntervals:a.props.includeDateIntervals,includeTimes:a.props.includeTimes,injectTimes:a.props.injectTimes,inline:a.props.inline,shouldFocusDayInline:a.state.shouldFocusDayInline,peekNextMonth:a.props.peekNextMonth,showMonthDropdown:a.props.showMonthDropdown,showPreviousMonths:a.props.showPreviousMonths,useShortMonthInDropdown:a.props.useShortMonthInDropdown,showMonthYearDropdown:a.props.showMonthYearDropdown,showWeekNumbers:a.props.showWeekNumbers,showYearDropdown:a.props.showYearDropdown,withPortal:a.props.withPortal,forceShowMonthNavigation:a.props.forceShowMonthNavigation,showDisabledMonthNavigation:a.props.showDisabledMonthNavigation,scrollableYearDropdown:a.props.scrollableYearDropdown,scrollableMonthYearDropdown:a.props.scrollableMonthYearDropdown,todayButton:a.props.todayButton,weekLabel:a.props.weekLabel,outsideClickIgnoreClass:oa,fixedHeight:a.props.fixedHeight,monthsShown:a.props.monthsShown,monthSelectedIn:a.state.monthSelectedIn,onDropdownFocus:a.handleDropdownFocus,onMonthChange:a.props.onMonthChange,onYearChange:a.props.onYearChange,dayClassName:a.props.dayClassName,weekDayClassName:a.props.weekDayClassName,monthClassName:a.props.monthClassName,timeClassName:a.props.timeClassName,showDateSelect:a.props.showDateSelect,showTimeSelect:a.props.showTimeSelect,showTimeSelectOnly:a.props.showTimeSelectOnly,onTimeChange:a.handleTimeChange,timeFormat:a.props.timeFormat,timeIntervals:a.props.timeIntervals,minTime:a.props.minTime,maxTime:a.props.maxTime,excludeTimes:a.props.excludeTimes,filterTime:a.props.filterTime,timeCaption:a.props.timeCaption,className:a.props.calendarClassName,container:a.props.calendarContainer,yearItemNumber:a.props.yearItemNumber,yearDropdownItemNumber:a.props.yearDropdownItemNumber,previousMonthAriaLabel:a.props.previousMonthAriaLabel,previousMonthButtonLabel:a.props.previousMonthButtonLabel,nextMonthAriaLabel:a.props.nextMonthAriaLabel,nextMonthButtonLabel:a.props.nextMonthButtonLabel,previousYearAriaLabel:a.props.previousYearAriaLabel,previousYearButtonLabel:a.props.previousYearButtonLabel,nextYearAriaLabel:a.props.nextYearAriaLabel,nextYearButtonLabel:a.props.nextYearButtonLabel,timeInputLabel:a.props.timeInputLabel,disabledKeyboardNavigation:a.props.disabledKeyboardNavigation,renderCustomHeader:a.props.renderCustomHeader,popperProps:a.props.popperProps,renderDayContents:a.props.renderDayContents,renderMonthContent:a.props.renderMonthContent,renderQuarterContent:a.props.renderQuarterContent,renderYearContent:a.props.renderYearContent,onDayMouseEnter:a.props.onDayMouseEnter,onMonthMouseLeave:a.props.onMonthMouseLeave,onYearMouseEnter:a.props.onYearMouseEnter,onYearMouseLeave:a.props.onYearMouseLeave,selectsDisabledDaysInRange:a.props.selectsDisabledDaysInRange,showTimeInput:a.props.showTimeInput,showMonthYearPicker:a.props.showMonthYearPicker,showFullMonthYearPicker:a.props.showFullMonthYearPicker,showTwoColumnMonthYearPicker:a.props.showTwoColumnMonthYearPicker,showFourColumnMonthYearPicker:a.props.showFourColumnMonthYearPicker,showYearPicker:a.props.showYearPicker,showQuarterYearPicker:a.props.showQuarterYearPicker,showWeekPicker:a.props.showWeekPicker,showPopperArrow:a.props.showPopperArrow,excludeScrollbar:a.props.excludeScrollbar,handleOnKeyDown:a.props.onKeyDown,handleOnDayKeyDown:a.onDayKeyDown,isInputFocused:a.state.focused,customTimeInput:a.props.customTimeInput,setPreSelection:a.setPreSelection},a.props.children):null})),St(Et(a),\"renderAriaLiveRegion\",(function(){var e,t=a.props,r=t.dateFormat,n=t.locale,o=a.props.showTimeInput||a.props.showTimeSelect?\"PPPPp\":\"PPPP\";return e=a.props.selectsRange?\"Selected start date: \".concat(Kt(a.props.startDate,{dateFormat:o,locale:n}),\". \").concat(a.props.endDate?\"End date: \"+Kt(a.props.endDate,{dateFormat:o,locale:n}):\"\"):a.props.showTimeSelectOnly?\"Selected time: \".concat(Kt(a.props.selected,{dateFormat:r,locale:n})):a.props.showYearPicker?\"Selected year: \".concat(Kt(a.props.selected,{dateFormat:\"yyyy\",locale:n})):a.props.showMonthYearPicker?\"Selected month: \".concat(Kt(a.props.selected,{dateFormat:\"MMMM yyyy\",locale:n})):a.props.showQuarterYearPicker?\"Selected quarter: \".concat(Kt(a.props.selected,{dateFormat:\"yyyy, QQQ\",locale:n})):\"Selected date: \".concat(Kt(a.props.selected,{dateFormat:o,locale:n})),de.default.createElement(\"span\",{role:\"alert\",\"aria-live\":\"polite\",className:\"react-datepicker__aria-live\"},e)})),St(Et(a),\"renderDateInput\",(function(){var e,t=ue.default(a.props.className,St({},oa,a.state.open)),r=a.props.customInput||de.default.createElement(\"input\",{type:\"text\"}),n=a.props.customInputRef||\"ref\",o=\"string\"==typeof a.props.value?a.props.value:\"string\"==typeof a.state.inputValue?a.state.inputValue:a.props.selectsRange?function(e,t,r){if(!e)return\"\";var a=Kt(e,r),n=t?Kt(t,r):\"\";return\"\".concat(a,\" - \").concat(n)}(a.props.startDate,a.props.endDate,a.props):Kt(a.props.selected,a.props);return de.default.cloneElement(r,(St(St(St(St(St(St(St(St(St(St(e={},n,(function(e){a.input=e})),\"value\",o),\"onBlur\",a.handleBlur),\"onChange\",a.handleChange),\"onClick\",a.onInputClick),\"onFocus\",a.handleFocus),\"onKeyDown\",a.onInputKeyDown),\"id\",a.props.id),\"name\",a.props.name),\"form\",a.props.form),St(St(St(St(St(St(St(St(St(St(e,\"autoFocus\",a.props.autoFocus),\"placeholder\",a.props.placeholderText),\"disabled\",a.props.disabled),\"autoComplete\",a.props.autoComplete),\"className\",ue.default(r.props.className,t)),\"title\",a.props.title),\"readOnly\",a.props.readOnly),\"required\",a.props.required),\"tabIndex\",a.props.tabIndex),\"aria-describedby\",a.props.ariaDescribedBy),St(St(St(e,\"aria-invalid\",a.props.ariaInvalid),\"aria-labelledby\",a.props.ariaLabelledBy),\"aria-required\",a.props.ariaRequired)))})),St(Et(a),\"renderClearButton\",(function(){var e=a.props,t=e.isClearable,r=e.disabled,n=e.selected,o=e.startDate,s=e.endDate,i=e.clearButtonTitle,p=e.clearButtonClassName,l=void 0===p?\"\":p,c=e.ariaLabelClose,d=void 0===c?\"Close\":c;return!t||null==n&&null==o&&null==s?null:de.default.createElement(\"button\",{type:\"button\",className:ue.default(\"react-datepicker__close-icon\",l,{\"react-datepicker__close-icon--disabled\":r}),disabled:r,\"aria-label\":d,onClick:a.onClearClick,title:i,tabIndex:-1})})),a.state=a.calcInitialState(),a.preventFocusTimeout=null,a}return bt(r,[{key:\"componentDidMount\",value:function(){window.addEventListener(\"scroll\",this.onScroll,!0)}},{key:\"componentDidUpdate\",value:function(e,t){var r,a;e.inline&&(r=e.selected,a=this.props.selected,r&&a?Te.default(r)!==Te.default(a)||Le.default(r)!==Le.default(a):r!==a)&&this.setPreSelection(this.props.selected),void 0!==this.state.monthSelectedIn&&e.monthsShown!==this.props.monthsShown&&this.setState({monthSelectedIn:0}),e.highlightDates!==this.props.highlightDates&&this.setState({highlightDates:br(this.props.highlightDates)}),t.focused||Xt(e.selected,this.props.selected)||this.setState({inputValue:null}),t.open!==this.state.open&&(!1===t.open&&!0===this.state.open&&this.props.onCalendarOpen(),!0===t.open&&!1===this.state.open&&this.props.onCalendarClose())}},{key:\"componentWillUnmount\",value:function(){this.clearPreventFocusTimeout(),window.removeEventListener(\"scroll\",this.onScroll,!0)}},{key:\"renderInputContainer\",value:function(){var e=this.props,t=e.showIcon,r=e.icon,a=e.calendarIconClassname,n=e.toggleCalendarOnIconClick,o=this.state.open;return de.default.createElement(\"div\",{className:\"react-datepicker__input-container\".concat(t?\" react-datepicker__view-calendar-icon\":\"\")},t&&de.default.createElement(ea,Ct({icon:r,className:\"\".concat(a,\" \").concat(o&&\"react-datepicker-ignore-onclickoutside\")},n?{onClick:this.toggleCalendar}:null)),this.state.isRenderAriaLiveMessage&&this.renderAriaLiveRegion(),this.renderDateInput(),this.renderClearButton())}},{key:\"render\",value:function(){var e=this.renderCalendar();if(this.props.inline)return e;if(this.props.withPortal){var t=this.state.open?de.default.createElement(aa,{enableTabLoop:this.props.enableTabLoop},de.default.createElement(\"div\",{className:\"react-datepicker__portal\",tabIndex:-1,onKeyDown:this.onPortalKeyDown},e)):null;return this.state.open&&this.props.portalId&&(t=de.default.createElement(ta,{portalId:this.props.portalId,portalHost:this.props.portalHost},t)),de.default.createElement(\"div\",null,this.renderInputContainer(),t)}return de.default.createElement(na,{className:this.props.popperClassName,wrapperClassName:this.props.wrapperClassName,hidePopper:!this.isCalendarOpen(),portalId:this.props.portalId,portalHost:this.props.portalHost,popperModifiers:this.props.popperModifiers,targetComponent:this.renderInputContainer(),popperContainer:this.props.popperContainer,popperComponent:e,popperPlacement:this.props.popperPlacement,popperProps:this.props.popperProps,popperOnKeyDown:this.onPopperKeyDown,enableTabLoop:this.props.enableTabLoop})}}],[{key:\"defaultProps\",get:function(){return{allowSameDay:!1,dateFormat:\"MM/dd/yyyy\",dateFormatCalendar:\"LLLL yyyy\",onChange:function(){},disabled:!1,disabledKeyboardNavigation:!1,dropdownMode:\"scroll\",onFocus:function(){},onBlur:function(){},onKeyDown:function(){},onInputClick:function(){},onSelect:function(){},onClickOutside:function(){},onMonthChange:function(){},onCalendarOpen:function(){},onCalendarClose:function(){},preventOpenOnFocus:!1,onYearChange:function(){},onInputError:function(){},monthsShown:1,readOnly:!1,withPortal:!1,selectsDisabledDaysInRange:!1,shouldCloseOnSelect:!0,showTimeSelect:!1,showTimeInput:!1,showPreviousMonths:!1,showMonthYearPicker:!1,showFullMonthYearPicker:!1,showTwoColumnMonthYearPicker:!1,showFourColumnMonthYearPicker:!1,showYearPicker:!1,showQuarterYearPicker:!1,showWeekPicker:!1,strictParsing:!1,timeIntervals:30,timeCaption:\"Time\",previousMonthAriaLabel:\"Previous Month\",previousMonthButtonLabel:\"Previous Month\",nextMonthAriaLabel:\"Next Month\",nextMonthButtonLabel:\"Next Month\",previousYearAriaLabel:\"Previous Year\",previousYearButtonLabel:\"Previous Year\",nextYearAriaLabel:\"Next Year\",nextYearButtonLabel:\"Next Year\",timeInputLabel:\"Time\",enableTabLoop:!0,yearItemNumber:Lt,focusSelectedMonth:!1,showPopperArrow:!0,excludeScrollbar:!0,customTimeInput:null,calendarStartDay:void 0,toggleCalendarOnIconClick:!1}}}]),r}(de.default.Component),la=\"input\",ca=\"navigate\";e.CalendarContainer=Jr,e.default=pa,e.getDefaultLocale=er,e.registerLocale=function(e,t){var r=\"undefined\"!=typeof window?window:globalThis;r.__localeData__||(r.__localeData__={}),r.__localeData__[e]=t},e.setDefaultLocale=function(e){(\"undefined\"!=typeof window?window:globalThis).__localeId__=e},Object.defineProperty(e,\"__esModule\",{value:!0})}));\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;\nfunction Lg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction Mg(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function Ng(a){var b=a._init;return b(a._payload)}\nfunction Og(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Pg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Qg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&Ng(f)===b.type))return d=e(b,c.props),d.ref=Lg(a,b,c),d.return=a,d;d=Rg(c.type,c.key,c.props,null,a.mode,d);d.ref=Lg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=Sg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Tg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=Qg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=Rg(b.type,b.key,b.props,null,a.mode,c),\nc.ref=Lg(a,null,b),c.return=a,c;case wa:return b=Sg(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Tg(b,a.mode,c,null),b.return=a,b;Mg(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);Mg(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);Mg(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var th={},uh=Uf(th),vh=Uf(th),wh=Uf(th);function xh(a){if(a===th)throw Error(p(174));return a}\nfunction yh(a,b){G(wh,b);G(vh,a);G(uh,th);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(uh);G(uh,b)}function zh(){E(uh);E(vh);E(wh)}function Ah(a){xh(wh.current);var b=xh(uh.current);var c=lb(b,a.type);b!==c&&(G(vh,a),G(uh,c))}function Bh(a){vh.current===a&&(E(uh),E(vh))}var L=Uf(0);\nfunction Ch(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Dh=[];\nfunction Eh(){for(var a=0;a<Dh.length;a++)Dh[a]._workInProgressVersionPrimary=null;Dh.length=0}var Fh=ua.ReactCurrentDispatcher,Gh=ua.ReactCurrentBatchConfig,Hh=0,M=null,N=null,O=null,Ih=!1,Jh=!1,Kh=0,Lh=0;function P(){throw Error(p(321));}function Mh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Nh(a,b,c,d,e,f){Hh=f;M=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Fh.current=null===a||null===a.memoizedState?Oh:Ph;a=c(d,e);if(Jh){f=0;do{Jh=!1;Kh=0;if(25<=f)throw Error(p(301));f+=1;O=N=null;b.updateQueue=null;Fh.current=Qh;a=c(d,e)}while(Jh)}Fh.current=Rh;b=null!==N&&null!==N.next;Hh=0;O=N=M=null;Ih=!1;if(b)throw Error(p(300));return a}function Sh(){var a=0!==Kh;Kh=0;return a}\nfunction Th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===O?M.memoizedState=O=a:O=O.next=a;return O}function Uh(){if(null===N){var a=M.alternate;a=null!==a?a.memoizedState:null}else a=N.next;var b=null===O?M.memoizedState:O.next;if(null!==b)O=b,N=a;else{if(null===a)throw Error(p(310));N=a;a={memoizedState:N.memoizedState,baseState:N.baseState,baseQueue:N.baseQueue,queue:N.queue,next:null};null===O?M.memoizedState=O=a:O=O.next=a}return O}\nfunction Vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Wh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=N,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Hh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;M.lanes|=m;rh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(dh=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,M.lanes|=f,rh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction Xh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(dh=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function Yh(){}\nfunction Zh(a,b){var c=M,d=Uh(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,dh=!0);d=d.queue;$h(ai.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==O&&O.memoizedState.tag&1){c.flags|=2048;bi(9,ci.bind(null,c,d,e,b),void 0,null);if(null===Q)throw Error(p(349));0!==(Hh&30)||di(c,b,e)}return e}function di(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction ci(a,b,c,d){b.value=c;b.getSnapshot=d;ei(b)&&fi(a)}function ai(a,b,c){return c(function(){ei(b)&&fi(a)})}function ei(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function fi(a){var b=ih(a,1);null!==b&&gi(b,a,1,-1)}\nfunction hi(a){var b=Th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Vh,lastRenderedState:a};b.queue=a;a=a.dispatch=ii.bind(null,M,a);return[b.memoizedState,a]}\nfunction bi(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function ji(){return Uh().memoizedState}function ki(a,b,c,d){var e=Th();M.flags|=a;e.memoizedState=bi(1|b,c,void 0,void 0===d?null:d)}\nfunction li(a,b,c,d){var e=Uh();d=void 0===d?null:d;var f=void 0;if(null!==N){var g=N.memoizedState;f=g.destroy;if(null!==d&&Mh(d,g.deps)){e.memoizedState=bi(b,c,f,d);return}}M.flags|=a;e.memoizedState=bi(1|b,c,f,d)}function mi(a,b){return ki(8390656,8,a,b)}function $h(a,b){return li(2048,8,a,b)}function ni(a,b){return li(4,2,a,b)}function oi(a,b){return li(4,4,a,b)}\nfunction pi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function qi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return li(4,4,pi.bind(null,b,a),c)}function ri(){}function si(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction ti(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function ui(a,b,c){if(0===(Hh&21))return a.baseState&&(a.baseState=!1,dh=!0),a.memoizedState=c;He(c,b)||(c=yc(),M.lanes|=c,rh|=c,a.baseState=!0);return b}function vi(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Lh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Ph={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Wh,useRef:ji,useState:function(){return Wh(Vh)},\nuseDebugValue:ri,useDeferredValue:function(a){var b=Uh();return ui(b,N.memoizedState,a)},useTransition:function(){var a=Wh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1},Qh={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Xh,useRef:ji,useState:function(){return Xh(Vh)},useDebugValue:ri,useDeferredValue:function(a){var b=Uh();return null===\nN?b.memoizedState=a:ui(b,N.memoizedState,a)},useTransition:function(){var a=Xh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1};function Ci(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}function Di(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Ei={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=R(),d=\nyi(a),e=mh(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=nh(a,e,d);null!==b&&(gi(b,a,d,c),oh(b,a,d))}};function Fi(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction Gi(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=eh(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Ei;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Hi(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Ei.enqueueReplaceState(b,b.state,null)}\nfunction Ii(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs={};kh(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=eh(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Di(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Ei.enqueueReplaceState(e,e.state,null),qh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}function Ji(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}\nfunction Ki(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}function Li(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Mi=\"function\"===typeof WeakMap?WeakMap:Map;function Ni(a,b,c){c=mh(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Oi||(Oi=!0,Pi=d);Li(a,b)};return c}\nfunction Qi(a,b,c){c=mh(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Li(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Li(a,b);\"function\"!==typeof d&&(null===Ri?Ri=new Set([this]):Ri.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Si(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Mi;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ti.bind(null,a,b,c),b.then(a,a))}function Ui(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Vi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=mh(-1,1),b.tag=2,nh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Wi=ua.ReactCurrentOwner,dh=!1;function Xi(a,b,c,d){b.child=null===a?Vg(b,null,c,d):Ug(b,a.child,c,d)}\nfunction Yi(a,b,c,d,e){c=c.render;var f=b.ref;ch(b,e);d=Nh(a,b,c,d,f,e);c=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&c&&vg(b);b.flags|=1;Xi(a,b,d,e);return b.child}\nfunction $i(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!aj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bj(a,b,f,d,e);a=Rg(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return Zi(a,b,e)}b.flags|=1;a=Pg(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(dh=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(dh=!0);else return b.lanes=a.lanes,Zi(a,b,e)}return cj(a,b,c,d,e)}\nfunction dj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(ej,fj),fj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(ej,fj),fj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(ej,fj);fj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(ej,fj),fj|=d;Xi(a,b,e,c);return b.child}function gj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);ch(b,e);c=Nh(a,b,c,d,f,e);d=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&d&&vg(b);b.flags|=1;Xi(a,b,c,e);return b.child}\nfunction hj(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;ch(b,e);if(null===b.stateNode)ij(a,b),Gi(b,c,d),Ii(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=eh(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&Hi(b,g,d,l);jh=!1;var r=b.memoizedState;g.state=r;qh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||jh?(\"function\"===typeof m&&(Di(b,c,m,d),k=b.memoizedState),(h=jh||Fi(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;lh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Ci(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=eh(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&Hi(b,g,d,k);jh=!1;r=b.memoizedState;g.state=r;qh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||jh?(\"function\"===typeof y&&(Di(b,c,y,d),n=b.memoizedState),(l=jh||Fi(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return jj(a,b,c,d,f,e)}\nfunction jj(a,b,c,d,e,f){gj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),Zi(a,b,f);d=b.stateNode;Wi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Ug(b,a.child,null,f),b.child=Ug(b,null,h,f)):Xi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function kj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);yh(a,b.containerInfo)}\nfunction lj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Xi(a,b,c,d);return b.child}var mj={dehydrated:null,treeContext:null,retryLane:0};function nj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction oj(a,b,c){var d=b.pendingProps,e=L.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(L,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=pj(g,d,0,null),a=Tg(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=nj(c),b.memoizedState=mj,a):qj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return rj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=Pg(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=Pg(h,f):(f=Tg(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?nj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=mj;return d}f=a.child;a=f.sibling;d=Pg(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction qj(a,b){b=pj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sj(a,b,c,d){null!==d&&Jg(d);Ug(b,a.child,null,c);a=qj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction rj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Ki(Error(p(422))),sj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=pj({mode:\"visible\",children:d.children},e,0,null);f=Tg(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Ug(b,a.child,null,g);b.child.memoizedState=nj(g);b.memoizedState=mj;return f}if(0===(b.mode&1))return sj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Ki(f,d,void 0);return sj(a,b,g,d)}h=0!==(g&a.childLanes);if(dh||h){d=Q;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,ih(a,e),gi(d,a,e,-1))}tj();d=Ki(Error(p(421)));return sj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=uj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=qj(b,d.children);b.flags|=4096;return b}function vj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);bh(a.return,b,c)}\nfunction wj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction xj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Xi(a,b,d.children,c);d=L.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&vj(a,c,b);else if(19===a.tag)vj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(L,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Ch(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);wj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Ch(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}wj(b,!0,c,null,f);break;case \"together\":wj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction ij(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function Zi(a,b,c){null!==a&&(b.dependencies=a.dependencies);rh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=Pg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Pg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction yj(a,b,c){switch(b.tag){case 3:kj(b);Ig();break;case 5:Ah(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:yh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Wg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(L,L.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return oj(a,b,c);G(L,L.current&1);a=Zi(a,b,c);return null!==a?a.sibling:null}G(L,L.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return xj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(L,L.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dj(a,b,c)}return Zi(a,b,c)}var zj,Aj,Bj,Cj;\nzj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Aj=function(){};\nBj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;xh(uh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Cj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Dj(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Ej(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;zh();E(Wf);E(H);Eh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Fj(zg),zg=null));Aj(a,b);S(b);return null;case 5:Bh(b);var e=xh(wh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Bj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Cj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=xh(wh.current);xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(L);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Fj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(L.current&1)?0===T&&(T=3):tj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return zh(),\nAj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return ah(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(L);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Dj(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Ch(a);if(null!==g){b.flags|=128;Dj(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(L,L.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Gj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Xj=!1;break a;case 3:X=h.stateNode.containerInfo;Xj=!0;break a;case 4:X=h.stateNode.containerInfo;Xj=!0;break a}h=h.return}if(null===X)throw Error(p(160));Zj(f,g,e);X=null;Xj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)dk(b,a),b=b.sibling}\nfunction dk(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:ck(b,a);ek(a);if(d&4){try{Pj(3,a,a.return),Qj(3,a)}catch(t){W(a,a.return,t)}try{Pj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);break;case 5:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:ck(b,a);ek(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:ck(b,a);ek(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:ck(b,a);ek(a);break;case 13:ck(b,a);ek(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(fk=B()));d&4&&ak(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,ck(b,a),U=l):ck(b,a);ek(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Pj(4,r,r.return);break;case 1:Lj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Lj(r,r.return);break;case 22:if(null!==r.memoizedState){gk(q);continue}}null!==y?(y.return=r,V=y):gk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:ck(b,a);ek(a);d&4&&ak(a);break;case 21:break;default:ck(b,\na),ek(a)}}function ek(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Tj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Uj(a);Wj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Uj(a);Vj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function hk(a,b,c){V=a;ik(a,b,c)}\nfunction ik(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Jj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Jj;var l=U;Jj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?jk(e):null!==k?(k.return=g,V=k):jk(e);for(;null!==f;)V=f,ik(f,b,c),f=f.sibling;V=e;Jj=h;U=l}kk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):kk(a,b,c)}}\nfunction kk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Qj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Ci(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&sh(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}sh(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Rj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function gk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction jk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Qj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Rj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Rj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar lk=Math.ceil,mk=ua.ReactCurrentDispatcher,nk=ua.ReactCurrentOwner,ok=ua.ReactCurrentBatchConfig,K=0,Q=null,Y=null,Z=0,fj=0,ej=Uf(0),T=0,pk=null,rh=0,qk=0,rk=0,sk=null,tk=null,fk=0,Gj=Infinity,uk=null,Oi=!1,Pi=null,Ri=null,vk=!1,wk=null,xk=0,yk=0,zk=null,Ak=-1,Bk=0;function R(){return 0!==(K&6)?B():-1!==Ak?Ak:Ak=B()}\nfunction yi(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Bk&&(Bk=yc()),Bk;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function gi(a,b,c,d){if(50<yk)throw yk=0,zk=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==Q)a===Q&&(0===(K&2)&&(qk|=c),4===T&&Ck(a,Z)),Dk(a,d),1===c&&0===K&&0===(b.mode&1)&&(Gj=B()+500,fg&&jg())}\nfunction Dk(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===Q?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Ek.bind(null,a)):hg(Ek.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Fk(c,Gk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Gk(a,b){Ak=-1;Bk=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Hk()&&a.callbackNode!==c)return null;var d=uc(a,a===Q?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Ik(a,d);else{b=d;var e=K;K|=2;var f=Jk();if(Q!==a||Z!==b)uk=null,Gj=B()+500,Kk(a,b);do try{Lk();break}catch(h){Mk(a,h)}while(1);$g();mk.current=f;K=e;null!==Y?b=0:(Q=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Nk(a,e)));if(1===b)throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;if(6===b)Ck(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Ok(e)&&(b=Ik(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Nk(a,f))),1===b))throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Pk(a,tk,uk);break;case 3:Ck(a,d);if((d&130023424)===d&&(b=fk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){R();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),b);break}Pk(a,tk,uk);break;case 4:Ck(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),d);break}Pk(a,tk,uk);break;case 5:Pk(a,tk,uk);break;default:throw Error(p(329));}}}Dk(a,B());return a.callbackNode===c?Gk.bind(null,a):null}\nfunction Nk(a,b){var c=sk;a.current.memoizedState.isDehydrated&&(Kk(a,b).flags|=256);a=Ik(a,b);2!==a&&(b=tk,tk=c,null!==b&&Fj(b));return a}function Fj(a){null===tk?tk=a:tk.push.apply(tk,a)}\nfunction Ok(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Ck(a,b){b&=~rk;b&=~qk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Ek(a){if(0!==(K&6))throw Error(p(327));Hk();var b=uc(a,0);if(0===(b&1))return Dk(a,B()),null;var c=Ik(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Nk(a,d))}if(1===c)throw c=pk,Kk(a,0),Ck(a,b),Dk(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Pk(a,tk,uk);Dk(a,B());return null}\nfunction Qk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Gj=B()+500,fg&&jg())}}function Rk(a){null!==wk&&0===wk.tag&&0===(K&6)&&Hk();var b=K;K|=1;var c=ok.transition,d=C;try{if(ok.transition=null,C=1,a)return a()}finally{C=d,ok.transition=c,K=b,0===(K&6)&&jg()}}function Hj(){fj=ej.current;E(ej)}\nfunction Kk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:zh();E(Wf);E(H);Eh();break;case 5:Bh(d);break;case 4:zh();break;case 13:E(L);break;case 19:E(L);break;case 10:ah(d.type._context);break;case 22:case 23:Hj()}c=c.return}Q=a;Y=a=Pg(a.current,null);Z=fj=b;T=0;pk=null;rk=qk=rh=0;tk=sk=null;if(null!==fh){for(b=\n0;b<fh.length;b++)if(c=fh[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}fh=null}return a}\nfunction Mk(a,b){do{var c=Y;try{$g();Fh.current=Rh;if(Ih){for(var d=M.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Ih=!1}Hh=0;O=N=M=null;Jh=!1;Kh=0;nk.current=null;if(null===c||null===c.return){T=1;pk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Ui(g);if(null!==y){y.flags&=-257;Vi(y,g,h,f,b);y.mode&1&&Si(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Si(f,l,b);tj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Ui(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Vi(J,g,h,f,b);Jg(Ji(k,h));break a}}f=k=Ji(k,h);4!==T&&(T=2);null===sk?sk=[f]:sk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Ni(f,k,b);ph(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Ri||!Ri.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Qi(f,h,b);ph(f,F);break a}}f=f.return}while(null!==f)}Sk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Jk(){var a=mk.current;mk.current=Rh;return null===a?Rh:a}\nfunction tj(){if(0===T||3===T||2===T)T=4;null===Q||0===(rh&268435455)&&0===(qk&268435455)||Ck(Q,Z)}function Ik(a,b){var c=K;K|=2;var d=Jk();if(Q!==a||Z!==b)uk=null,Kk(a,b);do try{Tk();break}catch(e){Mk(a,e)}while(1);$g();K=c;mk.current=d;if(null!==Y)throw Error(p(261));Q=null;Z=0;return T}function Tk(){for(;null!==Y;)Uk(Y)}function Lk(){for(;null!==Y&&!cc();)Uk(Y)}function Uk(a){var b=Vk(a.alternate,a,fj);a.memoizedProps=a.pendingProps;null===b?Sk(a):Y=b;nk.current=null}\nfunction Sk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Ej(c,b,fj),null!==c){Y=c;return}}else{c=Ij(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Pk(a,b,c){var d=C,e=ok.transition;try{ok.transition=null,C=1,Wk(a,b,c,d)}finally{ok.transition=e,C=d}return null}\nfunction Wk(a,b,c,d){do Hk();while(null!==wk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===Q&&(Y=Q=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||vk||(vk=!0,Fk(hc,function(){Hk();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=ok.transition;ok.transition=null;\nvar g=C;C=1;var h=K;K|=4;nk.current=null;Oj(a,c);dk(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;hk(c,a,e);dc();K=h;C=g;ok.transition=f}else a.current=c;vk&&(vk=!1,wk=a,xk=e);f=a.pendingLanes;0===f&&(Ri=null);mc(c.stateNode,d);Dk(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Oi)throw Oi=!1,a=Pi,Pi=null,a;0!==(xk&1)&&0!==a.tag&&Hk();f=a.pendingLanes;0!==(f&1)?a===zk?yk++:(yk=0,zk=a):yk=0;jg();return null}\nfunction Hk(){if(null!==wk){var a=Dc(xk),b=ok.transition,c=C;try{ok.transition=null;C=16>a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Pj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Sj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Pj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Qj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,ok.transition=b}}return!1}function Xk(a,b,c){b=Ji(c,b);b=Ni(a,b,1);a=nh(a,b,1);b=R();null!==a&&(Ac(a,1,b),Dk(a,b))}\nfunction W(a,b,c){if(3===a.tag)Xk(a,a,c);else for(;null!==b;){if(3===b.tag){Xk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ri||!Ri.has(d))){a=Ji(c,a);a=Qi(b,a,1);b=nh(b,a,1);a=R();null!==b&&(Ac(b,1,a),Dk(b,a));break}}b=b.return}}\nfunction Ti(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=R();a.pingedLanes|=a.suspendedLanes&c;Q===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction dl(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction el(a,b,c,d,e,f,g,h,k){a=bl(c,d,!0,a,e,f,g,h,k);a.context=dl(null);c=a.current;d=R();e=yi(c);f=mh(d,e);f.callback=void 0!==b&&null!==b?b:null;nh(c,f,e);a.current.lanes=e;Ac(a,e,d);Dk(a,d);return a}function fl(a,b,c,d){var e=b.current,f=R(),g=yi(e);c=dl(c);null===b.context?b.context=c:b.pendingContext=c;b=mh(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=nh(e,b,g);null!==a&&(gi(a,e,g,f),oh(a,e,g));return g}\nfunction gl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function hl(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function il(a,b){hl(a,b);(a=a.alternate)&&hl(a,b)}function jl(){return null}var kl=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ll(a){this._internalRoot=a}\nml.prototype.render=ll.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));fl(a,b,null,null)};ml.prototype.unmount=ll.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Rk(function(){fl(null,a,null,null)});b[uf]=null}};function ml(a){this._internalRoot=a}\nml.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function nl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function pl(){}\nfunction ql(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=gl(g);f.call(a)}}var g=el(b,d,a,0,null,!1,!1,\"\",pl);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Rk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=gl(k);h.call(a)}}var k=bl(a,0,!1,null,null,!1,!1,\"\",pl);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Rk(function(){fl(b,k,c,d)});return k}\nfunction rl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=gl(g);h.call(a)}}fl(b,g,a,e)}else g=ql(c,b,a,e,d);return gl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Dk(b,B()),0===(K&6)&&(Gj=B()+500,jg()))}break;case 13:Rk(function(){var b=ih(a,1);if(null!==b){var c=R();gi(b,a,1,c)}}),il(a,1)}};\nFc=function(a){if(13===a.tag){var b=ih(a,134217728);if(null!==b){var c=R();gi(b,a,134217728,c)}il(a,134217728)}};Gc=function(a){if(13===a.tag){var b=yi(a),c=ih(a,b);if(null!==c){var d=R();gi(c,a,b,d)}il(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Qk;Hb=Rk;\nvar sl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Qk]},tl={findFiberByHostInstance:Wc,bundleType:0,version:\"18.3.1\",rendererPackageName:\"react-dom\"};\nvar ul={bundleType:tl.bundleType,version:tl.version,rendererPackageName:tl.rendererPackageName,rendererConfig:tl.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:tl.findFiberByHostInstance||\njl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1-next-f1338f8080-20240426\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var vl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!vl.isDisabled&&vl.supportsFiber)try{kc=vl.inject(ul),lc=vl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=sl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!nl(b))throw Error(p(200));return cl(a,b,null,c)};exports.createRoot=function(a,b){if(!nl(a))throw Error(p(299));var c=!1,d=\"\",e=kl;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=bl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ll(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Rk(a)};exports.hydrate=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!nl(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=kl;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=el(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new ml(b)};exports.render=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!ol(a))throw Error(p(40));return a._reactRootContainer?(Rk(function(){rl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Qk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!ol(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return rl(a,b,c,!1,d)};exports.version=\"18.3.1-next-f1338f8080-20240426\";\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"react\"),require(\"draft-js\"),require(\"immutable\")):\"function\"==typeof define&&define.amd?define([\"react\",\"draft-js\",\"immutable\"],e):\"object\"==typeof exports?exports.reactDraftWysiwyg=e(require(\"react\"),require(\"draft-js\"),require(\"immutable\")):t.reactDraftWysiwyg=e(t.react,t[\"draft-js\"],t.immutable)}(window,function(n,o,r){return a={},i.m=c=[function(t,e,n){t.exports=n(10)()},function(t,e){t.exports=n},function(t,e,n){var o;\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n!function(){\"use strict\";var c={}.hasOwnProperty;function a(){for(var t=[],e=0;e<arguments.length;e++){var n=arguments[e];if(n){var o=typeof n;if(\"string\"==o||\"number\"==o)t.push(n);else if(Array.isArray(n)&&n.length){var r=a.apply(null,n);r&&t.push(r)}else if(\"object\"==o)for(var i in n)c.call(n,i)&&n[i]&&t.push(i)}}return t.join(\" \")}t.exports?(a.default=a,t.exports=a):void 0===(o=function(){return a}.apply(e,[]))||(t.exports=o)}()},function(t,e){t.exports=o},function(t,e,n){function r(t){if(a[t])return a[t].exports;var e=a[t]={i:t,l:!1,exports:{}};return c[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports}var o,i,c,a;window,t.exports=(o=n(3),i=n(5),a={},r.m=c=[function(t,e){t.exports=o},function(t,e){t.exports=i},function(t,e,n){t.exports=n(3)},function(t,e,n){\"use strict\";n.r(e);var M=n(0),i=n(1);function j(t){var e=t.getSelection(),n=t.getCurrentContent(),o=e.getStartKey(),r=e.getEndKey(),i=n.getBlockMap();return i.toSeq().skipUntil(function(t,e){return e===o}).takeUntil(function(t,e){return e===r}).concat([[r,i.get(r)]])}function u(t){return j(t).toList()}function l(t){if(t)return u(t).get(0)}function o(t){if(t){var n=l(t),e=t.getCurrentContent().getBlockMap().toSeq().toList(),o=0;if(e.forEach(function(t,e){t.get(\"key\")===n.get(\"key\")&&(o=e-1)}),-1<o)return e.get(o)}}function r(t){return t?t.getCurrentContent().getBlockMap().toList():new i.List}function c(t){var e=u(t);if(!e.some(function(t){return t.type!==e.get(0).type}))return e.get(0).type}function a(t){var e=M.RichUtils.tryToRemoveBlockStyle(t);return e?M.EditorState.push(t,e,\"change-block-type\"):t}function s(t){var e=\"\",n=t.getSelection(),o=n.getAnchorOffset(),r=n.getFocusOffset(),i=u(t);if(0<i.size){if(n.getIsBackward()){var c=o;o=r,r=c}for(var a=0;a<i.size;a+=1){var l=0===a?o:0,s=a===i.size-1?r:i.get(a).getText().length;e+=i.get(a).getText().slice(l,s)}}return e}function p(t){var e=t.getCurrentContent(),n=t.getSelection(),o=M.Modifier.removeRange(e,n,\"forward\"),r=o.getSelectionAfter(),i=o.getBlockForKey(r.getStartKey());return o=M.Modifier.insertText(o,r,\"\\n\",i.getInlineStyleAt(r.getStartOffset()),null),M.EditorState.push(t,o,\"insert-fragment\")}function d(t){var e=M.Modifier.splitBlock(t.getCurrentContent(),t.getSelection());return a(M.EditorState.push(t,e,\"split-block\"))}function f(t){var e=t.getCurrentContent().getBlockMap().toList(),n=t.getSelection().merge({anchorKey:e.first().get(\"key\"),anchorOffset:0,focusKey:e.last().get(\"key\"),focusOffset:e.last().getLength()}),o=M.Modifier.removeRange(t.getCurrentContent(),n,\"forward\");return M.EditorState.push(t,o,\"remove-range\")}function y(t,e){var n=M.Modifier.setBlockData(t.getCurrentContent(),t.getSelection(),e);return M.EditorState.push(t,n,\"change-block-data\")}function m(t){var o=new i.Map({}),e=u(t);if(e&&0<e.size)for(var n=function(t){var n=e.get(t).getData();if(!n||0===n.size)return o=o.clear(),\"break\";if(0===t)o=n;else if(o.forEach(function(t,e){n.get(e)&&n.get(e)===t||(o=o.delete(e))}),0===o.size)return o=o.clear(),\"break\"},r=0;r<e.size&&\"break\"!==n(r);r+=1);return o}var g=Object(i.Map)({code:{element:\"pre\"}}),b=M.DefaultDraftBlockRenderMap.merge(g);function h(t){if(t){var e=t.getType();return\"unordered-list-item\"===e||\"ordered-list-item\"===e}return!1}function v(t,e,n){var o,r=t.getSelection();o=r.getIsBackward()?r.getFocusKey():r.getAnchorKey();var i=t.getCurrentContent(),c=i.getBlockForKey(o),a=c.getType();if(\"unordered-list-item\"!==a&&\"ordered-list-item\"!==a)return t;var l=i.getBlockBefore(o);if(!l)return t;if(l.getType()!==a)return t;var s=c.getDepth();if(1===e&&s===n)return t;var u,p,d,f,y,m,g,b=Math.min(l.getDepth()+1,n),h=(p=e,d=b,f=(u=t).getSelection(),y=u.getCurrentContent(),m=y.getBlockMap(),g=j(u).map(function(t){var e=t.getDepth()+p;return e=Math.max(0,Math.min(e,d)),t.set(\"depth\",e)}),m=m.merge(g),y.merge({blockMap:m,selectionBefore:f,selectionAfter:f}));return M.EditorState.push(t,h,\"adjust-depth\")}function N(t,e){var n;return 13===(n=e).which&&(n.getModifierState(\"Shift\")||n.getModifierState(\"Alt\")||n.getModifierState(\"Control\"))?t.getSelection().isCollapsed()?M.RichUtils.insertSoftNewline(t):p(t):function(t){var e=t.getSelection();if(e.isCollapsed()){var n=t.getCurrentContent(),o=e.getStartKey(),r=n.getBlockForKey(o);if(!h(r)&&\"unstyled\"!==r.getType()&&r.getLength()===e.getStartOffset())return d(t);if(h(r)&&0===r.getLength()){var i=r.getDepth();if(0===i)return a(t);if(0<i)return v(t,-1,i)}}}(t)}function E(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,o)}return n}function S(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function w(t){return(w=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function C(t){var e=t.getSelection();if(e.isCollapsed()){var n={},o=t.getCurrentInlineStyle().toList().toJS();if(o)return[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"CODE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(t){n[t]=0<=o.indexOf(t)}),n}var c=e.getStartOffset(),a=e.getEndOffset(),l=u(t);if(0<l.size){var r=function(){for(var n={BOLD:!0,ITALIC:!0,UNDERLINE:!0,STRIKETHROUGH:!0,CODE:!0,SUPERSCRIPT:!0,SUBSCRIPT:!0},o=0;o<l.size;o+=1){var t=0===o?c:0,e=o===l.size-1?a:l.get(o).getText().length;t===e&&0===t?(t=1,e=2):t===e&&--t;for(var r=function(t){var e=l.get(o).getInlineStyleAt(t);[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"CODE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(t){n[t]=n[t]&&e.get(t)===t})},i=t;i<e;i+=1)r(i)}return{v:n}}();if(\"object\"===w(r))return r.v}return{}}function L(t){var e,n=t.getSelection(),o=n.getStartOffset(),r=n.getEndOffset();o===r&&0===o?r=1:o===r&&--o;for(var i=l(t),c=o;c<r;c+=1){var a=i.getEntityAt(c);if(!a){e=void 0;break}if(c===o)e=a;else if(e!==a){e=void 0;break}}return e}function D(t,e){var n,o=l(t);return o.findEntityRanges(function(t){return t.get(\"entity\")===e},function(t,e){n={start:t,end:e,text:o.get(\"text\").slice(t,e)}}),n}function k(t,e,n){x[t][\"\".concat(t.toLowerCase(),\"-\").concat(n)]=S({},\"\".concat(e),n)}function O(){return function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?E(Object(n),!0).forEach(function(t){S(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):E(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},x.color,{},x.bgcolor,{},x.fontSize,{},x.fontFamily,{CODE:x.CODE,SUPERSCRIPT:x.SUPERSCRIPT,SUBSCRIPT:x.SUBSCRIPT})}var x={color:{},bgcolor:{},fontSize:{},fontFamily:{},CODE:{fontFamily:\"monospace\",wordWrap:\"break-word\",background:\"#f1f1f1\",borderRadius:3,padding:\"1px 3px\"},SUPERSCRIPT:{fontSize:11,position:\"relative\",top:-8,display:\"inline-flex\"},SUBSCRIPT:{fontSize:11,position:\"relative\",bottom:-8,display:\"inline-flex\"}};function I(t,e,n){var o=t.getSelection(),r=Object.keys(x[e]).reduce(function(t,e){return M.Modifier.removeInlineStyle(t,o,e)},t.getCurrentContent()),i=M.EditorState.push(t,r,\"changeinline-style\"),c=t.getCurrentInlineStyle();if(o.isCollapsed()&&(i=c.reduce(function(t,e){return M.RichUtils.toggleInlineStyle(t,e)},i)),\"SUPERSCRIPT\"===e||\"SUBSCRIPT\"==e)c.has(n)||(i=M.RichUtils.toggleInlineStyle(i,n));else{var a=\"bgcolor\"===e?\"backgroundColor\":e;c.has(\"\".concat(a,\"-\").concat(n))||(i=M.RichUtils.toggleInlineStyle(i,\"\".concat(e.toLowerCase(),\"-\").concat(n)),k(e,a,n))}return i}function T(t){t&&t.getCurrentContent().getBlockMap().map(function(t){return t.get(\"characterList\")}).toList().flatten().forEach(function(t){t&&0===t.indexOf(\"color-\")?k(\"color\",\"color\",t.substr(6)):t&&0===t.indexOf(\"bgcolor-\")?k(\"bgcolor\",\"backgroundColor\",t.substr(8)):t&&0===t.indexOf(\"fontsize-\")?k(\"fontSize\",\"fontSize\",+t.substr(9)):t&&0===t.indexOf(\"fontfamily-\")&&k(\"fontFamily\",\"fontFamily\",t.substr(11))})}function A(t,e,n){var o=t.getInlineStyleAt(n).toList().filter(function(t){return t.startsWith(e.toLowerCase())});if(o&&0<o.size)return o.get(0)}function z(o,s){if(o&&s&&0<s.length){var t=function(){var t=o.getSelection(),i={};if(t.isCollapsed())return s.forEach(function(t){i[t]=function(t,e){var n=t.getCurrentInlineStyle().toList().filter(function(t){return t.startsWith(e.toLowerCase())});if(n&&0<n.size)return n.get(0)}(o,t)}),{v:i};var c=t.getStartOffset(),a=t.getEndOffset(),l=u(o);if(0<l.size){for(var e=function(n){var t=0===n?c:0,e=n===l.size-1?a:l.get(n).getText().length;t===e&&0===t?(t=1,e=2):t===e&&--t;for(var o=function(e){e===t?s.forEach(function(t){i[t]=A(l.get(n),t,e)}):s.forEach(function(t){i[t]&&i[t]!==A(l.get(n),t,e)&&(i[t]=void 0)})},r=t;r<e;r+=1)o(r)},n=0;n<l.size;n+=1)e(n);return{v:i}}}();if(\"object\"===w(t))return t.v}return{}}function _(e){var t=e.getCurrentInlineStyle(),n=e.getCurrentContent();return t.forEach(function(t){n=M.Modifier.removeInlineStyle(n,e.getSelection(),t)}),M.EditorState.push(e,n,\"change-inline-style\")}n.d(e,\"isListBlock\",function(){return h}),n.d(e,\"changeDepth\",function(){return v}),n.d(e,\"handleNewLine\",function(){return N}),n.d(e,\"getEntityRange\",function(){return D}),n.d(e,\"getCustomStyleMap\",function(){return O}),n.d(e,\"toggleCustomInlineStyle\",function(){return I}),n.d(e,\"getSelectionEntity\",function(){return L}),n.d(e,\"extractInlineStyle\",function(){return T}),n.d(e,\"removeAllInlineStyles\",function(){return _}),n.d(e,\"getSelectionInlineStyle\",function(){return C}),n.d(e,\"getSelectionCustomInlineStyle\",function(){return z}),n.d(e,\"getSelectedBlocksMap\",function(){return j}),n.d(e,\"getSelectedBlocksList\",function(){return u}),n.d(e,\"getSelectedBlock\",function(){return l}),n.d(e,\"getBlockBeforeSelectedBlock\",function(){return o}),n.d(e,\"getAllBlocks\",function(){return r}),n.d(e,\"getSelectedBlocksType\",function(){return c}),n.d(e,\"removeSelectedBlocksStyle\",function(){return a}),n.d(e,\"getSelectionText\",function(){return s}),n.d(e,\"addLineBreakRemovingSelection\",function(){return p}),n.d(e,\"insertNewUnstyledBlock\",function(){return d}),n.d(e,\"clearEditorContent\",function(){return f}),n.d(e,\"setBlockData\",function(){return y}),n.d(e,\"getSelectedBlocksMetadata\",function(){return m}),n.d(e,\"blockRenderMap\",function(){return b})}],r.c=a,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=2))},function(t,e){t.exports=r},function(t,e,n){function r(t){if(a[t])return a[t].exports;var e=a[t]={i:t,l:!1,exports:{}};return c[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports}var o,i,c,a;window,t.exports=(o=n(5),i=n(3),a={},r.m=c=[function(t,e){t.exports=o},function(t,e){t.exports=i},function(t,e,n){t.exports=n(3)},function(t,e,n){\"use strict\";n.r(e);var j=n(1),s=n(0),v=function(t,e,n){var o,r=t.textContent;return\"\"===r.trim()?{chunk:(o=n,{text:\" \",inlines:[new s.OrderedSet],entities:[o],blocks:[]})}:{chunk:{text:r,inlines:Array(r.length).fill(e),entities:Array(r.length).fill(n),blocks:[]}}},N=function(){return{text:\"\\n\",inlines:[new s.OrderedSet],entities:new Array(1),blocks:[]}},E=function(){return{text:\"\",inlines:[],entities:[],blocks:[]}},S=function(t,e){return{text:\"\",inlines:[],entities:[],blocks:[{type:t,depth:0,data:e||new s.Map({})}]}},w=function(t,e,n){return{text:\"\\r\",inlines:[],entities:[],blocks:[{type:t,depth:Math.max(0,Math.min(4,e)),data:n||new s.Map({})}]}},C=function(t){return{text:\"\\r \",inlines:[new s.OrderedSet],entities:[t],blocks:[{type:\"atomic\",depth:0,data:new s.Map({})}]}},L=function(t,e){return{text:t.text+e.text,inlines:t.inlines.concat(e.inlines),entities:t.entities.concat(e.entities),blocks:t.blocks.concat(e.blocks)}},D=new s.Map({\"header-one\":{element:\"h1\"},\"header-two\":{element:\"h2\"},\"header-three\":{element:\"h3\"},\"header-four\":{element:\"h4\"},\"header-five\":{element:\"h5\"},\"header-six\":{element:\"h6\"},\"unordered-list-item\":{element:\"li\",wrapper:\"ul\"},\"ordered-list-item\":{element:\"li\",wrapper:\"ol\"},blockquote:{element:\"blockquote\"},code:{element:\"pre\"},atomic:{element:\"figure\"},unstyled:{element:\"p\",aliasedElements:[\"div\"]}}),k={code:\"CODE\",del:\"STRIKETHROUGH\",em:\"ITALIC\",strong:\"BOLD\",ins:\"UNDERLINE\",sub:\"SUBSCRIPT\",sup:\"SUPERSCRIPT\"};function O(t){return t.style.textAlign?new s.Map({\"text-align\":t.style.textAlign}):t.style.marginLeft?new s.Map({\"margin-left\":t.style.marginLeft}):void 0}var x=function(t){var e=void 0;if(t instanceof HTMLAnchorElement){var n={};e=t.dataset&&void 0!==t.dataset.mention?(n.url=t.href,n.text=t.innerHTML,n.value=t.dataset.value,j.Entity.__create(\"MENTION\",\"IMMUTABLE\",n)):(n.url=t.getAttribute&&t.getAttribute(\"href\")||t.href,n.title=t.innerHTML,n.targetOption=t.target,j.Entity.__create(\"LINK\",\"MUTABLE\",n))}return e};n.d(e,\"default\",function(){return o});var u=\" \",p=new RegExp(\" \",\"g\"),I=!0;function o(t,e){var n,o,r,i=(n=e,o=t.trim().replace(p,u),(r=function(t){var e,n=null;return document.implementation&&document.implementation.createHTMLDocument&&((e=document.implementation.createHTMLDocument(\"foo\")).documentElement.innerHTML=t,n=e.getElementsByTagName(\"body\")[0]),n}(o))?(I=!0,{chunk:function t(e,n,o,r,i,c){var a=e.nodeName.toLowerCase();if(c){var l=c(a,e);if(l){var s=j.Entity.__create(l.type,l.mutability,l.data||{});return{chunk:C(s)}}}if(\"#text\"===a&&\"\\n\"!==e.textContent)return v(e,n,i);if(\"br\"===a)return{chunk:N()};if(\"img\"===a&&e instanceof HTMLImageElement){var u={};u.src=e.getAttribute&&e.getAttribute(\"src\")||e.src,u.alt=e.alt,u.height=e.style.height,u.width=e.style.width,e.style.float&&(u.alignment=e.style.float);var p=j.Entity.__create(\"IMAGE\",\"MUTABLE\",u);return{chunk:C(p)}}if(\"video\"===a&&e instanceof HTMLVideoElement){var d={};d.src=e.getAttribute&&e.getAttribute(\"src\")||e.src,d.alt=e.alt,d.height=e.style.height,d.width=e.style.width,e.style.float&&(d.alignment=e.style.float);var f=j.Entity.__create(\"VIDEO\",\"MUTABLE\",d);return{chunk:C(f)}}if(\"iframe\"===a&&e instanceof HTMLIFrameElement){var y={};y.src=e.getAttribute&&e.getAttribute(\"src\")||e.src,y.height=e.height,y.width=e.width;var m=j.Entity.__create(\"EMBEDDED_LINK\",\"MUTABLE\",y);return{chunk:C(m)}}var g,b=function(e,n){var t=D.filter(function(t){return t.element===e&&(!t.wrapper||t.wrapper===n)||t.wrapper===e||t.aliasedElements&&-1<t.aliasedElements.indexOf(e)}).keySeq().toSet().toArray();if(1===t.length)return t[0]}(a,r);b&&(\"ul\"===a||\"ol\"===a?(r=a,o+=1):(\"unordered-list-item\"!==b&&\"ordered-list-item\"!==b&&(r=\"\",o=-1),I?(g=S(b,O(e)),I=!1):g=w(b,o,O(e)))),g=g||E(),n=function(t,e,n){var o,r=k[t];if(r)o=n.add(r).toOrderedSet();else if(e instanceof HTMLElement){var l=e;o=(o=n).withMutations(function(t){var e=l.style.color,n=l.style.backgroundColor,o=l.style.fontSize,r=l.style.fontFamily.replace(/^\"|\"$/g,\"\"),i=l.style.fontWeight,c=l.style.textDecoration,a=l.style.fontStyle;e&&t.add(\"color-\".concat(e.replace(/ /g,\"\"))),n&&t.add(\"bgcolor-\".concat(n.replace(/ /g,\"\"))),o&&t.add(\"fontsize-\".concat(o.replace(/px$/g,\"\"))),r&&t.add(\"fontfamily-\".concat(r)),\"bold\"===i&&t.add(k.strong),\"underline\"===c&&t.add(k.ins),\"italic\"===a&&t.add(k.em)}).toOrderedSet()}return o}(a,e,n);for(var h=e.firstChild;h;){var M=t(h,n,o,r,x(h)||i,c).chunk;g=L(g,M),h=h.nextSibling}return{chunk:g}}(r,new s.OrderedSet,-1,\"\",void 0,n).chunk}):null);if(i){var c=i.chunk,a=new s.OrderedMap({});c.entities&&c.entities.forEach(function(t){t&&(a=a.set(t,j.Entity.__get(t)))});var l=0;return{contentBlocks:c.text.split(\"\\r\").map(function(t,e){var n=l+t.length,o=c&&c.inlines.slice(l,n),r=c&&c.entities.slice(l,n),i=new s.List(o.map(function(t,e){var n={style:t,entity:null};return r[e]&&(n.entity=r[e]),j.CharacterMetadata.create(n)}));return l=n,new j.ContentBlock({key:Object(j.genKey)(),type:c&&c.blocks[e]&&c.blocks[e].type||\"unstyled\",depth:c&&c.blocks[e]&&c.blocks[e].depth,data:c&&c.blocks[e]&&c.blocks[e].data||new s.Map({}),text:t,characterList:i})}),entityMap:a}}return null}}],r.c=a,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=2))},function(t,e,l){\"use strict\";function o(n){return Array.prototype.slice.call(arguments,1).forEach(function(e){e&&Object.keys(e).forEach(function(t){n[t]=e[t]})}),n}function s(t){return Object.prototype.toString.call(t)}function u(t){return\"[object Function]\"===s(t)}function p(t){return t.replace(/[.?*+^$[\\]\\\\(){}|-]/g,\"\\\\$&\")}var r={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};var i={\"http:\":{validate:function(t,e,n){var o=t.slice(e);return n.re.http||(n.re.http=new RegExp(\"^\\\\/\\\\/\"+n.re.src_auth+n.re.src_host_port_strict+n.re.src_path,\"i\")),n.re.http.test(o)?o.match(n.re.http)[0].length:0}},\"https:\":\"http:\",\"ftp:\":\"http:\",\"//\":{validate:function(t,e,n){var o=t.slice(e);return n.re.no_http||(n.re.no_http=new RegExp(\"^\"+n.re.src_auth+\"(?:localhost|(?:(?:\"+n.re.src_domain+\")\\\\.)+\"+n.re.src_domain_root+\")\"+n.re.src_port+n.re.src_host_terminator+n.re.src_path,\"i\")),n.re.no_http.test(o)?3<=e&&\":\"===t[e-3]?0:3<=e&&\"/\"===t[e-3]?0:o.match(n.re.no_http)[0].length:0}},\"mailto:\":{validate:function(t,e,n){var o=t.slice(e);return n.re.mailto||(n.re.mailto=new RegExp(\"^\"+n.re.src_email_name+\"@\"+n.re.src_host_strict,\"i\")),n.re.mailto.test(o)?o.match(n.re.mailto)[0].length:0}}},d=\"a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]\",c=\"biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\".split(\"|\");function f(){return function(t,e){e.normalize(t)}}function a(r){var e=r.re=l(21)(r.__opts__),t=r.__tlds__.slice();function n(t){return t.replace(\"%TLDS%\",e.src_tlds)}r.onCompile(),r.__tlds_replaced__||t.push(d),t.push(e.src_xn),e.src_tlds=t.join(\"|\"),e.email_fuzzy=RegExp(n(e.tpl_email_fuzzy),\"i\"),e.link_fuzzy=RegExp(n(e.tpl_link_fuzzy),\"i\"),e.link_no_ip_fuzzy=RegExp(n(e.tpl_link_no_ip_fuzzy),\"i\"),e.host_fuzzy_test=RegExp(n(e.tpl_host_fuzzy_test),\"i\");var i=[];function c(t,e){throw new Error('(LinkifyIt) Invalid schema \"'+t+'\": '+e)}r.__compiled__={},Object.keys(r.__schemas__).forEach(function(t){var e=r.__schemas__[t];if(null!==e){var o,n={validate:null,link:null};if(r.__compiled__[t]=n,\"[object Object]\"===s(e))return\"[object RegExp]\"===s(e.validate)?n.validate=(o=e.validate,function(t,e){var n=t.slice(e);return o.test(n)?n.match(o)[0].length:0}):u(e.validate)?n.validate=e.validate:c(t,e),void(u(e.normalize)?n.normalize=e.normalize:e.normalize?c(t,e):n.normalize=f());if(\"[object String]\"!==s(e))c(t,e);else i.push(t)}}),i.forEach(function(t){r.__compiled__[r.__schemas__[t]]&&(r.__compiled__[t].validate=r.__compiled__[r.__schemas__[t]].validate,r.__compiled__[t].normalize=r.__compiled__[r.__schemas__[t]].normalize)}),r.__compiled__[\"\"]={validate:null,normalize:f()};var o,a=Object.keys(r.__compiled__).filter(function(t){return 0<t.length&&r.__compiled__[t]}).map(p).join(\"|\");r.re.schema_test=RegExp(\"(^|(?!_)(?:[><|]|\"+e.src_ZPCc+\"))(\"+a+\")\",\"i\"),r.re.schema_search=RegExp(\"(^|(?!_)(?:[><|]|\"+e.src_ZPCc+\"))(\"+a+\")\",\"ig\"),r.re.pretest=RegExp(\"(\"+r.re.schema_test.source+\")|(\"+r.re.host_fuzzy_test.source+\")|@\",\"i\"),(o=r).__index__=-1,o.__text_cache__=\"\"}function y(t,e){var n=t.__index__,o=t.__last_index__,r=t.__text_cache__.slice(n,o);this.schema=t.__schema__.toLowerCase(),this.index=n+e,this.lastIndex=o+e,this.raw=r,this.text=r,this.url=r}function m(t,e){var n=new y(t,e);return t.__compiled__[n.schema].normalize(n,t),n}function g(t,e){if(!(this instanceof g))return new g(t,e);var n;e||(n=t,Object.keys(n||{}).reduce(function(t,e){return t||r.hasOwnProperty(e)},!1)&&(e=t,t={})),this.__opts__=o({},r,e),this.__index__=-1,this.__last_index__=-1,this.__schema__=\"\",this.__text_cache__=\"\",this.__schemas__=o({},i,t),this.__compiled__={},this.__tlds__=c,this.__tlds_replaced__=!1,this.re={},a(this)}g.prototype.add=function(t,e){return this.__schemas__[t]=e,a(this),this},g.prototype.set=function(t){return this.__opts__=o(this.__opts__,t),this},g.prototype.test=function(t){if(this.__text_cache__=t,this.__index__=-1,!t.length)return!1;var e,n,o,r,i,c,a,l;if(this.re.schema_test.test(t))for((a=this.re.schema_search).lastIndex=0;null!==(e=a.exec(t));)if(r=this.testSchemaAt(t,e[2],a.lastIndex)){this.__schema__=e[2],this.__index__=e.index+e[1].length,this.__last_index__=e.index+e[0].length+r;break}return this.__opts__.fuzzyLink&&this.__compiled__[\"http:\"]&&0<=(l=t.search(this.re.host_fuzzy_test))&&(this.__index__<0||l<this.__index__)&&null!==(n=t.match(this.__opts__.fuzzyIP?this.re.link_fuzzy:this.re.link_no_ip_fuzzy))&&(i=n.index+n[1].length,(this.__index__<0||i<this.__index__)&&(this.__schema__=\"\",this.__index__=i,this.__last_index__=n.index+n[0].length)),this.__opts__.fuzzyEmail&&this.__compiled__[\"mailto:\"]&&0<=t.indexOf(\"@\")&&null!==(o=t.match(this.re.email_fuzzy))&&(i=o.index+o[1].length,c=o.index+o[0].length,(this.__index__<0||i<this.__index__||i===this.__index__&&c>this.__last_index__)&&(this.__schema__=\"mailto:\",this.__index__=i,this.__last_index__=c)),0<=this.__index__},g.prototype.pretest=function(t){return this.re.pretest.test(t)},g.prototype.testSchemaAt=function(t,e,n){return this.__compiled__[e.toLowerCase()]?this.__compiled__[e.toLowerCase()].validate(t,n,this):0},g.prototype.match=function(t){var e=0,n=[];0<=this.__index__&&this.__text_cache__===t&&(n.push(m(this,e)),e=this.__last_index__);for(var o=e?t.slice(e):t;this.test(o);)n.push(m(this,e)),o=o.slice(this.__last_index__),e+=this.__last_index__;return n.length?n:null},g.prototype.tlds=function(t,e){return t=Array.isArray(t)?t:[t],e?this.__tlds__=this.__tlds__.concat(t).sort().filter(function(t,e,n){return t!==n[e-1]}).reverse():(this.__tlds__=t.slice(),this.__tlds_replaced__=!0),a(this),this},g.prototype.normalize=function(t){t.schema||(t.url=\"http://\"+t.url),\"mailto:\"!==t.schema||/^mailto:/i.test(t.url)||(t.url=\"mailto:\"+t.url)},g.prototype.onCompile=function(){},t.exports=g},function(t,e,n){t.exports=n(40)},function(t,e,n){},function(t,e,n){\"use strict\";var a=n(11);function o(){}function r(){}r.resetWarningCache=o,t.exports=function(){function t(t,e,n,o,r,i){if(i!==a){var c=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw c.name=\"Invariant Violation\",c}}function e(){return t}var n={array:t.isRequired=t,bigint:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:r,resetWarningCache:o};return n.PropTypes=n}},function(t,e,n){\"use strict\";t.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,o){\"use strict\";t.exports=function(t){var e={};e.src_Any=o(22).source,e.src_Cc=o(23).source,e.src_Z=o(24).source,e.src_P=o(25).source,e.src_ZPCc=[e.src_Z,e.src_P,e.src_Cc].join(\"|\"),e.src_ZCc=[e.src_Z,e.src_Cc].join(\"|\");var n=\"[><|]\";return e.src_pseudo_letter=\"(?:(?![><|]|\"+e.src_ZPCc+\")\"+e.src_Any+\")\",e.src_ip4=\"(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\",e.src_auth=\"(?:(?:(?!\"+e.src_ZCc+\"|[@/\\\\[\\\\]()]).)+@)?\",e.src_port=\"(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?\",e.src_host_terminator=\"(?=$|[><|]|\"+e.src_ZPCc+\")(?!-|_|:\\\\d|\\\\.-|\\\\.(?!$|\"+e.src_ZPCc+\"))\",e.src_path=\"(?:[/?#](?:(?!\"+e.src_ZCc+\"|\"+n+\"|[()[\\\\]{}.,\\\"'?!\\\\-]).|\\\\[(?:(?!\"+e.src_ZCc+\"|\\\\]).)*\\\\]|\\\\((?:(?!\"+e.src_ZCc+\"|[)]).)*\\\\)|\\\\{(?:(?!\"+e.src_ZCc+'|[}]).)*\\\\}|\\\\\"(?:(?!'+e.src_ZCc+'|[\"]).)+\\\\\"|\\\\\\'(?:(?!'+e.src_ZCc+\"|[']).)+\\\\'|\\\\'(?=\"+e.src_pseudo_letter+\"|[-]).|\\\\.{2,4}[a-zA-Z0-9%/]|\\\\.(?!\"+e.src_ZCc+\"|[.]).|\"+(t&&t[\"---\"]?\"\\\\-(?!--(?:[^-]|$))(?:-*)|\":\"\\\\-+|\")+\"\\\\,(?!\"+e.src_ZCc+\").|\\\\!(?!\"+e.src_ZCc+\"|[!]).|\\\\?(?!\"+e.src_ZCc+\"|[?]).)+|\\\\/)?\",e.src_email_name='[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*',e.src_xn=\"xn--[a-z0-9\\\\-]{1,59}\",e.src_domain_root=\"(?:\"+e.src_xn+\"|\"+e.src_pseudo_letter+\"{1,63})\",e.src_domain=\"(?:\"+e.src_xn+\"|(?:\"+e.src_pseudo_letter+\")|(?:\"+e.src_pseudo_letter+\"(?:-|\"+e.src_pseudo_letter+\"){0,61}\"+e.src_pseudo_letter+\"))\",e.src_host=\"(?:(?:(?:(?:\"+e.src_domain+\")\\\\.)*\"+e.src_domain+\"))\",e.tpl_host_fuzzy=\"(?:\"+e.src_ip4+\"|(?:(?:(?:\"+e.src_domain+\")\\\\.)+(?:%TLDS%)))\",e.tpl_host_no_ip_fuzzy=\"(?:(?:(?:\"+e.src_domain+\")\\\\.)+(?:%TLDS%))\",e.src_host_strict=e.src_host+e.src_host_terminator,e.tpl_host_fuzzy_strict=e.tpl_host_fuzzy+e.src_host_terminator,e.src_host_port_strict=e.src_host+e.src_port+e.src_host_terminator,e.tpl_host_port_fuzzy_strict=e.tpl_host_fuzzy+e.src_port+e.src_host_terminator,e.tpl_host_port_no_ip_fuzzy_strict=e.tpl_host_no_ip_fuzzy+e.src_port+e.src_host_terminator,e.tpl_host_fuzzy_test=\"localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:\"+e.src_ZPCc+\"|>|$))\",e.tpl_email_fuzzy='(^|[><|]|\"|\\\\(|'+e.src_ZCc+\")(\"+e.src_email_name+\"@\"+e.tpl_host_fuzzy_strict+\")\",e.tpl_link_fuzzy=\"(^|(?![.:/\\\\-_@])(?:[$+<=>^`||]|\"+e.src_ZPCc+\"))((?![$+<=>^`||])\"+e.tpl_host_port_fuzzy_strict+e.src_path+\")\",e.tpl_link_no_ip_fuzzy=\"(^|(?![.:/\\\\-_@])(?:[$+<=>^`||]|\"+e.src_ZPCc+\"))((?![$+<=>^`||])\"+e.tpl_host_port_no_ip_fuzzy_strict+e.src_path+\")\",e}},function(t,e){t.exports=/[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/},function(t,e){t.exports=/[\\0-\\x1F\\x7F-\\x9F]/},function(t,e){t.exports=/[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/},function(t,e){t.exports=/[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4E\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDF55-\\uDF59]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"Editor\",function(){return ar});var f=n(1),N=n.n(f),o=n(0),y=n.n(o),E=n(3),S=n(4),r=n(2),w=n.n(r);function i(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function c(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),t}var a=c(function t(){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.callBacks=[],this.suggestionCallback=void 0,this.editorFlag=!1,this.suggestionFlag=!1,this.closeAllModals=function(e){n.callBacks.forEach(function(t){t(e)})},this.init=function(t){var e=document.getElementById(t);e&&e.addEventListener(\"click\",function(){n.editorFlag=!0}),document&&(document.addEventListener(\"click\",function(){n.editorFlag?n.editorFlag=!1:(n.closeAllModals(),n.suggestionCallback&&n.suggestionCallback())}),document.addEventListener(\"keydown\",function(t){\"Escape\"===t.key&&n.closeAllModals()}))},this.onEditorClick=function(){n.closeModals(),!n.suggestionFlag&&n.suggestionCallback?n.suggestionCallback():n.suggestionFlag=!1},this.closeModals=function(t){n.closeAllModals(t)},this.registerCallBack=function(t){n.callBacks.push(t)},this.deregisterCallBack=function(e){n.callBacks=n.callBacks.filter(function(t){return t!==e})},this.setSuggestionCallback=function(t){n.suggestionCallback=t},this.removeSuggestionCallback=function(){n.suggestionCallback=void 0},this.onSuggestionClick=function(){n.suggestionFlag=!0}});function l(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function s(t,e,n){return e&&l(t.prototype,e),n&&l(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),t}var u,p=s(function t(){var e=this;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.inputFocused=!1,this.editorMouseDown=!1,this.onEditorMouseDown=function(){e.editorFocused=!0},this.onInputMouseDown=function(){e.inputFocused=!0},this.isEditorBlur=function(t){return\"INPUT\"!==t.target.tagName&&\"LABEL\"!==t.target.tagName&&\"TEXTAREA\"!==t.target.tagName||e.editorFocused?!(\"INPUT\"===t.target.tagName&&\"LABEL\"===t.target.tagName&&\"TEXTAREA\"===t.target.tagName||e.inputFocused)&&!(e.editorFocused=!1):!(e.inputFocused=!1)},this.isEditorFocused=function(){return!e.inputFocused||(e.inputFocused=!1)},this.isToolbarFocused=function(){return!e.editorFocused||(e.editorFocused=!1)},this.isInputFocused=function(){return e.inputFocused}}),d=[],C={onKeyDown:function(e){d.forEach(function(t){t(e)})},registerCallBack:function(t){d.push(t)},deregisterCallBack:function(e){d=d.filter(function(t){return t!==e})}},m=function(){u=!0},g=function(){u=!1},b=function(){return u};function L(t){var e=t.getData()&&t.getData().get(\"text-align\");return e?\"rdw-\".concat(e,\"-aligned-block\"):\"\"}function h(t,e){if(t)for(var n in t)!{}.hasOwnProperty.call(t,n)||e(n,t[n])}function M(t,e){var n=!1;if(t)for(var o in t)if({}.hasOwnProperty.call(t,o)&&e===o){n=!0;break}return n}function j(t){t.stopPropagation()}function v(t){return t[t.options[0]].icon}function D(t,o){if(t&&void 0===o)return t;var r={};return h(t,function(t,e){var n;n=e,\"[object Object]\"===Object.prototype.toString.call(n)?r[t]=D(e,o[t]):r[t]=void 0!==o[t]?o[t]:e}),r}var k=n(6),O=n.n(k),x=n(5);n(9);function I(t){return(I=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function T(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function A(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function z(t,e){return(z=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function _(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=P(o);if(r){var n=P(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===I(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function P(t){return(P=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var R=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&z(t,e)}(i,f[\"Component\"]);var t,e,n,o=_(i);function i(){var r;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return(r=o.call.apply(o,[this].concat(e))).onClick=function(){var t=r.props,e=t.disabled,n=t.onClick,o=t.value;e||n(o)},r}return t=i,(e=[{key:\"render\",value:function(){var t,e=this.props,n=e.children,o=e.className,r=e.activeClassName,i=e.active,c=e.disabled,a=e.title;return N.a.createElement(\"div\",{className:w()(\"rdw-option-wrapper\",o,(T(t={},\"rdw-option-active \".concat(r),i),T(t,\"rdw-option-disabled\",c),t)),onClick:this.onClick,\"aria-selected\":i,title:a},n)}}])&&A(t.prototype,e),n&&A(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),i}();R.propTypes={onClick:y.a.func.isRequired,children:y.a.any,value:y.a.string,className:y.a.string,activeClassName:y.a.string,active:y.a.bool,disabled:y.a.bool,title:y.a.string},R.defaultProps={activeClassName:\"\"};n(12);function U(t){return(U=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function B(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function F(t,e){return(F=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function Y(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=Q(o);if(r){var n=Q(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===U(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function Q(t){return(Q=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var H=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&F(t,e)}(i,f[\"Component\"]);var t,e,n,r=Y(i);function i(){var o;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return(o=r.call.apply(r,[this].concat(e))).state={highlighted:-1},o.onChange=function(t){var e=o.props.onChange;e&&e(t),o.toggleExpansion()},o.setHighlighted=function(t){o.setState({highlighted:t})},o.toggleExpansion=function(){var t=o.props,e=t.doExpand,n=t.doCollapse;t.expanded?n():e()},o}return t=i,(e=[{key:\"componentDidUpdate\",value:function(t){var e=this.props.expanded;t.expanded&&!e&&this.setState({highlighted:-1})}},{key:\"render\",value:function(){var n=this,t=this.props,e=t.expanded,o=t.children,r=t.className,i=t.optionWrapperClassName,c=t.ariaLabel,a=t.onExpandEvent,l=t.title,s=this.state.highlighted,u=o.slice(1,o.length);return N.a.createElement(\"div\",{className:w()(\"rdw-dropdown-wrapper\",r),\"aria-expanded\":e,\"aria-label\":c||\"rdw-dropdown\"},N.a.createElement(\"a\",{className:\"rdw-dropdown-selectedtext\",onClick:a,title:l},o[0],N.a.createElement(\"div\",{className:w()({\"rdw-dropdown-carettoclose\":e,\"rdw-dropdown-carettoopen\":!e})})),e?N.a.createElement(\"ul\",{className:w()(\"rdw-dropdown-optionwrapper\",i),onClick:j},N.a.Children.map(u,function(t,e){return t&&N.a.cloneElement(t,{onSelect:n.onChange,highlighted:s===e,setHighlighted:n.setHighlighted,index:e})})):void 0)}}])&&B(t.prototype,e),n&&B(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),i}();H.propTypes={children:y.a.any,onChange:y.a.func,className:y.a.string,expanded:y.a.bool,doExpand:y.a.func,doCollapse:y.a.func,onExpandEvent:y.a.func,optionWrapperClassName:y.a.string,ariaLabel:y.a.string,title:y.a.string};n(13);function Z(t){return(Z=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function W(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function G(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function J(t,e){return(J=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function V(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=q(o);if(r){var n=q(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===Z(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function q(t){return(q=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var K=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&J(t,e)}(r,f[\"Component\"]);var t,e,n,o=V(r);function r(){var i;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return(i=o.call.apply(o,[this].concat(e))).onClick=function(t){var e=i.props,n=e.onSelect,o=e.onClick,r=e.value;e.disabled||(n&&n(r),o&&(t.stopPropagation(),o(r)))},i.setHighlighted=function(){var t=i.props;(0,t.setHighlighted)(t.index)},i.resetHighlighted=function(){(0,i.props.setHighlighted)(-1)},i}return t=r,(e=[{key:\"render\",value:function(){var t,e=this.props,n=e.children,o=e.active,r=e.disabled,i=e.highlighted,c=e.className,a=e.activeClassName,l=e.disabledClassName,s=e.highlightedClassName,u=e.title;return N.a.createElement(\"li\",{className:w()(\"rdw-dropdownoption-default\",c,(W(t={},\"rdw-dropdownoption-active \".concat(a),o),W(t,\"rdw-dropdownoption-highlighted \".concat(s),i),W(t,\"rdw-dropdownoption-disabled \".concat(l),r),t)),onMouseEnter:this.setHighlighted,onMouseLeave:this.resetHighlighted,onClick:this.onClick,title:u},n)}}])&&G(t.prototype,e),n&&G(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),r}();K.propTypes={children:y.a.any,value:y.a.any,onClick:y.a.func,onSelect:y.a.func,setHighlighted:y.a.func,index:y.a.number,disabled:y.a.bool,active:y.a.bool,highlighted:y.a.bool,className:y.a.string,activeClassName:y.a.string,disabledClassName:y.a.string,highlightedClassName:y.a.string,title:y.a.string},K.defaultProps={activeClassName:\"\",disabledClassName:\"\",highlightedClassName:\"\"};n(14);function X(t){return(X=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function $(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function tt(t,e){return(tt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function et(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=nt(o);if(r){var n=nt(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===X(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function nt(t){return(nt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var ot=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&tt(t,e)}(r,f[\"Component\"]);var t,e,n,o=et(r);function r(){return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,r),o.apply(this,arguments)}return t=r,(e=[{key:\"renderInFlatList\",value:function(){var t=this.props,n=t.config,o=t.currentState,r=t.onChange,i=t.translations;return N.a.createElement(\"div\",{className:w()(\"rdw-inline-wrapper\",n.className),\"aria-label\":\"rdw-inline-control\"},n.options.map(function(t,e){return N.a.createElement(R,{key:e,value:t,onClick:r,className:w()(n[t].className),active:!0===o[t]||\"MONOSPACE\"===t&&o.CODE,title:n[t].title||i[\"components.controls.inline.\".concat(t)]},N.a.createElement(\"img\",{alt:\"\",src:n[t].icon}))}))}},{key:\"renderInDropDown\",value:function(){var t=this.props,n=t.config,e=t.expanded,o=t.doExpand,r=t.onExpandEvent,i=t.doCollapse,c=t.currentState,a=t.onChange,l=t.translations,s=n.className,u=n.dropdownClassName,p=n.title;return N.a.createElement(H,{className:w()(\"rdw-inline-dropdown\",s),optionWrapperClassName:w()(u),onChange:a,expanded:e,doExpand:o,doCollapse:i,onExpandEvent:r,\"aria-label\":\"rdw-inline-control\",title:p},N.a.createElement(\"img\",{src:v(n),alt:\"\"}),n.options.map(function(t,e){return N.a.createElement(K,{key:e,value:t,className:w()(\"rdw-inline-dropdownoption\",n[t].className),active:!0===c[t]||\"MONOSPACE\"===t&&c.CODE,title:n[t].title||l[\"components.controls.inline.\".concat(t)]},N.a.createElement(\"img\",{src:n[t].icon,alt:\"\"}))}))}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&$(t.prototype,e),n&&$(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),r}();function rt(t){return(rt=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function it(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function ct(t,e){return(ct=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function at(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=lt(o);if(r){var n=lt(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===rt(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function lt(t){return(lt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}ot.propTypes={expanded:y.a.bool,doExpand:y.a.func,doCollapse:y.a.func,onExpandEvent:y.a.func,config:y.a.object,onChange:y.a.func,currentState:y.a.object,translations:y.a.object};var st=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&ct(t,e)}(i,f[\"Component\"]);var t,e,n,r=at(i);function i(t){var l;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,i),(l=r.call(this,t)).onExpandEvent=function(){l.signalExpanded=!l.state.expanded},l.expandCollapse=function(){l.setState({expanded:l.signalExpanded}),l.signalExpanded=!1},l.toggleInlineStyle=function(t){var e=\"monospace\"===t?\"CODE\":t.toUpperCase(),n=l.props,o=n.editorState,r=n.onChange,i=E.RichUtils.toggleInlineStyle(o,e);if(\"subscript\"===t||\"superscript\"===t){var c=\"subscript\"===t?\"SUPERSCRIPT\":\"SUBSCRIPT\",a=E.Modifier.removeInlineStyle(i.getCurrentContent(),i.getSelection(),c);i=E.EditorState.push(i,a,\"change-inline-style\")}i&&r(i)},l.changeKeys=function(t){if(t){var n={};return h(t,function(t,e){n[\"CODE\"===t?\"monospace\":t.toLowerCase()]=e}),n}},l.doExpand=function(){l.setState({expanded:!0})},l.doCollapse=function(){l.setState({expanded:!1})};var e=l.props,n=e.editorState,o=e.modalHandler;return l.state={currentStyles:n?l.changeKeys(Object(S.getSelectionInlineStyle)(n)):{}},o.registerCallBack(l.expandCollapse),l}return t=i,(e=[{key:\"componentDidUpdate\",value:function(t){var e=this.props.editorState;e&&e!==t.editorState&&this.setState({currentStyles:this.changeKeys(Object(S.getSelectionInlineStyle)(e))})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var t=this.props,e=t.config,n=t.translations,o=this.state,r=o.expanded,i=o.currentStyles,c=e.component||ot;return N.a.createElement(c,{config:e,translations:n,currentState:i,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onChange:this.toggleInlineStyle})}}])&&it(t.prototype,e),n&&it(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),i}();st.propTypes={onChange:y.a.func.isRequired,editorState:y.a.object.isRequired,modalHandler:y.a.object,config:y.a.object,translations:y.a.object};n(15);function ut(t){return(ut=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function pt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function dt(t,e){return(dt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function ft(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=yt(o);if(r){var n=yt(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===ut(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function yt(t){return(yt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var mt=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&dt(t,e)}(r,f[\"Component\"]);var t,e,n,o=ft(r);function r(t){var e;return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(e=o.call(this,t)).getBlockTypes=function(t){return[{label:\"Normal\",displayName:t[\"components.controls.blocktype.normal\"]},{label:\"H1\",displayName:t[\"components.controls.blocktype.h1\"]},{label:\"H2\",displayName:t[\"components.controls.blocktype.h2\"]},{label:\"H3\",displayName:t[\"components.controls.blocktype.h3\"]},{label:\"H4\",displayName:t[\"components.controls.blocktype.h4\"]},{label:\"H5\",displayName:t[\"components.controls.blocktype.h5\"]},{label:\"H6\",displayName:t[\"components.controls.blocktype.h6\"]},{label:\"Blockquote\",displayName:t[\"components.controls.blocktype.blockquote\"]},{label:\"Code\",displayName:t[\"components.controls.blocktype.code\"]}]},e.state={blockTypes:e.getBlockTypes(t.translations)},e}return t=r,(e=[{key:\"componentDidUpdate\",value:function(t){var e=this.props.translations;e!==t.translations&&this.setState({blockTypes:this.getBlockTypes(e)})}},{key:\"renderFlat\",value:function(t){var e=this.props,n=e.config.className,o=e.onChange,r=e.currentState.blockType;return N.a.createElement(\"div\",{className:w()(\"rdw-inline-wrapper\",n)},t.map(function(t,e){return N.a.createElement(R,{key:e,value:t.label,active:r===t.label,onClick:o},t.displayName)}))}},{key:\"renderInDropdown\",value:function(t){var e=this.props,n=e.config,o=n.className,r=n.dropdownClassName,i=n.title,c=e.currentState.blockType,a=e.expanded,l=e.doExpand,s=e.onExpandEvent,u=e.doCollapse,p=e.onChange,d=e.translations,f=this.state.blockTypes.filter(function(t){return t.label===c}),y=f&&f[0]&&f[0].displayName;return N.a.createElement(\"div\",{className:\"rdw-block-wrapper\",\"aria-label\":\"rdw-block-control\"},N.a.createElement(H,{className:w()(\"rdw-block-dropdown\",o),optionWrapperClassName:w()(r),onChange:p,expanded:a,doExpand:l,doCollapse:u,onExpandEvent:s,title:i||d[\"components.controls.blocktype.blocktype\"]},N.a.createElement(\"span\",null,y||d[\"components.controls.blocktype.blocktype\"]),t.map(function(t,e){return N.a.createElement(K,{active:c===t.label,value:t.label,key:e},t.displayName)})))}},{key:\"render\",value:function(){var n=this.props.config,t=n.inDropdown,e=this.state.blockTypes.filter(function(t){var e=t.label;return-1<n.options.indexOf(e)});return t?this.renderInDropdown(e):this.renderFlat(e)}}])&&pt(t.prototype,e),n&&pt(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),r}();mt.propTypes={expanded:y.a.bool,onExpandEvent:y.a.func,doExpand:y.a.func,doCollapse:y.a.func,onChange:y.a.func,config:y.a.object,currentState:y.a.object,translations:y.a.object};var gt=mt;function bt(t){return(bt=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function ht(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function Mt(t,e){return(Mt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function jt(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=vt(o);if(r){var n=vt(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===bt(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function vt(t){return(vt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var Nt=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&Mt(t,e)}(r,f[\"Component\"]);var t,e,n,o=jt(r);function r(t){var c;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(c=o.call(this,t)).onExpandEvent=function(){c.signalExpanded=!c.state.expanded},c.expandCollapse=function(){c.setState({expanded:c.signalExpanded}),c.signalExpanded=!1},c.blocksTypes=[{label:\"Normal\",style:\"unstyled\"},{label:\"H1\",style:\"header-one\"},{label:\"H2\",style:\"header-two\"},{label:\"H3\",style:\"header-three\"},{label:\"H4\",style:\"header-four\"},{label:\"H5\",style:\"header-five\"},{label:\"H6\",style:\"header-six\"},{label:\"Blockquote\",style:\"blockquote\"},{label:\"Code\",style:\"code\"}],c.doExpand=function(){c.setState({expanded:!0})},c.doCollapse=function(){c.setState({expanded:!1})},c.toggleBlockType=function(e){var t=c.blocksTypes.find(function(t){return t.label===e}).style,n=c.props,o=n.editorState,r=n.onChange,i=E.RichUtils.toggleBlockType(o,t);i&&r(i)};var e=t.editorState,n=t.modalHandler;return c.state={expanded:!1,currentBlockType:e?Object(S.getSelectedBlocksType)(e):\"unstyled\"},n.registerCallBack(c.expandCollapse),c}return t=r,(e=[{key:\"componentDidUpdate\",value:function(t){var e=this.props.editorState;e&&e!==t.editorState&&this.setState({currentBlockType:Object(S.getSelectedBlocksType)(e)})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var t=this.props,e=t.config,n=t.translations,o=this.state,r=o.expanded,i=o.currentBlockType,c=e.component||gt,a=this.blocksTypes.find(function(t){return t.style===i});return N.a.createElement(c,{config:e,translations:n,currentState:{blockType:a&&a.label},onChange:this.toggleBlockType,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&ht(t.prototype,e),n&&ht(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),r}();Nt.propTypes={onChange:y.a.func.isRequired,editorState:y.a.object,modalHandler:y.a.object,config:y.a.object,translations:y.a.object};var Et=Nt;n(16);function St(t){return(St=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function wt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function Ct(t,e){return(Ct=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function Lt(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=Dt(o);if(r){var n=Dt(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===St(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function Dt(t){return(Dt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var kt=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&Ct(t,e)}(i,f[\"Component\"]);var t,e,n,r=Lt(i);function i(){var t;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var e=arguments.length,n=new Array(e),o=0;o<e;o++)n[o]=arguments[o];return(t=r.call.apply(r,[this].concat(n))).state={defaultFontSize:void 0},t}return t=i,(e=[{key:\"componentDidMount\",value:function(){var t=document.getElementsByClassName(\"DraftEditor-root\");if(t&&0<t.length){var e=window.getComputedStyle(t[0]).getPropertyValue(\"font-size\");e=e.substring(0,e.length-2),this.setState({defaultFontSize:e})}}},{key:\"render\",value:function(){var t=this.props,e=t.config,n=e.icon,o=e.className,r=e.dropdownClassName,i=e.options,c=e.title,a=t.onChange,l=t.expanded,s=t.doCollapse,u=t.onExpandEvent,p=t.doExpand,d=t.translations,f=this.props.currentState.fontSize,y=this.state.defaultFontSize;return y=Number(y),f=f||i&&0<=i.indexOf(y)&&y,N.a.createElement(\"div\",{className:\"rdw-fontsize-wrapper\",\"aria-label\":\"rdw-font-size-control\"},N.a.createElement(H,{className:w()(\"rdw-fontsize-dropdown\",o),optionWrapperClassName:w()(r),onChange:a,expanded:l,doExpand:p,doCollapse:s,onExpandEvent:u,title:c||d[\"components.controls.fontsize.fontsize\"]},f?N.a.createElement(\"span\",null,f):N.a.createElement(\"img\",{src:n,alt:\"\"}),i.map(function(t,e){return N.a.createElement(K,{className:\"rdw-fontsize-option\",active:f===t,value:t,key:e},t)})))}}])&&wt(t.prototype,e),n&&wt(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),i}();function Ot(t){return(Ot=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function xt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function It(t,e){return(It=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function Tt(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=At(o);if(r){var n=At(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===Ot(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function At(t){return(At=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}kt.propTypes={expanded:y.a.bool,onExpandEvent:y.a.func,doExpand:y.a.func,doCollapse:y.a.func,onChange:y.a.func,config:y.a.object,currentState:y.a.object,translations:y.a.object};var zt=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&It(t,e)}(r,f[\"Component\"]);var t,e,n,o=Tt(r);function r(t){var i;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(i=o.call(this,t)).onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})},i.toggleFontSize=function(t){var e=i.props,n=e.editorState,o=e.onChange,r=Object(S.toggleCustomInlineStyle)(n,\"fontSize\",t);r&&o(r)};var e=t.editorState,n=t.modalHandler;return i.state={expanded:void 0,currentFontSize:e?Object(S.getSelectionCustomInlineStyle)(e,[\"FONTSIZE\"]).FONTSIZE:void 0},n.registerCallBack(i.expandCollapse),i}return t=r,(e=[{key:\"componentDidUpdate\",value:function(t){var e=this.props.editorState;e&&e!==t.editorState&&this.setState({currentFontSize:Object(S.getSelectionCustomInlineStyle)(e,[\"FONTSIZE\"]).FONTSIZE})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var t=this.props,e=t.config,n=t.translations,o=this.state,r=o.expanded,i=o.currentFontSize,c=e.component||kt,a=i&&Number(i.substring(9));return N.a.createElement(c,{config:e,translations:n,currentState:{fontSize:a},onChange:this.toggleFontSize,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&xt(t.prototype,e),n&&xt(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),r}();zt.propTypes={onChange:y.a.func.isRequired,editorState:y.a.object,modalHandler:y.a.object,config:y.a.object,translations:y.a.object};n(17);function _t(t){return(_t=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function Pt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function Rt(t,e){return(Rt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function Ut(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=Bt(o);if(r){var n=Bt(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===_t(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function Bt(t){return(Bt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var Ft=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&Rt(t,e)}(i,f[\"Component\"]);var t,e,n,r=Ut(i);function i(){var t;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var e=arguments.length,n=new Array(e),o=0;o<e;o++)n[o]=arguments[o];return(t=r.call.apply(r,[this].concat(n))).state={defaultFontFamily:void 0},t}return t=i,(e=[{key:\"componentDidMount\",value:function(){var t=document.getElementsByClassName(\"DraftEditor-root\");if(t&&0<t.length){var e=window.getComputedStyle(t[0]).getPropertyValue(\"font-family\");this.setState({defaultFontFamily:e})}}},{key:\"render\",value:function(){var e=this.state.defaultFontFamily,t=this.props,n=t.config,o=n.className,r=n.dropdownClassName,i=n.options,c=n.title,a=t.translations,l=t.onChange,s=t.expanded,u=t.doCollapse,p=t.onExpandEvent,d=t.doExpand,f=this.props.currentState.fontFamily;return f=f||i&&e&&i.some(function(t){return t.toLowerCase()===e.toLowerCase()})&&e,N.a.createElement(\"div\",{className:\"rdw-fontfamily-wrapper\",\"aria-label\":\"rdw-font-family-control\"},N.a.createElement(H,{className:w()(\"rdw-fontfamily-dropdown\",o),optionWrapperClassName:w()(\"rdw-fontfamily-optionwrapper\",r),onChange:l,expanded:s,doExpand:d,doCollapse:u,onExpandEvent:p,title:c||a[\"components.controls.fontfamily.fontfamily\"]},N.a.createElement(\"span\",{className:\"rdw-fontfamily-placeholder\"},f||a[\"components.controls.fontfamily.fontfamily\"]),i.map(function(t,e){return N.a.createElement(K,{active:f===t,value:t,key:e},t)})))}}])&&Pt(t.prototype,e),n&&Pt(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),i}();Ft.propTypes={expanded:y.a.bool,onExpandEvent:y.a.func,doExpand:y.a.func,doCollapse:y.a.func,onChange:y.a.func,config:y.a.object,currentState:y.a.object,translations:y.a.object};var Yt=Ft;function Qt(t){return(Qt=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function Ht(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function Zt(t,e){return(Zt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function Wt(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=Gt(o);if(r){var n=Gt(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===Qt(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function Gt(t){return(Gt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var Jt=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&Zt(t,e)}(r,f[\"Component\"]);var t,e,n,o=Wt(r);function r(t){var i;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(i=o.call(this,t)).onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})},i.toggleFontFamily=function(t){var e=i.props,n=e.editorState,o=e.onChange,r=Object(S.toggleCustomInlineStyle)(n,\"fontFamily\",t);r&&o(r)};var e=t.editorState,n=t.modalHandler;return i.state={expanded:void 0,currentFontFamily:e?Object(S.getSelectionCustomInlineStyle)(e,[\"FONTFAMILY\"]).FONTFAMILY:void 0},n.registerCallBack(i.expandCollapse),i}return t=r,(e=[{key:\"componentDidUpdate\",value:function(t){var e=this.props.editorState;e&&e!==t.editorState&&this.setState({currentFontFamily:Object(S.getSelectionCustomInlineStyle)(e,[\"FONTFAMILY\"]).FONTFAMILY})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var t=this.props,e=t.config,n=t.translations,o=this.state,r=o.expanded,i=o.currentFontFamily,c=e.component||Yt,a=i&&i.substring(11);return N.a.createElement(c,{translations:n,config:e,currentState:{fontFamily:a},onChange:this.toggleFontFamily,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&Ht(t.prototype,e),n&&Ht(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),r}();Jt.propTypes={onChange:y.a.func.isRequired,editorState:y.a.object,modalHandler:y.a.object,config:y.a.object,translations:y.a.object};n(18);function Vt(t){return(Vt=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function qt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function Kt(t,e){return(Kt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function Xt(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=$t(o);if(r){var n=$t(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===Vt(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function $t(t){return($t=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var te=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&Kt(t,e)}(i,f[\"Component\"]);var t,e,n,r=Xt(i);function i(){var e;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(e=r.call.apply(r,[this].concat(n))).options=[\"unordered\",\"ordered\",\"indent\",\"outdent\"],e.toggleBlockType=function(t){(0,e.props.onChange)(t)},e.indent=function(){(0,e.props.onChange)(\"indent\")},e.outdent=function(){(0,e.props.onChange)(\"outdent\")},e}return t=i,(e=[{key:\"renderInFlatList\",value:function(){var t=this.props,e=t.config,n=t.currentState.listType,o=t.translations,r=t.indentDisabled,i=t.outdentDisabled,c=e.options,a=e.unordered,l=e.ordered,s=e.indent,u=e.outdent,p=e.className;return N.a.createElement(\"div\",{className:w()(\"rdw-list-wrapper\",p),\"aria-label\":\"rdw-list-control\"},0<=c.indexOf(\"unordered\")&&N.a.createElement(R,{value:\"unordered\",onClick:this.toggleBlockType,className:w()(a.className),active:\"unordered\"===n,title:a.title||o[\"components.controls.list.unordered\"]},N.a.createElement(\"img\",{src:a.icon,alt:\"\"})),0<=c.indexOf(\"ordered\")&&N.a.createElement(R,{value:\"ordered\",onClick:this.toggleBlockType,className:w()(l.className),active:\"ordered\"===n,title:l.title||o[\"components.controls.list.ordered\"]},N.a.createElement(\"img\",{src:l.icon,alt:\"\"})),0<=c.indexOf(\"indent\")&&N.a.createElement(R,{onClick:this.indent,disabled:r,className:w()(s.className),title:s.title||o[\"components.controls.list.indent\"]},N.a.createElement(\"img\",{src:s.icon,alt:\"\"})),0<=c.indexOf(\"outdent\")&&N.a.createElement(R,{onClick:this.outdent,disabled:i,className:w()(u.className),title:u.title||o[\"components.controls.list.outdent\"]},N.a.createElement(\"img\",{src:u.icon,alt:\"\"})))}},{key:\"renderInDropDown\",value:function(){var n=this,t=this.props,o=t.config,e=t.expanded,r=t.doCollapse,i=t.doExpand,c=t.onExpandEvent,a=t.onChange,l=t.currentState.listType,s=t.translations,u=o.options,p=o.className,d=o.dropdownClassName,f=o.title;return N.a.createElement(H,{className:w()(\"rdw-list-dropdown\",p),optionWrapperClassName:w()(d),onChange:a,expanded:e,doExpand:i,doCollapse:r,onExpandEvent:c,\"aria-label\":\"rdw-list-control\",title:f||s[\"components.controls.list.list\"]},N.a.createElement(\"img\",{src:v(o),alt:\"\"}),this.options.filter(function(t){return 0<=u.indexOf(t)}).map(function(t,e){return N.a.createElement(K,{key:e,value:t,disabled:n.props[\"\".concat(t,\"Disabled\")],className:w()(\"rdw-list-dropdownOption\",o[t].className),active:l===t,title:o[t].title||s[\"components.controls.list.\".concat(t)]},N.a.createElement(\"img\",{src:o[t].icon,alt:\"\"}))}))}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&qt(t.prototype,e),n&&qt(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),i}();function ee(t){return(ee=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function ne(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function oe(t,e){return(oe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function re(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=ie(o);if(r){var n=ie(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===ee(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function ie(t){return(ie=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}te.propTypes={expanded:y.a.bool,doExpand:y.a.func,doCollapse:y.a.func,onExpandEvent:y.a.func,config:y.a.object,onChange:y.a.func,currentState:y.a.object,translations:y.a.object,indentDisabled:y.a.bool,outdentDisabled:y.a.bool};var ce=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&oe(t,e)}(c,f[\"Component\"]);var t,e,n,r=re(c);function c(t){var i;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,c),(i=r.call(this,t)).onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.onChange=function(t){\"unordered\"===t?i.toggleBlockType(\"unordered-list-item\"):\"ordered\"===t?i.toggleBlockType(\"ordered-list-item\"):\"indent\"===t?i.adjustDepth(1):i.adjustDepth(-1)},i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})},i.toggleBlockType=function(t){var e=i.props,n=e.onChange,o=e.editorState,r=E.RichUtils.toggleBlockType(o,t);r&&n(r)},i.adjustDepth=function(t){var e=i.props,n=e.onChange,o=e.editorState,r=Object(S.changeDepth)(o,t,4);r&&n(r)},i.isIndentDisabled=function(){var t=i.props.editorState,e=i.state.currentBlock,n=Object(S.getBlockBeforeSelectedBlock)(t);return!n||!Object(S.isListBlock)(e)||n.get(\"type\")!==e.get(\"type\")||n.get(\"depth\")<e.get(\"depth\")},i.isOutdentDisabled=function(){var t=i.state.currentBlock;return!t||!Object(S.isListBlock)(t)||t.get(\"depth\")<=0};var e=i.props,n=e.editorState,o=e.modalHandler;return i.state={expanded:!1,currentBlock:n?Object(S.getSelectedBlock)(n):void 0},o.registerCallBack(i.expandCollapse),i}return t=c,(e=[{key:\"componentDidUpdate\",value:function(t){var e=this.props.editorState;e&&e!==t.editorState&&this.setState({currentBlock:Object(S.getSelectedBlock)(e)})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var t,e=this.props,n=e.config,o=e.translations,r=this.state,i=r.expanded,c=r.currentBlock,a=n.component||te;\"unordered-list-item\"===c.get(\"type\")?t=\"unordered\":\"ordered-list-item\"===c.get(\"type\")&&(t=\"ordered\");var l=this.isIndentDisabled(),s=this.isOutdentDisabled();return N.a.createElement(a,{config:n,translations:o,currentState:{listType:t},expanded:i,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onChange:this.onChange,indentDisabled:l,outdentDisabled:s})}}])&&ne(t.prototype,e),n&&ne(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),c}();ce.propTypes={onChange:y.a.func.isRequired,editorState:y.a.object.isRequired,modalHandler:y.a.object,config:y.a.object,translations:y.a.object};n(19);function ae(t){return(ae=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function le(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function se(t,e){return(se=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function ue(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=pe(o);if(r){var n=pe(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===ae(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function pe(t){return(pe=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var de=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&se(t,e)}(r,f[\"Component\"]);var t,e,n,o=ue(r);function r(){return function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,r),o.apply(this,arguments)}return t=r,(e=[{key:\"renderInFlatList\",value:function(){var t=this.props,e=t.config,n=e.options,o=e.left,r=e.center,i=e.right,c=e.justify,a=e.className,l=t.onChange,s=t.currentState.textAlignment,u=t.translations;return N.a.createElement(\"div\",{className:w()(\"rdw-text-align-wrapper\",a),\"aria-label\":\"rdw-textalign-control\"},0<=n.indexOf(\"left\")&&N.a.createElement(R,{value:\"left\",className:w()(o.className),active:\"left\"===s,onClick:l,title:o.title||u[\"components.controls.textalign.left\"]},N.a.createElement(\"img\",{src:o.icon,alt:\"\"})),0<=n.indexOf(\"center\")&&N.a.createElement(R,{value:\"center\",className:w()(r.className),active:\"center\"===s,onClick:l,title:r.title||u[\"components.controls.textalign.center\"]},N.a.createElement(\"img\",{src:r.icon,alt:\"\"})),0<=n.indexOf(\"right\")&&N.a.createElement(R,{value:\"right\",className:w()(i.className),active:\"right\"===s,onClick:l,title:i.title||u[\"components.controls.textalign.right\"]},N.a.createElement(\"img\",{src:i.icon,alt:\"\"})),0<=n.indexOf(\"justify\")&&N.a.createElement(R,{value:\"justify\",className:w()(c.className),active:\"justify\"===s,onClick:l,title:c.title||u[\"components.controls.textalign.justify\"]},N.a.createElement(\"img\",{src:c.icon,alt:\"\"})))}},{key:\"renderInDropDown\",value:function(){var t=this.props,e=t.config,n=t.expanded,o=t.doExpand,r=t.onExpandEvent,i=t.doCollapse,c=t.currentState.textAlignment,a=t.onChange,l=t.translations,s=e.options,u=e.left,p=e.center,d=e.right,f=e.justify,y=e.className,m=e.dropdownClassName,g=e.title;return N.a.createElement(H,{className:w()(\"rdw-text-align-dropdown\",y),optionWrapperClassName:w()(m),onChange:a,expanded:n,doExpand:o,doCollapse:i,onExpandEvent:r,\"aria-label\":\"rdw-textalign-control\",title:g||l[\"components.controls.textalign.textalign\"]},N.a.createElement(\"img\",{src:c&&e[c]&&e[c].icon||v(e),alt:\"\"}),0<=s.indexOf(\"left\")&&N.a.createElement(K,{value:\"left\",active:\"left\"===c,className:w()(\"rdw-text-align-dropdownOption\",u.className),title:u.title||l[\"components.controls.textalign.left\"]},N.a.createElement(\"img\",{src:u.icon,alt:\"\"})),0<=s.indexOf(\"center\")&&N.a.createElement(K,{value:\"center\",active:\"center\"===c,className:w()(\"rdw-text-align-dropdownOption\",p.className),title:p.title||l[\"components.controls.textalign.center\"]},N.a.createElement(\"img\",{src:p.icon,alt:\"\"})),0<=s.indexOf(\"right\")&&N.a.createElement(K,{value:\"right\",active:\"right\"===c,className:w()(\"rdw-text-align-dropdownOption\",d.className),title:d.title||l[\"components.controls.textalign.right\"]},N.a.createElement(\"img\",{src:d.icon,alt:\"\"})),0<=s.indexOf(\"justify\")&&N.a.createElement(K,{value:\"justify\",active:\"justify\"===c,className:w()(\"rdw-text-align-dropdownOption\",f.className),title:f.title||l[\"components.controls.textalign.justify\"]},N.a.createElement(\"img\",{src:f.icon,alt:\"\"})))}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&le(t.prototype,e),n&&le(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),r}();function fe(t){return(fe=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function ye(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function me(t,e){return(me=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function ge(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=be(o);if(r){var n=be(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===fe(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function be(t){return(be=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}de.propTypes={expanded:y.a.bool,doExpand:y.a.func,doCollapse:y.a.func,onExpandEvent:y.a.func,config:y.a.object,onChange:y.a.func,currentState:y.a.object,translations:y.a.object};var he=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&me(t,e)}(i,f[\"Component\"]);var t,e,n,o=ge(i);function i(t){var r;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,i),(r=o.call(this,t)).onExpandEvent=function(){r.signalExpanded=!r.state.expanded},r.expandCollapse=function(){r.setState({expanded:r.signalExpanded}),r.signalExpanded=!1},r.doExpand=function(){r.setState({expanded:!0})},r.doCollapse=function(){r.setState({expanded:!1})},r.addBlockAlignmentData=function(t){var e=r.props,n=e.editorState,o=e.onChange;o(r.state.currentTextAlignment!==t?Object(S.setBlockData)(n,{\"text-align\":t}):Object(S.setBlockData)(n,{\"text-align\":void 0}))};var e=r.props.modalHandler;return r.state={currentTextAlignment:void 0},e.registerCallBack(r.expandCollapse),r}return t=i,(e=[{key:\"componentDidUpdate\",value:function(t){var e=this.props.editorState;e!==t.editorState&&this.setState({currentTextAlignment:Object(S.getSelectedBlocksMetadata)(e).get(\"text-align\")})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var t=this.props,e=t.config,n=t.translations,o=this.state,r=o.expanded,i=o.currentTextAlignment,c=e.component||de;return N.a.createElement(c,{config:e,translations:n,expanded:r,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,currentState:{textAlignment:i},onChange:this.addBlockAlignmentData})}}])&&ye(t.prototype,e),n&&ye(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),i}();he.propTypes={editorState:y.a.object.isRequired,onChange:y.a.func.isRequired,modalHandler:y.a.object,config:y.a.object,translations:y.a.object};n(20);function Me(t){return(Me=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function je(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function ve(t,e){return(ve=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function Ne(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=Ee(o);if(r){var n=Ee(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===Me(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function Ee(t){return(Ee=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var Se=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&ve(t,e)}(r,f[\"Component\"]);var t,e,n,o=Ne(r);function r(){var u;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return(u=o.call.apply(o,[this].concat(e))).state={currentStyle:\"color\"},u.onChange=function(t){(0,u.props.onChange)(u.state.currentStyle,t)},u.setCurrentStyleColor=function(){u.setState({currentStyle:\"color\"})},u.setCurrentStyleBgcolor=function(){u.setState({currentStyle:\"bgcolor\"})},u.renderModal=function(){var t=u.props,e=t.config,n=e.popupClassName,o=e.colors,r=t.currentState,i=r.color,c=r.bgColor,a=t.translations,l=u.state.currentStyle,s=\"color\"===l?i:c;return N.a.createElement(\"div\",{className:w()(\"rdw-colorpicker-modal\",n),onClick:j},N.a.createElement(\"span\",{className:\"rdw-colorpicker-modal-header\"},N.a.createElement(\"span\",{className:w()(\"rdw-colorpicker-modal-style-label\",{\"rdw-colorpicker-modal-style-label-active\":\"color\"===l}),onClick:u.setCurrentStyleColor},a[\"components.controls.colorpicker.text\"]),N.a.createElement(\"span\",{className:w()(\"rdw-colorpicker-modal-style-label\",{\"rdw-colorpicker-modal-style-label-active\":\"bgcolor\"===l}),onClick:u.setCurrentStyleBgcolor},a[\"components.controls.colorpicker.background\"])),N.a.createElement(\"span\",{className:\"rdw-colorpicker-modal-options\"},o.map(function(t,e){return N.a.createElement(R,{value:t,key:e,className:\"rdw-colorpicker-option\",activeClassName:\"rdw-colorpicker-option-active\",active:s===t,onClick:u.onChange},N.a.createElement(\"span\",{style:{backgroundColor:t},className:\"rdw-colorpicker-cube\"}))})))},u}return t=r,(e=[{key:\"componentDidUpdate\",value:function(t){this.props.expanded&&!t.expanded&&this.setState({currentStyle:\"color\"})}},{key:\"render\",value:function(){var t=this.props,e=t.config,n=e.icon,o=e.className,r=e.title,i=t.expanded,c=t.onExpandEvent,a=t.translations;return N.a.createElement(\"div\",{className:\"rdw-colorpicker-wrapper\",\"aria-haspopup\":\"true\",\"aria-expanded\":i,\"aria-label\":\"rdw-color-picker\",title:r||a[\"components.controls.colorpicker.colorpicker\"]},N.a.createElement(R,{onClick:c,className:w()(o)},N.a.createElement(\"img\",{src:n,alt:\"\"})),i?this.renderModal():void 0)}}])&&je(t.prototype,e),n&&je(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),r}();Se.propTypes={expanded:y.a.bool,onExpandEvent:y.a.func,onChange:y.a.func,config:y.a.object,currentState:y.a.object,translations:y.a.object};var we=Se;function Ce(t){return(Ce=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function Le(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function De(t,e){return(De=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function ke(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=Oe(o);if(r){var n=Oe(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===Ce(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function Oe(t){return(Oe=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var xe=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&De(t,e)}(i,f[\"Component\"]);var t,e,n,r=ke(i);function i(t){var c;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,i),(c=r.call(this,t)).state={expanded:!1,currentColor:void 0,currentBgColor:void 0},c.onExpandEvent=function(){c.signalExpanded=!c.state.expanded},c.expandCollapse=function(){c.setState({expanded:c.signalExpanded}),c.signalExpanded=!1},c.doExpand=function(){c.setState({expanded:!0})},c.doCollapse=function(){c.setState({expanded:!1})},c.toggleColor=function(t,e){var n=c.props,o=n.editorState,r=n.onChange,i=Object(S.toggleCustomInlineStyle)(o,t,e);i&&r(i),c.doCollapse()};var e=t.editorState,n=t.modalHandler,o={expanded:!1,currentColor:void 0,currentBgColor:void 0};return e&&(o.currentColor=Object(S.getSelectionCustomInlineStyle)(e,[\"COLOR\"]).COLOR,o.currentBgColor=Object(S.getSelectionCustomInlineStyle)(e,[\"BGCOLOR\"]).BGCOLOR),c.state=o,n.registerCallBack(c.expandCollapse),c}return t=i,(e=[{key:\"componentDidUpdate\",value:function(t){var e=this.props.editorState;e&&e!==t.editorState&&this.setState({currentColor:Object(S.getSelectionCustomInlineStyle)(e,[\"COLOR\"]).COLOR,currentBgColor:Object(S.getSelectionCustomInlineStyle)(e,[\"BGCOLOR\"]).BGCOLOR})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var t=this.props,e=t.config,n=t.translations,o=this.state,r=o.currentColor,i=o.currentBgColor,c=o.expanded,a=e.component||we,l=r&&r.substring(6),s=i&&i.substring(8);return N.a.createElement(a,{config:e,translations:n,onChange:this.toggleColor,expanded:c,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,currentState:{color:l,bgColor:s}})}}])&&Le(t.prototype,e),n&&Le(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),i}();xe.propTypes={onChange:y.a.func.isRequired,editorState:y.a.object.isRequired,modalHandler:y.a.object,config:y.a.object,translations:y.a.object};var Ie=xe,Te=n(7),Ae=n.n(Te);n(26);function ze(t){return(ze=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function _e(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function Pe(t,e){return(Pe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function Re(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=Ue(o);if(r){var n=Ue(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===ze(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function Ue(t){return(Ue=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var Be=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&Pe(t,e)}(r,f[\"Component\"]);var t,e,n,o=Re(r);function r(){var c;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return(c=o.call.apply(o,[this].concat(e))).state={showModal:!1,linkTarget:\"\",linkTitle:\"\",linkTargetOption:c.props.config.defaultTargetOption},c.removeLink=function(){(0,c.props.onChange)(\"unlink\")},c.addLink=function(){var t=c.props.onChange,e=c.state;t(\"link\",e.linkTitle,e.linkTarget,e.linkTargetOption)},c.updateValue=function(t){var e,n,o;c.setState((e={},n=\"\".concat(t.target.name),o=t.target.value,n in e?Object.defineProperty(e,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[n]=o,e))},c.updateTargetOption=function(t){c.setState({linkTargetOption:t.target.checked?\"_blank\":\"_self\"})},c.hideModal=function(){c.setState({showModal:!1})},c.signalExpandShowModal=function(){var t=c.props,e=t.onExpandEvent,n=t.currentState,o=n.link,r=n.selectionText,i=c.state.linkTargetOption;e(),c.setState({showModal:!0,linkTarget:o&&o.target||\"\",linkTargetOption:o&&o.targetOption||i,linkTitle:o&&o.title||r})},c.forceExpandAndShowModal=function(){var t=c.props,e=t.doExpand,n=t.currentState,o=n.link,r=n.selectionText,i=c.state.linkTargetOption;e(),c.setState({showModal:!0,linkTarget:o&&o.target,linkTargetOption:o&&o.targetOption||i,linkTitle:o&&o.title||r})},c}return t=r,(e=[{key:\"componentDidUpdate\",value:function(t){t.expanded&&!this.props.expanded&&this.setState({showModal:!1,linkTarget:\"\",linkTitle:\"\",linkTargetOption:this.props.config.defaultTargetOption})}},{key:\"renderAddLinkModal\",value:function(){var t=this.props,e=t.config.popupClassName,n=t.doCollapse,o=t.translations,r=this.state,i=r.linkTitle,c=r.linkTarget,a=r.linkTargetOption;return N.a.createElement(\"div\",{className:w()(\"rdw-link-modal\",e),onClick:j},N.a.createElement(\"label\",{className:\"rdw-link-modal-label\",htmlFor:\"linkTitle\"},o[\"components.controls.link.linkTitle\"]),N.a.createElement(\"input\",{id:\"linkTitle\",className:\"rdw-link-modal-input\",onChange:this.updateValue,onBlur:this.updateValue,name:\"linkTitle\",value:i}),N.a.createElement(\"label\",{className:\"rdw-link-modal-label\",htmlFor:\"linkTarget\"},o[\"components.controls.link.linkTarget\"]),N.a.createElement(\"input\",{id:\"linkTarget\",className:\"rdw-link-modal-input\",onChange:this.updateValue,onBlur:this.updateValue,name:\"linkTarget\",value:c}),N.a.createElement(\"label\",{className:\"rdw-link-modal-target-option\",htmlFor:\"openLinkInNewWindow\"},N.a.createElement(\"input\",{id:\"openLinkInNewWindow\",type:\"checkbox\",defaultChecked:\"_blank\"===a,value:\"_blank\",onChange:this.updateTargetOption}),N.a.createElement(\"span\",null,o[\"components.controls.link.linkTargetOption\"])),N.a.createElement(\"span\",{className:\"rdw-link-modal-buttonsection\"},N.a.createElement(\"button\",{className:\"rdw-link-modal-btn\",onClick:this.addLink,disabled:!c||!i},o[\"generic.add\"]),N.a.createElement(\"button\",{className:\"rdw-link-modal-btn\",onClick:n},o[\"generic.cancel\"])))}},{key:\"renderInFlatList\",value:function(){var t=this.props,e=t.config,n=e.options,o=e.link,r=e.unlink,i=e.className,c=t.currentState,a=t.expanded,l=t.translations,s=this.state.showModal;return N.a.createElement(\"div\",{className:w()(\"rdw-link-wrapper\",i),\"aria-label\":\"rdw-link-control\"},0<=n.indexOf(\"link\")&&N.a.createElement(R,{value:\"unordered-list-item\",className:w()(o.className),onClick:this.signalExpandShowModal,\"aria-haspopup\":\"true\",\"aria-expanded\":s,title:o.title||l[\"components.controls.link.link\"]},N.a.createElement(\"img\",{src:o.icon,alt:\"\"})),0<=n.indexOf(\"unlink\")&&N.a.createElement(R,{disabled:!c.link,value:\"ordered-list-item\",className:w()(r.className),onClick:this.removeLink,title:r.title||l[\"components.controls.link.unlink\"]},N.a.createElement(\"img\",{src:r.icon,alt:\"\"})),a&&s?this.renderAddLinkModal():void 0)}},{key:\"renderInDropDown\",value:function(){var t=this.props,e=t.expanded,n=t.onExpandEvent,o=t.doCollapse,r=t.doExpand,i=t.onChange,c=t.config,a=t.currentState,l=t.translations,s=c.options,u=c.link,p=c.unlink,d=c.className,f=c.dropdownClassName,y=c.title,m=this.state.showModal;return N.a.createElement(\"div\",{className:\"rdw-link-wrapper\",\"aria-haspopup\":\"true\",\"aria-label\":\"rdw-link-control\",\"aria-expanded\":e,title:y},N.a.createElement(H,{className:w()(\"rdw-link-dropdown\",d),optionWrapperClassName:w()(f),onChange:i,expanded:e&&!m,doExpand:r,doCollapse:o,onExpandEvent:n},N.a.createElement(\"img\",{src:v(c),alt:\"\"}),0<=s.indexOf(\"link\")&&N.a.createElement(K,{onClick:this.forceExpandAndShowModal,className:w()(\"rdw-link-dropdownoption\",u.className),title:u.title||l[\"components.controls.link.link\"]},N.a.createElement(\"img\",{src:u.icon,alt:\"\"})),0<=s.indexOf(\"unlink\")&&N.a.createElement(K,{onClick:this.removeLink,disabled:!a.link,className:w()(\"rdw-link-dropdownoption\",p.className),title:p.title||l[\"components.controls.link.unlink\"]},N.a.createElement(\"img\",{src:p.icon,alt:\"\"}))),e&&m?this.renderAddLinkModal():void 0)}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&_e(t.prototype,e),n&&_e(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),r}();Be.propTypes={expanded:y.a.bool,doExpand:y.a.func,doCollapse:y.a.func,onExpandEvent:y.a.func,config:y.a.object,onChange:y.a.func,currentState:y.a.object,translations:y.a.object};var Fe=Be;function Ye(t){return(Ye=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function Qe(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function He(t,e){return(He=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function Ze(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=We(o);if(r){var n=We(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===Ye(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function We(t){return(We=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function Ge(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,o)}return n}function Je(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ge(Object(n),!0).forEach(function(t){Ve(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ge(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Ve(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function qe(t){var e=Ke.match(t.target);return Je(Je({},t),{},{target:e&&e[0]&&e[0].url||t.target})}var Ke=Ae()(),Xe=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&He(t,e)}(i,f[\"Component\"]);var t,e,n,r=Ze(i);function i(t){var d;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,i),(d=r.call(this,t)).onExpandEvent=function(){d.signalExpanded=!d.state.expanded},d.onChange=function(t,e,n,o){var r=d.props.config.linkCallback;if(\"link\"===t){var i=(r||qe)({title:e,target:n,targetOption:o});d.addLink(i.title,i.target,i.targetOption)}else d.removeLink()},d.getCurrentValues=function(){var t=d.props.editorState,e=d.state.currentEntity,n=t.getCurrentContent(),o={};if(e&&\"LINK\"===n.getEntity(e).get(\"type\")){o.link={};var r=e&&Object(S.getEntityRange)(t,e);o.link.target=e&&n.getEntity(e).get(\"data\").url,o.link.targetOption=e&&n.getEntity(e).get(\"data\").targetOption,o.link.title=r&&r.text}return o.selectionText=Object(S.getSelectionText)(t),o},d.doExpand=function(){d.setState({expanded:!0})},d.expandCollapse=function(){d.setState({expanded:d.signalExpanded}),d.signalExpanded=!1},d.doCollapse=function(){d.setState({expanded:!1})},d.removeLink=function(){var t=d.props,e=t.editorState,n=t.onChange,o=d.state.currentEntity,r=e.getSelection();if(o){var i=Object(S.getEntityRange)(e,o);r=r.getIsBackward()?r.merge({anchorOffset:i.end,focusOffset:i.start}):r.merge({anchorOffset:i.start,focusOffset:i.end}),n(E.RichUtils.toggleLink(e,r,null))}},d.addLink=function(t,e,n){var o=d.props,r=o.editorState,i=o.onChange,c=d.state.currentEntity,a=r.getSelection();if(c){var l=Object(S.getEntityRange)(r,c);a=a.getIsBackward()?a.merge({anchorOffset:l.end,focusOffset:l.start}):a.merge({anchorOffset:l.start,focusOffset:l.end})}var s=r.getCurrentContent().createEntity(\"LINK\",\"MUTABLE\",{url:e,targetOption:n}).getLastCreatedEntityKey(),u=E.Modifier.replaceText(r.getCurrentContent(),a,\"\".concat(t),r.getCurrentInlineStyle(),s),p=E.EditorState.push(r,u,\"insert-characters\");a=p.getSelection().merge({anchorOffset:a.get(\"anchorOffset\")+t.length,focusOffset:a.get(\"anchorOffset\")+t.length}),p=E.EditorState.acceptSelection(p,a),u=E.Modifier.insertText(p.getCurrentContent(),a,\" \",p.getCurrentInlineStyle(),void 0),i(E.EditorState.push(p,u,\"insert-characters\")),d.doCollapse()};var e=d.props,n=e.editorState,o=e.modalHandler;return d.state={expanded:!1,link:void 0,selectionText:void 0,currentEntity:n?Object(S.getSelectionEntity)(n):void 0},o.registerCallBack(d.expandCollapse),d}return t=i,(e=[{key:\"componentDidUpdate\",value:function(t){var e=this.props.editorState;e&&e!==t.editorState&&this.setState({currentEntity:Object(S.getSelectionEntity)(e)})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var t=this.props,e=t.config,n=t.translations,o=this.state.expanded,r=this.getCurrentValues(),i=r.link,c=r.selectionText,a=e.component||Fe;return N.a.createElement(a,{config:e,translations:n,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,currentState:{link:i,selectionText:c},onChange:this.onChange})}}])&&Qe(t.prototype,e),n&&Qe(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),i}();Xe.propTypes={editorState:y.a.object.isRequired,onChange:y.a.func.isRequired,modalHandler:y.a.object,config:y.a.object,translations:y.a.object};var $e=Xe;n(27);function tn(t){return(tn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function en(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function nn(t,e){return(nn=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function on(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=rn(o);if(r){var n=rn(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===tn(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function rn(t){return(rn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var cn=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&nn(t,e)}(i,f[\"Component\"]);var t,e,n,o=on(i);function i(){var r;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return(r=o.call.apply(o,[this].concat(e))).state={embeddedLink:\"\",height:r.props.config.defaultSize.height,width:r.props.config.defaultSize.width},r.onChange=function(){var t=r.props.onChange,e=r.state;t(e.embeddedLink,e.height,e.width)},r.updateValue=function(t){var e,n,o;r.setState((e={},n=\"\".concat(t.target.name),o=t.target.value,n in e?Object.defineProperty(e,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[n]=o,e))},r}return t=i,(e=[{key:\"componentDidUpdate\",value:function(t){var e=this.props,n=e.expanded,o=e.config;if(!n&&t.expanded){var r=o.defaultSize,i=r.height,c=r.width;this.setState({embeddedLink:\"\",height:i,width:c})}}},{key:\"rendeEmbeddedLinkModal\",value:function(){var t=this.state,e=t.embeddedLink,n=t.height,o=t.width,r=this.props,i=r.config.popupClassName,c=r.doCollapse,a=r.translations;return N.a.createElement(\"div\",{className:w()(\"rdw-embedded-modal\",i),onClick:j},N.a.createElement(\"div\",{className:\"rdw-embedded-modal-header\"},N.a.createElement(\"span\",{className:\"rdw-embedded-modal-header-option\"},a[\"components.controls.embedded.embeddedlink\"],N.a.createElement(\"span\",{className:\"rdw-embedded-modal-header-label\"}))),N.a.createElement(\"div\",{className:\"rdw-embedded-modal-link-section\"},N.a.createElement(\"span\",{className:\"rdw-embedded-modal-link-input-wrapper\"},N.a.createElement(\"input\",{className:\"rdw-embedded-modal-link-input\",placeholder:a[\"components.controls.embedded.enterlink\"],onChange:this.updateValue,onBlur:this.updateValue,value:e,name:\"embeddedLink\"}),N.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")),N.a.createElement(\"div\",{className:\"rdw-embedded-modal-size\"},N.a.createElement(\"span\",null,N.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:n,name:\"height\",className:\"rdw-embedded-modal-size-input\",placeholder:\"Height\"}),N.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")),N.a.createElement(\"span\",null,N.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:o,name:\"width\",className:\"rdw-embedded-modal-size-input\",placeholder:\"Width\"}),N.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")))),N.a.createElement(\"span\",{className:\"rdw-embedded-modal-btn-section\"},N.a.createElement(\"button\",{type:\"button\",className:\"rdw-embedded-modal-btn\",onClick:this.onChange,disabled:!e||!n||!o},a[\"generic.add\"]),N.a.createElement(\"button\",{type:\"button\",className:\"rdw-embedded-modal-btn\",onClick:c},a[\"generic.cancel\"])))}},{key:\"render\",value:function(){var t=this.props,e=t.config,n=e.icon,o=e.className,r=e.title,i=t.expanded,c=t.onExpandEvent,a=t.translations;return N.a.createElement(\"div\",{className:\"rdw-embedded-wrapper\",\"aria-haspopup\":\"true\",\"aria-expanded\":i,\"aria-label\":\"rdw-embedded-control\"},N.a.createElement(R,{className:w()(o),value:\"unordered-list-item\",onClick:c,title:r||a[\"components.controls.embedded.embedded\"]},N.a.createElement(\"img\",{src:n,alt:\"\"})),i?this.rendeEmbeddedLinkModal():void 0)}}])&&en(t.prototype,e),n&&en(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),i}();cn.propTypes={expanded:y.a.bool,onExpandEvent:y.a.func,onChange:y.a.func,config:y.a.object,translations:y.a.object,doCollapse:y.a.func};var an=cn;function ln(t){return(ln=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function sn(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function un(t,e){return(un=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function pn(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=dn(o);if(r){var n=dn(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===ln(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function dn(t){return(dn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var fn=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&un(t,e)}(r,f[\"Component\"]);var t,e,n,o=pn(r);function r(){var s;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return(s=o.call.apply(o,[this].concat(e))).state={expanded:!1},s.onExpandEvent=function(){s.signalExpanded=!s.state.expanded},s.expandCollapse=function(){s.setState({expanded:s.signalExpanded}),s.signalExpanded=!1},s.doExpand=function(){s.setState({expanded:!0})},s.doCollapse=function(){s.setState({expanded:!1})},s.addEmbeddedLink=function(t,e,n){var o=s.props,r=o.editorState,i=o.onChange,c=o.config.embedCallback,a=c?c(t):t,l=r.getCurrentContent().createEntity(\"EMBEDDED_LINK\",\"MUTABLE\",{src:a,height:e,width:n}).getLastCreatedEntityKey();i(E.AtomicBlockUtils.insertAtomicBlock(r,l,\" \")),s.doCollapse()},s}return t=r,(e=[{key:\"componentDidMount\",value:function(){this.props.modalHandler.registerCallBack(this.expandCollapse)}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var t=this.props,e=t.config,n=t.translations,o=this.state.expanded,r=e.component||an;return N.a.createElement(r,{config:e,translations:n,onChange:this.addEmbeddedLink,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&sn(t.prototype,e),n&&sn(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),r}();fn.propTypes={editorState:y.a.object.isRequired,onChange:y.a.func.isRequired,modalHandler:y.a.object,config:y.a.object,translations:y.a.object};var yn=fn;n(28);function mn(t){return(mn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function gn(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function bn(t,e){return(bn=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function hn(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=Mn(o);if(r){var n=Mn(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===mn(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function Mn(t){return(Mn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var jn=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&bn(t,e)}(i,f[\"Component\"]);var t,e,n,r=hn(i);function i(){var e;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(e=r.call.apply(r,[this].concat(n))).onChange=function(t){(0,e.props.onChange)(t.target.innerHTML)},e}return t=i,(e=[{key:\"renderEmojiModal\",value:function(){var n=this,t=this.props.config,e=t.popupClassName,o=t.emojis;return N.a.createElement(\"div\",{className:w()(\"rdw-emoji-modal\",e),onClick:j},o.map(function(t,e){return N.a.createElement(\"span\",{key:e,className:\"rdw-emoji-icon\",alt:\"\",onClick:n.onChange},t)}))}},{key:\"render\",value:function(){var t=this.props,e=t.config,n=e.icon,o=e.className,r=e.title,i=t.expanded,c=t.onExpandEvent,a=t.translations;return N.a.createElement(\"div\",{className:\"rdw-emoji-wrapper\",\"aria-haspopup\":\"true\",\"aria-label\":\"rdw-emoji-control\",\"aria-expanded\":i,title:r||a[\"components.controls.emoji.emoji\"]},N.a.createElement(R,{className:w()(o),value:\"unordered-list-item\",onClick:c},N.a.createElement(\"img\",{src:n,alt:\"\"})),i?this.renderEmojiModal():void 0)}}])&&gn(t.prototype,e),n&&gn(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),i}();jn.propTypes={expanded:y.a.bool,onExpandEvent:y.a.func,onChange:y.a.func,config:y.a.object,translations:y.a.object};var vn=jn;function Nn(t){return(Nn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function En(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function Sn(t,e){return(Sn=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function wn(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=Cn(o);if(r){var n=Cn(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===Nn(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function Cn(t){return(Cn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var Ln=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&Sn(t,e)}(r,f[\"Component\"]);var t,e,n,o=wn(r);function r(){var i;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return(i=o.call.apply(o,[this].concat(e))).state={expanded:!1},i.onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})},i.addEmoji=function(t){var e=i.props,n=e.editorState,o=e.onChange,r=E.Modifier.replaceText(n.getCurrentContent(),n.getSelection(),t,n.getCurrentInlineStyle());o(E.EditorState.push(n,r,\"insert-characters\")),i.doCollapse()},i}return t=r,(e=[{key:\"componentDidMount\",value:function(){this.props.modalHandler.registerCallBack(this.expandCollapse)}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var t=this.props,e=t.config,n=t.translations,o=this.state.expanded,r=e.component||vn;return N.a.createElement(r,{config:e,translations:n,onChange:this.addEmoji,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onCollpase:this.closeModal})}}])&&En(t.prototype,e),n&&En(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),r}();Ln.propTypes={editorState:y.a.object.isRequired,onChange:y.a.func.isRequired,modalHandler:y.a.object,config:y.a.object,translations:y.a.object};function Dn(){return N.a.createElement(\"div\",{className:\"rdw-spinner\"},N.a.createElement(\"div\",{className:\"rdw-bounce1\"}),N.a.createElement(\"div\",{className:\"rdw-bounce2\"}),N.a.createElement(\"div\",{className:\"rdw-bounce3\"}))}n(29),n(30);function kn(t){return(kn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function On(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function xn(t,e){return(xn=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function In(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=Tn(o);if(r){var n=Tn(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===kn(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function Tn(t){return(Tn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var An=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&xn(t,e)}(r,f[\"Component\"]);var t,e,n,o=In(r);function r(){var a;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return(a=o.call.apply(o,[this].concat(e))).state={imgSrc:\"\",dragEnter:!1,uploadHighlighted:a.props.config.uploadEnabled&&!!a.props.config.uploadCallback,showImageLoading:!1,height:a.props.config.defaultSize.height,width:a.props.config.defaultSize.width,alt:\"\"},a.onDragEnter=function(t){a.stopPropagation(t),a.setState({dragEnter:!0})},a.onImageDrop=function(t){var e,n;t.preventDefault(),t.stopPropagation(),a.setState({dragEnter:!1}),n=t.dataTransfer.items?(e=t.dataTransfer.items,!0):(e=t.dataTransfer.files,!1);for(var o=0;o<e.length;o+=1)if((!n||\"file\"===e[o].kind)&&e[o].type.match(\"^image/\")){var r=n?e[o].getAsFile():e[o];a.uploadImage(r)}},a.showImageUploadOption=function(){a.setState({uploadHighlighted:!0})},a.addImageFromState=function(){var t=a.state,e=t.imgSrc,n=t.alt,o=a.state,r=o.height,i=o.width,c=a.props.onChange;isNaN(r)||(r+=\"px\"),isNaN(i)||(i+=\"px\"),c(e,r,i,n)},a.showImageURLOption=function(){a.setState({uploadHighlighted:!1})},a.toggleShowImageLoading=function(){var t=!a.state.showImageLoading;a.setState({showImageLoading:t})},a.updateValue=function(t){var e,n,o;a.setState((e={},n=\"\".concat(t.target.name),o=t.target.value,n in e?Object.defineProperty(e,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[n]=o,e))},a.selectImage=function(t){t.target.files&&0<t.target.files.length&&a.uploadImage(t.target.files[0])},a.uploadImage=function(t){a.toggleShowImageLoading(),(0,a.props.config.uploadCallback)(t).then(function(t){var e=t.data;a.setState({showImageLoading:!1,dragEnter:!1,imgSrc:e.link||e.url}),a.fileUpload=!1}).catch(function(){a.setState({showImageLoading:!1,dragEnter:!1})})},a.fileUploadClick=function(t){a.fileUpload=!0,t.stopPropagation()},a.stopPropagation=function(t){a.fileUpload?a.fileUpload=!1:(t.preventDefault(),t.stopPropagation())},a}return t=r,(e=[{key:\"componentDidUpdate\",value:function(t){var e=this.props.config;t.expanded&&!this.props.expanded?this.setState({imgSrc:\"\",dragEnter:!1,uploadHighlighted:e.uploadEnabled&&!!e.uploadCallback,showImageLoading:!1,height:e.defaultSize.height,width:e.defaultSize.width,alt:\"\"}):e.uploadCallback===t.config.uploadCallback&&e.uploadEnabled===t.config.uploadEnabled||this.setState({uploadHighlighted:e.uploadEnabled&&!!e.uploadCallback})}},{key:\"renderAddImageModal\",value:function(){var t=this.state,e=t.imgSrc,n=t.uploadHighlighted,o=t.showImageLoading,r=t.dragEnter,i=t.height,c=t.width,a=t.alt,l=this.props,s=l.config,u=s.popupClassName,p=s.uploadCallback,d=s.uploadEnabled,f=s.urlEnabled,y=s.previewImage,m=s.inputAccept,g=s.alt,b=l.doCollapse,h=l.translations;return N.a.createElement(\"div\",{className:w()(\"rdw-image-modal\",u),onClick:this.stopPropagation},N.a.createElement(\"div\",{className:\"rdw-image-modal-header\"},d&&p&&N.a.createElement(\"span\",{onClick:this.showImageUploadOption,className:\"rdw-image-modal-header-option\"},h[\"components.controls.image.fileUpload\"],N.a.createElement(\"span\",{className:w()(\"rdw-image-modal-header-label\",{\"rdw-image-modal-header-label-highlighted\":n})})),f&&N.a.createElement(\"span\",{onClick:this.showImageURLOption,className:\"rdw-image-modal-header-option\"},h[\"components.controls.image.byURL\"],N.a.createElement(\"span\",{className:w()(\"rdw-image-modal-header-label\",{\"rdw-image-modal-header-label-highlighted\":!n})}))),n?N.a.createElement(\"div\",{onClick:this.fileUploadClick},N.a.createElement(\"div\",{onDragEnter:this.onDragEnter,onDragOver:this.stopPropagation,onDrop:this.onImageDrop,className:w()(\"rdw-image-modal-upload-option\",{\"rdw-image-modal-upload-option-highlighted\":r})},N.a.createElement(\"label\",{htmlFor:\"file\",className:\"rdw-image-modal-upload-option-label\"},y&&e?N.a.createElement(\"img\",{src:e,alt:e,className:\"rdw-image-modal-upload-option-image-preview\"}):e||h[\"components.controls.image.dropFileText\"])),N.a.createElement(\"input\",{type:\"file\",id:\"file\",accept:m,onChange:this.selectImage,className:\"rdw-image-modal-upload-option-input\"})):N.a.createElement(\"div\",{className:\"rdw-image-modal-url-section\"},N.a.createElement(\"input\",{className:\"rdw-image-modal-url-input\",placeholder:h[\"components.controls.image.enterlink\"],name:\"imgSrc\",onChange:this.updateValue,onBlur:this.updateValue,value:e}),N.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")),g.present&&N.a.createElement(\"div\",{className:\"rdw-image-modal-size\"},N.a.createElement(\"span\",{className:\"rdw-image-modal-alt-lbl\"},\"Alt Text\"),N.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:a,name:\"alt\",className:\"rdw-image-modal-alt-input\",placeholder:\"alt\"}),N.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},g.mandatory&&\"*\")),N.a.createElement(\"div\",{className:\"rdw-image-modal-size\"},\"↕ \",N.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:i,name:\"height\",className:\"rdw-image-modal-size-input\",placeholder:\"Height\"}),N.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\"),\" ↔ \",N.a.createElement(\"input\",{onChange:this.updateValue,onBlur:this.updateValue,value:c,name:\"width\",className:\"rdw-image-modal-size-input\",placeholder:\"Width\"}),N.a.createElement(\"span\",{className:\"rdw-image-mandatory-sign\"},\"*\")),N.a.createElement(\"span\",{className:\"rdw-image-modal-btn-section\"},N.a.createElement(\"button\",{className:\"rdw-image-modal-btn\",onClick:this.addImageFromState,disabled:!e||!i||!c||g.mandatory&&!a},h[\"generic.add\"]),N.a.createElement(\"button\",{className:\"rdw-image-modal-btn\",onClick:b},h[\"generic.cancel\"])),o?N.a.createElement(\"div\",{className:\"rdw-image-modal-spinner\"},N.a.createElement(Dn,null)):void 0)}},{key:\"render\",value:function(){var t=this.props,e=t.config,n=e.icon,o=e.className,r=e.title,i=t.expanded,c=t.onExpandEvent,a=t.translations;return N.a.createElement(\"div\",{className:\"rdw-image-wrapper\",\"aria-haspopup\":\"true\",\"aria-expanded\":i,\"aria-label\":\"rdw-image-control\"},N.a.createElement(R,{className:w()(o),value:\"unordered-list-item\",onClick:c,title:r||a[\"components.controls.image.image\"]},N.a.createElement(\"img\",{src:n,alt:\"\"})),i?this.renderAddImageModal():void 0)}}])&&On(t.prototype,e),n&&On(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),r}();An.propTypes={expanded:y.a.bool,onExpandEvent:y.a.func,doCollapse:y.a.func,onChange:y.a.func,config:y.a.object,translations:y.a.object};var zn=An;function _n(t){return(_n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function Pn(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function Rn(t,e){return(Rn=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function Un(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=Bn(o);if(r){var n=Bn(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===_n(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function Bn(t){return(Bn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var Fn=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&Rn(t,e)}(r,f[\"Component\"]);var t,e,n,o=Un(r);function r(t){var s;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,r),(s=o.call(this,t)).onExpandEvent=function(){s.signalExpanded=!s.state.expanded},s.doExpand=function(){s.setState({expanded:!0})},s.doCollapse=function(){s.setState({expanded:!1})},s.expandCollapse=function(){s.setState({expanded:s.signalExpanded}),s.signalExpanded=!1},s.addImage=function(t,e,n,o){var r=s.props,i=r.editorState,c=r.onChange,a={src:t,height:e,width:n};r.config.alt.present&&(a.alt=o);var l=i.getCurrentContent().createEntity(\"IMAGE\",\"MUTABLE\",a).getLastCreatedEntityKey();c(E.AtomicBlockUtils.insertAtomicBlock(i,l,\" \")),s.doCollapse()};var e=s.props.modalHandler;return s.state={expanded:!1},e.registerCallBack(s.expandCollapse),s}return t=r,(e=[{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var t=this.props,e=t.config,n=t.translations,o=this.state.expanded,r=e.component||zn;return N.a.createElement(r,{config:e,translations:n,onChange:this.addImage,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse})}}])&&Pn(t.prototype,e),n&&Pn(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),r}();Fn.propTypes={editorState:y.a.object.isRequired,onChange:y.a.func.isRequired,modalHandler:y.a.object,config:y.a.object,translations:y.a.object};function Yn(t){var e=t.config,n=t.onChange,o=t.translations,r=e.icon,i=e.className,c=e.title;return N.a.createElement(\"div\",{className:\"rdw-remove-wrapper\",\"aria-label\":\"rdw-remove-control\"},N.a.createElement(R,{className:w()(i),onClick:n,title:c||o[\"components.controls.remove.remove\"]},N.a.createElement(\"img\",{src:r,alt:\"\"})))}var Qn=Fn;n(31);Yn.propTypes={onChange:y.a.func,config:y.a.object,translations:y.a.object};var Hn=Yn;function Zn(t){return(Zn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function Wn(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function Gn(t,e){return(Gn=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function Jn(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=Vn(o);if(r){var n=Vn(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===Zn(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function Vn(t){return(Vn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var qn=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&Gn(t,e)}(i,f[\"Component\"]);var t,e,n,r=Jn(i);function i(){var n;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,e=new Array(t),o=0;o<t;o++)e[o]=arguments[o];return(n=r.call.apply(r,[this].concat(e))).state={expanded:!1},n.onExpandEvent=function(){n.signalExpanded=!n.state.expanded},n.expandCollapse=function(){n.setState({expanded:n.signalExpanded}),n.signalExpanded=!1},n.removeInlineStyles=function(){var t=n.props,e=t.editorState;(0,t.onChange)(n.removeAllInlineStyles(e))},n.removeAllInlineStyles=function(n){var o=n.getCurrentContent();return[\"BOLD\",\"ITALIC\",\"UNDERLINE\",\"STRIKETHROUGH\",\"MONOSPACE\",\"SUPERSCRIPT\",\"SUBSCRIPT\"].forEach(function(t){o=E.Modifier.removeInlineStyle(o,n.getSelection(),t)}),h(Object(S.getSelectionCustomInlineStyle)(n,[\"FONTSIZE\",\"FONTFAMILY\",\"COLOR\",\"BGCOLOR\"]),function(t,e){e&&(o=E.Modifier.removeInlineStyle(o,n.getSelection(),e))}),E.EditorState.push(n,o,\"change-inline-style\")},n.doExpand=function(){n.setState({expanded:!0})},n.doCollapse=function(){n.setState({expanded:!1})},n}return t=i,(e=[{key:\"componentDidMount\",value:function(){this.props.modalHandler.registerCallBack(this.expandCollapse)}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var t=this.props,e=t.config,n=t.translations,o=this.state.expanded,r=e.component||Hn;return N.a.createElement(r,{config:e,translations:n,expanded:o,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onChange:this.removeInlineStyles})}}])&&Wn(t.prototype,e),n&&Wn(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),i}();qn.propTypes={onChange:y.a.func.isRequired,editorState:y.a.object.isRequired,config:y.a.object,translations:y.a.object,modalHandler:y.a.object};n(32);function Kn(t){return(Kn=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function Xn(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function $n(t,e){return($n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function to(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=eo(o);if(r){var n=eo(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===Kn(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function eo(t){return(eo=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var no=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&$n(t,e)}(i,f[\"Component\"]);var t,e,n,r=to(i);function i(){var e;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(e=r.call.apply(r,[this].concat(n))).onChange=function(t){(0,e.props.onChange)(t)},e}return t=i,(e=[{key:\"renderInDropDown\",value:function(){var t=this.props,e=t.config,n=t.expanded,o=t.doExpand,r=t.onExpandEvent,i=t.doCollapse,c=t.currentState,a=c.undoDisabled,l=c.redoDisabled,s=t.translations,u=e.options,p=e.undo,d=e.redo,f=e.className,y=e.dropdownClassName,m=e.title;return N.a.createElement(H,{className:w()(\"rdw-history-dropdown\",f),optionWrapperClassName:w()(y),expanded:n,doExpand:o,doCollapse:i,onExpandEvent:r,\"aria-label\":\"rdw-history-control\",title:m||s[\"components.controls.history.history\"]},N.a.createElement(\"img\",{src:v(e),alt:\"\"}),0<=u.indexOf(\"undo\")&&N.a.createElement(K,{value:\"undo\",onClick:this.onChange,disabled:a,className:w()(\"rdw-history-dropdownoption\",p.className),title:p.title||s[\"components.controls.history.undo\"]},N.a.createElement(\"img\",{src:p.icon,alt:\"\"})),0<=u.indexOf(\"redo\")&&N.a.createElement(K,{value:\"redo\",onClick:this.onChange,disabled:l,className:w()(\"rdw-history-dropdownoption\",d.className),title:d.title||s[\"components.controls.history.redo\"]},N.a.createElement(\"img\",{src:d.icon,alt:\"\"})))}},{key:\"renderInFlatList\",value:function(){var t=this.props,e=t.config,n=e.options,o=e.undo,r=e.redo,i=e.className,c=t.currentState,a=c.undoDisabled,l=c.redoDisabled,s=t.translations;return N.a.createElement(\"div\",{className:w()(\"rdw-history-wrapper\",i),\"aria-label\":\"rdw-history-control\"},0<=n.indexOf(\"undo\")&&N.a.createElement(R,{value:\"undo\",onClick:this.onChange,className:w()(o.className),disabled:a,title:o.title||s[\"components.controls.history.undo\"]},N.a.createElement(\"img\",{src:o.icon,alt:\"\"})),0<=n.indexOf(\"redo\")&&N.a.createElement(R,{value:\"redo\",onClick:this.onChange,className:w()(r.className),disabled:l,title:r.title||s[\"components.controls.history.redo\"]},N.a.createElement(\"img\",{src:r.icon,alt:\"\"})))}},{key:\"render\",value:function(){return this.props.config.inDropdown?this.renderInDropDown():this.renderInFlatList()}}])&&Xn(t.prototype,e),n&&Xn(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),i}();function oo(t){return(oo=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function ro(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function io(t,e){return(io=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function co(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=ao(o);if(r){var n=ao(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===oo(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function ao(t){return(ao=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}no.propTypes={expanded:y.a.bool,doExpand:y.a.func,doCollapse:y.a.func,onExpandEvent:y.a.func,config:y.a.object,onChange:y.a.func,currentState:y.a.object,translations:y.a.object};var lo=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&io(t,e)}(c,f[\"Component\"]);var t,e,n,r=co(c);function c(t){var i;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,c),(i=r.call(this,t)).onExpandEvent=function(){i.signalExpanded=!i.state.expanded},i.onChange=function(t){var e=i.props,n=e.editorState,o=e.onChange,r=E.EditorState[t](n);r&&o(r)},i.doExpand=function(){i.setState({expanded:!0})},i.doCollapse=function(){i.setState({expanded:!1})};var e={expanded:!(i.expandCollapse=function(){i.setState({expanded:i.signalExpanded}),i.signalExpanded=!1}),undoDisabled:!1,redoDisabled:!1},n=t.editorState,o=t.modalHandler;return n&&(e.undoDisabled=0===n.getUndoStack().size,e.redoDisabled=0===n.getRedoStack().size),i.state=e,o.registerCallBack(i.expandCollapse),i}return t=c,(e=[{key:\"componentDidUpdate\",value:function(t){var e=this.props.editorState;e&&t.editorState!==e&&this.setState({undoDisabled:0===e.getUndoStack().size,redoDisabled:0===e.getRedoStack().size})}},{key:\"componentWillUnmount\",value:function(){this.props.modalHandler.deregisterCallBack(this.expandCollapse)}},{key:\"render\",value:function(){var t=this.props,e=t.config,n=t.translations,o=this.state,r=o.undoDisabled,i=o.redoDisabled,c=o.expanded,a=e.component||no;return N.a.createElement(a,{config:e,translations:n,currentState:{undoDisabled:r,redoDisabled:i},expanded:c,onExpandEvent:this.onExpandEvent,doExpand:this.doExpand,doCollapse:this.doCollapse,onChange:this.onChange})}}])&&ro(t.prototype,e),n&&ro(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),c}();lo.propTypes={onChange:y.a.func.isRequired,editorState:y.a.object,modalHandler:y.a.object,config:y.a.object,translations:y.a.object};var so={inline:st,blockType:Et,fontSize:zt,fontFamily:Jt,list:ce,textAlign:he,colorPicker:Ie,link:$e,embedded:yn,emoji:Ln,image:Qn,remove:qn,history:lo},uo=/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g,po=/^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i;function fo(t){return String(t).replace(uo,\"\").match(po)?t:\"#\"}n(33);function yo(t){return(yo=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function mo(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function go(t,e){return(go=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function bo(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=ho(o);if(r){var n=ho(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===yo(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function ho(t){return(ho=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function Mo(t,e,n){t.findEntityRanges(function(t){var e=t.getEntity();return null!==e&&\"LINK\"===n.getEntity(e).getType()},e)}function jo(t){var e,a=t.showOpenOptionOnHover;return(e=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&go(t,e)}(i,f[\"Component\"]);var t,e,n,o=bo(i);function i(){var r;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,i);for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return(r=o.call.apply(o,[this].concat(e))).state={showPopOver:!1},r.openLink=function(){var t=r.props,e=t.entityKey,n=t.contentState.getEntity(e).getData().url,o=window.open(fo(n),\"blank\");o&&o.focus()},r.toggleShowPopOver=function(){var t=!r.state.showPopOver;r.setState({showPopOver:t})},r}return t=i,(e=[{key:\"render\",value:function(){var t=this.props,e=t.children,n=t.entityKey,o=t.contentState.getEntity(n).getData(),r=o.url,i=o.targetOption,c=this.state.showPopOver;return N.a.createElement(\"span\",{className:\"rdw-link-decorator-wrapper\",onMouseEnter:this.toggleShowPopOver,onMouseLeave:this.toggleShowPopOver},N.a.createElement(\"a\",{href:fo(r),target:i},e),c&&a?N.a.createElement(\"img\",{src:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuMDcyIDBIOC45MTVhLjkyNS45MjUgMCAwIDAgMCAxLjg0OWgyLjkyNUw2Ljk2MSA2LjcyN2EuOTE4LjkxOCAwIDAgMC0uMjcuNjU0YzAgLjI0Ny4wOTUuNDguMjcuNjU0YS45MTguOTE4IDAgMCAwIC42NTQuMjcuOTE4LjkxOCAwIDAgMCAuNjUzLS4yN2w0Ljg4LTQuODh2Mi45MjZhLjkyNS45MjUgMCAwIDAgMS44NDggMFYuOTI0QS45MjUuOTI1IDAgMCAwIDE0LjA3MiAweiIvPjxwYXRoIGQ9Ik0xMC42MjMgMTMuNDExSDEuNTg1VjQuMzcyaDYuNzk4bDEuNTg0LTEuNTg0SC43OTJBLjc5Mi43OTIgMCAwIDAgMCAzLjU4djEwLjYyNGMwIC40MzcuMzU1Ljc5Mi43OTIuNzkyaDEwLjYyNGEuNzkyLjc5MiAwIDAgMCAuNzkyLS43OTJWNS4wMjlsLTEuNTg1IDEuNTg0djYuNzk4eiIvPjwvZz48L3N2Zz4=\",alt:\"\",onClick:this.openLink,className:\"rdw-link-decorator-icon\"}):void 0)}}])&&mo(t.prototype,e),n&&mo(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),i}()).propTypes={entityKey:y.a.string.isRequired,children:y.a.array,contentState:y.a.object},e}n(34);function vo(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function No(t,e,n){return e&&vo(t.prototype,e),n&&vo(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),t}var Eo=No(function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.getMentionComponent=function(){function t(t){var e=t.entityKey,n=t.children,o=t.contentState.getEntity(e).getData(),r=o.url,i=o.value;return N.a.createElement(\"a\",{href:r||i,className:w()(\"rdw-mention-link\",c)},n)}var c=n.className;return t.propTypes={entityKey:y.a.number,children:y.a.array,contentState:y.a.object},t},this.getMentionDecorator=function(){return{strategy:n.findMentionEntities,component:n.getMentionComponent()}},this.className=e});Eo.prototype.findMentionEntities=function(t,e,n){t.findEntityRanges(function(t){var e=t.getEntity();return null!==e&&\"MENTION\"===n.getEntity(e).getType()},e)};var So=Eo;n(35);function wo(t){return(wo=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function Co(t,e){return(Co=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function Lo(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=Do(o);if(r){var n=Do(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===wo(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function Do(t){return(Do=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function ko(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function Oo(t,e,n){return e&&ko(t.prototype,e),n&&ko(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),t}function xo(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var Io=Oo(function t(e){var p=this;xo(this,t),this.findSuggestionEntities=function(t,e){if(p.config.getEditorState()){var n=p.config,o=n.separator,r=n.trigger,i=n.getSuggestions,c=(0,n.getEditorState)().getSelection();if(c.get(\"anchorKey\")===t.get(\"key\")&&c.get(\"anchorKey\")===c.get(\"focusKey\")){var a=t.getText(),l=(a=a.substr(0,c.get(\"focusOffset\")===a.length-1?a.length:c.get(\"focusOffset\")+1)).lastIndexOf(o+r),s=o+r;if((void 0===l||l<0)&&a[0]===r&&(l=0,s=r),0<=l){var u=a.substr(l+s.length,a.length);i().some(function(t){return!!t.value&&(p.config.caseSensitive?0<=t.value.indexOf(u):0<=t.value.toLowerCase().indexOf(u&&u.toLowerCase()))})&&e(0===l?0:l+1,a.length)}}}},this.getSuggestionComponent=function(){var t,a=this.config;return(t=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&Co(t,e)}(r,f[\"Component\"]);var o=Lo(r);function r(){var c;xo(this,r);for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return(c=o.call.apply(o,[this].concat(e))).state={style:{left:15},activeOption:-1,showSuggestions:!0},c.onEditorKeyDown=function(t){var e=c.state.activeOption,n={};\"ArrowDown\"===t.key?(t.preventDefault(),e===c.filteredSuggestions.length-1?n.activeOption=0:n.activeOption=e+1):\"ArrowUp\"===t.key?n.activeOption=e<=0?c.filteredSuggestions.length-1:e-1:\"Escape\"===t.key?(n.showSuggestions=!1,g()):\"Enter\"===t.key&&c.addMention(),c.setState(n)},c.onOptionMouseEnter=function(t){var e=t.target.getAttribute(\"data-index\");c.setState({activeOption:e})},c.onOptionMouseLeave=function(){c.setState({activeOption:-1})},c.setSuggestionReference=function(t){c.suggestion=t},c.setDropdownReference=function(t){c.dropdown=t},c.closeSuggestionDropdown=function(){c.setState({showSuggestions:!1})},c.filteredSuggestions=[],c.filterSuggestions=function(t){var e=t.children[0].props.text.substr(1),n=a.getSuggestions();c.filteredSuggestions=n&&n.filter(function(t){return!e||0===e.length||(a.caseSensitive?0<=t.value.indexOf(e):0<=t.value.toLowerCase().indexOf(e&&e.toLowerCase()))})},c.addMention=function(){var t=c.state.activeOption,e=a.getEditorState(),n=a.onChange,o=a.separator,r=a.trigger,i=c.filteredSuggestions[t];i&&function(t,e,n,o,r){var i=r.value,c=r.url,a=t.getCurrentContent().createEntity(\"MENTION\",\"IMMUTABLE\",{text:\"\".concat(o).concat(i),value:i,url:c}).getLastCreatedEntityKey(),l=Object(S.getSelectedBlock)(t).getText(),s=t.getSelection().focusOffset,u=(l.lastIndexOf(n+o,s)||0)+1,p=!1;l.length===u+1&&(s=l.length),\" \"===l[s]&&(p=!0);var d=t.getSelection().merge({anchorOffset:u,focusOffset:s}),f=E.EditorState.acceptSelection(t,d),y=E.Modifier.replaceText(f.getCurrentContent(),d,\"\".concat(o).concat(i),f.getCurrentInlineStyle(),a);f=E.EditorState.push(f,y,\"insert-characters\"),p||(d=f.getSelection().merge({anchorOffset:u+i.length+o.length,focusOffset:u+i.length+o.length}),f=E.EditorState.acceptSelection(f,d),y=E.Modifier.insertText(f.getCurrentContent(),d,\" \",f.getCurrentInlineStyle(),void 0)),e(E.EditorState.push(f,y,\"insert-characters\"))}(e,n,o,r,i)},c}return Oo(r,[{key:\"componentDidMount\",value:function(){var t,e,n,o=a.getWrapperRef().getBoundingClientRect(),r=this.suggestion.getBoundingClientRect(),i=this.dropdown.getBoundingClientRect();o.width<r.left-o.left+i.width?e=15:t=15,o.bottom<i.bottom&&(n=0),this.setState({style:{left:t,right:e,bottom:n}}),C.registerCallBack(this.onEditorKeyDown),m(),a.modalHandler.setSuggestionCallback(this.closeSuggestionDropdown),this.filterSuggestions(this.props)}},{key:\"componentDidUpdate\",value:function(t){this.props.children!==t.children&&(this.filterSuggestions(t),this.setState({showSuggestions:!0}))}},{key:\"componentWillUnmount\",value:function(){C.deregisterCallBack(this.onEditorKeyDown),g(),a.modalHandler.removeSuggestionCallback()}},{key:\"render\",value:function(){var n=this,t=this.props.children,e=this.state,o=e.activeOption,r=e.showSuggestions,i=a.dropdownClassName,c=a.optionClassName;return N.a.createElement(\"span\",{className:\"rdw-suggestion-wrapper\",ref:this.setSuggestionReference,onClick:a.modalHandler.onSuggestionClick,\"aria-haspopup\":\"true\",\"aria-label\":\"rdw-suggestion-popup\"},N.a.createElement(\"span\",null,t),r&&N.a.createElement(\"span\",{className:w()(\"rdw-suggestion-dropdown\",i),contentEditable:\"false\",suppressContentEditableWarning:!0,style:this.state.style,ref:this.setDropdownReference},this.filteredSuggestions.map(function(t,e){return N.a.createElement(\"span\",{key:e,spellCheck:!1,onClick:n.addMention,\"data-index\":e,onMouseEnter:n.onOptionMouseEnter,onMouseLeave:n.onOptionMouseLeave,className:w()(\"rdw-suggestion-option\",c,{\"rdw-suggestion-option-active\":e===o})},t.text)})))}}]),r}()).propTypes={children:y.a.array},t}.bind(this),this.getSuggestionDecorator=function(){return{strategy:p.findSuggestionEntities,component:p.getSuggestionComponent()}};var n=e.separator,o=e.trigger,r=e.getSuggestions,i=e.onChange,c=e.getEditorState,a=e.getWrapperRef,l=e.caseSensitive,s=e.dropdownClassName,u=e.optionClassName,d=e.modalHandler;this.config={separator:n,trigger:o,getSuggestions:r,onChange:i,getEditorState:c,getWrapperRef:a,caseSensitive:l,dropdownClassName:s,optionClassName:u,modalHandler:d}}),To=function(t){return[new So(t.mentionClassName).getMentionDecorator(),new Io(t).getSuggestionDecorator()]};n(36);function Ao(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function zo(t,e,n){return e&&Ao(t.prototype,e),n&&Ao(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),t}function _o(t){var e=t.block,n=t.contentState.getEntity(e.getEntityAt(0)).getData(),o=n.src,r=n.height,i=n.width;return N.a.createElement(\"iframe\",{height:r,width:i,src:o,frameBorder:\"0\",allowFullScreen:!0,title:\"Wysiwyg Embedded Content\"})}var Po=zo(function t(e){var a=this;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.getHashtagComponent=function(){function t(t){var e=t.children,n=e[0].props.text;return N.a.createElement(\"a\",{href:n,className:w()(\"rdw-hashtag-link\",o)},e)}var o=a.className;return t.propTypes={children:y.a.object},t},this.findHashtagEntities=function(t,e){for(var n=t.getText(),o=0,r=0;0<n.length&&0<=o;)if(n[0]===a.hashCharacter?(r=o=0,n=n.substr(a.hashCharacter.length)):0<=(o=n.indexOf(a.separator+a.hashCharacter))&&(n=n.substr(o+(a.separator+a.hashCharacter).length),r+=o+a.separator.length),0<=o){var i=0<=n.indexOf(a.separator)?n.indexOf(a.separator):n.length,c=n.substr(0,i);c&&0<c.length&&(e(r,r+c.length+a.hashCharacter.length),r+=a.hashCharacter.length)}},this.getHashtagDecorator=function(){return{strategy:a.findHashtagEntities,component:a.getHashtagComponent()}},this.className=e.className,this.hashCharacter=e.hashCharacter||\"#\",this.separator=e.separator||\" \"}),Ro=function(t){return new Po(t).getHashtagDecorator()};_o.propTypes={block:y.a.object,contentState:y.a.object};var Uo=_o;n(37);function Bo(t){return(Bo=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function Fo(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function Yo(t,e){return(Yo=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function Qo(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=Ho(o);if(r){var n=Ho(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===Bo(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function Ho(t){return(Ho=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var Zo=function(d){var t;return(t=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&Yo(t,e)}(r,f[\"Component\"]);var t,e,n,o=Qo(r);function r(){var i;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,r);for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return(i=o.call.apply(o,[this].concat(e))).state={hovered:!1},i.setEntityAlignmentLeft=function(){i.setEntityAlignment(\"left\")},i.setEntityAlignmentRight=function(){i.setEntityAlignment(\"right\")},i.setEntityAlignmentCenter=function(){i.setEntityAlignment(\"none\")},i.setEntityAlignment=function(t){var e=i.props,n=e.block,o=e.contentState,r=n.getEntityAt(0);o.mergeEntityData(r,{alignment:t}),d.onChange(E.EditorState.push(d.getEditorState(),o,\"change-block-data\")),i.setState({dummy:!0})},i.toggleHovered=function(){var t=!i.state.hovered;i.setState({hovered:t})},i}return t=r,(e=[{key:\"renderAlignmentOptions\",value:function(t){return N.a.createElement(\"div\",{className:w()(\"rdw-image-alignment-options-popup\",{\"rdw-image-alignment-options-popup-right\":\"right\"===t})},N.a.createElement(R,{onClick:this.setEntityAlignmentLeft,className:\"rdw-image-alignment-option\"},\"L\"),N.a.createElement(R,{onClick:this.setEntityAlignmentCenter,className:\"rdw-image-alignment-option\"},\"C\"),N.a.createElement(R,{onClick:this.setEntityAlignmentRight,className:\"rdw-image-alignment-option\"},\"R\"))}},{key:\"render\",value:function(){var t=this.props,e=t.block,n=t.contentState,o=this.state.hovered,r=d.isReadOnly,i=d.isImageAlignmentEnabled,c=n.getEntity(e.getEntityAt(0)).getData(),a=c.src,l=c.alignment,s=c.height,u=c.width,p=c.alt;return N.a.createElement(\"span\",{onMouseEnter:this.toggleHovered,onMouseLeave:this.toggleHovered,className:w()(\"rdw-image-alignment\",{\"rdw-image-left\":\"left\"===l,\"rdw-image-right\":\"right\"===l,\"rdw-image-center\":!l||\"none\"===l})},N.a.createElement(\"span\",{className:\"rdw-image-imagewrapper\"},N.a.createElement(\"img\",{src:a,alt:p,style:{height:s,width:u}}),!r()&&o&&i()?this.renderAlignmentOptions(l):void 0))}}])&&Fo(t.prototype,e),n&&Fo(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),r}()).propTypes={block:y.a.object,contentState:y.a.object},t},Wo=function(o,r){return function(t){if(\"function\"==typeof r){var e=r(t,o,o.getEditorState);if(e)return e}if(\"atomic\"===t.getType()){var n=o.getEditorState().getCurrentContent().getEntity(t.getEntityAt(0));if(n&&\"IMAGE\"===n.type)return{component:Zo(o),editable:!1};if(n&&\"EMBEDDED_LINK\"===n.type)return{component:Uo,editable:!1}}}},Go={options:[\"inline\",\"blockType\",\"fontSize\",\"fontFamily\",\"list\",\"textAlign\",\"colorPicker\",\"link\",\"embedded\",\"emoji\",\"image\",\"remove\",\"history\"],inline:{inDropdown:!1,className:void 0,component:void 0,dropdownClassName:void 0,options:[\"bold\",\"italic\",\"underline\",\"strikethrough\",\"monospace\",\"superscript\",\"subscript\"],bold:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYuMjM2IDBjMS42NTIgMCAyLjk0LjI5OCAzLjg2Ni44OTMuOTI1LjU5NSAxLjM4OCAxLjQ4NSAxLjM4OCAyLjY2OSAwIC42MDEtLjE3MyAxLjEzOS0uNTE2IDEuNjEtLjM0My40NzQtLjg0NC44My0xLjQ5OSAxLjA2OC44NDMuMTY3IDEuNDc0LjUyMyAxLjg5NSAxLjA3MS40MTkuNTUuNjMgMS4xODMuNjMgMS45MDMgMCAxLjI0NS0uNDQ0IDIuMTg3LTEuMzMgMi44MjUtLjg4Ni42NDEtMi4xNDQuOTYxLTMuNzY5Ljk2MUgwdi0yLjE2N2gxLjQ5NFYyLjE2N0gwVjBoNi4yMzZ6TTQuMzA4IDUuNDQ2aDIuMDI0Yy43NTIgMCAxLjMzLS4xNDMgMS43MzQtLjQzLjQwNS0uMjg1LjYwOC0uNzAxLjYwOC0xLjI1IDAtLjYtLjIwNC0xLjA0NC0uNjEyLTEuMzMtLjQwOC0uMjg2LTEuMDE2LS40MjctMS44MjYtLjQyN0g0LjMwOHYzLjQzN3ptMCAxLjgwNFYxMWgyLjU5M2MuNzQ3IDAgMS4zMTQtLjE1MiAxLjcwNy0uNDUyLjM5LS4zLjU4OC0uNzQ1LjU4OC0xLjMzNCAwLS42MzYtLjE2OC0xLjEyNC0uNS0xLjQ2LS4zMzYtLjMzNS0uODY0LS41MDQtMS41ODItLjUwNEg0LjMwOHoiIGZpbGw9IiMwMDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==\",className:void 0,title:void 0},italic:{icon:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTcgM1YyaDR2MUg5Ljc1M2wtMyAxMEg4djFINHYtMWgxLjI0N2wzLTEwSDd6Ii8+PC9zdmc+\",className:void 0,title:void 0},underline:{icon:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTYuMDQ1IDJ2Ljk5Mkw0Ljc4NSAzdjUuMTcyYzAgLjg1OS4yNDMgMS41MTIuNzI3IDEuOTU3czEuMTI0LjY2OCAxLjkxOC42NjhjLjgzNiAwIDEuNTA5LS4yMjEgMi4wMTktLjY2NC41MTEtLjQ0Mi43NjYtMS4wOTYuNzY2LTEuOTYxVjNsLTEuMjYtLjAwOFYySDEzdi45OTJMMTEuNzM5IDN2NS4xNzJjMCAxLjIzNC0uMzk4IDIuMTgxLTEuMTk1IDIuODQtLjc5Ny42NTktMS44MzUuOTg4LTMuMTE0Ljk4OC0xLjI0MiAwLTIuMjQ4LS4zMjktMy4wMTctLjk4OC0uNzY5LS42NTktMS4xNTItMS42MDUtMS4xNTItMi44NFYzTDIgMi45OTJWMmg0LjA0NXpNMiAxM2gxMXYxSDJ6Ii8+PC9zdmc+\",className:void 0,title:void 0},strikethrough:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNC4wNCA1Ljk1NGg2LjIxNWE3LjQxMiA3LjQxMiAwIDAgMC0uNzk1LS40MzggMTEuOTA3IDExLjkwNyAwIDAgMC0xLjQ0Ny0uNTU3Yy0xLjE4OC0uMzQ4LTEuOTY2LS43MTEtMi4zMzQtMS4wODgtLjM2OC0uMzc3LS41NTItLjc3LS41NTItMS4xODEgMC0uNDk1LjE4Ny0uOTA2LjU2LTEuMjMyLjM4LS4zMzEuODg3LS40OTcgMS41MjMtLjQ5Ny42OCAwIDEuMjY2LjI1NSAxLjc1Ny43NjcuMjk1LjMxNS41ODIuODkxLjg2MSAxLjczbC4xMTcuMDE2LjcwMy4wNS4xLS4wMjRjLjAyOC0uMTUyLjA0Mi0uMjc5LjA0Mi0uMzggMC0uMzM3LS4wMzktLjg1Mi0uMTE3LTEuNTQ0YTkuMzc0IDkuMzc0IDAgMCAwLS4xNzYtLjk5NUM5Ljg4LjM3OSA5LjM4NS4yNDQgOS4wMTcuMTc2IDguMzY1LjA3IDcuODk5LjAxNiA3LjYyLjAxNmMtMS40NSAwLTIuNTQ1LjM1Ny0zLjI4NyAxLjA3MS0uNzQ3LjcyLTEuMTIgMS41ODktMS4xMiAyLjYwNyAwIC41MTEuMTMzIDEuMDQuNCAxLjU4Ni4xMjkuMjUzLjI3LjQ3OC40MjcuNjc0ek04LjI4IDguMTE0Yy41NzUuMjM2Ljk1Ny40MzYgMS4xNDcuNTk5LjQ1MS40MS42NzcuODUyLjY3NyAxLjMyNCAwIC4zODMtLjEzLjc0NS0uMzkzIDEuMDg4LS4yNS4zMzgtLjU5LjU4LTEuMDIuNzI2YTMuNDE2IDMuNDE2IDAgMCAxLTEuMTYzLjIyOGMtLjQwNyAwLS43NzUtLjA2Mi0xLjEwNC0uMTg2YTIuNjk2IDIuNjk2IDAgMCAxLS44NzgtLjQ4IDMuMTMzIDMuMTMzIDAgMCAxLS42Ny0uNzk0IDEuNTI3IDEuNTI3IDAgMCAxLS4xMDQtLjIyNyA1Ny41MjMgNTcuNTIzIDAgMCAwLS4xODgtLjQ3MyAyMS4zNzEgMjEuMzcxIDAgMCAwLS4yNTEtLjU5OWwtLjg1My4wMTd2LjM3MWwtLjAxNy4zMTNhOS45MiA5LjkyIDAgMCAwIDAgLjU3M2MuMDExLjI3LjAxNy43MDkuMDE3IDEuMzE2di4xMWMwIC4wNzkuMDIyLjE0LjA2Ny4xODUuMDgzLjA2OC4yODQuMTQ3LjYwMi4yMzdsMS4xNy4zMzdjLjQ1Mi4xMy45OTYuMTk0IDEuNjMyLjE5NC42ODYgMCAxLjI1Mi0uMDU5IDEuNjk4LS4xNzdhNC42OTQgNC42OTQgMCAwIDAgMS4yOC0uNTU3Yy40MDEtLjI1OS43MDUtLjQ4Ni45MTEtLjY4My4yNjgtLjI3Ni40NjYtLjU2OC41OTQtLjg3OGE0Ljc0IDQuNzQgMCAwIDAgLjM0My0xLjc4OGMwLS4yOTgtLjAyLS41NTctLjA1OC0uNzc2SDguMjgxek0xNC45MTQgNi41N2EuMjYuMjYgMCAwIDAtLjE5My0uMDc2SC4yNjhhLjI2LjI2IDAgMCAwLS4xOTMuMDc2LjI2NC4yNjQgMCAwIDAtLjA3NS4xOTR2LjU0YzAgLjA3OS4wMjUuMTQzLjA3NS4xOTRhLjI2LjI2IDAgMCAwIC4xOTMuMDc2SDE0LjcyYS4yNi4yNiAwIDAgMCAuMTkzLS4wNzYuMjY0LjI2NCAwIDAgMCAuMDc1LS4xOTR2LS41NGEuMjY0LjI2NCAwIDAgMC0uMDc1LS4xOTR6Ii8+PC9nPjwvc3ZnPg==\",className:void 0,title:void 0},monospace:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzQ0NCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMS4wMjEgMi45MDZjLjE4NiAxLjIxOS4zNzIgMS41LjM3MiAyLjcxOUMxLjM5MyA2LjM3NSAwIDcuMDMxIDAgNy4wMzF2LjkzOHMxLjM5My42NTYgMS4zOTMgMS40MDZjMCAxLjIxOS0uMTg2IDEuNS0uMzcyIDIuNzE5Qy43NDMgMTQuMDYzIDEuNzY0IDE1IDIuNjkzIDE1aDEuOTV2LTEuODc1cy0xLjY3Mi4xODgtMS42NzItLjkzOGMwLS44NDMuMTg2LS44NDMuMzcyLTIuNzE4LjA5My0uODQ0LS40NjQtMS41LTEuMDIyLTEuOTY5LjU1OC0uNDY5IDEuMTE1LTEuMDMxIDEuMDIyLTEuODc1QzMuMDY0IDMuNzUgMi45NyAzLjc1IDIuOTcgMi45MDZjMC0xLjEyNSAxLjY3Mi0xLjAzMSAxLjY3Mi0xLjAzMVYwaC0xLjk1QzEuNjcgMCAuNzQzLjkzOCAxLjAyIDIuOTA2ek0xMS45NzkgMi45MDZjLS4xODYgMS4yMTktLjM3MiAxLjUtLjM3MiAyLjcxOSAwIC43NSAxLjM5MyAxLjQwNiAxLjM5MyAxLjQwNnYuOTM4cy0xLjM5My42NTYtMS4zOTMgMS40MDZjMCAxLjIxOS4xODYgMS41LjM3MiAyLjcxOS4yNzggMS45NjktLjc0MyAyLjkwNi0xLjY3MiAyLjkwNmgtMS45NXYtMS44NzVzMS42NzIuMTg4IDEuNjcyLS45MzhjMC0uODQzLS4xODYtLjg0My0uMzcyLTIuNzE4LS4wOTMtLjg0NC40NjQtMS41IDEuMDIyLTEuOTY5LS41NTgtLjQ2OS0xLjExNS0xLjAzMS0xLjAyMi0xLjg3NS4xODYtMS44NzUuMzcyLTEuODc1LjM3Mi0yLjcxOSAwLTEuMTI1LTEuNjcyLTEuMDMxLTEuNjcyLTEuMDMxVjBoMS45NWMxLjAyMiAwIDEuOTUuOTM4IDEuNjcyIDIuOTA2eiIvPjwvZz48L3N2Zz4=\",className:void 0,title:void 0},superscript:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcuMzA1IDEwLjE2NUwxMS44NjUgMTVIOS4wNTdsLTMuMTkyLTMuNTM2TDIuNzQ2IDE1SDBsNC41MjMtNC44MzVMLjIxOCA1LjYwM2gyLjc3TDUuOTg2IDguOTEgOS4wMSA1LjYwM2gyLjY0OWwtNC4zNTQgNC41NjJ6bTYuMjM0LTMuMjY5bDEuODc5LTEuMzA2Yy42NC0uNDE2IDEuMDYyLS44MDEgMS4yNjQtMS4xNTcuMjAxLS4zNTYuMzAyLS43MzguMzAyLTEuMTQ4IDAtLjY2OS0uMjM3LTEuMjEtLjcxLTEuNjItLjQ3NC0uNDExLTEuMDk3LS42MTctMS44NjgtLjYxNy0uNzQ0IDAtMS4zNC4yMDgtMS43ODUuNjI0LS40NDcuNDE2LS42NyAxLjA0My0uNjcgMS44ODFoMS40MzZjMC0uNS4wOTQtLjg0Ni4yODEtMS4wMzguMTg4LS4xOTEuNDQ1LS4yODcuNzcyLS4yODdzLjU4NS4wOTcuNzc3LjI5MmMuMTkuMTk1LjI4Ni40MzcuMjg2LjcyNiAwIC4yOS0uMDg5LjU1LS4yNjYuNzg1cy0uNjcuNjI4LTEuNDc5IDEuMTg0Yy0uNjkxLjQ3Ny0xLjYyNy45MjctMS45MDggMS4zNWwuMDE0IDEuNTY5SDE3VjYuODk2aC0zLjQ2MXoiLz48L3N2Zz4=\",className:void 0,title:void 0},subscript:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTExLjg2NiAxMS42NDZIOS4wNkw1Ljg2NyA3Ljk0MmwtMy4xMjEgMy43MDRIMGw0LjUyNC01LjA2NEwuMjE4IDEuODA0aDIuNzdsMyAzLjQ2NCAzLjAyMy0zLjQ2NGgyLjY1TDcuMzA2IDYuNTgybDQuNTYgNS4wNjR6bTEuNzI1IDIuMDU4bDEuODI3LTEuMzY4Yy42NC0uNDM1IDEuMDYyLS44NCAxLjI2NC0xLjIxMi4yMDItLjM3Mi4zMDItLjc3My4zMDItMS4yMDIgMC0uNy0uMjM3LTEuMjY2LS43MS0xLjY5Ni0uNDc0LS40MzEtMS4wOTctLjY0Ni0xLjg2OS0uNjQ2LS43NDQgMC0xLjM0LjIxOC0xLjc4NS42NTMtLjQ0Ni40MzYtLjY3IDEuMDkyLS42NyAxLjk3aDEuNDM2YzAtLjUyNC4wOTQtLjg4Ni4yODEtMS4wODcuMTg4LS4yLjQ0NS0uMzAxLjc3Mi0uMzAxcy41ODYuMTAyLjc3Ny4zMDZjLjE5LjIwNC4yODYuNDU4LjI4Ni43NiAwIC4zMDMtLjA4OC41NzctLjI2Ni44MjItLjE3Ny4yNDUtLjY3LjY1OC0xLjQ3OCAxLjI0LS42OTIuNS0xLjYyOC45NzEtMS45MSAxLjQxM0wxMS44NjQgMTVIMTd2LTEuMjk2aC0zLjQxeiIvPjwvc3ZnPg==\",className:void 0,title:void 0}},blockType:{inDropdown:!0,options:[\"Normal\",\"H1\",\"H2\",\"H3\",\"H4\",\"H5\",\"H6\",\"Blockquote\",\"Code\"],className:void 0,component:void 0,dropdownClassName:void 0,title:void 0},fontSize:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTEuOTIxIDMuMTE5YS40MjcuNDI3IDAgMCAwIC4zMzUuMTY0aC45N2EuNDI2LjQyNiAwIDAgMCAuMzA0LS4xMy40NDEuNDQxIDAgMCAwIC4xMjUtLjMxbC4wMDItMi40MWEuNDM0LjQzNCAwIDAgMC0uNDMtLjQzMkguNDNBLjQzNC40MzQgMCAwIDAgMCAuNDR2Mi40MDZjMCAuMjQyLjE5Mi40MzguNDMuNDM4aC45N2MuMTMgMCAuMjU0LS4wNi4zMzUtLjE2NWwuNzMtLjkzSDUuNTR2MTEuMzZjMCAuMjQxLjE5Mi40MzcuNDMuNDM3aDEuNzE3Yy4yMzcgMCAuNDMtLjE5Ni40My0uNDM3VjIuMTg4aDMuMDdsLjczNC45MzF6TTEzLjg5OCAxMS4yNjNhLjQyNS40MjUgMCAwIDAtLjQ4Mi0uMTQ2bC0uNTQ3LjE5NFY5LjYxN2EuNDQyLjQ0MiAwIDAgMC0uMTI2LS4zMS40MjYuNDI2IDAgMCAwLS4zMDQtLjEyN2gtLjQyOWEuNDM0LjQzNCAwIDAgMC0uNDMuNDM3djEuNjk0bC0uNTQ3LS4xOTRhLjQyNS40MjUgMCAwIDAtLjQ4MS4xNDYuNDQ0LjQ0NCAwIDAgMC0uMDE2LjUxMmwxLjMzMiAyLjAxN2EuNDI3LjQyNyAwIDAgMCAuNzEzIDBsMS4zMzMtMi4wMTdhLjQ0NC40NDQgMCAwIDAtLjAxNi0uNTEyeiIvPjwvZz48L3N2Zz4=\",options:[8,9,10,11,12,14,16,18,24,30,36,48,60,72,96],className:void 0,component:void 0,dropdownClassName:void 0,title:void 0},fontFamily:{options:[\"Arial\",\"Georgia\",\"Impact\",\"Tahoma\",\"Times New Roman\",\"Verdana\"],className:void 0,component:void 0,dropdownClassName:void 0,title:void 0},list:{inDropdown:!1,className:void 0,component:void 0,dropdownClassName:void 0,options:[\"unordered\",\"ordered\",\"indent\",\"outdent\"],unordered:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMS43MiAzLjQyN2MuOTUxIDAgMS43MjItLjc2OCAxLjcyMi0xLjcwOFMyLjY3LjAxIDEuNzIuMDFDLjc3LjAwOCAwIC43NzUgMCAxLjcxNWMwIC45NC43NzQgMS43MTEgMS43MiAxLjcxMXptMC0yLjYyNWMuNTEgMCAuOTIyLjQxMi45MjIuOTE0YS45Mi45MiAwIDAgMS0xLjg0MiAwIC45Mi45MiAwIDAgMSAuOTItLjkxNHpNMS43MiA4LjcwM2MuOTUxIDAgMS43MjItLjc2OCAxLjcyMi0xLjcwOFMyLjY3IDUuMjg3IDEuNzIgNS4yODdDLjc3IDUuMjg3IDAgNi4wNTIgMCA2Ljk5NXMuNzc0IDEuNzA4IDEuNzIgMS43MDh6bTAtMi42MjJjLjUxIDAgLjkyMi40MTIuOTIyLjkxNGEuOTIuOTIgMCAwIDEtMS44NDIgMGMwLS41MDUuNDE1LS45MTQuOTItLjkxNHpNMS43MiAxMy45ODJjLjk1MSAwIDEuNzIyLS43NjggMS43MjItMS43MDggMC0uOTQzLS43NzQtMS43MDgtMS43MjEtMS43MDgtLjk0NyAwLTEuNzIxLjc2OC0xLjcyMSAxLjcwOHMuNzc0IDEuNzA4IDEuNzIgMS43MDh6bTAtMi42MjVjLjUxIDAgLjkyMi40MTIuOTIyLjkxNGEuOTIuOTIgMCAxIDEtMS44NDIgMCAuOTIuOTIgMCAwIDEgLjkyLS45MTR6TTUuNzQ0IDIuMTE1aDkuODQ1YS40LjQgMCAwIDAgLjQwMS0uMzk5LjQuNCAwIDAgMC0uNDAxLS4zOTlINS43NDRhLjQuNCAwIDAgMC0uNDAyLjM5OS40LjQgMCAwIDAgLjQwMi4zOTl6TTUuNzQ0IDcuMzk0aDkuODQ1YS40LjQgMCAwIDAgLjQwMS0uMzk5LjQuNCAwIDAgMC0uNDAxLS4zOThINS43NDRhLjQuNCAwIDAgMC0uNDAyLjM5OC40LjQgMCAwIDAgLjQwMi4zOTl6TTUuNzQ0IDEyLjY3aDkuODQ1YS40LjQgMCAwIDAgLjQwMS0uMzk5LjQuNCAwIDAgMC0uNDAxLS4zOTlINS43NDRhLjQuNCAwIDAgMC0uNDAyLjQuNC40IDAgMCAwIC40MDIuMzk4eiIvPjwvZz48L3N2Zz4=\",className:void 0,title:void 0},ordered:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMTMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNC4yMDIgMS40NjZoOC4xNWMuMzM4IDAgLjYxMi0uMzIyLjYxMi0uNzIgMC0uMzk3LS4yNzQtLjcyLS42MTItLjcyaC04LjE1Yy0uMzM4IDAtLjYxMS4zMjMtLjYxMS43MiAwIC4zOTguMjczLjcyLjYxLjcyek0xMi4zNTIgNS43ODNoLTguMTVjLS4zMzggMC0uNjExLjMyMi0uNjExLjcyIDAgLjM5Ny4yNzMuNzIuNjEuNzJoOC4xNTFjLjMzOCAwIC42MTItLjMyMy42MTItLjcyIDAtLjM5OC0uMjc0LS43Mi0uNjEyLS43MnpNMTIuMzUyIDExLjU0aC04LjE1Yy0uMzM4IDAtLjYxMS4zMjItLjYxMS43MiAwIC4zOTYuMjczLjcxOS42MS43MTloOC4xNTFjLjMzOCAwIC42MTItLjMyMy42MTItLjcyIDAtLjM5Ny0uMjc0LS43Mi0uNjEyLS43MnpNLjc2NyAxLjI0OXYxLjgwMmMwIC4xOTUuMTM2LjM0My4zMTUuMzQzLjE3NiAwIC4zMTUtLjE1LjMxNS0uMzQzVi4zNTZjMC0uMTktLjEzMy0uMzM5LS4zMDItLjMzOS0uMTQ4IDAtLjIyMy4xMTgtLjI0Ny4xNTZhLjIyOC4yMjggMCAwIDAtLjAwMy4wMDVMLjU3OS42MjFhLjQ3NC40NzQgMCAwIDAtLjA5OC4yNzNjMCAuMTk0LjEyOC4zNTEuMjg2LjM1NXpNLjM1MiA4LjE5SDEuNTVjLjE1NyAwIC4yODUtLjE2Mi4yODUtLjM2MiAwLS4xOTgtLjEyOC0uMzU5LS4yODUtLjM1OUguNjh2LS4wMDZjMC0uMTA3LjIxLS4yODEuMzc4LS40MjIuMzM2LS4yNzguNzUzLS42MjUuNzUzLTEuMjI2IDAtLjU3LS4zNzYtMS0uODc0LTEtLjQ3NyAwLS44MzYuMzg1LS44MzYuODk3IDAgLjI5Ny4xNjQuNDAyLjMwNS40MDIuMiAwIC4zMjEtLjE3Ni4zMjEtLjM0NiAwLS4xMDYuMDIzLS4yMjguMjA0LS4yMjguMjQzIDAgLjI1LjI1NC4yNS4yODMgMCAuMjI4LS4yNTIuNDQyLS40OTUuNjQ5LS4zMDEuMjU1LS42NDIuNTQ0LS42NDIuOTkydi4zODRjMCAuMjA1LjE1OS4zNDMuMzA4LjM0M3pNMS43NyAxMC41NDNjMC0uNTkyLS4yOTYtLjkzMS0uODE0LS45MzEtLjY4IDAtLjg1OS41Ny0uODU5Ljg3MiAwIC4zNTEuMjIyLjM5LjMxOC4zOS4xODUgMCAuMzEtLjE0OC4zMS0uMzY2IDAtLjA4NC4wMjYtLjE4MS4yMjQtLjE4MS4xNDIgMCAuMi4wMjQuMi4yNjcgMCAuMjM3LS4wNDMuMjYzLS4yMTMuMjYzLS4xNjQgMC0uMjg4LjE1Mi0uMjg4LjM1NCAwIC4yLjEyNS4zNS4yOTEuMzUuMjI1IDAgLjI3LjEwOC4yNy4yODN2LjA3NWMwIC4yOTQtLjA5Ny4zNS0uMjc3LjM1LS4yNDggMC0uMjY3LS4xNS0uMjY3LS4xOTcgMC0uMTc0LS4wOTgtLjM1LS4zMTctLjM1LS4xOTIgMC0uMzA3LjE0MS0uMzA3LjM3OCAwIC40My4zMTMuODg4Ljg5NS44ODguNTY0IDAgLjkwMS0uNC45MDEtMS4wN3YtLjA3NGMwLS4yNzQtLjA3NC0uNTAyLS4yMTQtLjY2Ni4wOTYtLjE2My4xNDgtLjM4LjE0OC0uNjM1eiIvPjwvZz48L3N2Zz4=\",className:void 0,title:void 0},indent:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNS43MTYgMy4yMTFIMTd2MS4xOTdINS43MTZ6TTAgLjAyaDE3djEuMTk3SDB6TTAgMTIuNzgzaDE3djEuMTk3SDB6TTUuNzE2IDkuNTkzSDE3djEuMTk3SDUuNzE2ek01LjcxNiA2LjQwMkgxN3YxLjE5N0g1LjcxNnpNLjE4NyA5LjQ5MUwyLjUyIDcgLjE4NyA0LjUwOXoiLz48L2c+PC9zdmc+\",className:void 0,title:void 0},outdent:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNS4zOTYgMy4xOTNoMTAuNTczVjQuMzlINS4zOTZ6TS4wMzkuMDAzaDE1LjkzVjEuMkguMDM5ek0uMDM5IDEyLjc2NmgxNS45M3YxLjE5N0guMDM5ek01LjM5NiA5LjU3NWgxMC41NzN2MS4xOTdINS4zOTZ6TTUuMzk2IDYuMzg0aDEwLjU3M3YxLjE5N0g1LjM5NnpNMi4xODcgNC40OTFMMCA2Ljk4M2wyLjE4NyAyLjQ5MXoiLz48L2c+PC9zdmc+\",className:void 0,title:void 0},title:void 0},textAlign:{inDropdown:!1,className:void 0,component:void 0,dropdownClassName:void 0,options:[\"left\",\"center\",\"right\",\"justify\"],left:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNOC40OTMgMTQuODg3SC4zMjZhLjMyNi4zMjYgMCAwIDEgMC0uNjUyaDguMTY3YS4zMjYuMzI2IDAgMCAxIDAgLjY1MnpNMTQuNjE4IDEwLjE2MkguMzI2YS4zMjYuMzI2IDAgMCAxIDAtLjY1M2gxNC4yOTJhLjMyNi4zMjYgMCAwIDEgMCAuNjUzek04LjQ5MyA1LjQzNUguMzI2YS4zMjYuMzI2IDAgMCAxIDAtLjY1Mmg4LjE2N2EuMzI2LjMyNiAwIDAgMSAwIC42NTJ6TTE0LjYxOC43MDlILjMyNmEuMzI2LjMyNiAwIDAgMSAwLS42NTJoMTQuMjkyYS4zMjYuMzI2IDAgMCAxIDAgLjY1MnoiLz48L2c+PC9zdmc+\",className:void 0,title:void 0},center:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTEuNTU2IDE0Ljg4N0gzLjM4OGEuMzI2LjMyNiAwIDAgMSAwLS42NTJoOC4xNjdhLjMyNi4zMjYgMCAwIDEgMCAuNjUyek0xNC42MTggMTAuMTYySC4zMjZhLjMyNi4zMjYgMCAwIDEgMC0uNjUzaDE0LjI5MmEuMzI2LjMyNiAwIDAgMSAwIC42NTN6TTExLjU1NiA1LjQzNUgzLjM4OGEuMzI2LjMyNiAwIDAgMSAwLS42NTJoOC4xNjdhLjMyNi4zMjYgMCAwIDEgMCAuNjUyek0xNC42MTguNzA5SC4zMjZhLjMyNi4zMjYgMCAwIDEgMC0uNjUyaDE0LjI5MmEuMzI2LjMyNiAwIDAgMSAwIC42NTJ6Ii8+PC9nPjwvc3ZnPg==\",className:void 0,title:void 0},right:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuNjE4IDE0Ljg4N0g2LjQ1YS4zMjYuMzI2IDAgMCAxIDAtLjY1Mmg4LjE2N2EuMzI2LjMyNiAwIDAgMSAwIC42NTJ6TTE0LjYxOCAxMC4xNjJILjMyNmEuMzI2LjMyNiAwIDAgMSAwLS42NTNoMTQuMjkyYS4zMjYuMzI2IDAgMCAxIDAgLjY1M3pNMTQuNjE4IDUuNDM1SDYuNDVhLjMyNi4zMjYgMCAwIDEgMC0uNjUyaDguMTY3YS4zMjYuMzI2IDAgMCAxIDAgLjY1MnpNMTQuNjE4LjcwOUguMzI2YS4zMjYuMzI2IDAgMCAxIDAtLjY1MmgxNC4yOTJhLjMyNi4zMjYgMCAwIDEgMCAuNjUyeiIvPjwvZz48L3N2Zz4=\",className:void 0,title:void 0},justify:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuNjIgMTQuODg4SC4zMjVhLjMyNi4zMjYgMCAwIDEgMC0uNjUySDE0LjYyYS4zMjYuMzI2IDAgMCAxIDAgLjY1MnpNMTQuNjIgMTAuMTYySC4zMjVhLjMyNi4zMjYgMCAwIDEgMC0uNjUySDE0LjYyYS4zMjYuMzI2IDAgMCAxIDAgLjY1MnpNMTQuNjIgNS40MzZILjMyNWEuMzI2LjMyNiAwIDAgMSAwLS42NTJIMTQuNjJhLjMyNi4zMjYgMCAwIDEgMCAuNjUyek0xNC42Mi43MUguMzI1YS4zMjYuMzI2IDAgMCAxIDAtLjY1M0gxNC42MmEuMzI2LjMyNiAwIDAgMSAwIC42NTN6Ii8+PC9nPjwvc3ZnPg==\",className:void 0,title:void 0},title:void 0},colorPicker:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuNDA2LjU4NWExLjk5OCAxLjk5OCAwIDAgMC0yLjgyNSAwbC0uNTQuNTRhLjc0MS43NDEgMCAxIDAtMS4wNDggMS4wNDhsLjE3NS4xNzUtNS44MjYgNS44MjUtMi4wMjIgMi4wMjNhLjkxLjkxIDAgMCAwLS4yNjYuNjAybC0uMDA1LjEwOHYuMDAybC0uMDgxIDEuODI5YS4zMDIuMzAyIDAgMCAwIC4zMDIuMzE2aC4wMTNsLjk3LS4wNDQuNTkyLS4wMjYuMjY4LS4wMTJjLjI5Ny0uMDEzLjU3OS0uMTM3Ljc5LS4zNDdsNy43Ny03Ljc3LjE0Ni4xNDRhLjc0Ljc0IDAgMCAwIDEuMDQ4IDBjLjI5LS4yOS4yOS0uNzU5IDAtMS4wNDhsLjU0LS41NGMuNzgtLjc4Ljc4LTIuMDQ0IDAtMi44MjV6TTguNzk1IDcuMzMzbC0yLjczLjUxNSA0LjQ1Mi00LjQ1MiAxLjEwOCAxLjEwNy0yLjgzIDIuODN6TTIuMDggMTMuNjczYy0xLjE0OCAwLTIuMDguMjk1LTIuMDguNjYgMCAuMzYzLjkzMi42NTggMi4wOC42NTggMS4xNSAwIDIuMDgtLjI5NCAyLjA4LS42NTkgMC0uMzY0LS45My0uNjU5LTIuMDgtLjY1OXoiLz48L2c+PC9zdmc+\",className:void 0,component:void 0,popupClassName:void 0,colors:[\"rgb(97,189,109)\",\"rgb(26,188,156)\",\"rgb(84,172,210)\",\"rgb(44,130,201)\",\"rgb(147,101,184)\",\"rgb(71,85,119)\",\"rgb(204,204,204)\",\"rgb(65,168,95)\",\"rgb(0,168,133)\",\"rgb(61,142,185)\",\"rgb(41,105,176)\",\"rgb(85,57,130)\",\"rgb(40,50,78)\",\"rgb(0,0,0)\",\"rgb(247,218,100)\",\"rgb(251,160,38)\",\"rgb(235,107,86)\",\"rgb(226,80,65)\",\"rgb(163,143,132)\",\"rgb(239,239,239)\",\"rgb(255,255,255)\",\"rgb(250,197,28)\",\"rgb(243,121,52)\",\"rgb(209,72,65)\",\"rgb(184,49,47)\",\"rgb(124,112,107)\",\"rgb(209,213,216)\"],title:void 0},link:{inDropdown:!1,className:void 0,component:void 0,popupClassName:void 0,dropdownClassName:void 0,showOpenOptionOnHover:!0,defaultTargetOption:\"_self\",options:[\"link\",\"unlink\"],link:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEzLjk2Ny45NUEzLjIyNiAzLjIyNiAwIDAgMCAxMS42Ny4wMDJjLS44NyAwLTEuNjg2LjMzNy0yLjI5Ny45NDhMNy4xMDUgMy4yMThBMy4yNDcgMy4yNDcgMCAwIDAgNi4yNCA2LjI0YTMuMjI1IDMuMjI1IDAgMCAwLTMuMDIyLjg2NUwuOTUgOS4zNzNhMy4yNTMgMy4yNTMgMCAwIDAgMCA0LjU5NCAzLjIyNiAzLjIyNiAwIDAgMCAyLjI5Ny45NDhjLjg3IDAgMS42ODYtLjMzNiAyLjI5OC0uOTQ4TDcuODEyIDExLjdhMy4yNDcgMy4yNDcgMCAwIDAgLjg2NS0zLjAyMyAzLjIyNSAzLjIyNSAwIDAgMCAzLjAyMi0uODY1bDIuMjY4LTIuMjY3YTMuMjUyIDMuMjUyIDAgMCAwIDAtNC41OTV6TTcuMTA1IDEwLjk5M0w0LjgzNyAxMy4yNmEyLjIzMyAyLjIzMyAwIDAgMS0xLjU5LjY1NSAyLjIzMyAyLjIzMyAwIDAgMS0xLjU5LS42NTUgMi4yNTIgMi4yNTIgMCAwIDEgMC0zLjE4bDIuMjY4LTIuMjY4YTIuMjMyIDIuMjMyIDAgMCAxIDEuNTktLjY1NWMuNDMgMCAuODQxLjEyIDEuMTk1LjM0M0w0Ljc3MiA5LjQzOGEuNS41IDAgMSAwIC43MDcuNzA3bDEuOTM5LTEuOTM4Yy41NDUuODY4LjQ0MiAyLjAzLS4zMTMgMi43ODV6bTYuMTU1LTYuMTU1bC0yLjI2OCAyLjI2N2EyLjIzMyAyLjIzMyAwIDAgMS0xLjU5LjY1NWMtLjQzMSAwLS44NDEtLjEyLTEuMTk1LS4zNDNsMS45MzgtMS45MzhhLjUuNSAwIDEgMC0uNzA3LS43MDdMNy40OTkgNi43MWEyLjI1MiAyLjI1MiAwIDAgMSAuMzEzLTIuNzg1bDIuMjY3LTIuMjY4YTIuMjMzIDIuMjMzIDAgMCAxIDEuNTktLjY1NSAyLjIzMyAyLjIzMyAwIDAgMSAyLjI0NiAyLjI0NWMwIC42MDMtLjIzMiAxLjE2OC0uNjU1IDEuNTl6IiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=\",className:void 0,title:void 0},unlink:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTMuOTU2IDEuMDM3YTMuNTUgMy41NSAwIDAgMC01LjAxNCAwTDYuNDM2IDMuNTQ0YS41NDUuNTQ1IDAgMSAwIC43Ny43N2wyLjUwOC0yLjUwNmEyLjQzOCAyLjQzOCAwIDAgMSAxLjczNS0uNzE1Yy42NTggMCAxLjI3NS4yNTQgMS43MzYuNzE1LjQ2LjQ2MS43MTUgMS4wNzguNzE1IDEuNzM2IDAgLjY1OC0uMjU0IDEuMjc0LS43MTUgMS43MzVMOS45MDcgOC41NThhMi40NTggMi40NTggMCAwIDEtMy40NzIgMCAuNTQ1LjU0NSAwIDEgMC0uNzcxLjc3MSAzLjUzNCAzLjUzNCAwIDAgMCAyLjUwNyAxLjAzN2MuOTA4IDAgMS44MTYtLjM0NiAyLjUwNy0xLjAzN2wzLjI3OC0zLjI3OGEzLjUyIDMuNTIgMCAwIDAgMS4wMzUtMi41MDdjMC0uOTUtLjM2Ny0xLjg0LTEuMDM1LTIuNTA3eiIvPjxwYXRoIGQ9Ik03LjQgMTEuMDY1bC0yLjEyMiAyLjEyYTIuNDM3IDIuNDM3IDAgMCAxLTEuNzM1LjcxNiAyLjQzNyAyLjQzNyAwIDAgMS0xLjczNi0uNzE1IDIuNDU3IDIuNDU3IDAgMCAxIDAtMy40NzFsMy4wODYtMy4wODZhMi40MzggMi40MzggMCAwIDEgMS43MzUtLjcxNWMuNjU4IDAgMS4yNzUuMjU0IDEuNzM2LjcxNWEuNTQ1LjU0NSAwIDEgMCAuNzcxLS43NzEgMy41NSAzLjU1IDAgMCAwLTUuMDE0IDBMMS4wMzYgOC45NDRBMy41MiAzLjUyIDAgMCAwIDAgMTEuNDVjMCAuOTUuMzY3IDEuODQgMS4wMzUgMi41MDdhMy41MiAzLjUyIDAgMCAwIDIuNTA2IDEuMDM1Yy45NSAwIDEuODQtLjM2OCAyLjUwNy0xLjAzNWwyLjEyMi0yLjEyMWEuNTQ1LjU0NSAwIDAgMC0uNzcxLS43NzF6TTkuMjc0IDEyLjAwMmEuNTQ2LjU0NiAwIDAgMC0uNTQ2LjU0NXYxLjYzN2EuNTQ2LjU0NiAwIDAgMCAxLjA5MSAwdi0xLjYzN2EuNTQ1LjU0NSAwIDAgMC0uNTQ1LS41NDV6TTExLjIzIDExLjYxNmEuNTQ1LjU0NSAwIDEgMC0uNzcyLjc3MmwxLjE1NyAxLjE1NmEuNTQzLjU0MyAwIDAgMCAuNzcxIDAgLjU0NS41NDUgMCAwIDAgMC0uNzdsLTEuMTU2LTEuMTU4ek0xMi41MzcgOS44MkgxMC45YS41NDYuNTQ2IDAgMCAwIDAgMS4wOTFoMS42MzdhLjU0Ni41NDYgMCAwIDAgMC0xLjA5ek00LjkxIDMuNTQ3YS41NDYuNTQ2IDAgMCAwIC41NDUtLjU0NVYxLjM2NmEuNTQ2LjU0NiAwIDAgMC0xLjA5IDB2MS42MzZjMCAuMzAxLjI0NC41NDUuNTQ1LjU0NXpNMi44ODggMy45MzNhLjU0My41NDMgMCAwIDAgLjc3MSAwIC41NDUuNTQ1IDAgMCAwIDAtLjc3MUwyLjUwMiAyLjAwNWEuNTQ1LjU0NSAwIDEgMC0uNzcxLjc3bDEuMTU3IDEuMTU4ek0xLjYyOCA1LjczaDEuNjM2YS41NDYuNTQ2IDAgMCAwIDAtMS4wOTJIMS42MjhhLjU0Ni41NDYgMCAwIDAgMCAxLjA5MXoiLz48L2c+PC9zdmc+\",className:void 0,title:void 0},linkCallback:void 0},emoji:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTciIHZpZXdCb3g9IjE1LjcyOSAyMi4wODIgMTcgMTciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI5LjcwOCAyNS4xMDRjLTMuMDIxLTMuMDIyLTcuOTM3LTMuMDIyLTEwLjk1OCAwLTMuMDIxIDMuMDItMy4wMiA3LjkzNiAwIDEwLjk1OCAzLjAyMSAzLjAyIDcuOTM3IDMuMDIgMTAuOTU4LS4wMDEgMy4wMi0zLjAyMSAzLjAyLTcuOTM2IDAtMTAuOTU3em0tLjg0NSAxMC4xMTJhNi41NiA2LjU2IDAgMCAxLTkuMjY4IDAgNi41NiA2LjU2IDAgMCAxIDAtOS4yNjcgNi41NiA2LjU2IDAgMCAxIDkuMjY4IDAgNi41NiA2LjU2IDAgMCAxIDAgOS4yNjd6bS03LjUyNC02LjczYS45MDYuOTA2IDAgMSAxIDEuODExIDAgLjkwNi45MDYgMCAwIDEtMS44MTEgMHptNC4xMDYgMGEuOTA2LjkwNiAwIDEgMSAxLjgxMiAwIC45MDYuOTA2IDAgMCAxLTEuODEyIDB6bTIuMTQxIDMuNzA4Yy0uNTYxIDEuMjk4LTEuODc1IDIuMTM3LTMuMzQ4IDIuMTM3LTEuNTA1IDAtMi44MjctLjg0My0zLjM2OS0yLjE0N2EuNDM4LjQzOCAwIDAgMSAuODEtLjMzNmMuNDA1Ljk3NiAxLjQxIDEuNjA3IDIuNTU5IDEuNjA3IDEuMTIzIDAgMi4xMjEtLjYzMSAyLjU0NC0xLjYwOGEuNDM4LjQzOCAwIDAgMSAuODA0LjM0N3oiLz48L3N2Zz4=\",className:void 0,component:void 0,popupClassName:void 0,emojis:[\"😀\",\"😁\",\"😂\",\"😃\",\"😉\",\"😋\",\"😎\",\"😍\",\"😗\",\"🤗\",\"🤔\",\"😣\",\"😫\",\"😴\",\"😌\",\"🤓\",\"😛\",\"😜\",\"😠\",\"😇\",\"😷\",\"😈\",\"👻\",\"😺\",\"😸\",\"😹\",\"😻\",\"😼\",\"😽\",\"🙀\",\"🙈\",\"🙉\",\"🙊\",\"👼\",\"👮\",\"🕵\",\"💂\",\"👳\",\"🎅\",\"👸\",\"👰\",\"👲\",\"🙍\",\"🙇\",\"🚶\",\"🏃\",\"💃\",\"⛷\",\"🏂\",\"🏌\",\"🏄\",\"🚣\",\"🏊\",\"⛹\",\"🏋\",\"🚴\",\"👫\",\"💪\",\"👈\",\"👉\",\"👆\",\"🖕\",\"👇\",\"🖖\",\"🤘\",\"🖐\",\"👌\",\"👍\",\"👎\",\"✊\",\"👊\",\"👏\",\"🙌\",\"🙏\",\"🐵\",\"🐶\",\"🐇\",\"🐥\",\"🐸\",\"🐌\",\"🐛\",\"🐜\",\"🐝\",\"🍉\",\"🍄\",\"🍔\",\"🍤\",\"🍨\",\"🍪\",\"🎂\",\"🍰\",\"🍾\",\"🍷\",\"🍸\",\"🍺\",\"🌍\",\"🚑\",\"⏰\",\"🌙\",\"🌝\",\"🌞\",\"⭐\",\"🌟\",\"🌠\",\"🌨\",\"🌩\",\"⛄\",\"🔥\",\"🎄\",\"🎈\",\"🎉\",\"🎊\",\"🎁\",\"🎗\",\"🏀\",\"🏈\",\"🎲\",\"🔇\",\"🔈\",\"📣\",\"🔔\",\"🎵\",\"🎷\",\"💰\",\"🖊\",\"📅\",\"✅\",\"❎\",\"💯\"],title:void 0},embedded:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYuNzA4IDYuNjE1YS40MzYuNDM2IDAgMCAwLS41NDMuMjkxbC0xLjgzIDYuMDQ1YS40MzYuNDM2IDAgMCAwIC44MzMuMjUyTDcgNy4xNmEuNDM2LjQzNiAwIDAgMC0uMjktLjU0NHpNOC45MzEgNi42MTVhLjQzNi40MzYgMCAwIDAtLjU0My4yOTFsLTEuODMgNi4wNDVhLjQzNi40MzYgMCAwIDAgLjgzNC4yNTJsMS44My02LjA0NGEuNDM2LjQzNiAwIDAgMC0uMjktLjU0NHoiLz48cGF0aCBkPSJNMTYuNTY0IDBILjQzNkEuNDM2LjQzNiAwIDAgMCAwIC40MzZ2MTYuMTI4YzAgLjI0LjE5NS40MzYuNDM2LjQzNmgxNi4xMjhjLjI0IDAgLjQzNi0uMTk1LjQzNi0uNDM2Vi40MzZBLjQzNi40MzYgMCAwIDAgMTYuNTY0IDB6TTMuNDg3Ljg3MmgxMC4wMjZ2MS43NDNIMy40ODdWLjg3MnptLTIuNjE1IDBoMS43NDN2MS43NDNILjg3MlYuODcyem0xNS4yNTYgMTUuMjU2SC44NzJWMy40ODhoMTUuMjU2djEyLjY0em0wLTEzLjUxM2gtMS43NDNWLjg3MmgxLjc0M3YxLjc0M3oiLz48Y2lyY2xlIGN4PSI5My44NjciIGN5PSIyNDUuMDY0IiByPSIxMy4xMjgiIHRyYW5zZm9ybT0ibWF0cml4KC4wMzMyIDAgMCAuMDMzMiAwIDApIi8+PGNpcmNsZSBjeD0iOTMuODY3IiBjeT0iMzYwLjU5MiIgcj0iMTMuMTI4IiB0cmFuc2Zvcm09Im1hdHJpeCguMDMzMiAwIDAgLjAzMzIgMCAwKSIvPjxwYXRoIGQ9Ik0xNC4yNTQgMTIuNjQxSDEwLjJhLjQzNi40MzYgMCAwIDAgMCAuODcyaDQuMDU0YS40MzYuNDM2IDAgMCAwIDAtLjg3MnoiLz48L3N2Zz4=\",className:void 0,component:void 0,popupClassName:void 0,embedCallback:void 0,defaultSize:{height:\"auto\",width:\"auto\"},title:void 0},image:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQuNzQxIDBILjI2Qy4xMTYgMCAwIC4xMzYgMCAuMzA0djEzLjM5MmMwIC4xNjguMTE2LjMwNC4yNTkuMzA0SDE0Ljc0Yy4xNDMgMCAuMjU5LS4xMzYuMjU5LS4zMDRWLjMwNEMxNSAuMTM2IDE0Ljg4NCAwIDE0Ljc0MSAwem0tLjI1OCAxMy4zOTFILjUxN1YuNjFoMTMuOTY2VjEzLjM5eiIvPjxwYXRoIGQ9Ik00LjEzOCA2LjczOGMuNzk0IDAgMS40NC0uNzYgMS40NC0xLjY5NXMtLjY0Ni0xLjY5NS0xLjQ0LTEuNjk1Yy0uNzk0IDAtMS40NC43Ni0xLjQ0IDEuNjk1IDAgLjkzNC42NDYgMS42OTUgMS40NCAxLjY5NXptMC0yLjc4MWMuNTA5IDAgLjkyMy40ODcuOTIzIDEuMDg2IDAgLjU5OC0uNDE0IDEuMDg2LS45MjMgMS4wODYtLjUwOSAwLS45MjMtLjQ4Ny0uOTIzLTEuMDg2IDAtLjU5OS40MTQtMS4wODYuOTIzLTEuMDg2ek0xLjgxIDEyLjE3NGMuMDYgMCAuMTIyLS4wMjUuMTcxLS4wNzZMNi4yIDcuNzI4bDIuNjY0IDMuMTM0YS4yMzIuMjMyIDAgMCAwIC4zNjYgMCAuMzQzLjM0MyAwIDAgMCAwLS40M0w3Ljk4NyA4Ljk2OWwyLjM3NC0zLjA2IDIuOTEyIDMuMTQyYy4xMDYuMTEzLjI3LjEwNS4zNjYtLjAyYS4zNDMuMzQzIDAgMCAwLS4wMTYtLjQzbC0zLjEwNC0zLjM0N2EuMjQ0LjI0NCAwIDAgMC0uMTg2LS4wOC4yNDUuMjQ1IDAgMCAwLS4xOC4xTDcuNjIyIDguNTM3IDYuMzk0IDcuMDk0YS4yMzIuMjMyIDAgMCAwLS4zNTQtLjAxM2wtNC40IDQuNTZhLjM0My4zNDMgMCAwIDAtLjAyNC40My4yNDMuMjQzIDAgMCAwIC4xOTQuMTAzeiIvPjwvZz48L3N2Zz4=\",className:void 0,component:void 0,popupClassName:void 0,urlEnabled:!0,uploadEnabled:!0,previewImage:!1,alignmentEnabled:!0,uploadCallback:void 0,inputAccept:\"image/gif,image/jpeg,image/jpg,image/png,image/svg\",alt:{present:!1,mandatory:!1},defaultSize:{height:\"auto\",width:\"auto\"},title:void 0},remove:{icon:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgdmlld0JveD0iMCAwIDE2IDE2Ij48cGF0aCBkPSJNOC4xIDE0bDYuNC03LjJjLjYtLjcuNi0xLjgtLjEtMi41bC0yLjctMi43Yy0uMy0uNC0uOC0uNi0xLjMtLjZIOC42Yy0uNSAwLTEgLjItMS40LjZMLjUgOS4yYy0uNi43LS42IDEuOS4xIDIuNWwyLjcgMi43Yy4zLjQuOC42IDEuMy42SDE2di0xSDguMXptLTEuMy0uMXMwLS4xIDAgMGwtMi43LTIuN2MtLjQtLjQtLjQtLjkgMC0xLjNMNy41IDZoLTFsLTMgMy4zYy0uNi43LS42IDEuNy4xIDIuNEw1LjkgMTRINC42Yy0uMiAwLS40LS4xLS42LS4yTDEuMiAxMWMtLjMtLjMtLjMtLjggMC0xLjFMNC43IDZoMS44TDEwIDJoMUw3LjUgNmwzLjEgMy43LTMuNSA0Yy0uMS4xLS4yLjEtLjMuMnoiLz48L3N2Zz4=\",className:void 0,component:void 0,title:void 0},history:{inDropdown:!1,className:void 0,component:void 0,dropdownClassName:void 0,options:[\"undo\",\"redo\"],undo:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcgMTQuODc1YzIuNjcyIDAgNC44NDYtMi4xNDUgNC44NDYtNC43ODEgMC0yLjYzNy0yLjE3NC00Ljc4MS00Ljg0Ni00Ljc4MVY4LjVMMS42MTUgNC4yNSA3IDB2My4xODhjMy44NiAwIDcgMy4wOTggNyA2LjkwNlMxMC44NiAxNyA3IDE3cy03LTMuMDk4LTctNi45MDZoMi4xNTRjMCAyLjYzNiAyLjE3NCA0Ljc4MSA0Ljg0NiA0Ljc4MXoiIGZpbGw9IiMwMDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==\",className:void 0,title:void 0},redo:{icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYuNTA0IDEzLjk3N2E0LjQ5NyA0LjQ5NyAwIDAgMS00LjQ5Mi00LjQ5MiA0LjQ5NyA0LjQ5NyAwIDAgMSA0LjQ5Mi00LjQ5M3YyLjk5NWw0Ljk5LTMuOTkzTDYuNTA0IDB2Mi45OTVhNi40OTYgNi40OTYgMCAwIDAtNi40ODggNi40OWMwIDMuNTc4IDIuOTEgNi40OSA2LjQ4OCA2LjQ5YTYuNDk2IDYuNDk2IDAgMCAwIDYuNDg3LTYuNDloLTEuOTk2YTQuNDk3IDQuNDk3IDAgMCAxLTQuNDkxIDQuNDkyeiIgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+\",className:void 0,title:void 0},title:void 0}},Jo={en:{\"generic.add\":\"Add\",\"generic.cancel\":\"Cancel\",\"components.controls.blocktype.h1\":\"H1\",\"components.controls.blocktype.h2\":\"H2\",\"components.controls.blocktype.h3\":\"H3\",\"components.controls.blocktype.h4\":\"H4\",\"components.controls.blocktype.h5\":\"H5\",\"components.controls.blocktype.h6\":\"H6\",\"components.controls.blocktype.blockquote\":\"Blockquote\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"Block Type\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Color Picker\",\"components.controls.colorpicker.text\":\"Text\",\"components.controls.colorpicker.background\":\"Highlight\",\"components.controls.embedded.embedded\":\"Embedded\",\"components.controls.embedded.embeddedlink\":\"Embedded Link\",\"components.controls.embedded.enterlink\":\"Enter link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Font\",\"components.controls.fontsize.fontsize\":\"Font Size\",\"components.controls.history.history\":\"History\",\"components.controls.history.undo\":\"Undo\",\"components.controls.history.redo\":\"Redo\",\"components.controls.image.image\":\"Image\",\"components.controls.image.fileUpload\":\"File Upload\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Drop the file or click to upload\",\"components.controls.inline.bold\":\"Bold\",\"components.controls.inline.italic\":\"Italic\",\"components.controls.inline.underline\":\"Underline\",\"components.controls.inline.strikethrough\":\"Strikethrough\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Superscript\",\"components.controls.inline.subscript\":\"Subscript\",\"components.controls.link.linkTitle\":\"Link Title\",\"components.controls.link.linkTarget\":\"Link Target\",\"components.controls.link.linkTargetOption\":\"Open link in new window\",\"components.controls.link.link\":\"Link\",\"components.controls.link.unlink\":\"Unlink\",\"components.controls.list.list\":\"List\",\"components.controls.list.unordered\":\"Unordered\",\"components.controls.list.ordered\":\"Ordered\",\"components.controls.list.indent\":\"Indent\",\"components.controls.list.outdent\":\"Outdent\",\"components.controls.remove.remove\":\"Remove\",\"components.controls.textalign.textalign\":\"Text Align\",\"components.controls.textalign.left\":\"Left\",\"components.controls.textalign.center\":\"Center\",\"components.controls.textalign.right\":\"Right\",\"components.controls.textalign.justify\":\"Justify\"},fr:{\"generic.add\":\"Ok\",\"generic.cancel\":\"Annuler\",\"components.controls.blocktype.h1\":\"Titre 1\",\"components.controls.blocktype.h2\":\"Titre 2\",\"components.controls.blocktype.h3\":\"Titre 3\",\"components.controls.blocktype.h4\":\"Titre 4\",\"components.controls.blocktype.h5\":\"Titre 5\",\"components.controls.blocktype.h6\":\"Titre 6\",\"components.controls.blocktype.blockquote\":\"Citation\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"Type bloc\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Palette de couleur\",\"components.controls.colorpicker.text\":\"Texte\",\"components.controls.colorpicker.background\":\"Fond\",\"components.controls.embedded.embedded\":\"Embedded\",\"components.controls.embedded.embeddedlink\":\"Lien iFrame\",\"components.controls.embedded.enterlink\":\"Entrer le lien\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Police\",\"components.controls.fontsize.fontsize\":\"Taille de police\",\"components.controls.history.history\":\"Historique\",\"components.controls.history.undo\":\"Précédent\",\"components.controls.history.redo\":\"Suivant\",\"components.controls.image.image\":\"Image\",\"components.controls.image.fileUpload\":\"Téléchargement\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Glisser une image ou cliquer pour télécharger\",\"components.controls.inline.bold\":\"Gras\",\"components.controls.inline.italic\":\"Italique\",\"components.controls.inline.underline\":\"Souligner\",\"components.controls.inline.strikethrough\":\"Barrer\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Exposant\",\"components.controls.inline.subscript\":\"Indice\",\"components.controls.link.linkTitle\":\"Titre du lien\",\"components.controls.link.linkTarget\":\"Cible du lien\",\"components.controls.link.linkTargetOption\":\"Ouvrir le lien dans une nouvelle fenêtre\",\"components.controls.link.link\":\"Lier\",\"components.controls.link.unlink\":\"Délier\",\"components.controls.list.list\":\"Liste\",\"components.controls.list.unordered\":\"Désordonnée\",\"components.controls.list.ordered\":\"Ordonnée\",\"components.controls.list.indent\":\"Augmenter le retrait\",\"components.controls.list.outdent\":\"Diminuer le retrait\",\"components.controls.remove.remove\":\"Supprimer\",\"components.controls.textalign.textalign\":\"Alignement du texte\",\"components.controls.textalign.left\":\"Gauche\",\"components.controls.textalign.center\":\"Centre\",\"components.controls.textalign.right\":\"Droite\",\"components.controls.textalign.justify\":\"Justifier\"},zh:{\"generic.add\":\"添加\",\"generic.cancel\":\"取消\",\"components.controls.blocktype.h1\":\"标题1\",\"components.controls.blocktype.h2\":\"标题2\",\"components.controls.blocktype.h3\":\"标题3\",\"components.controls.blocktype.h4\":\"标题4\",\"components.controls.blocktype.h5\":\"标题5\",\"components.controls.blocktype.h6\":\"标题6\",\"components.controls.blocktype.blockquote\":\"引用\",\"components.controls.blocktype.code\":\"源码\",\"components.controls.blocktype.blocktype\":\"样式\",\"components.controls.blocktype.normal\":\"正文\",\"components.controls.colorpicker.colorpicker\":\"选色器\",\"components.controls.colorpicker.text\":\"文字\",\"components.controls.colorpicker.background\":\"背景\",\"components.controls.embedded.embedded\":\"内嵌\",\"components.controls.embedded.embeddedlink\":\"内嵌网页\",\"components.controls.embedded.enterlink\":\"输入网页地址\",\"components.controls.emoji.emoji\":\"表情符号\",\"components.controls.fontfamily.fontfamily\":\"字体\",\"components.controls.fontsize.fontsize\":\"字号\",\"components.controls.history.history\":\"历史\",\"components.controls.history.undo\":\"撤销\",\"components.controls.history.redo\":\"恢复\",\"components.controls.image.image\":\"图片\",\"components.controls.image.fileUpload\":\"来自文件\",\"components.controls.image.byURL\":\"在线图片\",\"components.controls.image.dropFileText\":\"点击或者拖拽文件上传\",\"components.controls.inline.bold\":\"粗体\",\"components.controls.inline.italic\":\"斜体\",\"components.controls.inline.underline\":\"下划线\",\"components.controls.inline.strikethrough\":\"删除线\",\"components.controls.inline.monospace\":\"等宽字体\",\"components.controls.inline.superscript\":\"上标\",\"components.controls.inline.subscript\":\"下标\",\"components.controls.link.linkTitle\":\"超链接\",\"components.controls.link.linkTarget\":\"输入链接地址\",\"components.controls.link.linkTargetOption\":\"在新窗口中打开链接\",\"components.controls.link.link\":\"链接\",\"components.controls.link.unlink\":\"删除链接\",\"components.controls.list.list\":\"列表\",\"components.controls.list.unordered\":\"项目符号\",\"components.controls.list.ordered\":\"编号\",\"components.controls.list.indent\":\"增加缩进量\",\"components.controls.list.outdent\":\"减少缩进量\",\"components.controls.remove.remove\":\"清除格式\",\"components.controls.textalign.textalign\":\"文本对齐\",\"components.controls.textalign.left\":\"文本左对齐\",\"components.controls.textalign.center\":\"居中\",\"components.controls.textalign.right\":\"文本右对齐\",\"components.controls.textalign.justify\":\"两端对齐\"},ru:{\"generic.add\":\"Добавить\",\"generic.cancel\":\"Отменить\",\"components.controls.blocktype.h1\":\"Заголовок 1\",\"components.controls.blocktype.h2\":\"Заголовок 2\",\"components.controls.blocktype.h3\":\"Заголовок 3\",\"components.controls.blocktype.h4\":\"Заголовок 4\",\"components.controls.blocktype.h5\":\"Заголовок 5\",\"components.controls.blocktype.h6\":\"Заголовок 6\",\"components.controls.blocktype.blockquote\":\"Цитата\",\"components.controls.blocktype.code\":\"Код\",\"components.controls.blocktype.blocktype\":\"Форматирование\",\"components.controls.blocktype.normal\":\"Обычный\",\"components.controls.colorpicker.colorpicker\":\"Выбор цвета\",\"components.controls.colorpicker.text\":\"Текст\",\"components.controls.colorpicker.background\":\"Фон\",\"components.controls.embedded.embedded\":\"Встраивание\",\"components.controls.embedded.embeddedlink\":\"Ссылка в iFrame\",\"components.controls.embedded.enterlink\":\"Вставьте ссылку\",\"components.controls.emoji.emoji\":\"Эмодзи\",\"components.controls.fontfamily.fontfamily\":\"Шрифт\",\"components.controls.fontsize.fontsize\":\"Размер шрифта\",\"components.controls.history.history\":\"История\",\"components.controls.history.undo\":\"Отменить\",\"components.controls.history.redo\":\"Вернуть\",\"components.controls.image.image\":\"Изображение\",\"components.controls.image.fileUpload\":\"Файлы\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Переместите в эту область файлы или кликните для загрузки\",\"components.controls.inline.bold\":\"Жирный\",\"components.controls.inline.italic\":\"Курсив\",\"components.controls.inline.underline\":\"Подчеркивание\",\"components.controls.inline.strikethrough\":\"Зачеркивание\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Верхний индекс\",\"components.controls.inline.subscript\":\"Нижний индекс\",\"components.controls.link.linkTitle\":\"Текст\",\"components.controls.link.linkTarget\":\"Адрес ссылки\",\"components.controls.link.linkTargetOption\":\"Открывать в новом окне\",\"components.controls.link.link\":\"Ссылка\",\"components.controls.link.unlink\":\"Убрать ссылку\",\"components.controls.list.list\":\"Список\",\"components.controls.list.unordered\":\"Неупорядоченный\",\"components.controls.list.ordered\":\"Упорядоченный\",\"components.controls.list.indent\":\"Отступ\",\"components.controls.list.outdent\":\"Выступ\",\"components.controls.remove.remove\":\"Удалить\",\"components.controls.textalign.textalign\":\"Выравнивание текста\",\"components.controls.textalign.left\":\"Слева\",\"components.controls.textalign.center\":\"По центру\",\"components.controls.textalign.right\":\"Справа\",\"components.controls.textalign.justify\":\"Выравнить\"},pt:{\"generic.add\":\"Ok\",\"generic.cancel\":\"Cancelar\",\"components.controls.blocktype.h1\":\"Título 1\",\"components.controls.blocktype.h2\":\"Título 2\",\"components.controls.blocktype.h3\":\"Título 3\",\"components.controls.blocktype.h4\":\"Título 4\",\"components.controls.blocktype.h5\":\"Título 5\",\"components.controls.blocktype.h6\":\"Título 6\",\"components.controls.blocktype.blockquote\":\"Citação\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"Estilo\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Paleta de cores\",\"components.controls.colorpicker.text\":\"Texto\",\"components.controls.colorpicker.background\":\"Fundo\",\"components.controls.embedded.embedded\":\"Embarcado\",\"components.controls.embedded.embeddedlink\":\"Link embarcado\",\"components.controls.embedded.enterlink\":\"Coloque o link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Fonte\",\"components.controls.fontsize.fontsize\":\"Tamanho da Fonte\",\"components.controls.history.history\":\"Histórico\",\"components.controls.history.undo\":\"Desfazer\",\"components.controls.history.redo\":\"Refazer\",\"components.controls.image.image\":\"Imagem\",\"components.controls.image.fileUpload\":\"Carregar arquivo\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Arraste uma imagem aqui ou clique para carregar\",\"components.controls.inline.bold\":\"Negrito\",\"components.controls.inline.italic\":\"Itálico\",\"components.controls.inline.underline\":\"Sublinhado\",\"components.controls.inline.strikethrough\":\"Strikethrough\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Sobrescrito\",\"components.controls.inline.subscript\":\"Subscrito\",\"components.controls.link.linkTitle\":\"Título do link\",\"components.controls.link.linkTarget\":\"Alvo do link\",\"components.controls.link.linkTargetOption\":\"Abrir link em outra janela\",\"components.controls.link.link\":\"Adicionar Link\",\"components.controls.link.unlink\":\"Remover link\",\"components.controls.list.list\":\"Lista\",\"components.controls.list.unordered\":\"Sem ordenção\",\"components.controls.list.ordered\":\"Ordenada\",\"components.controls.list.indent\":\"Aumentar recuo\",\"components.controls.list.outdent\":\"Diminuir recuo\",\"components.controls.remove.remove\":\"Remover\",\"components.controls.textalign.textalign\":\"Alinhamento do texto\",\"components.controls.textalign.left\":\"À Esquerda\",\"components.controls.textalign.center\":\"Centralizado\",\"components.controls.textalign.right\":\"À Direita\",\"components.controls.textalign.justify\":\"Justificado\"},ko:{\"generic.add\":\"입력\",\"generic.cancel\":\"취소\",\"components.controls.blocktype.h1\":\"제목1\",\"components.controls.blocktype.h2\":\"제목2\",\"components.controls.blocktype.h3\":\"제목3\",\"components.controls.blocktype.h4\":\"제목4\",\"components.controls.blocktype.h5\":\"제목5\",\"components.controls.blocktype.h6\":\"제목6\",\"components.controls.blocktype.blockquote\":\"인용\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"블록\",\"components.controls.blocktype.normal\":\"표준\",\"components.controls.colorpicker.colorpicker\":\"색상 선택\",\"components.controls.colorpicker.text\":\"글꼴색\",\"components.controls.colorpicker.background\":\"배경색\",\"components.controls.embedded.embedded\":\"임베드\",\"components.controls.embedded.embeddedlink\":\"임베드 링크\",\"components.controls.embedded.enterlink\":\"주소를 입력하세요\",\"components.controls.emoji.emoji\":\"이모지\",\"components.controls.fontfamily.fontfamily\":\"글꼴\",\"components.controls.fontsize.fontsize\":\"글꼴 크기\",\"components.controls.history.history\":\"히스토리\",\"components.controls.history.undo\":\"실행 취소\",\"components.controls.history.redo\":\"다시 실행\",\"components.controls.image.image\":\"이미지\",\"components.controls.image.fileUpload\":\"파일 업로드\",\"components.controls.image.byURL\":\"주소\",\"components.controls.image.dropFileText\":\"클릭하거나 파일을 드롭하여 업로드하세요\",\"components.controls.inline.bold\":\"굵게\",\"components.controls.inline.italic\":\"기울임꼴\",\"components.controls.inline.underline\":\"밑줄\",\"components.controls.inline.strikethrough\":\"취소선\",\"components.controls.inline.monospace\":\"고정 너비\",\"components.controls.inline.superscript\":\"위 첨자\",\"components.controls.inline.subscript\":\"아래 첨자\",\"components.controls.link.linkTitle\":\"링크 제목\",\"components.controls.link.linkTarget\":\"링크 타겟\",\"components.controls.link.linkTargetOption\":\"새창으로 열기\",\"components.controls.link.link\":\"링크\",\"components.controls.link.unlink\":\"링크 제거\",\"components.controls.list.list\":\"리스트\",\"components.controls.list.unordered\":\"일반 리스트\",\"components.controls.list.ordered\":\"순서 리스트\",\"components.controls.list.indent\":\"들여쓰기\",\"components.controls.list.outdent\":\"내어쓰기\",\"components.controls.remove.remove\":\"삭제\",\"components.controls.textalign.textalign\":\"텍스트 정렬\",\"components.controls.textalign.left\":\"왼쪽\",\"components.controls.textalign.center\":\"중앙\",\"components.controls.textalign.right\":\"오른쪽\",\"components.controls.textalign.justify\":\"양쪽\"},it:{\"generic.add\":\"Aggiungi\",\"generic.cancel\":\"Annulla\",\"components.controls.blocktype.h1\":\"H1\",\"components.controls.blocktype.h2\":\"H2\",\"components.controls.blocktype.h3\":\"H3\",\"components.controls.blocktype.h4\":\"H4\",\"components.controls.blocktype.h5\":\"H5\",\"components.controls.blocktype.h6\":\"H6\",\"components.controls.blocktype.blockquote\":\"Citazione\",\"components.controls.blocktype.code\":\"Codice\",\"components.controls.blocktype.blocktype\":\"Stili\",\"components.controls.blocktype.normal\":\"Normale\",\"components.controls.colorpicker.colorpicker\":\"Colore testo\",\"components.controls.colorpicker.text\":\"Testo\",\"components.controls.colorpicker.background\":\"Evidenziazione\",\"components.controls.embedded.embedded\":\"Incorpora\",\"components.controls.embedded.embeddedlink\":\"Incorpora link\",\"components.controls.embedded.enterlink\":\"Inserisci link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Carattere\",\"components.controls.fontsize.fontsize\":\"Dimensione carattere\",\"components.controls.history.history\":\"Modifiche\",\"components.controls.history.undo\":\"Annulla\",\"components.controls.history.redo\":\"Ripristina\",\"components.controls.image.image\":\"Immagine\",\"components.controls.image.fileUpload\":\"Carica immagine\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Trascina il file o clicca per caricare\",\"components.controls.inline.bold\":\"Grassetto\",\"components.controls.inline.italic\":\"Corsivo\",\"components.controls.inline.underline\":\"Sottolineato\",\"components.controls.inline.strikethrough\":\"Barrato\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Apice\",\"components.controls.inline.subscript\":\"Pedice\",\"components.controls.link.linkTitle\":\"Testo\",\"components.controls.link.linkTarget\":\"Link\",\"components.controls.link.linkTargetOption\":\"Apri link in una nuova finestra\",\"components.controls.link.link\":\"Inserisci link\",\"components.controls.link.unlink\":\"Rimuovi link\",\"components.controls.list.list\":\"Lista\",\"components.controls.list.unordered\":\"Elenco puntato\",\"components.controls.list.ordered\":\"Elenco numerato\",\"components.controls.list.indent\":\"Indent\",\"components.controls.list.outdent\":\"Outdent\",\"components.controls.remove.remove\":\"Rimuovi formattazione\",\"components.controls.textalign.textalign\":\"Allineamento del testo\",\"components.controls.textalign.left\":\"Allinea a sinistra\",\"components.controls.textalign.center\":\"Allinea al centro\",\"components.controls.textalign.right\":\"Allinea a destra\",\"components.controls.textalign.justify\":\"Giustifica\"},nl:{\"generic.add\":\"Toevoegen\",\"generic.cancel\":\"Annuleren\",\"components.controls.blocktype.h1\":\"H1\",\"components.controls.blocktype.h2\":\"H2\",\"components.controls.blocktype.h3\":\"H3\",\"components.controls.blocktype.h4\":\"H4\",\"components.controls.blocktype.h5\":\"H5\",\"components.controls.blocktype.h6\":\"H6\",\"components.controls.blocktype.blockquote\":\"Blockquote\",\"components.controls.blocktype.code\":\"Code\",\"components.controls.blocktype.blocktype\":\"Blocktype\",\"components.controls.blocktype.normal\":\"Normaal\",\"components.controls.colorpicker.colorpicker\":\"Kleurkiezer\",\"components.controls.colorpicker.text\":\"Tekst\",\"components.controls.colorpicker.background\":\"Achtergrond\",\"components.controls.embedded.embedded\":\"Ingevoegd\",\"components.controls.embedded.embeddedlink\":\"Ingevoegde link\",\"components.controls.embedded.enterlink\":\"Voeg link toe\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Lettertype\",\"components.controls.fontsize.fontsize\":\"Lettergrootte\",\"components.controls.history.history\":\"Geschiedenis\",\"components.controls.history.undo\":\"Ongedaan maken\",\"components.controls.history.redo\":\"Opnieuw\",\"components.controls.image.image\":\"Afbeelding\",\"components.controls.image.fileUpload\":\"Bestand uploaden\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Drop het bestand hier of klik om te uploaden\",\"components.controls.inline.bold\":\"Dikgedrukt\",\"components.controls.inline.italic\":\"Schuingedrukt\",\"components.controls.inline.underline\":\"Onderstrepen\",\"components.controls.inline.strikethrough\":\"Doorstrepen\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Superscript\",\"components.controls.inline.subscript\":\"Subscript\",\"components.controls.link.linkTitle\":\"Linktitel\",\"components.controls.link.linkTarget\":\"Link bestemming\",\"components.controls.link.linkTargetOption\":\"Open link in een nieuw venster\",\"components.controls.link.link\":\"Link\",\"components.controls.link.unlink\":\"Unlink\",\"components.controls.list.list\":\"Lijst\",\"components.controls.list.unordered\":\"Ongeordend\",\"components.controls.list.ordered\":\"Geordend\",\"components.controls.list.indent\":\"Inspringen\",\"components.controls.list.outdent\":\"Inspringen verkleinen\",\"components.controls.remove.remove\":\"Verwijderen\",\"components.controls.textalign.textalign\":\"Tekst uitlijnen\",\"components.controls.textalign.left\":\"Links\",\"components.controls.textalign.center\":\"Gecentreerd\",\"components.controls.textalign.right\":\"Rechts\",\"components.controls.textalign.justify\":\"Uitgelijnd\"},de:{\"generic.add\":\"Hinzufügen\",\"generic.cancel\":\"Abbrechen\",\"components.controls.blocktype.h1\":\"Überschrift 1\",\"components.controls.blocktype.h2\":\"Überschrift 2\",\"components.controls.blocktype.h3\":\"Überschrift 3\",\"components.controls.blocktype.h4\":\"Überschrift 4\",\"components.controls.blocktype.h5\":\"Überschrift 5\",\"components.controls.blocktype.h6\":\"Überschrift 6\",\"components.controls.blocktype.blockquote\":\"Zitat\",\"components.controls.blocktype.code\":\"Quellcode\",\"components.controls.blocktype.blocktype\":\"Blocktyp\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Farbauswahl\",\"components.controls.colorpicker.text\":\"Text\",\"components.controls.colorpicker.background\":\"Hintergrund\",\"components.controls.embedded.embedded\":\"Eingebettet\",\"components.controls.embedded.embeddedlink\":\"Eingebetteter Link\",\"components.controls.embedded.enterlink\":\"Link eingeben\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Schriftart\",\"components.controls.fontsize.fontsize\":\"Schriftgröße\",\"components.controls.history.history\":\"Historie\",\"components.controls.history.undo\":\"Zurücknehmen\",\"components.controls.history.redo\":\"Wiederholen\",\"components.controls.image.image\":\"Bild\",\"components.controls.image.fileUpload\":\"Datei-Upload\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Dateien ziehen und ablegen, oder klicken zum Hochladen\",\"components.controls.inline.bold\":\"Fett\",\"components.controls.inline.italic\":\"Kursiv\",\"components.controls.inline.underline\":\"Unterstreichen\",\"components.controls.inline.strikethrough\":\"Durchstreichen\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Hochgestellt\",\"components.controls.inline.subscript\":\"Tiefgestellt\",\"components.controls.link.linkTitle\":\"Link-Titel\",\"components.controls.link.linkTarget\":\"Link-Ziel\",\"components.controls.link.linkTargetOption\":\"Link in neuem Fenster öffnen\",\"components.controls.link.link\":\"Link\",\"components.controls.link.unlink\":\"Aufheben\",\"components.controls.list.list\":\"Liste\",\"components.controls.list.unordered\":\"Aufzählung\",\"components.controls.list.ordered\":\"Nummerierte Liste\",\"components.controls.list.indent\":\"Einzug vergrößern\",\"components.controls.list.outdent\":\"Einzug reduzieren\",\"components.controls.remove.remove\":\"Entfernen\",\"components.controls.textalign.textalign\":\"Textausrichtung\",\"components.controls.textalign.left\":\"Linksbündig\",\"components.controls.textalign.center\":\"Zentrieren\",\"components.controls.textalign.right\":\"Rechtsbündig\",\"components.controls.textalign.justify\":\"Blocksatz\"},da:{\"generic.add\":\"Tilføj\",\"generic.cancel\":\"Annuller\",\"components.controls.blocktype.h1\":\"Overskrift 1\",\"components.controls.blocktype.h2\":\"Overskrift 2\",\"components.controls.blocktype.h3\":\"Overskrift 3\",\"components.controls.blocktype.h4\":\"Overskrift 4\",\"components.controls.blocktype.h5\":\"Overskrift 5\",\"components.controls.blocktype.h6\":\"Overskrift 6\",\"components.controls.blocktype.blockquote\":\"Blokcitat\",\"components.controls.blocktype.code\":\"Kode\",\"components.controls.blocktype.blocktype\":\"Blok Type\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Farver\",\"components.controls.colorpicker.text\":\"Tekst\",\"components.controls.colorpicker.background\":\"Baggrund\",\"components.controls.embedded.embedded\":\"Indlejre\",\"components.controls.embedded.embeddedlink\":\"Indlejre Link\",\"components.controls.embedded.enterlink\":\"Indtast link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Fonttype\",\"components.controls.fontsize.fontsize\":\"Fontstørrelser\",\"components.controls.history.history\":\"Historie\",\"components.controls.history.undo\":\"Fortryd\",\"components.controls.history.redo\":\"Gendan\",\"components.controls.image.image\":\"Billede\",\"components.controls.image.fileUpload\":\"Filoverførsel\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Drop filen eller klik for at uploade\",\"components.controls.inline.bold\":\"Fed\",\"components.controls.inline.italic\":\"Kursiv\",\"components.controls.inline.underline\":\"Understrege\",\"components.controls.inline.strikethrough\":\"Gennemstreget\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Hævet\",\"components.controls.inline.subscript\":\"Sænket\",\"components.controls.link.linkTitle\":\"Link Titel\",\"components.controls.link.linkTarget\":\"Link Mål\",\"components.controls.link.linkTargetOption\":\"Åbn link i nyt vindue\",\"components.controls.link.link\":\"Link\",\"components.controls.link.unlink\":\"Fjern link\",\"components.controls.list.list\":\"Liste\",\"components.controls.list.unordered\":\"Uordnet\",\"components.controls.list.ordered\":\"Ordnet\",\"components.controls.list.indent\":\"Indrykning\",\"components.controls.list.outdent\":\"Udrykning\",\"components.controls.remove.remove\":\"Fjern\",\"components.controls.textalign.textalign\":\"Tekstjustering\",\"components.controls.textalign.left\":\"Venstre\",\"components.controls.textalign.center\":\"Center\",\"components.controls.textalign.right\":\"Højre\",\"components.controls.textalign.justify\":\"Margener\"},zh_tw:{\"generic.add\":\"新增\",\"generic.cancel\":\"取消\",\"components.controls.blocktype.h1\":\"標題1\",\"components.controls.blocktype.h2\":\"標題2\",\"components.controls.blocktype.h3\":\"標題3\",\"components.controls.blocktype.h4\":\"標題4\",\"components.controls.blocktype.h5\":\"標題5\",\"components.controls.blocktype.h6\":\"標題6\",\"components.controls.blocktype.blockquote\":\"引用\",\"components.controls.blocktype.code\":\"程式碼\",\"components.controls.blocktype.blocktype\":\"樣式\",\"components.controls.blocktype.normal\":\"正文\",\"components.controls.colorpicker.colorpicker\":\"選色器\",\"components.controls.colorpicker.text\":\"文字\",\"components.controls.colorpicker.background\":\"背景\",\"components.controls.embedded.embedded\":\"內嵌\",\"components.controls.embedded.embeddedlink\":\"內嵌網頁\",\"components.controls.embedded.enterlink\":\"輸入網頁地址\",\"components.controls.emoji.emoji\":\"表情符號\",\"components.controls.fontfamily.fontfamily\":\"字體\",\"components.controls.fontsize.fontsize\":\"字體大小\",\"components.controls.history.history\":\"歷史紀錄\",\"components.controls.history.undo\":\"復原\",\"components.controls.history.redo\":\"重做\",\"components.controls.image.image\":\"圖片\",\"components.controls.image.fileUpload\":\"檔案上傳\",\"components.controls.image.byURL\":\"網址\",\"components.controls.image.dropFileText\":\"點擊或拖曳檔案上傳\",\"components.controls.inline.bold\":\"粗體\",\"components.controls.inline.italic\":\"斜體\",\"components.controls.inline.underline\":\"底線\",\"components.controls.inline.strikethrough\":\"刪除線\",\"components.controls.inline.monospace\":\"等寬字體\",\"components.controls.inline.superscript\":\"上標\",\"components.controls.inline.subscript\":\"下標\",\"components.controls.link.linkTitle\":\"超連結\",\"components.controls.link.linkTarget\":\"輸入連結位址\",\"components.controls.link.linkTargetOption\":\"在新視窗打開連結\",\"components.controls.link.link\":\"連結\",\"components.controls.link.unlink\":\"刪除連結\",\"components.controls.list.list\":\"列表\",\"components.controls.list.unordered\":\"項目符號\",\"components.controls.list.ordered\":\"編號\",\"components.controls.list.indent\":\"增加縮排\",\"components.controls.list.outdent\":\"減少縮排\",\"components.controls.remove.remove\":\"清除格式\",\"components.controls.textalign.textalign\":\"文字對齊\",\"components.controls.textalign.left\":\"文字向左對齊\",\"components.controls.textalign.center\":\"文字置中\",\"components.controls.textalign.right\":\"文字向右對齊\",\"components.controls.textalign.justify\":\"兩端對齊\"},pl:{\"generic.add\":\"Dodaj\",\"generic.cancel\":\"Anuluj\",\"components.controls.blocktype.h1\":\"Nagłówek 1\",\"components.controls.blocktype.h2\":\"Nagłówek 2\",\"components.controls.blocktype.h3\":\"Nagłówek 3\",\"components.controls.blocktype.h4\":\"Nagłówek 4\",\"components.controls.blocktype.h5\":\"Nagłówek 5\",\"components.controls.blocktype.h6\":\"Nagłówek 6\",\"components.controls.blocktype.blockquote\":\"Cytat\",\"components.controls.blocktype.code\":\"Kod\",\"components.controls.blocktype.blocktype\":\"Format\",\"components.controls.blocktype.normal\":\"Normalny\",\"components.controls.colorpicker.colorpicker\":\"Kolor\",\"components.controls.colorpicker.text\":\"Tekst\",\"components.controls.colorpicker.background\":\"Tło\",\"components.controls.embedded.embedded\":\"Osadź\",\"components.controls.embedded.embeddedlink\":\"Osadź odnośnik\",\"components.controls.embedded.enterlink\":\"Wprowadź odnośnik\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Krój czcionki\",\"components.controls.fontsize.fontsize\":\"Rozmiar czcionki\",\"components.controls.history.history\":\"Historia\",\"components.controls.history.undo\":\"Cofnij\",\"components.controls.history.redo\":\"Ponów\",\"components.controls.image.image\":\"Obrazek\",\"components.controls.image.fileUpload\":\"Prześlij plik\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Upuść plik lub kliknij, aby przesłać\",\"components.controls.inline.bold\":\"Pogrubienie\",\"components.controls.inline.italic\":\"Kursywa\",\"components.controls.inline.underline\":\"Podkreślenie\",\"components.controls.inline.strikethrough\":\"Przekreślenie\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Indeks górny\",\"components.controls.inline.subscript\":\"Indeks dolny\",\"components.controls.link.linkTitle\":\"Tytuł odnośnika\",\"components.controls.link.linkTarget\":\"Adres odnośnika\",\"components.controls.link.linkTargetOption\":\"Otwórz odnośnik w nowej karcie\",\"components.controls.link.link\":\"Wstaw odnośnik\",\"components.controls.link.unlink\":\"Usuń odnośnik\",\"components.controls.list.list\":\"Lista\",\"components.controls.list.unordered\":\"Lista nieuporządkowana\",\"components.controls.list.ordered\":\"Lista uporządkowana\",\"components.controls.list.indent\":\"Zwiększ wcięcie\",\"components.controls.list.outdent\":\"Zmniejsz wcięcie\",\"components.controls.remove.remove\":\"Usuń\",\"components.controls.textalign.textalign\":\"Wyrównaj tekst\",\"components.controls.textalign.left\":\"Do lewej\",\"components.controls.textalign.center\":\"Do środka\",\"components.controls.textalign.right\":\"Do prawej\",\"components.controls.textalign.justify\":\"Wyjustuj\"},es:{\"generic.add\":\"Añadir\",\"generic.cancel\":\"Cancelar\",\"components.controls.blocktype.h1\":\"H1\",\"components.controls.blocktype.h2\":\"H2\",\"components.controls.blocktype.h3\":\"H3\",\"components.controls.blocktype.h4\":\"H4\",\"components.controls.blocktype.h5\":\"H5\",\"components.controls.blocktype.h6\":\"H6\",\"components.controls.blocktype.blockquote\":\"Blockquote\",\"components.controls.blocktype.code\":\"Código\",\"components.controls.blocktype.blocktype\":\"Tipo de bloque\",\"components.controls.blocktype.normal\":\"Normal\",\"components.controls.colorpicker.colorpicker\":\"Seleccionar color\",\"components.controls.colorpicker.text\":\"Texto\",\"components.controls.colorpicker.background\":\"Subrayado\",\"components.controls.embedded.embedded\":\"Adjuntar\",\"components.controls.embedded.embeddedlink\":\"Adjuntar Link\",\"components.controls.embedded.enterlink\":\"Introducir link\",\"components.controls.emoji.emoji\":\"Emoji\",\"components.controls.fontfamily.fontfamily\":\"Fuente\",\"components.controls.fontsize.fontsize\":\"Tamaño de fuente\",\"components.controls.history.history\":\"Histórico\",\"components.controls.history.undo\":\"Deshacer\",\"components.controls.history.redo\":\"Rehacer\",\"components.controls.image.image\":\"Imagen\",\"components.controls.image.fileUpload\":\"Subir archivo\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"Arrastra el archivo o haz click para subirlo\",\"components.controls.inline.bold\":\"Negrita\",\"components.controls.inline.italic\":\"Cursiva\",\"components.controls.inline.underline\":\"Subrayado\",\"components.controls.inline.strikethrough\":\"Tachado\",\"components.controls.inline.monospace\":\"Monospace\",\"components.controls.inline.superscript\":\"Sobreíndice\",\"components.controls.inline.subscript\":\"Subíndice\",\"components.controls.link.linkTitle\":\"Título del enlace\",\"components.controls.link.linkTarget\":\"Objetivo del enlace\",\"components.controls.link.linkTargetOption\":\"Abrir en nueva ventana\",\"components.controls.link.link\":\"Enlazar\",\"components.controls.link.unlink\":\"Desenlazar\",\"components.controls.list.list\":\"Lista\",\"components.controls.list.unordered\":\"Desordenada\",\"components.controls.list.ordered\":\"Ordenada\",\"components.controls.list.indent\":\"Indentada\",\"components.controls.list.outdent\":\"Dentada\",\"components.controls.remove.remove\":\"Eliminar\",\"components.controls.textalign.textalign\":\"Alineación del texto\",\"components.controls.textalign.left\":\"Izquierda\",\"components.controls.textalign.center\":\"Centrado\",\"components.controls.textalign.right\":\"Derecha\",\"components.controls.textalign.justify\":\"Justificado\"},ja:{\"generic.add\":\"追加\",\"generic.cancel\":\"キャンセル\",\"components.controls.blocktype.h1\":\"見出し1\",\"components.controls.blocktype.h2\":\"見出し2\",\"components.controls.blocktype.h3\":\"見出し3\",\"components.controls.blocktype.h4\":\"見出し4\",\"components.controls.blocktype.h5\":\"見出し5\",\"components.controls.blocktype.h6\":\"見出し6\",\"components.controls.blocktype.blockquote\":\"引用\",\"components.controls.blocktype.code\":\"コード\",\"components.controls.blocktype.blocktype\":\"スタイル\",\"components.controls.blocktype.normal\":\"標準テキスト\",\"components.controls.colorpicker.colorpicker\":\"テキストの色\",\"components.controls.colorpicker.text\":\"テキスト\",\"components.controls.colorpicker.background\":\"ハイライト\",\"components.controls.embedded.embedded\":\"埋め込み\",\"components.controls.embedded.embeddedlink\":\"埋め込みリンク\",\"components.controls.embedded.enterlink\":\"リンクを入力してください\",\"components.controls.emoji.emoji\":\"絵文字\",\"components.controls.fontfamily.fontfamily\":\"フォント\",\"components.controls.fontsize.fontsize\":\"フォントサイズ\",\"components.controls.history.history\":\"履歴\",\"components.controls.history.undo\":\"元に戻す\",\"components.controls.history.redo\":\"やり直し\",\"components.controls.image.image\":\"画像\",\"components.controls.image.fileUpload\":\"ファイルをアップロード\",\"components.controls.image.byURL\":\"URL\",\"components.controls.image.dropFileText\":\"ここに画像をドラッグするか、クリックしてください\",\"components.controls.inline.bold\":\"太字\",\"components.controls.inline.italic\":\"斜体\",\"components.controls.inline.underline\":\"下線\",\"components.controls.inline.strikethrough\":\"取り消し線\",\"components.controls.inline.monospace\":\"等幅フォント\",\"components.controls.inline.superscript\":\"上付き文字\",\"components.controls.inline.subscript\":\"下付き文字\",\"components.controls.link.linkTitle\":\"リンクタイトル\",\"components.controls.link.linkTarget\":\"リンク対象\",\"components.controls.link.linkTargetOption\":\"新しいウィンドウで開く\",\"components.controls.link.link\":\"リンク\",\"components.controls.link.unlink\":\"リンクを解除\",\"components.controls.list.list\":\"リスト\",\"components.controls.list.unordered\":\"箇条書き\",\"components.controls.list.ordered\":\"番号付き\",\"components.controls.list.indent\":\"インデント増\",\"components.controls.list.outdent\":\"インデント減\",\"components.controls.remove.remove\":\"書式をクリア\",\"components.controls.textalign.textalign\":\"整列\",\"components.controls.textalign.left\":\"左揃え\",\"components.controls.textalign.center\":\"中央揃え\",\"components.controls.textalign.right\":\"右揃え\",\"components.controls.textalign.justify\":\"両端揃え\"}};n(38),n(39);function Vo(t){return(Vo=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function qo(){return(qo=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t}).apply(this,arguments)}function Ko(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,o)}return n}function Xo(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ko(Object(n),!0).forEach(function(t){$o(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ko(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function $o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function tr(t){return function(t){if(Array.isArray(t))return er(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}(t)||function(t,e){if(!t)return;if(\"string\"==typeof t)return er(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);\"Object\"===n&&t.constructor&&(n=t.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(t);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return er(t,e)}(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function er(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function nr(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function or(t,e){return(or=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function rr(o){var r=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=ir(o);if(r){var n=ir(this).constructor;t=Reflect.construct(e,arguments,n)}else t=e.apply(this,arguments);return function(t,e){{if(e&&(\"object\"===Vo(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\")}return function(t){if(void 0!==t)return t;throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\")}(t)}(this,t)}}function ir(t){return(ir=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var cr=function(){!function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&or(t,e)}(i,f[\"Component\"]);var t,e,n,r=rr(i);function i(t){var c;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,i),(c=r.call(this,t)).onEditorBlur=function(){c.setState({editorFocused:!1})},c.onEditorFocus=function(t){var e=c.props.onFocus;c.setState({editorFocused:!0});var n=c.focusHandler.isEditorFocused();e&&n&&e(t)},c.onEditorMouseDown=function(){c.focusHandler.onEditorMouseDown()},c.keyBindingFn=function(t){if(\"Tab\"!==t.key)return\"ArrowUp\"!==t.key&&\"ArrowDown\"!==t.key||b()&&t.preventDefault(),Object(E.getDefaultKeyBinding)(t);var e=c.props.onTab;if(!e||!e(t)){var n=Object(S.changeDepth)(c.state.editorState,t.shiftKey?-1:1,4);n&&n!==c.state.editorState&&(c.onChange(n),t.preventDefault())}return null},c.onToolbarFocus=function(t){var e=c.props.onFocus;e&&c.focusHandler.isToolbarFocused()&&e(t)},c.onWrapperBlur=function(t){var e=c.props.onBlur;e&&c.focusHandler.isEditorBlur(t)&&e(t,c.getEditorState())},c.onChange=function(t){var e=c.props,n=e.readOnly,o=e.onEditorStateChange;n||\"atomic\"===Object(S.getSelectedBlocksType)(t)&&t.getSelection().isCollapsed||(o&&o(t,c.props.wrapperId),M(c.props,\"editorState\")?c.afterChange(t):c.setState({editorState:t},c.afterChange(t)))},c.setWrapperReference=function(t){c.wrapper=t},c.setEditorReference=function(t){c.props.editorRef&&c.props.editorRef(t),c.editor=t},c.getCompositeDecorator=function(t){var e=[].concat(tr(c.props.customDecorators),[{strategy:Mo,component:jo({showOpenOptionOnHover:t.link.showOpenOptionOnHover})}]);return c.props.mention&&e.push.apply(e,tr(To(Xo(Xo({},c.props.mention),{},{onChange:c.onChange,getEditorState:c.getEditorState,getSuggestions:c.getSuggestions,getWrapperRef:c.getWrapperRef,modalHandler:c.modalHandler})))),c.props.hashtag&&e.push(Ro(c.props.hashtag)),new E.CompositeDecorator(e)},c.getWrapperRef=function(){return c.wrapper},c.getEditorState=function(){return c.state?c.state.editorState:null},c.getSuggestions=function(){return c.props.mention&&c.props.mention.suggestions},c.afterChange=function(o){setTimeout(function(){var t=c.props,e=t.onChange,n=t.onContentStateChange;e&&e(Object(E.convertToRaw)(o.getCurrentContent())),n&&n(Object(E.convertToRaw)(o.getCurrentContent()))})},c.isReadOnly=function(){return c.props.readOnly},c.isImageAlignmentEnabled=function(){return c.state.toolbar.image.alignmentEnabled},c.createEditorState=function(t){var e;if(M(c.props,\"editorState\"))c.props.editorState&&(e=E.EditorState.set(c.props.editorState,{decorator:t}));else if(M(c.props,\"defaultEditorState\"))c.props.defaultEditorState&&(e=E.EditorState.set(c.props.defaultEditorState,{decorator:t}));else if(M(c.props,\"contentState\")){if(c.props.contentState){var n=Object(E.convertFromRaw)(c.props.contentState);e=E.EditorState.createWithContent(n,t),e=E.EditorState.moveSelectionToEnd(e)}}else if(M(c.props,\"defaultContentState\")||M(c.props,\"initialContentState\")){var o=c.props.defaultContentState||c.props.initialContentState;o&&(o=Object(E.convertFromRaw)(o),e=E.EditorState.createWithContent(o,t),e=E.EditorState.moveSelectionToEnd(e))}return e=e||E.EditorState.createEmpty(t)},c.filterEditorProps=function(t){return e=t,n=[\"onChange\",\"onEditorStateChange\",\"onContentStateChange\",\"initialContentState\",\"defaultContentState\",\"contentState\",\"editorState\",\"defaultEditorState\",\"locale\",\"localization\",\"toolbarOnFocus\",\"toolbar\",\"toolbarCustomButtons\",\"toolbarClassName\",\"editorClassName\",\"toolbarHidden\",\"wrapperClassName\",\"toolbarStyle\",\"editorStyle\",\"wrapperStyle\",\"uploadCallback\",\"onFocus\",\"onBlur\",\"onTab\",\"mention\",\"hashtag\",\"ariaLabel\",\"customBlockRenderFunc\",\"customDecorators\",\"handlePastedText\",\"customStyleMap\"],o=Object.keys(e).filter(function(t){return n.indexOf(t)<0}),r={},o&&0<o.length&&o.forEach(function(t){r[t]=e[t]}),r;var e,n,o,r},c.getStyleMap=function(t){return Xo(Xo({},Object(S.getCustomStyleMap)()),t.customStyleMap)},c.changeEditorState=function(t){var e=Object(E.convertFromRaw)(t),n=c.state.editorState;return n=E.EditorState.push(n,e,\"insert-characters\"),n=E.EditorState.moveSelectionToEnd(n)},c.focusEditor=function(){setTimeout(function(){c.editor.focus()})},c.handleKeyCommand=function(t){var e=c.state,n=e.editorState,o=e.toolbar.inline;if(o&&0<=o.options.indexOf(t)){var r=E.RichUtils.handleKeyCommand(n,t);if(r)return c.onChange(r),!0}return!1},c.handleReturn=function(t){if(b())return!0;var e=c.state.editorState,n=Object(S.handleNewLine)(e,t);return!!n&&(c.onChange(n),!0)},c.handlePastedTextFn=function(t,e){var n=c.state.editorState,o=c.props,r=o.handlePastedText,i=o.stripPastedStyles;return r?r(t,e,n,c.onChange):!i&&function(t,e,n,o){var r=Object(S.getSelectedBlock)(n);if(r&&\"code\"===r.type){var i=E.Modifier.replaceText(n.getCurrentContent(),n.getSelection(),t,n.getCurrentInlineStyle());return o(E.EditorState.push(n,i,\"insert-characters\")),!0}if(e){var c=O()(e),a=n.getCurrentContent();return c.entityMap.forEach(function(t,e){a=a.mergeEntityData(e,t)}),a=E.Modifier.replaceWithFragment(a,n.getSelection(),new x.List(c.contentBlocks)),o(E.EditorState.push(n,a,\"insert-characters\")),!0}return!1}(t,e,n,c.onChange)},c.preventDefault=function(t){\"INPUT\"===t.target.tagName||\"LABEL\"===t.target.tagName||\"TEXTAREA\"===t.target.tagName?c.focusHandler.onInputMouseDown():t.preventDefault()};var e=D(Go,t.toolbar),n=t.wrapperId?t.wrapperId:Math.floor(1e4*Math.random());c.wrapperId=\"rdw-wrapper-\".concat(n),c.modalHandler=new a,c.focusHandler=new p,c.blockRendererFn=Wo({isReadOnly:c.isReadOnly,isImageAlignmentEnabled:c.isImageAlignmentEnabled,getEditorState:c.getEditorState,onChange:c.onChange},t.customBlockRenderFunc),c.editorProps=c.filterEditorProps(t),c.customStyleMap=c.getStyleMap(t),c.compositeDecorator=c.getCompositeDecorator(e);var o=c.createEditorState(c.compositeDecorator);return Object(S.extractInlineStyle)(o),c.state={editorState:o,editorFocused:!1,toolbar:e},c}return t=i,(e=[{key:\"componentDidMount\",value:function(){this.modalHandler.init(this.wrapperId)}},{key:\"componentDidUpdate\",value:function(t){if(t!==this.props){var e={},n=this.props,o=n.editorState,r=n.contentState;if(!this.state.toolbar){var i=D(Go,i);e.toolbar=i}if(M(this.props,\"editorState\")&&o!==t.editorState)e.editorState=o?E.EditorState.set(o,{decorator:this.compositeDecorator}):E.EditorState.createEmpty(this.compositeDecorator);else if(M(this.props,\"contentState\")&&r!==t.contentState)if(r){var c=this.changeEditorState(r);c&&(e.editorState=c)}else e.editorState=E.EditorState.createEmpty(this.compositeDecorator);t.editorState===o&&t.contentState===r||Object(S.extractInlineStyle)(e.editorState),Object.keys(e).length&&this.setState(e),this.editorProps=this.filterEditorProps(this.props),this.customStyleMap=this.getStyleMap(this.props)}}},{key:\"render\",value:function(){var t=this.state,e=t.editorState,n=t.editorFocused,r=t.toolbar,o=this.props,i=o.locale,c=o.localization,a=c.locale,l=c.translations,s=o.toolbarCustomButtons,u=o.toolbarOnFocus,p=o.toolbarClassName,d=o.toolbarHidden,f=o.editorClassName,y=o.wrapperClassName,m=o.toolbarStyle,g=o.editorStyle,b=o.wrapperStyle,h=o.uploadCallback,M=o.ariaLabel,j={modalHandler:this.modalHandler,editorState:e,onChange:this.onChange,translations:Xo(Xo({},Jo[i||a]),l)},v=n||this.focusHandler.isInputFocused()||!u;return N.a.createElement(\"div\",{id:this.wrapperId,className:w()(y,\"rdw-editor-wrapper\"),style:b,onClick:this.modalHandler.onEditorClick,onBlur:this.onWrapperBlur,\"aria-label\":\"rdw-wrapper\"},!d&&N.a.createElement(\"div\",{className:w()(\"rdw-editor-toolbar\",p),style:Xo({visibility:v?\"visible\":\"hidden\"},m),onMouseDown:this.preventDefault,\"aria-label\":\"rdw-toolbar\",\"aria-hidden\":(!n&&u).toString(),onFocus:this.onToolbarFocus},r.options.map(function(t,e){var n=so[t],o=r[t];return\"image\"===t&&h&&(o.uploadCallback=h),N.a.createElement(n,qo({key:e},j,{config:o}))}),s&&s.map(function(t,e){return N.a.cloneElement(t,Xo({key:e},j))})),N.a.createElement(\"div\",{ref:this.setWrapperReference,className:w()(f,\"rdw-editor-main\"),style:g,onClick:this.focusEditor,onFocus:this.onEditorFocus,onBlur:this.onEditorBlur,onKeyDown:C.onKeyDown,onMouseDown:this.onEditorMouseDown},N.a.createElement(E.Editor,qo({ref:this.setEditorReference,keyBindingFn:this.keyBindingFn,editorState:e,onChange:this.onChange,blockStyleFn:L,customStyleMap:this.getStyleMap(this.props),handleReturn:this.handleReturn,handlePastedText:this.handlePastedTextFn,blockRendererFn:this.blockRendererFn,handleKeyCommand:this.handleKeyCommand,ariaLabel:M||\"rdw-editor\",blockRenderMap:S.blockRenderMap},this.editorProps))))}}])&&nr(t.prototype,e),n&&nr(t,n),Object.defineProperty(t,\"prototype\",{writable:!1}),i}();cr.propTypes={onChange:y.a.func,onEditorStateChange:y.a.func,onContentStateChange:y.a.func,initialContentState:y.a.object,defaultContentState:y.a.object,contentState:y.a.object,editorState:y.a.object,defaultEditorState:y.a.object,toolbarOnFocus:y.a.bool,spellCheck:y.a.bool,stripPastedStyles:y.a.bool,toolbar:y.a.object,toolbarCustomButtons:y.a.array,toolbarClassName:y.a.string,toolbarHidden:y.a.bool,locale:y.a.string,localization:y.a.object,editorClassName:y.a.string,wrapperClassName:y.a.string,toolbarStyle:y.a.object,editorStyle:y.a.object,wrapperStyle:y.a.object,uploadCallback:y.a.func,onFocus:y.a.func,onBlur:y.a.func,onTab:y.a.func,mention:y.a.object,hashtag:y.a.object,textAlignment:y.a.string,readOnly:y.a.bool,tabIndex:y.a.number,placeholder:y.a.string,ariaLabel:y.a.string,ariaOwneeID:y.a.string,ariaActiveDescendantID:y.a.string,ariaAutoComplete:y.a.string,ariaDescribedBy:y.a.string,ariaExpanded:y.a.string,ariaHasPopup:y.a.string,customBlockRenderFunc:y.a.func,wrapperId:y.a.number,customDecorators:y.a.array,editorRef:y.a.func,handlePastedText:y.a.func},cr.defaultProps={toolbarOnFocus:!1,toolbarHidden:!1,stripPastedStyles:!1,localization:{locale:\"en\",translations:{}},customDecorators:[]};var ar=cr}],i.c=a,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)i.d(n,o,function(t){return e[t]}.bind(null,o));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,\"a\",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p=\"\",i(i.s=8);function i(t){if(a[t])return a[t].exports;var e=a[t]={i:t,l:!1,exports:{}};return c[t].call(e.exports,e,e.exports,i),e.l=!0,e.exports}var c,a});","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import {createElement,Component}from'react';import {findDOMNode}from'react-dom';function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}/**\n * Check whether some DOM node is our Component's node.\n */\nfunction isNodeFound(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // SVG <use/> elements do not technically reside in the rendered DOM, so\n // they do not have classList directly, but they offer a link to their\n // corresponding element, which can have classList. This extra check is for\n // that case.\n // See: http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGUseElement\n // Discussion: https://github.com/Pomax/react-onclickoutside/pull/17\n\n\n if (current.correspondingElement) {\n return current.correspondingElement.classList.contains(ignoreClass);\n }\n\n return current.classList.contains(ignoreClass);\n}\n/**\n * Try to find our node in a hierarchy of nodes, returning the document\n * node as highest node if our node is not found in the path up.\n */\n\nfunction findHighest(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // If source=local then this event came from 'somewhere'\n // inside and should be ignored. We could handle this with\n // a layered approach, too, but that requires going back to\n // thinking in terms of Dom node nesting, running counter\n // to React's 'you shouldn't care about the DOM' philosophy.\n // Also cover shadowRoot node by checking current.host\n\n\n while (current.parentNode || current.host) {\n // Only check normal node without shadowRoot\n if (current.parentNode && isNodeFound(current, componentNode, ignoreClass)) {\n return true;\n }\n\n current = current.parentNode || current.host;\n }\n\n return current;\n}\n/**\n * Check if the browser scrollbar was clicked\n */\n\nfunction clickedScrollbar(evt) {\n return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;\n}// ideally will get replaced with external dep\n// when rafrex/detect-passive-events#4 and rafrex/detect-passive-events#5 get merged in\nvar testPassiveEventSupport = function testPassiveEventSupport() {\n if (typeof window === 'undefined' || typeof window.addEventListener !== 'function') {\n return;\n }\n\n var passive = false;\n var options = Object.defineProperty({}, 'passive', {\n get: function get() {\n passive = true;\n }\n });\n\n var noop = function noop() {};\n\n window.addEventListener('testPassiveEventSupport', noop, options);\n window.removeEventListener('testPassiveEventSupport', noop, options);\n return passive;\n};function autoInc(seed) {\n if (seed === void 0) {\n seed = 0;\n }\n\n return function () {\n return ++seed;\n };\n}\n\nvar uid = autoInc();var passiveEventSupport;\nvar handlersMap = {};\nvar enabledInstances = {};\nvar touchEvents = ['touchstart', 'touchmove'];\nvar IGNORE_CLASS_NAME = 'ignore-react-onclickoutside';\n/**\n * Options for addEventHandler and removeEventHandler\n */\n\nfunction getEventHandlerOptions(instance, eventName) {\n var handlerOptions = {};\n var isTouchEvent = touchEvents.indexOf(eventName) !== -1;\n\n if (isTouchEvent && passiveEventSupport) {\n handlerOptions.passive = !instance.props.preventDefault;\n }\n\n return handlerOptions;\n}\n/**\n * This function generates the HOC function that you'll use\n * in order to impart onOutsideClick listening to an\n * arbitrary component. It gets called at the end of the\n * bootstrapping code to yield an instance of the\n * onClickOutsideHOC function defined inside setupHOC().\n */\n\n\nfunction onClickOutsideHOC(WrappedComponent, config) {\n var _class, _temp;\n\n var componentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inheritsLoose(onClickOutside, _Component);\n\n function onClickOutside(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n\n _this.__outsideClickHandler = function (event) {\n if (typeof _this.__clickOutsideHandlerProp === 'function') {\n _this.__clickOutsideHandlerProp(event);\n\n return;\n }\n\n var instance = _this.getInstance();\n\n if (typeof instance.props.handleClickOutside === 'function') {\n instance.props.handleClickOutside(event);\n return;\n }\n\n if (typeof instance.handleClickOutside === 'function') {\n instance.handleClickOutside(event);\n return;\n }\n\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a handleClickOutside(event) function for processing outside click events.\");\n };\n\n _this.__getComponentNode = function () {\n var instance = _this.getInstance();\n\n if (config && typeof config.setClickOutsideRef === 'function') {\n return config.setClickOutsideRef()(instance);\n }\n\n if (typeof instance.setClickOutsideRef === 'function') {\n return instance.setClickOutsideRef();\n }\n\n return findDOMNode(instance);\n };\n\n _this.enableOnClickOutside = function () {\n if (typeof document === 'undefined' || enabledInstances[_this._uid]) {\n return;\n }\n\n if (typeof passiveEventSupport === 'undefined') {\n passiveEventSupport = testPassiveEventSupport();\n }\n\n enabledInstances[_this._uid] = true;\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n handlersMap[_this._uid] = function (event) {\n if (_this.componentNode === null) return;\n if (_this.initTimeStamp > event.timeStamp) return;\n\n if (_this.props.preventDefault) {\n event.preventDefault();\n }\n\n if (_this.props.stopPropagation) {\n event.stopPropagation();\n }\n\n if (_this.props.excludeScrollbar && clickedScrollbar(event)) return;\n var current = event.composed && event.composedPath && event.composedPath().shift() || event.target;\n\n if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {\n return;\n }\n\n _this.__outsideClickHandler(event);\n };\n\n events.forEach(function (eventName) {\n document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n });\n };\n\n _this.disableOnClickOutside = function () {\n delete enabledInstances[_this._uid];\n var fn = handlersMap[_this._uid];\n\n if (fn && typeof document !== 'undefined') {\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n events.forEach(function (eventName) {\n return document.removeEventListener(eventName, fn, getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n });\n delete handlersMap[_this._uid];\n }\n };\n\n _this.getRef = function (ref) {\n return _this.instanceRef = ref;\n };\n\n _this._uid = uid();\n _this.initTimeStamp = performance.now();\n return _this;\n }\n /**\n * Access the WrappedComponent's instance.\n */\n\n\n var _proto = onClickOutside.prototype;\n\n _proto.getInstance = function getInstance() {\n if (WrappedComponent.prototype && !WrappedComponent.prototype.isReactComponent) {\n return this;\n }\n\n var ref = this.instanceRef;\n return ref.getInstance ? ref.getInstance() : ref;\n };\n\n /**\n * Add click listeners to the current document,\n * linked to this component's state.\n */\n _proto.componentDidMount = function componentDidMount() {\n // If we are in an environment without a DOM such\n // as shallow rendering or snapshots then we exit\n // early to prevent any unhandled errors being thrown.\n if (typeof document === 'undefined' || !document.createElement) {\n return;\n }\n\n var instance = this.getInstance();\n\n if (config && typeof config.handleClickOutside === 'function') {\n this.__clickOutsideHandlerProp = config.handleClickOutside(instance);\n\n if (typeof this.__clickOutsideHandlerProp !== 'function') {\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a function for processing outside click events specified by the handleClickOutside config option.\");\n }\n }\n\n this.componentNode = this.__getComponentNode(); // return early so we dont initiate onClickOutside\n\n if (this.props.disableOnClickOutside) return;\n this.enableOnClickOutside();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.componentNode = this.__getComponentNode();\n }\n /**\n * Remove all document's event listeners for this component\n */\n ;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.disableOnClickOutside();\n }\n /**\n * Can be called to explicitly enable event listening\n * for clicks and touches outside of this element.\n */\n ;\n\n /**\n * Pass-through render\n */\n _proto.render = function render() {\n // eslint-disable-next-line no-unused-vars\n var _this$props = this.props;\n _this$props.excludeScrollbar;\n var props = _objectWithoutPropertiesLoose(_this$props, [\"excludeScrollbar\"]);\n\n if (WrappedComponent.prototype && WrappedComponent.prototype.isReactComponent) {\n props.ref = this.getRef;\n } else {\n props.wrappedRef = this.getRef;\n }\n\n props.disableOnClickOutside = this.disableOnClickOutside;\n props.enableOnClickOutside = this.enableOnClickOutside;\n return createElement(WrappedComponent, props);\n };\n\n return onClickOutside;\n }(Component), _class.displayName = \"OnClickOutside(\" + componentName + \")\", _class.defaultProps = {\n eventTypes: ['mousedown', 'touchstart'],\n excludeScrollbar: config && config.excludeScrollbar || false,\n outsideClickIgnoreClass: IGNORE_CLASS_NAME,\n preventDefault: false,\n stopPropagation: false\n }, _class.getClass = function () {\n return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;\n }, _temp;\n}export default onClickOutsideHOC;export{IGNORE_CLASS_NAME};","import * as React from 'react';\nexport var ManagerReferenceNodeContext = React.createContext();\nexport var ManagerReferenceNodeSetterContext = React.createContext();\nexport function Manager(_ref) {\n var children = _ref.children;\n\n var _React$useState = React.useState(null),\n referenceNode = _React$useState[0],\n setReferenceNode = _React$useState[1];\n\n var hasUnmounted = React.useRef(false);\n React.useEffect(function () {\n return function () {\n hasUnmounted.current = true;\n };\n }, []);\n var handleSetReferenceNode = React.useCallback(function (node) {\n if (!hasUnmounted.current) {\n setReferenceNode(node);\n }\n }, []);\n return /*#__PURE__*/React.createElement(ManagerReferenceNodeContext.Provider, {\n value: referenceNode\n }, /*#__PURE__*/React.createElement(ManagerReferenceNodeSetterContext.Provider, {\n value: handleSetReferenceNode\n }, children));\n}","import * as React from 'react';\n\n/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === 'function') {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return fn.apply(void 0, args);\n }\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n // if its a function call it\n if (typeof ref === 'function') {\n return safeInvoke(ref, node);\n } // otherwise we should treat it as a ref object\n else if (ref != null) {\n ref.current = node;\n }\n};\n/**\n * Simple ponyfill for Object.fromEntries\n */\n\nexport var fromEntries = function fromEntries(entries) {\n return entries.reduce(function (acc, _ref) {\n var key = _ref[0],\n value = _ref[1];\n acc[key] = value;\n return acc;\n }, {});\n};\n/**\n * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs\n */\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createPopper as defaultCreatePopper } from '@popperjs/core';\nimport isEqual from 'react-fast-compare';\nimport { fromEntries, useIsomorphicLayoutEffect } from './utils';\nvar EMPTY_MODIFIERS = [];\nexport var usePopper = function usePopper(referenceElement, popperElement, options) {\n if (options === void 0) {\n options = {};\n }\n\n var prevOptions = React.useRef(null);\n var optionsWithDefaults = {\n onFirstUpdate: options.onFirstUpdate,\n placement: options.placement || 'bottom',\n strategy: options.strategy || 'absolute',\n modifiers: options.modifiers || EMPTY_MODIFIERS\n };\n\n var _React$useState = React.useState({\n styles: {\n popper: {\n position: optionsWithDefaults.strategy,\n left: '0',\n top: '0'\n },\n arrow: {\n position: 'absolute'\n }\n },\n attributes: {}\n }),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var updateStateModifier = React.useMemo(function () {\n return {\n name: 'updateState',\n enabled: true,\n phase: 'write',\n fn: function fn(_ref) {\n var state = _ref.state;\n var elements = Object.keys(state.elements);\n ReactDOM.flushSync(function () {\n setState({\n styles: fromEntries(elements.map(function (element) {\n return [element, state.styles[element] || {}];\n })),\n attributes: fromEntries(elements.map(function (element) {\n return [element, state.attributes[element]];\n }))\n });\n });\n },\n requires: ['computeStyles']\n };\n }, []);\n var popperOptions = React.useMemo(function () {\n var newOptions = {\n onFirstUpdate: optionsWithDefaults.onFirstUpdate,\n placement: optionsWithDefaults.placement,\n strategy: optionsWithDefaults.strategy,\n modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, {\n name: 'applyStyles',\n enabled: false\n }])\n };\n\n if (isEqual(prevOptions.current, newOptions)) {\n return prevOptions.current || newOptions;\n } else {\n prevOptions.current = newOptions;\n return newOptions;\n }\n }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]);\n var popperInstanceRef = React.useRef();\n useIsomorphicLayoutEffect(function () {\n if (popperInstanceRef.current) {\n popperInstanceRef.current.setOptions(popperOptions);\n }\n }, [popperOptions]);\n useIsomorphicLayoutEffect(function () {\n if (referenceElement == null || popperElement == null) {\n return;\n }\n\n var createPopper = options.createPopper || defaultCreatePopper;\n var popperInstance = createPopper(referenceElement, popperElement, popperOptions);\n popperInstanceRef.current = popperInstance;\n return function () {\n popperInstance.destroy();\n popperInstanceRef.current = null;\n };\n }, [referenceElement, popperElement, options.createPopper]);\n return {\n state: popperInstanceRef.current ? popperInstanceRef.current.state : null,\n styles: state.styles,\n attributes: state.attributes,\n update: popperInstanceRef.current ? popperInstanceRef.current.update : null,\n forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null\n };\n};","import * as React from 'react';\nimport { ManagerReferenceNodeContext } from './Manager';\nimport { unwrapArray, setRef } from './utils';\nimport { usePopper } from './usePopper';\n\nvar NOOP = function NOOP() {\n return void 0;\n};\n\nvar NOOP_PROMISE = function NOOP_PROMISE() {\n return Promise.resolve(null);\n};\n\nvar EMPTY_MODIFIERS = [];\nexport function Popper(_ref) {\n var _ref$placement = _ref.placement,\n placement = _ref$placement === void 0 ? 'bottom' : _ref$placement,\n _ref$strategy = _ref.strategy,\n strategy = _ref$strategy === void 0 ? 'absolute' : _ref$strategy,\n _ref$modifiers = _ref.modifiers,\n modifiers = _ref$modifiers === void 0 ? EMPTY_MODIFIERS : _ref$modifiers,\n referenceElement = _ref.referenceElement,\n onFirstUpdate = _ref.onFirstUpdate,\n innerRef = _ref.innerRef,\n children = _ref.children;\n var referenceNode = React.useContext(ManagerReferenceNodeContext);\n\n var _React$useState = React.useState(null),\n popperElement = _React$useState[0],\n setPopperElement = _React$useState[1];\n\n var _React$useState2 = React.useState(null),\n arrowElement = _React$useState2[0],\n setArrowElement = _React$useState2[1];\n\n React.useEffect(function () {\n setRef(innerRef, popperElement);\n }, [innerRef, popperElement]);\n var options = React.useMemo(function () {\n return {\n placement: placement,\n strategy: strategy,\n onFirstUpdate: onFirstUpdate,\n modifiers: [].concat(modifiers, [{\n name: 'arrow',\n enabled: arrowElement != null,\n options: {\n element: arrowElement\n }\n }])\n };\n }, [placement, strategy, onFirstUpdate, modifiers, arrowElement]);\n\n var _usePopper = usePopper(referenceElement || referenceNode, popperElement, options),\n state = _usePopper.state,\n styles = _usePopper.styles,\n forceUpdate = _usePopper.forceUpdate,\n update = _usePopper.update;\n\n var childrenProps = React.useMemo(function () {\n return {\n ref: setPopperElement,\n style: styles.popper,\n placement: state ? state.placement : placement,\n hasPopperEscaped: state && state.modifiersData.hide ? state.modifiersData.hide.hasPopperEscaped : null,\n isReferenceHidden: state && state.modifiersData.hide ? state.modifiersData.hide.isReferenceHidden : null,\n arrowProps: {\n style: styles.arrow,\n ref: setArrowElement\n },\n forceUpdate: forceUpdate || NOOP,\n update: update || NOOP_PROMISE\n };\n }, [setPopperElement, setArrowElement, placement, state, styles, update, forceUpdate]);\n return unwrapArray(children)(childrenProps);\n}","import * as React from 'react';\nimport warning from 'warning';\nimport { ManagerReferenceNodeSetterContext } from './Manager';\nimport { safeInvoke, unwrapArray, setRef } from './utils';\nexport function Reference(_ref) {\n var children = _ref.children,\n innerRef = _ref.innerRef;\n var setReferenceNode = React.useContext(ManagerReferenceNodeSetterContext);\n var refHandler = React.useCallback(function (node) {\n setRef(innerRef, node);\n safeInvoke(setReferenceNode, node);\n }, [innerRef, setReferenceNode]); // ran on unmount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n\n React.useEffect(function () {\n return function () {\n return setRef(innerRef, null);\n };\n }, []);\n React.useEffect(function () {\n warning(Boolean(setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n }, [setReferenceNode]);\n return unwrapArray(children)({\n ref: refHandler\n });\n}","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nlet batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport const setBatch = newBatch => batch = newBatch; // Supply a getter just to skip dealing with ESM bindings\n\nexport const getBatch = () => batch;","import * as React from 'react';\nconst ContextKey = Symbol.for(`react-redux-context`);\nconst gT = typeof globalThis !== \"undefined\" ? globalThis :\n/* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */\n{};\n\nfunction getContext() {\n var _gT$ContextKey;\n\n if (!React.createContext) return {};\n const contextMap = (_gT$ContextKey = gT[ContextKey]) != null ? _gT$ContextKey : gT[ContextKey] = new Map();\n let realContext = contextMap.get(React.createContext);\n\n if (!realContext) {\n realContext = React.createContext(null);\n\n if (process.env.NODE_ENV !== 'production') {\n realContext.displayName = 'ReactRedux';\n }\n\n contextMap.set(React.createContext, realContext);\n }\n\n return realContext;\n}\n\nexport const ReactReduxContext = /*#__PURE__*/getContext();\nexport default ReactReduxContext;","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n\n/**\r\n * Hook factory, which creates a `useReduxContext` hook bound to a given context. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useReduxContext` hook bound to the specified context.\r\n */\nexport function createReduxContextHook(context = ReactReduxContext) {\n return function useReduxContext() {\n const contextValue = useContext(context);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n }\n\n return contextValue;\n };\n}\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const { store } = useReduxContext()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport const useReduxContext = /*#__PURE__*/createReduxContextHook();","export const notInitialized = () => {\n throw new Error('uSES not initialized!');\n};","import { useCallback, useDebugValue, useRef } from 'react';\nimport { createReduxContextHook, useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { ReactReduxContext } from '../components/Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStoreWithSelector = notInitialized;\nexport const initializeUseSelector = fn => {\n useSyncExternalStoreWithSelector = fn;\n};\n\nconst refEquality = (a, b) => a === b;\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context = ReactReduxContext) {\n const useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : createReduxContextHook(context);\n return function useSelector(selector, equalityFnOrOptions = {}) {\n const {\n equalityFn = refEquality,\n stabilityCheck = undefined,\n noopCheck = undefined\n } = typeof equalityFnOrOptions === 'function' ? {\n equalityFn: equalityFnOrOptions\n } : equalityFnOrOptions;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(`You must pass a selector to useSelector`);\n }\n\n if (typeof selector !== 'function') {\n throw new Error(`You must pass a function as a selector to useSelector`);\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(`You must pass a function as an equality function to useSelector`);\n }\n }\n\n const {\n store,\n subscription,\n getServerState,\n stabilityCheck: globalStabilityCheck,\n noopCheck: globalNoopCheck\n } = useReduxContext();\n const firstRun = useRef(true);\n const wrappedSelector = useCallback({\n [selector.name](state) {\n const selected = selector(state);\n\n if (process.env.NODE_ENV !== 'production') {\n const finalStabilityCheck = typeof stabilityCheck === 'undefined' ? globalStabilityCheck : stabilityCheck;\n\n if (finalStabilityCheck === 'always' || finalStabilityCheck === 'once' && firstRun.current) {\n const toCompare = selector(state);\n\n if (!equalityFn(selected, toCompare)) {\n let stack = undefined;\n\n try {\n throw new Error();\n } catch (e) {\n ;\n ({\n stack\n } = e);\n }\n\n console.warn('Selector ' + (selector.name || 'unknown') + ' returned a different result when called with the same parameters. This can lead to unnecessary rerenders.' + '\\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization', {\n state,\n selected,\n selected2: toCompare,\n stack\n });\n }\n }\n\n const finalNoopCheck = typeof noopCheck === 'undefined' ? globalNoopCheck : noopCheck;\n\n if (finalNoopCheck === 'always' || finalNoopCheck === 'once' && firstRun.current) {\n // @ts-ignore\n if (selected === state) {\n let stack = undefined;\n\n try {\n throw new Error();\n } catch (e) {\n ;\n ({\n stack\n } = e);\n }\n\n console.warn('Selector ' + (selector.name || 'unknown') + ' returned the root state when called. This can lead to unnecessary rerenders.' + '\\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.', {\n stack\n });\n }\n }\n\n if (firstRun.current) firstRun.current = false;\n }\n\n return selected;\n }\n\n }[selector.name], [selector, globalStabilityCheck, stabilityCheck]);\n const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, wrappedSelector, equalityFn);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return <div>{counter}</div>\r\n * }\r\n */\n\nexport const useSelector = /*#__PURE__*/createSelectorHook();","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, {\n areStatesEqual,\n areOwnPropsEqual,\n areStatePropsEqual\n}) {\n let hasRunAtLeastOnce = false;\n let state;\n let ownProps;\n let stateProps;\n let dispatchProps;\n let mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n const nextStateProps = mapStateToProps(state, ownProps);\n const statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n const propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n const stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n}\n// TODO: Add more comments\n// The selector returned by selectorFactory will memoize its results,\n// allowing connect's shouldComponentUpdate to return false if final\n// props have not changed.\nexport default function finalPropsSelectorFactory(dispatch, _ref) {\n let {\n initMapStateToProps,\n initMapDispatchToProps,\n initMergeProps\n } = _ref,\n options = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n const mapStateToProps = initMapStateToProps(dispatch, options);\n const mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n const mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps);\n }\n\n return pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant( // * Note:\n// It seems that the dispatch argument\n// could be a dispatch function in some cases (ex: whenMapDispatchToPropsIsMissing)\n// and a state object in some others (ex: whenMapStateToPropsIsMissing)\n// eslint-disable-next-line no-unused-vars\ngetConstant) {\n return function initConstantSelector(dispatch) {\n const constant = getConstant(dispatch);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n// TODO Can this get pulled out so that we can subscribe directly to the store if we don't need ownProps?\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, {\n displayName\n }) {\n const proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch, undefined);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n let props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","export function createInvalidArgFactory(arg, name) {\n return (dispatch, options) => {\n throw new Error(`Invalid value of type ${typeof arg} for ${name} argument when connecting component ${options.wrappedComponentName}.`);\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nimport { createInvalidArgFactory } from './invalidArgFactory';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n // @ts-ignore\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, {\n displayName,\n areMergedPropsEqual\n }) {\n let hasRunOnce = false;\n let mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n const nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function mergePropsFactory(mergeProps) {\n return !mergeProps ? () => defaultMergeProps : typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : createInvalidArgFactory(mergeProps, 'mergeProps');\n}","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n const batch = getBatch();\n let first = null;\n let last = null;\n return {\n clear() {\n first = null;\n last = null;\n },\n\n notify() {\n batch(() => {\n let listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n\n get() {\n let listeners = [];\n let listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n\n subscribe(callback) {\n let isSubscribed = true;\n let listener = last = {\n callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n\n };\n}\n\nconst nullListeners = {\n notify() {},\n\n get: () => []\n};\nexport function createSubscription(store, parentSub) {\n let unsubscribe;\n let listeners = nullListeners; // Reasons to keep the subscription active\n\n let subscriptionsAmount = 0; // Is this specific subscription subscribed (or only nested ones?)\n\n let selfSubscribed = false;\n\n function addNestedSub(listener) {\n trySubscribe();\n const cleanupListener = listeners.subscribe(listener); // cleanup nested sub\n\n let removed = false;\n return () => {\n if (!removed) {\n removed = true;\n cleanupListener();\n tryUnsubscribe();\n }\n };\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return selfSubscribed;\n }\n\n function trySubscribe() {\n subscriptionsAmount++;\n\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n subscriptionsAmount--;\n\n if (unsubscribe && subscriptionsAmount === 0) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n function trySubscribeSelf() {\n if (!selfSubscribed) {\n selfSubscribed = true;\n trySubscribe();\n }\n }\n\n function tryUnsubscribeSelf() {\n if (selfSubscribed) {\n selfSubscribed = false;\n tryUnsubscribe();\n }\n }\n\n const subscription = {\n addNestedSub,\n notifyNestedSubs,\n handleChangeWrapper,\n isSubscribed,\n trySubscribe: trySubscribeSelf,\n tryUnsubscribe: tryUnsubscribeSelf,\n getListeners: () => listeners\n };\n return subscription;\n}","import * as React from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n// Matches logic in React's `shared/ExecutionEnvironment` file\n\nexport const canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\nexport const useIsomorphicLayoutEffect = canUseDOM ? React.useLayoutEffect : React.useEffect;","function is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"reactReduxForwardedRef\"];\n\n/* eslint-disable valid-jsdoc, @typescript-eslint/no-unused-vars */\nimport hoistStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport defaultSelectorFactory from '../connect/selectorFactory';\nimport { mapDispatchToPropsFactory } from '../connect/mapDispatchToProps';\nimport { mapStateToPropsFactory } from '../connect/mapStateToProps';\nimport { mergePropsFactory } from '../connect/mergeProps';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport shallowEqual from '../utils/shallowEqual';\nimport warning from '../utils/warning';\nimport { ReactReduxContext } from './Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStore = notInitialized;\nexport const initializeConnect = fn => {\n useSyncExternalStore = fn;\n}; // Define some constant arrays just to avoid re-creating these\n\nconst EMPTY_ARRAY = [null, 0];\nconst NO_SUBSCRIPTION_ARRAY = [null, null]; // Attempts to stringify whatever not-really-a-component value we were given\n// for logging in an error message\n\nconst stringifyComponent = Comp => {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\n// This is \"just\" a `useLayoutEffect`, but with two modifications:\n// - we need to fall back to `useEffect` in SSR to avoid annoying warnings\n// - we extract this to a separate function to avoid closing over values\n// and causing memory leaks\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(() => effectFunc(...effectArgs), dependencies);\n} // Effect callback, extracted: assign the latest props values to refs for later usage\n\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, // actualChildProps: unknown,\nchildPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n} // Effect callback, extracted: subscribe to the Redux store or nearest connected ancestor,\n// check for updates after dispatched actions, and trigger re-renders.\n\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, // forceComponentUpdateDispatch: React.Dispatch<any>,\nadditionalSubscribeListener) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return () => {}; // Capture values for checking if and when this component unmounts\n\n let didUnsubscribe = false;\n let lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n const checkForUpdates = () => {\n if (didUnsubscribe || !isMounted.current) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n } // TODO We're currently calling getState ourselves here, rather than letting `uSES` do it\n\n\n const latestStoreState = store.getState();\n let newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // TODO This is hacky and not how `uSES` is meant to be used\n // Trigger the React `useSyncExternalStore` subscriber\n\n additionalSubscribeListener();\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n const unsubscribeWrapper = () => {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n} // Reducer initial state creation for our update reducer\n\n\nconst initStateUpdates = () => EMPTY_ARRAY;\n\nfunction strictEqual(a, b) {\n return a === b;\n}\n/**\r\n * Infers the type of props that a connector will inject into a component.\r\n */\n\n\nlet hasWarnedAboutDeprecatedPureOption = false;\n/**\r\n * Connects a React component to a Redux store.\r\n *\r\n * - Without arguments, just wraps the component, without changing the behavior / props\r\n *\r\n * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior\r\n * is to override ownProps (as stated in the docs), so what remains is everything that's\r\n * not a state or dispatch prop\r\n *\r\n * - When 3rd param is passed, we don't know if ownProps propagate and whether they\r\n * should be valid component props, because it depends on mergeProps implementation.\r\n * As such, it is the user's responsibility to extend ownProps interface from state or\r\n * dispatch props or both when applicable\r\n *\r\n * @param mapStateToProps A function that extracts values from state\r\n * @param mapDispatchToProps Setup for dispatching actions\r\n * @param mergeProps Optional callback to merge state and dispatch props together\r\n * @param options Options for configuring the connection\r\n *\r\n */\n\nfunction connect(mapStateToProps, mapDispatchToProps, mergeProps, {\n // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.\n // @ts-ignore\n pure,\n areStatesEqual = strictEqual,\n areOwnPropsEqual = shallowEqual,\n areStatePropsEqual = shallowEqual,\n areMergedPropsEqual = shallowEqual,\n // use React's forwardRef to expose a ref of the wrapped component\n forwardRef = false,\n // the context consumer to use\n context = ReactReduxContext\n} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (pure !== undefined && !hasWarnedAboutDeprecatedPureOption) {\n hasWarnedAboutDeprecatedPureOption = true;\n warning('The `pure` option has been removed. `connect` is now always a \"pure/memoized\" component');\n }\n }\n\n const Context = context;\n const initMapStateToProps = mapStateToPropsFactory(mapStateToProps);\n const initMapDispatchToProps = mapDispatchToPropsFactory(mapDispatchToProps);\n const initMergeProps = mergePropsFactory(mergeProps);\n const shouldHandleStateChanges = Boolean(mapStateToProps);\n\n const wrapWithConnect = WrappedComponent => {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(`You must pass a component to the function returned by connect. Instead received ${stringifyComponent(WrappedComponent)}`);\n }\n\n const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n const displayName = `Connect(${wrappedComponentName})`;\n const selectorFactoryOptions = {\n shouldHandleStateChanges,\n displayName,\n wrappedComponentName,\n WrappedComponent,\n // @ts-ignore\n initMapStateToProps,\n // @ts-ignore\n initMapDispatchToProps,\n initMergeProps,\n areStatesEqual,\n areStatePropsEqual,\n areOwnPropsEqual,\n areMergedPropsEqual\n };\n\n function ConnectFunction(props) {\n const [propsContext, reactReduxForwardedRef, wrapperProps] = React.useMemo(() => {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n const {\n reactReduxForwardedRef\n } = props,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]);\n const ContextToUse = React.useMemo(() => {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && // @ts-ignore\n isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n const contextValue = React.useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(`Could not find \"store\" in the context of ` + `\"${displayName}\". Either wrap the root component in a <Provider>, ` + `or pass a custom React context provider to <Provider> and the corresponding ` + `React context consumer to ${displayName} in connect options.`);\n } // Based on the previous check, one of these must be true\n\n\n const store = didStoreComeFromProps ? props.store : contextValue.store;\n const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState;\n const childPropsSelector = React.useMemo(() => {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return defaultSelectorFactory(store.dispatch, selectorFactoryOptions);\n }, [store]);\n const [subscription, notifyNestedSubs] = React.useMemo(() => {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n const subscription = createSubscription(store, didStoreComeFromProps ? undefined : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n const notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]); // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n const overriddenContextValue = React.useMemo(() => {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // Set up refs to coordinate values between the subscription effect and the render logic\n\n const lastChildProps = React.useRef();\n const lastWrapperProps = React.useRef(wrapperProps);\n const childPropsFromStoreUpdate = React.useRef();\n const renderIsScheduled = React.useRef(false);\n const isProcessingDispatch = React.useRef(false);\n const isMounted = React.useRef(false);\n const latestSubscriptionCallbackError = React.useRef();\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n const actualChildPropsSelector = React.useMemo(() => {\n const selector = () => {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n };\n\n return selector;\n }, [store, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n const subscribeForReact = React.useMemo(() => {\n const subscribe = reactListener => {\n if (!subscription) {\n return () => {};\n }\n\n return subscribeUpdates(shouldHandleStateChanges, store, subscription, // @ts-ignore\n childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, reactListener);\n };\n\n return subscribe;\n }, [subscription]);\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs]);\n let actualChildProps;\n\n try {\n actualChildProps = useSyncExternalStore( // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing\n subscribeForReact, // TODO This is incredibly hacky. We've already processed the store update and calculated new child props,\n // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.\n actualChildPropsSelector, getServerState ? () => childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector);\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n ;\n err.message += `\\nThe error may be correlated with this previous error:\\n${latestSubscriptionCallbackError.current.stack}\\n\\n`;\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(() => {\n latestSubscriptionCallbackError.current = undefined;\n childPropsFromStoreUpdate.current = undefined;\n lastChildProps.current = actualChildProps;\n }); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n const renderedWrappedComponent = React.useMemo(() => {\n return (\n /*#__PURE__*/\n // @ts-ignore\n React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }))\n );\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n const renderedChild = React.useMemo(() => {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n }\n\n const _Connect = React.memo(ConnectFunction);\n\n // Add a hacky cast to get the right output type\n const Connect = _Connect;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n const _forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n // @ts-ignore\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n\n const forwarded = _forwarded;\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n\n return wrapWithConnect;\n}\n\nexport default connect;","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nimport { createInvalidArgFactory } from './invalidArgFactory';\nexport function mapStateToPropsFactory(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(() => ({})) : typeof mapStateToProps === 'function' ? // @ts-ignore\n wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : createInvalidArgFactory(mapStateToProps, 'mapStateToProps');\n}","import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nimport { createInvalidArgFactory } from './invalidArgFactory';\nexport function mapDispatchToPropsFactory(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(dispatch => // @ts-ignore\n bindActionCreators(mapDispatchToProps, dispatch)) : !mapDispatchToProps ? wrapMapToPropsConstant(dispatch => ({\n dispatch\n })) : typeof mapDispatchToProps === 'function' ? // @ts-ignore\n wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : createInvalidArgFactory(mapDispatchToProps, 'mapDispatchToProps');\n}","export default function bindActionCreators(actionCreators, dispatch) {\n const boundActionCreators = {};\n\n for (const key in actionCreators) {\n const actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = (...args) => dispatch(actionCreator(...args));\n }\n }\n\n return boundActionCreators;\n}","import * as React from 'react';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider({\n store,\n context,\n children,\n serverState,\n stabilityCheck = 'once',\n noopCheck = 'once'\n}) {\n const contextValue = React.useMemo(() => {\n const subscription = createSubscription(store);\n return {\n store,\n subscription,\n getServerState: serverState ? () => serverState : undefined,\n stabilityCheck,\n noopCheck\n };\n }, [store, serverState, stabilityCheck, noopCheck]);\n const previousState = React.useMemo(() => store.getState(), [store]);\n useIsomorphicLayoutEffect(() => {\n const {\n subscription\n } = contextValue;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return () => {\n subscription.tryUnsubscribe();\n subscription.onStateChange = undefined;\n };\n }, [contextValue, previousState]);\n const Context = context || ReactReduxContext; // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype\n\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nexport default Provider;","import { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext, createReduxContextHook } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context = ReactReduxContext) {\n const useReduxContext = // @ts-ignore\n context === ReactReduxContext ? useDefaultReduxContext : // @ts-ignore\n createReduxContextHook(context);\n return function useStore() {\n const {\n store\n } = useReduxContext(); // @ts-ignore\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport const useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context = ReactReduxContext) {\n const useStore = // @ts-ignore\n context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n const store = useStore(); // @ts-ignore\n\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n * <div>\r\n * <span>{value}</span>\r\n * <button onClick={increaseCounter}>Increase counter</button>\r\n * </div>\r\n * )\r\n * }\r\n */\n\nexport const useDispatch = /*#__PURE__*/createDispatchHook();","// The primary entry point assumes we're working with standard ReactDOM/RN, but\n// older versions that do not include `useSyncExternalStore` (React 16.9 - 17.x).\n// Because of that, the useSyncExternalStore compat shim is needed.\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch';\nimport { initializeUseSelector } from './hooks/useSelector';\nimport { initializeConnect } from './components/connect';\ninitializeUseSelector(useSyncExternalStoreWithSelector);\ninitializeConnect(useSyncExternalStore); // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };\nexport * from './exports';","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<BrowserRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<HashRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return <a {...props} />;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Link> outside a <Router>\");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n </RouterContext.Consumer>\n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\", // TODO: deprecate\n activeStyle, // TODO: deprecate\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <NavLink> outside a <Router>\");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n let className =\n typeof classNameProp === \"function\"\n ? classNameProp(isActive)\n : classNameProp;\n\n let style =\n typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = { ...style, ...activeStyle };\n }\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return <Link {...props} />;\n }}\n </RouterContext.Consumer>\n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\",\n \"false\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n };\n}\n\nexport default NavLink;\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nconst MAX_SIGNED_31_BIT_INT = 1073741823;\n\nconst commonjsGlobal =\n typeof globalThis !== \"undefined\" // 'global proper'\n ? // eslint-disable-next-line no-undef\n globalThis\n : typeof window !== \"undefined\"\n ? window // Browser\n : typeof global !== \"undefined\"\n ? global // node.js\n : {};\n\nfunction getUniqueId() {\n let key = \"__global_unique_id__\";\n return (commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1);\n}\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // eslint-disable-next-line no-self-compare\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n let handlers = [];\n return {\n on(handler) {\n handlers.push(handler);\n },\n\n off(handler) {\n handlers = handlers.filter(h => h !== handler);\n },\n\n get() {\n return value;\n },\n\n set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(handler => handler(value, changedBits));\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nexport default function createReactContext(defaultValue, calculateChangedBits) {\n const contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n class Provider extends React.Component {\n emitter = createEventEmitter(this.props.value);\n\n static childContextTypes = {\n [contextProp]: PropTypes.object.isRequired\n };\n\n getChildContext() {\n return {\n [contextProp]: this.emitter\n };\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n let oldValue = this.props.value;\n let newValue = nextProps.value;\n let changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits =\n typeof calculateChangedBits === \"function\"\n ? calculateChangedBits(oldValue, newValue)\n : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== \"production\") {\n warning(\n (changedBits & MAX_SIGNED_31_BIT_INT) === changedBits,\n \"calculateChangedBits: Expected the return value to be a \" +\n \"31-bit integer. Instead received: \" +\n changedBits\n );\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n }\n\n render() {\n return this.props.children;\n }\n }\n\n class Consumer extends React.Component {\n static contextTypes = {\n [contextProp]: PropTypes.object\n };\n\n observedBits;\n\n state = {\n value: this.getValue()\n };\n\n componentWillReceiveProps(nextProps) {\n let { observedBits } = nextProps;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n let { observedBits } = this.props;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n }\n\n getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n }\n\n onUpdate = (newValue, changedBits) => {\n const observedBits = this.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n this.setState({ value: this.getValue() });\n }\n };\n\n render() {\n return onlyChild(this.props.children)(this.state.value);\n }\n }\n\n return {\n Provider,\n Consumer\n };\n}\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport createReactContext from \"./miniCreateReactContext\";\n\nexport default React.createContext || createReactContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"./createContext\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any <Redirect>s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the <Router> is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n this._pendingLocation = location;\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this.unlisten) {\n // Any pre-mount location changes have been captured at\n // this point, so unregister the listener.\n this.unlisten();\n }\n if (!this.props.staticContext) {\n this.unlisten = this.props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n }\n });\n }\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n }\n\n render() {\n return (\n <RouterContext.Provider\n value={{\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }}\n >\n <HistoryContext.Provider\n children={this.props.children || null}\n value={this.props.history}\n />\n </RouterContext.Provider>\n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change <Router history>\"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<MemoryRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\nfunction Prompt({ message, when = true }) {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Prompt> outside a <Router>\");\n\n if (!when || context.staticContext) return null;\n\n const method = context.history.block;\n\n return (\n <Lifecycle\n onMount={self => {\n self.release = method(message);\n }}\n onUpdate={(self, prevProps) => {\n if (prevProps.message !== message) {\n self.release();\n self.release = method(message);\n }\n }}\n onUnmount={self => {\n self.release();\n }}\n message={message}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n}\n\nif (__DEV__) {\n const messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n\n Prompt.propTypes = {\n when: PropTypes.bool,\n message: messageType.isRequired\n };\n}\n\nexport default Prompt;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Redirect> outside a <Router>\");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n <Lifecycle\n onMount={() => {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `<Route${path ? ` path=\"${path}\"` : \"\"}>, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Route> outside a <Router>\");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // <Switch> already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return (\n <RouterContext.Provider value={props}>\n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n </RouterContext.Provider>\n );\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with <StaticRouter>\", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return <Router {...rest} history={history} staticContext={context} />;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<StaticRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Switch> outside a <Router>\");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two <Route>s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n const displayName = `withRouter(${Component.displayName || Component.name})`;\n const C = props => {\n const { wrappedComponentRef, ...remainingProps } = props;\n\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(\n context,\n `You should not use <${displayName} /> outside a <Router>`\n );\n return (\n <Component\n {...remainingProps}\n {...context}\n ref={wrappedComponentRef}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (__DEV__) {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.object\n ])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(RouterContext).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(RouterContext).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { isValidElement } from 'react';\n\nimport { Id } from '../types';\n\nexport function isNum(v: any): v is Number {\n return typeof v === 'number' && !isNaN(v);\n}\n\nexport function isBool(v: any): v is Boolean {\n return typeof v === 'boolean';\n}\n\nexport function isStr(v: any): v is String {\n return typeof v === 'string';\n}\n\nexport function isFn(v: any): v is Function {\n return typeof v === 'function';\n}\n\nexport function parseClassName(v: any) {\n return isStr(v) || isFn(v) ? v : null;\n}\n\nexport function objectValues<T>(obj: Record<string, T>) {\n return Object.keys(obj).map(key => obj[key]);\n}\n\nexport function hasToastId(toastId?: Id) {\n return toastId === 0 || toastId;\n}\n\nexport function getAutoCloseDelay(\n toastAutoClose?: false | number,\n containerAutoClose?: false | number\n) {\n return toastAutoClose === false ||\n (isNum(toastAutoClose) && toastAutoClose > 0)\n ? toastAutoClose\n : containerAutoClose;\n}\n\nexport const canUseDom = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nexport function canBeRendered<T>(content: T): boolean {\n return (\n isValidElement(content) || isStr(content) || isFn(content) || isNum(content)\n );\n}\n","import { ToastPosition, TypeOptions } from '../types';\n\ntype KeyOfPosition =\n | 'TOP_LEFT'\n | 'TOP_RIGHT'\n | 'TOP_CENTER'\n | 'BOTTOM_LEFT'\n | 'BOTTOM_RIGHT'\n | 'BOTTOM_CENTER';\n\ntype KeyOfType = 'INFO' | 'SUCCESS' | 'WARNING' | 'ERROR' | 'DEFAULT' | 'DARK';\n\nexport const POSITION: { [key in KeyOfPosition]: ToastPosition } = {\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right',\n TOP_CENTER: 'top-center',\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right',\n BOTTOM_CENTER: 'bottom-center'\n};\n\nexport const TYPE: { [key in KeyOfType]: TypeOptions } = {\n INFO: 'info',\n SUCCESS: 'success',\n WARNING: 'warning',\n ERROR: 'error',\n DEFAULT: 'default',\n DARK: 'dark'\n};\n\nexport const enum DEFAULT {\n COLLAPSE_DURATION = 300,\n DEBOUNCE_DURATION = 50,\n CSS_NAMESPACE = 'Toastify'\n}\n","import * as React from 'react';\nimport { Transition } from 'react-transition-group';\nimport { ToastTransitionProps } from '../types';\n\nimport { collapseToast } from './collapseToast';\nimport { DEFAULT } from './constant';\n\nexport interface CSSTransitionProps {\n /**\n * Css class to apply when toast enter\n */\n enter: string;\n\n /**\n * Css class to apply when toast leave\n */\n exit: string;\n\n /**\n * Define the duration of the transition in ms\n * You can also pass an array `[enterDuration, exitDuration]`\n * `Default: 750`\n */\n duration?: number | [number, number];\n\n /**\n * Append current toast position to the classname.\n * For instance `myclass--top-center`...\n * `Default: false`\n */\n appendPosition?: boolean;\n\n /**\n * Collapse toast smoothly when animation end\n * `Default: true`\n */\n collapse?: boolean;\n\n /**\n * Collapse transition duration\n * `Default: 300`\n */\n collapseDuration?: number;\n}\n\nexport function cssTransition({\n enter,\n exit,\n duration = 750,\n appendPosition = false,\n collapse = true,\n collapseDuration = DEFAULT.COLLAPSE_DURATION\n}: CSSTransitionProps) {\n let enterDuration: number, exitDuration: number;\n\n if (Array.isArray(duration) && duration.length === 2) {\n [enterDuration, exitDuration] = duration;\n } else {\n enterDuration = exitDuration = duration as number;\n }\n\n return function ToastTransition({\n children,\n position,\n preventExitTransition,\n done,\n ...props\n }: ToastTransitionProps) {\n const enterClassName = appendPosition ? `${enter}--${position}` : enter;\n const exitClassName = appendPosition ? `${exit}--${position}` : exit;\n\n const onEnter = () => {\n const node = props.nodeRef.current;\n if (node) {\n node.classList.add(enterClassName);\n node.style.animationFillMode = 'forwards';\n node.style.animationDuration = `${enterDuration}ms`;\n }\n };\n\n const onEntered = () => {\n const node = props.nodeRef.current;\n if (node) {\n node.classList.remove(enterClassName);\n node.style.removeProperty('animationFillMode');\n node.style.removeProperty('animationDuration');\n }\n };\n\n const onExited = () => {\n const node = props.nodeRef.current;\n\n if (node) {\n node.removeEventListener('animationend', onExited);\n collapse ? collapseToast(node, done, collapseDuration) : done();\n }\n };\n\n const onExit = () => {\n const node = props.nodeRef.current;\n if (node) {\n node.classList.add(exitClassName);\n node.style.animationFillMode = 'forwards';\n node.style.animationDuration = `${exitDuration}ms`;\n node.addEventListener('animationend', onExited);\n }\n };\n\n return (\n <Transition\n {...props}\n timeout={\n preventExitTransition\n ? collapse\n ? collapseDuration\n : DEFAULT.DEBOUNCE_DURATION\n : {\n enter: enterDuration,\n exit: collapse\n ? exitDuration + collapseDuration\n : exitDuration + DEFAULT.DEBOUNCE_DURATION\n }\n }\n onEnter={onEnter}\n onEntered={onEntered}\n onExit={preventExitTransition ? onExited : onExit}\n unmountOnExit\n >\n {children}\n </Transition>\n );\n };\n}\n","import { DEFAULT } from './constant';\n\n/**\n * Used to collapse toast after exit animation\n */\nexport function collapseToast(\n node: HTMLElement,\n done: () => void,\n duration = DEFAULT.COLLAPSE_DURATION\n) {\n const height = node.scrollHeight;\n const style = node.style;\n\n requestAnimationFrame(() => {\n style.minHeight = 'initial';\n style.height = height + 'px';\n style.transition = `all ${duration}ms`;\n\n requestAnimationFrame(() => {\n style.height = '0';\n style.padding = '0';\n style.margin = '0';\n setTimeout(() => done(), duration as number);\n });\n });\n}\n","import {\n Id,\n ToastContent,\n ClearWaitingQueueParams,\n NotValidatedToastProps\n} from '../types';\nimport { ContainerInstance } from '../hooks';\n\nexport const enum Event {\n Show,\n Clear,\n DidMount,\n WillUnmount,\n Change,\n ClearWaitingQueue\n}\n\ntype OnShowCallback = (\n content: ToastContent,\n options: NotValidatedToastProps\n) => void;\ntype OnClearCallback = (id?: Id) => void;\ntype OnClearWaitingQueue = (params: ClearWaitingQueueParams) => void;\ntype OnDidMountCallback = (containerInstance: ContainerInstance) => void;\ntype OnWillUnmountCallback = OnDidMountCallback;\nexport type OnChangeCallback = (\n toast: number,\n containerId?: number | string\n) => void;\ntype Callback =\n | OnShowCallback\n | OnClearCallback\n | OnClearWaitingQueue\n | OnDidMountCallback\n | OnWillUnmountCallback\n | OnChangeCallback;\ntype TimeoutId = ReturnType<typeof window.setTimeout>;\n\nexport interface EventManager {\n list: Map<Event, Callback[]>;\n emitQueue: Map<Event, TimeoutId[]>;\n on(event: Event.Show, callback: OnShowCallback): EventManager;\n on(event: Event.Clear, callback: OnClearCallback): EventManager;\n on(\n event: Event.ClearWaitingQueue,\n callback: OnClearWaitingQueue\n ): EventManager;\n on(event: Event.DidMount, callback: OnDidMountCallback): EventManager;\n on(event: Event.WillUnmount, callback: OnWillUnmountCallback): EventManager;\n on(event: Event.Change, callback: OnChangeCallback): EventManager;\n off(event: Event, callback?: Callback): EventManager;\n cancelEmit(event: Event): EventManager;\n emit(\n event: Event.Show,\n content: React.ReactNode,\n options: NotValidatedToastProps\n ): void;\n emit(event: Event.Clear, id?: string | number): void;\n emit(event: Event.ClearWaitingQueue, params: ClearWaitingQueueParams): void;\n emit(event: Event.DidMount, containerInstance: ContainerInstance): void;\n emit(event: Event.WillUnmount, containerInstance: ContainerInstance): void;\n emit(event: Event.Change, toast: number, containerId?: number | string): void;\n}\n\nexport const eventManager: EventManager = {\n list: new Map(),\n emitQueue: new Map(),\n\n on(event: Event, callback: Callback) {\n this.list.has(event) || this.list.set(event, []);\n this.list.get(event)!.push(callback);\n return this;\n },\n\n off(event, callback) {\n if (callback) {\n const cb = this.list.get(event)!.filter(cb => cb !== callback);\n this.list.set(event, cb);\n return this;\n }\n this.list.delete(event);\n return this;\n },\n\n cancelEmit(event) {\n const timers = this.emitQueue.get(event);\n if (timers) {\n timers.forEach((timer: TimeoutId) => clearTimeout(timer));\n this.emitQueue.delete(event);\n }\n\n return this;\n },\n\n /**\n * Enqueue the event at the end of the call stack\n * Doing so let the user call toast as follow:\n * toast('1')\n * toast('2')\n * toast('3')\n * Without setTimemout the code above will not work\n */\n emit(event: Event, ...args: any[]) {\n this.list.has(event) &&\n this.list.get(event)!.forEach((callback: Callback) => {\n const timer = setTimeout(() => {\n // @ts-ignore\n callback(...args);\n }, 0);\n\n this.emitQueue.has(event) || this.emitQueue.set(event, []);\n this.emitQueue.get(event)!.push(timer);\n });\n }\n};\n","import { useRef, useEffect } from 'react';\n\n/**\n * `useKeeper` is a helper around `useRef`.\n *\n * You don't need to access the `.current`property to get the value\n * If refresh is set to true. The ref will be updated every render\n */\nexport function useKeeper<T>(arg: T, refresh = false) {\n const ref = useRef<T>(arg);\n\n useEffect(() => {\n if (refresh) ref.current = arg;\n });\n\n return ref.current;\n}\n","import { Id } from '../types';\n\nimport { hasToastId } from '../utils';\n\nexport type State = Array<Id>;\nexport type Action =\n | { type: 'ADD'; toastId: Id; staleId?: Id }\n | { type: 'REMOVE'; toastId?: Id };\n\nexport function reducer(state: State, action: Action) {\n switch (action.type) {\n case 'ADD':\n return [...state, action.toastId].filter(id => id !== action.staleId);\n case 'REMOVE':\n return hasToastId(action.toastId)\n ? state.filter(id => id !== action.toastId)\n : [];\n }\n}\n","import {\n useEffect,\n useRef,\n useReducer,\n cloneElement,\n isValidElement\n} from 'react';\nimport {\n parseClassName,\n canBeRendered,\n isBool,\n isFn,\n isNum,\n isStr,\n hasToastId,\n getAutoCloseDelay\n} from '../utils';\nimport { eventManager, Event } from '../core/eventManager';\n\nimport {\n Id,\n ToastContainerProps,\n ToastProps,\n ToastContent,\n Toast,\n ToastPosition,\n ClearWaitingQueueParams,\n NotValidatedToastProps,\n ToastTransition\n} from '../types';\nimport { useKeeper } from './useKeeper';\nimport { reducer } from './toastContainerReducer';\n\ntype CollectionItem = Record<Id, Toast>;\ntype ToastToRender = Partial<Record<ToastPosition, Toast[]>>;\n\ninterface QueuedToast {\n toastContent: ToastContent;\n toastProps: ToastProps;\n staleId?: Id;\n}\n\nexport interface ContainerInstance {\n toastKey: number;\n displayedToast: number;\n props: ToastContainerProps;\n containerId?: Id | null;\n isToastActive: (toastId: Id) => boolean;\n getToast: (id: Id) => Toast | null;\n}\n\nexport function useToastContainer(props: ToastContainerProps) {\n const [, forceUpdate] = useReducer(x => x + 1, 0);\n const [toast, dispatch] = useReducer(reducer, []);\n const containerRef = useRef(null);\n let toastCount = useKeeper(0);\n let queue = useKeeper<QueuedToast[]>([]);\n const collection = useKeeper<CollectionItem>({});\n const instance = useKeeper<ContainerInstance>({\n toastKey: 1,\n displayedToast: 0,\n props,\n containerId: null,\n isToastActive: isToastActive,\n getToast: id => collection[id] || null\n });\n\n useEffect(() => {\n instance.containerId = props.containerId;\n eventManager\n .cancelEmit(Event.WillUnmount)\n .on(Event.Show, buildToast)\n .on(Event.Clear, toastId => containerRef.current && removeToast(toastId))\n .on(Event.ClearWaitingQueue, clearWaitingQueue)\n .emit(Event.DidMount, instance);\n\n return () => eventManager.emit(Event.WillUnmount, instance);\n }, []);\n\n useEffect(() => {\n instance.isToastActive = isToastActive;\n instance.displayedToast = toast.length;\n eventManager.emit(Event.Change, toast.length, props.containerId);\n }, [toast]);\n\n useEffect(() => {\n instance.props = props;\n });\n\n function isToastActive(id: Id) {\n return toast.indexOf(id) !== -1;\n }\n\n function clearWaitingQueue({ containerId }: ClearWaitingQueueParams) {\n const { limit, enableMultiContainer } = instance.props;\n if (\n limit &&\n (!containerId ||\n (instance.containerId === containerId && enableMultiContainer))\n ) {\n toastCount -= queue.length;\n queue = [];\n }\n }\n\n function removeToast(toastId?: Id) {\n const queueLen = queue.length;\n toastCount = hasToastId(toastId)\n ? toastCount - 1\n : toastCount - instance.displayedToast;\n\n if (toastCount < 0) toastCount = 0;\n\n if (queueLen > 0) {\n const freeSlot = hasToastId(toastId) ? 1 : instance.props.limit!;\n\n if (queueLen === 1 || freeSlot === 1) {\n instance.displayedToast++;\n dequeueToast();\n } else {\n const toDequeue = freeSlot > queueLen ? queueLen : freeSlot;\n instance.displayedToast = toDequeue;\n\n for (let i = 0; i < toDequeue; i++) dequeueToast();\n }\n }\n dispatch({ type: 'REMOVE', toastId });\n }\n\n function dequeueToast() {\n const { toastContent, toastProps, staleId } = queue.shift() as QueuedToast;\n\n // ensure that exit transition has been completed, hence the timeout\n setTimeout(() => {\n appendToast(toastContent, toastProps, staleId);\n }, 500);\n }\n\n /**\n * check if a container is attached to the dom\n * check for multi-container, build only if associated\n * check for duplicate toastId if no update\n */\n function isNotValid({\n containerId,\n toastId,\n updateId\n }: NotValidatedToastProps) {\n return !containerRef.current ||\n (instance.props.enableMultiContainer &&\n containerId !== instance.props.containerId) ||\n (instance.isToastActive(toastId) && updateId == null)\n ? true\n : false;\n }\n\n // this function and all the function called inside needs to rely on ref(`useKeeper`)\n function buildToast(\n content: ToastContent,\n { delay, staleId, ...options }: NotValidatedToastProps\n ) {\n if (!canBeRendered(content) || isNotValid(options)) return;\n\n const { toastId, updateId } = options;\n const { props, isToastActive } = instance;\n const closeToast = () => removeToast(toastId);\n const isNotAnUpdate = !isToastActive(toastId);\n\n if (isNotAnUpdate) toastCount++;\n\n const toastProps: ToastProps = {\n toastId,\n updateId,\n key: options.key || instance.toastKey++,\n type: options.type,\n closeToast: closeToast,\n closeButton: options.closeButton,\n rtl: props.rtl,\n position: options.position || (props.position as ToastPosition),\n transition: options.transition || (props.transition as ToastTransition),\n className: parseClassName(options.className || props.toastClassName),\n bodyClassName: parseClassName(\n options.bodyClassName || props.bodyClassName\n ),\n style: options.style || props.toastStyle,\n bodyStyle: options.bodyStyle || props.bodyStyle,\n onClick: options.onClick || props.onClick,\n pauseOnHover: isBool(options.pauseOnHover)\n ? options.pauseOnHover\n : props.pauseOnHover,\n pauseOnFocusLoss: isBool(options.pauseOnFocusLoss)\n ? options.pauseOnFocusLoss\n : props.pauseOnFocusLoss,\n draggable: isBool(options.draggable)\n ? options.draggable\n : props.draggable,\n draggablePercent: isNum(options.draggablePercent)\n ? options.draggablePercent\n : (props.draggablePercent as number),\n closeOnClick: isBool(options.closeOnClick)\n ? options.closeOnClick\n : props.closeOnClick,\n progressClassName: parseClassName(\n options.progressClassName || props.progressClassName\n ),\n progressStyle: options.progressStyle || props.progressStyle,\n autoClose: getAutoCloseDelay(options.autoClose, props.autoClose),\n hideProgressBar: isBool(options.hideProgressBar)\n ? options.hideProgressBar\n : props.hideProgressBar,\n progress: options.progress,\n role: isStr(options.role) ? options.role : props.role,\n deleteToast() {\n removeFromCollection(toastId);\n }\n };\n\n if (isFn(options.onOpen)) toastProps.onOpen = options.onOpen;\n if (isFn(options.onClose)) toastProps.onClose = options.onClose;\n\n let closeButton = props.closeButton;\n\n if (options.closeButton === false || canBeRendered(options.closeButton)) {\n closeButton = options.closeButton;\n } else if (options.closeButton === true) {\n closeButton = canBeRendered(props.closeButton) ? props.closeButton : true;\n }\n\n toastProps.closeButton = closeButton;\n\n let toastContent = content;\n\n if (isValidElement(content) && !isStr(content.type)) {\n toastContent = cloneElement(content, {\n closeToast,\n toastProps\n });\n } else if (isFn(content)) {\n toastContent = content({ closeToast, toastProps });\n }\n\n // not handling limit + delay by design. Waiting for user feedback first\n if (\n props.limit &&\n props.limit > 0 &&\n toastCount > props.limit &&\n isNotAnUpdate\n ) {\n queue.push({ toastContent, toastProps, staleId });\n } else if (isNum(delay) && (delay as number) > 0) {\n setTimeout(() => {\n appendToast(toastContent, toastProps, staleId);\n }, delay);\n } else {\n appendToast(toastContent, toastProps, staleId);\n }\n }\n\n function appendToast(\n content: ToastContent,\n toastProps: ToastProps,\n staleId?: Id\n ) {\n const { toastId } = toastProps;\n\n collection[toastId] = {\n content,\n props: toastProps\n };\n dispatch({\n type: 'ADD',\n toastId,\n staleId\n });\n }\n\n function removeFromCollection(toastId: Id) {\n delete collection[toastId];\n forceUpdate();\n }\n\n function getToastToRender<T>(\n cb: (position: ToastPosition, toastList: Toast[]) => T\n ) {\n const toastToRender: ToastToRender = {};\n const toastList = props.newestOnTop\n ? Object.keys(collection).reverse()\n : Object.keys(collection);\n\n for (let i = 0; i < toastList.length; i++) {\n const toast = collection[toastList[i]];\n const { position } = toast.props;\n toastToRender[position] || (toastToRender[position] = []);\n\n toastToRender[position]!.push(toast);\n }\n\n return (Object.keys(toastToRender) as Array<ToastPosition>).map(p =>\n cb(p, toastToRender[p]!)\n );\n }\n\n return {\n getToastToRender,\n collection,\n containerRef,\n isToastActive\n };\n}\n","import {\n useState,\n useRef,\n useEffect,\n isValidElement,\n DOMAttributes\n} from 'react';\n\nimport { isFn } from '../utils';\nimport { ToastProps } from '../types';\nimport { useKeeper } from './useKeeper';\n\ninterface Draggable {\n start: number;\n x: number;\n y: number;\n deltaX: number;\n removalDistance: number;\n canCloseOnClick: boolean;\n canDrag: boolean;\n boundingRect: DOMRect | null;\n}\n\ntype DragEvent = MouseEvent & TouchEvent;\n\nfunction getX(e: DragEvent) {\n return e.targetTouches && e.targetTouches.length >= 1\n ? e.targetTouches[0].clientX\n : e.clientX;\n}\n\nfunction getY(e: DragEvent) {\n return e.targetTouches && e.targetTouches.length >= 1\n ? e.targetTouches[0].clientY\n : e.clientY;\n}\n\nexport function useToast(props: ToastProps) {\n const [isRunning, setIsRunning] = useState(true);\n const [preventExitTransition, setPreventExitTransition] = useState(false);\n const toastRef = useRef<HTMLDivElement>(null);\n const drag = useKeeper<Draggable>({\n start: 0,\n x: 0,\n y: 0,\n deltaX: 0,\n removalDistance: 0,\n canCloseOnClick: true,\n canDrag: false,\n boundingRect: null\n });\n const syncProps = useKeeper(props, true);\n const { autoClose, pauseOnHover, closeToast, onClick, closeOnClick } = props;\n\n useEffect(() => {\n if (isFn(props.onOpen))\n props.onOpen(isValidElement(props.children) && props.children.props);\n\n return () => {\n if (isFn(syncProps.onClose))\n syncProps.onClose(\n isValidElement(syncProps.children) && syncProps.children.props\n );\n };\n }, []);\n\n useEffect(() => {\n props.draggable && bindDragEvents();\n return () => {\n props.draggable && unbindDragEvents();\n };\n }, [props.draggable]);\n\n useEffect(() => {\n props.pauseOnFocusLoss && bindFocusEvents();\n return () => {\n props.pauseOnFocusLoss && unbindFocusEvents();\n };\n }, [props.pauseOnFocusLoss]);\n\n function onDragStart(\n e: React.MouseEvent<HTMLElement, MouseEvent> | React.TouchEvent<HTMLElement>\n ) {\n const toast = toastRef.current!;\n drag.canCloseOnClick = true;\n drag.canDrag = true;\n drag.boundingRect = toast.getBoundingClientRect();\n toast.style.transition = '';\n drag.start = drag.x = getX(e.nativeEvent as DragEvent);\n drag.removalDistance = toast.offsetWidth * (props.draggablePercent / 100);\n }\n\n function onDragTransitionEnd() {\n if (drag.boundingRect) {\n const { top, bottom, left, right } = drag.boundingRect;\n\n if (\n props.pauseOnHover &&\n drag.x >= left &&\n drag.x <= right &&\n drag.y >= top &&\n drag.y <= bottom\n ) {\n pauseToast();\n } else {\n playToast();\n }\n }\n }\n\n function playToast() {\n setIsRunning(true);\n }\n\n function pauseToast() {\n setIsRunning(false);\n }\n\n function bindFocusEvents() {\n window.addEventListener('focus', playToast);\n window.addEventListener('blur', pauseToast);\n }\n\n function unbindFocusEvents() {\n window.removeEventListener('focus', playToast);\n window.removeEventListener('blur', pauseToast);\n }\n\n function bindDragEvents() {\n document.addEventListener('mousemove', onDragMove);\n document.addEventListener('mouseup', onDragEnd);\n\n document.addEventListener('touchmove', onDragMove);\n document.addEventListener('touchend', onDragEnd);\n }\n\n function unbindDragEvents() {\n document.removeEventListener('mousemove', onDragMove);\n document.removeEventListener('mouseup', onDragEnd);\n\n document.removeEventListener('touchmove', onDragMove);\n document.removeEventListener('touchend', onDragEnd);\n }\n\n function onDragMove(e: MouseEvent | TouchEvent) {\n e.preventDefault();\n\n const toast = toastRef.current!;\n\n if (drag.canDrag) {\n if (isRunning) pauseToast();\n\n drag.x = getX(e as DragEvent);\n drag.deltaX = drag.x - drag.start;\n drag.y = getY(e as DragEvent);\n\n // prevent false positif during a toast click\n if (drag.start !== drag.x) drag.canCloseOnClick = false;\n\n toast.style.transform = `translateX(${drag.deltaX}px)`;\n toast.style.opacity = `${1 -\n Math.abs(drag.deltaX / drag.removalDistance)}`;\n }\n }\n\n function onDragEnd() {\n const toast = toastRef.current!;\n if (drag.canDrag) {\n drag.canDrag = false;\n\n if (Math.abs(drag.deltaX) > drag.removalDistance) {\n setPreventExitTransition(true);\n props.closeToast();\n return;\n }\n\n toast.style.transition = 'transform 0.2s, opacity 0.2s';\n toast.style.transform = 'translateX(0)';\n toast.style.opacity = '1';\n }\n }\n\n const eventHandlers: DOMAttributes<HTMLElement> = {\n onMouseDown: onDragStart,\n onTouchStart: onDragStart,\n onMouseUp: onDragTransitionEnd,\n onTouchEnd: onDragTransitionEnd\n };\n\n if (autoClose && pauseOnHover) {\n eventHandlers.onMouseEnter = pauseToast;\n eventHandlers.onMouseLeave = playToast;\n }\n\n // prevent toast from closing when user drags the toast\n if (closeOnClick) {\n eventHandlers.onClick = (e: React.MouseEvent) => {\n onClick && onClick(e);\n drag.canCloseOnClick && closeToast();\n };\n }\n\n return {\n playToast,\n pauseToast,\n isRunning,\n preventExitTransition,\n toastRef,\n eventHandlers\n };\n}\n","import * as React from 'react';\nimport { DEFAULT } from '../utils';\nimport { TypeOptions } from '../types';\n\nexport interface CloseButtonProps {\n closeToast: (e: React.MouseEvent<HTMLElement>) => void;\n type: TypeOptions;\n ariaLabel?: string;\n}\n\nexport function CloseButton({\n closeToast,\n type,\n ariaLabel = 'close'\n}: CloseButtonProps) {\n return (\n <button\n className={`${DEFAULT.CSS_NAMESPACE}__close-button ${DEFAULT.CSS_NAMESPACE}__close-button--${type}`}\n type=\"button\"\n onClick={e => {\n e.stopPropagation();\n closeToast(e);\n }}\n aria-label={ariaLabel}\n >\n <svg aria-hidden=\"true\" viewBox=\"0 0 14 16\">\n <path\n fillRule=\"evenodd\"\n d=\"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z\"\n />\n </svg>\n </button>\n );\n}\n","import * as React from 'react';\nimport cx from 'clsx';\n\nimport { TYPE, DEFAULT, isFn } from './../utils';\nimport { TypeOptions, ToastClassName } from '../types';\n\nexport interface ProgressBarProps {\n /**\n * The animation delay which determine when to close the toast\n */\n delay: number;\n\n /**\n * Whether or not the animation is running or paused\n */\n isRunning: boolean;\n\n /**\n * Func to close the current toast\n */\n closeToast: () => void;\n\n /**\n * Optional type : info, success ...\n */\n type: TypeOptions;\n\n /**\n * Hide or not the progress bar\n */\n hide?: boolean;\n\n /**\n * Optionnal className\n */\n className?: ToastClassName;\n\n /**\n * Optionnal inline style\n */\n style?: React.CSSProperties;\n\n /**\n * Tell wether or not controlled progress bar is used\n */\n controlledProgress?: boolean;\n\n /**\n * Controlled progress value\n */\n progress?: number | string;\n\n /**\n * Support rtl content\n */\n rtl?: boolean;\n\n /**\n * Tell if the component is visible on screen or not\n */\n isIn?: boolean;\n}\n\nexport function ProgressBar({\n delay,\n isRunning,\n closeToast,\n type,\n hide,\n className,\n style: userStyle,\n controlledProgress,\n progress,\n rtl,\n isIn\n}: ProgressBarProps) {\n const style: React.CSSProperties = {\n ...userStyle,\n animationDuration: `${delay}ms`,\n animationPlayState: isRunning ? 'running' : 'paused',\n opacity: hide ? 0 : 1\n };\n\n if (controlledProgress) style.transform = `scaleX(${progress})`;\n const defaultClassArr = [\n `${DEFAULT.CSS_NAMESPACE}__progress-bar`,\n controlledProgress\n ? `${DEFAULT.CSS_NAMESPACE}__progress-bar--controlled`\n : `${DEFAULT.CSS_NAMESPACE}__progress-bar--animated`,\n `${DEFAULT.CSS_NAMESPACE}__progress-bar--${type}`,\n {\n [`${DEFAULT.CSS_NAMESPACE}__progress-bar--rtl`]: rtl\n }\n ];\n const classNames = isFn(className)\n ? className({\n rtl,\n type,\n defaultClassName: cx(...defaultClassArr)\n })\n : cx(...[...defaultClassArr, className]);\n\n // 🧐 controlledProgress is derived from progress\n // so if controlledProgress is set\n // it means that this is also the case for progress\n const animationEvent = {\n [controlledProgress && progress! >= 1\n ? 'onTransitionEnd'\n : 'onAnimationEnd']:\n controlledProgress && progress! < 1\n ? null\n : () => {\n isIn && closeToast();\n }\n };\n\n return <div className={classNames} style={style} {...animationEvent} />;\n}\n\nProgressBar.defaultProps = {\n type: TYPE.DEFAULT,\n hide: false\n};\n","import * as React from 'react';\nimport cx from 'clsx';\n\nimport { ProgressBar } from './ProgressBar';\nimport { ToastProps } from '../types';\nimport { DEFAULT, isFn } from '../utils';\nimport { useToast } from '../hooks';\n\nexport const Toast: React.FC<ToastProps> = props => {\n const {\n isRunning,\n preventExitTransition,\n toastRef,\n eventHandlers\n } = useToast(props);\n const {\n closeButton,\n children,\n autoClose,\n onClick,\n type,\n hideProgressBar,\n closeToast,\n transition: Transition,\n position,\n className,\n style,\n bodyClassName,\n bodyStyle,\n progressClassName,\n progressStyle,\n updateId,\n role,\n progress,\n rtl,\n toastId,\n deleteToast\n } = props;\n const defaultClassArr = [\n `${DEFAULT.CSS_NAMESPACE}__toast`,\n `${DEFAULT.CSS_NAMESPACE}__toast--${type}`,\n {\n [`${DEFAULT.CSS_NAMESPACE}__toast--rtl`]: rtl\n }\n ];\n const cssClasses = isFn(className)\n ? className({\n rtl,\n position,\n type,\n defaultClassName: cx(...defaultClassArr)\n })\n : cx(...[...defaultClassArr, className]);\n const controlledProgress = !!progress;\n\n function renderCloseButton(closeButton: any) {\n if (!closeButton) return;\n\n const props = { closeToast, type };\n if (isFn(closeButton)) return closeButton(props);\n if (React.isValidElement(closeButton))\n return React.cloneElement(closeButton, props);\n }\n\n return (\n <Transition\n in={props.in!}\n appear\n done={deleteToast}\n position={position}\n preventExitTransition={preventExitTransition}\n nodeRef={toastRef}\n >\n <div\n id={toastId as string}\n onClick={onClick}\n className={cssClasses || undefined}\n {...eventHandlers}\n style={style}\n ref={toastRef}\n >\n <div\n {...(props.in && { role: role })}\n className={\n isFn(bodyClassName)\n ? bodyClassName({ type })\n : cx(`${DEFAULT.CSS_NAMESPACE}__toast-body`, bodyClassName)\n }\n style={bodyStyle}\n >\n {children}\n </div>\n {renderCloseButton(closeButton)}\n {(autoClose || controlledProgress) && (\n <ProgressBar\n {...(updateId && !controlledProgress\n ? { key: `pb-${updateId}` }\n : {})}\n rtl={rtl}\n delay={autoClose as number}\n isRunning={isRunning}\n isIn={props.in}\n closeToast={closeToast}\n hide={hideProgressBar}\n type={type}\n style={progressStyle}\n className={progressClassName}\n controlledProgress={controlledProgress}\n progress={progress}\n />\n )}\n </div>\n </Transition>\n );\n};\n","import { DEFAULT, cssTransition } from '../utils';\n\nconst Bounce = cssTransition({\n enter: `${DEFAULT.CSS_NAMESPACE}__bounce-enter`,\n exit: `${DEFAULT.CSS_NAMESPACE}__bounce-exit`,\n appendPosition: true\n});\n\nconst Slide = cssTransition({\n enter: `${DEFAULT.CSS_NAMESPACE}__slide-enter`,\n exit: `${DEFAULT.CSS_NAMESPACE}__slide-exit`,\n duration: [450, 750],\n appendPosition: true\n});\n\nconst Zoom = cssTransition({\n enter: `${DEFAULT.CSS_NAMESPACE}__zoom-enter`,\n exit: `${DEFAULT.CSS_NAMESPACE}__zoom-exit`\n});\n\nconst Flip = cssTransition({\n enter: `${DEFAULT.CSS_NAMESPACE}__flip-enter`,\n exit: `${DEFAULT.CSS_NAMESPACE}__flip-exit`\n});\n\nexport { Bounce, Slide, Zoom, Flip };\n","import * as React from 'react';\nimport { ToastProps } from '../types';\ntype ToastPositionerProps = Pick<ToastProps, 'style' | 'in'> & {\n className?: string;\n};\n\nexport const ToastPositioner: React.FC<ToastPositionerProps> = ({\n children,\n className,\n style,\n ...rest\n}) => {\n // Monkey patch react-transition-group\n // As exit transition is broken with strict mode\n delete rest.in;\n\n return (\n <div className={className} style={style}>\n {React.Children.map(children, child =>\n React.cloneElement(child as React.ReactElement<any>, rest)\n )}\n </div>\n );\n};\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'clsx';\n\nimport { Toast } from './Toast';\nimport { CloseButton } from './CloseButton';\nimport { Bounce } from './Transitions';\nimport {\n POSITION,\n DEFAULT,\n parseClassName,\n objectValues,\n isFn\n} from '../utils';\nimport { useToastContainer } from '../hooks';\nimport { ToastContainerProps, ToastPosition } from '../types';\nimport { ToastPositioner } from './ToastPositioner';\n\nexport const ToastContainer: React.FC<ToastContainerProps> = props => {\n const { getToastToRender, containerRef, isToastActive } = useToastContainer(\n props\n );\n const { className, style, rtl, containerId } = props;\n\n return (\n <div\n ref={containerRef}\n className={DEFAULT.CSS_NAMESPACE as string}\n id={containerId as string}\n >\n {getToastToRender((position, toastList) => {\n const swag = {\n className: isFn(className)\n ? className({\n position,\n rtl,\n defaultClassName: cx(\n `${DEFAULT.CSS_NAMESPACE}__toast-container`,\n `${DEFAULT.CSS_NAMESPACE}__toast-container--${position}`,\n { [`${DEFAULT.CSS_NAMESPACE}__toast-container--rtl`]: rtl }\n )\n })\n : cx(\n `${DEFAULT.CSS_NAMESPACE}__toast-container`,\n `${DEFAULT.CSS_NAMESPACE}__toast-container--${position}`,\n { [`${DEFAULT.CSS_NAMESPACE}__toast-container--rtl`]: rtl },\n parseClassName(className)\n ),\n style:\n toastList.length === 0\n ? { ...style, pointerEvents: 'none' }\n : { ...style }\n } as any;\n return (\n <ToastPositioner {...swag} key={`container-${position}`}>\n {toastList.map(({ content, props: toastProps }) => {\n return (\n <Toast\n {...toastProps}\n in={isToastActive(toastProps.toastId)}\n key={`toast-${toastProps.key}`}\n closeButton={\n toastProps.closeButton === true\n ? CloseButton\n : toastProps.closeButton\n }\n >\n {content}\n </Toast>\n );\n })}\n </ToastPositioner>\n );\n })}\n </div>\n );\n};\n\nif (process.env.NODE_ENV !== 'production') {\n // @ts-ignore\n ToastContainer.propTypes = {\n // @ts-ignore\n position: PropTypes.oneOf(objectValues(POSITION)),\n\n // @ts-ignore\n autoClose: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n\n // @ts-ignore\n closeButton: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.bool,\n PropTypes.func\n ]),\n hideProgressBar: PropTypes.bool,\n pauseOnHover: PropTypes.bool,\n closeOnClick: PropTypes.bool,\n newestOnTop: PropTypes.bool,\n className: PropTypes.any, //oneOfType([PropTypes.func, PropTypes.string]),\n style: PropTypes.object,\n toastClassName: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n bodyClassName: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n progressClassName: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n progressStyle: PropTypes.object,\n transition: PropTypes.func,\n rtl: PropTypes.bool,\n draggable: PropTypes.bool,\n draggablePercent: PropTypes.number,\n pauseOnFocusLoss: PropTypes.bool,\n enableMultiContainer: PropTypes.bool,\n containerId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n role: PropTypes.string,\n onClick: PropTypes.func\n };\n}\n\nToastContainer.defaultProps = {\n position: POSITION.TOP_RIGHT as ToastPosition,\n transition: Bounce,\n rtl: false,\n autoClose: 5000,\n hideProgressBar: false,\n closeButton: CloseButton,\n pauseOnHover: true,\n pauseOnFocusLoss: true,\n closeOnClick: true,\n newestOnTop: false,\n draggable: true,\n draggablePercent: 80,\n role: 'alert'\n};\n","import * as React from 'react';\nimport { render } from 'react-dom';\n\nimport { POSITION, TYPE, canUseDom, isStr, isNum, isFn } from '../utils';\nimport { eventManager, OnChangeCallback, Event } from './eventManager';\nimport {\n ToastContent,\n ToastOptions,\n ToastProps,\n Id,\n ToastContainerProps,\n UpdateOptions,\n ClearWaitingQueueParams,\n NotValidatedToastProps\n} from '../types';\nimport { ContainerInstance } from 'hooks';\nimport { ToastContainer } from '../components';\n\ninterface EnqueuedToast {\n content: ToastContent;\n options: NotValidatedToastProps;\n}\n\nlet containers = new Map<ContainerInstance | Id, ContainerInstance>();\nlet latestInstance: ContainerInstance | Id;\nlet containerDomNode: HTMLElement;\nlet containerConfig: ToastContainerProps;\nlet queue: EnqueuedToast[] = [];\nlet lazy = false;\n\n/**\n * Check whether any container is currently mounted in the DOM\n */\nfunction isAnyContainerMounted() {\n return containers.size > 0;\n}\n\n/**\n * Get the container by id. Returns the last container declared when no id is given.\n */\nfunction getContainer(containerId?: Id) {\n if (!isAnyContainerMounted()) return null;\n return containers.get(!containerId ? latestInstance : containerId);\n}\n\n/**\n * Get the toast by id, given it's in the DOM, otherwise returns null\n */\nfunction getToast(toastId: Id, { containerId }: ToastOptions) {\n const container = getContainer(containerId);\n if (!container) return null;\n\n return container.getToast(toastId);\n}\n\n/**\n * Generate a random toastId\n */\nfunction generateToastId() {\n return (Math.random().toString(36) + Date.now().toString(36)).substr(2, 10);\n}\n\n/**\n * Generate a toastId or use the one provided\n */\nfunction getToastId(options?: ToastOptions) {\n if (options && (isStr(options.toastId) || isNum(options.toastId))) {\n return options.toastId;\n }\n\n return generateToastId();\n}\n\n/**\n * If the container is not mounted, the toast is enqueued and\n * the container lazy mounted\n */\nfunction dispatchToast(\n content: ToastContent,\n options: NotValidatedToastProps\n): Id {\n if (isAnyContainerMounted()) {\n eventManager.emit(Event.Show, content, options);\n } else {\n queue.push({ content, options });\n if (lazy && canUseDom) {\n lazy = false;\n containerDomNode = document.createElement('div');\n document.body.appendChild(containerDomNode);\n render(<ToastContainer {...containerConfig} />, containerDomNode);\n }\n }\n\n return options.toastId;\n}\n\n/**\n * Merge provided options with the defaults settings and generate the toastId\n */\nfunction mergeOptions(type: string, options?: ToastOptions) {\n return {\n ...options,\n type: (options && options.type) || type,\n toastId: getToastId(options)\n } as NotValidatedToastProps;\n}\n\nconst toast = (content: ToastContent, options?: ToastOptions) =>\n dispatchToast(content, mergeOptions(TYPE.DEFAULT, options));\n\ntoast.success = (content: ToastContent, options?: ToastOptions) =>\n dispatchToast(content, mergeOptions(TYPE.SUCCESS, options));\n\ntoast.info = (content: ToastContent, options?: ToastOptions) =>\n dispatchToast(content, mergeOptions(TYPE.INFO, options));\n\ntoast.error = (content: ToastContent, options?: ToastOptions) =>\n dispatchToast(content, mergeOptions(TYPE.ERROR, options));\n\ntoast.warning = (content: ToastContent, options?: ToastOptions) =>\n dispatchToast(content, mergeOptions(TYPE.WARNING, options));\n\ntoast.dark = (content: ToastContent, options?: ToastOptions) =>\n dispatchToast(content, mergeOptions(TYPE.DARK, options));\n\n/**\n * Maybe I should remove warning in favor of warn, I don't know\n */\ntoast.warn = toast.warning;\n\n/**\n * Remove toast programmaticaly\n */\ntoast.dismiss = (id?: Id) =>\n isAnyContainerMounted() && eventManager.emit(Event.Clear, id);\n\n/**\n * Clear waiting queue when limit is used\n */\ntoast.clearWaitingQueue = (params: ClearWaitingQueueParams = {}) =>\n isAnyContainerMounted() && eventManager.emit(Event.ClearWaitingQueue, params);\n\n/**\n * return true if one container is displaying the toast\n */\ntoast.isActive = (id: Id) => {\n let isToastActive = false;\n\n containers.forEach(container => {\n if (container.isToastActive && container.isToastActive(id)) {\n isToastActive = true;\n }\n });\n\n return isToastActive;\n};\n\ntoast.update = (toastId: Id, options: UpdateOptions = {}) => {\n // if you call toast and toast.update directly nothing will be displayed\n // this is why I defered the update\n setTimeout(() => {\n const toast = getToast(toastId, options as ToastOptions);\n if (toast) {\n const { props: oldOptions, content: oldContent } = toast;\n\n const nextOptions = {\n ...oldOptions,\n ...options,\n toastId: options.toastId || toastId,\n updateId: generateToastId()\n } as ToastProps & UpdateOptions;\n\n if (nextOptions.toastId !== toastId) nextOptions.staleId = toastId;\n\n const content =\n typeof nextOptions.render !== 'undefined'\n ? nextOptions.render\n : oldContent;\n delete nextOptions.render;\n\n dispatchToast(content, nextOptions);\n }\n }, 0);\n};\n\n/**\n * Used for controlled progress bar.\n */\ntoast.done = (id: Id) => {\n toast.update(id, {\n progress: 1\n });\n};\n\n/**\n * Track changes. The callback get the number of toast displayed\n *\n */\ntoast.onChange = (callback: OnChangeCallback) => {\n if (isFn(callback)) {\n eventManager.on(Event.Change, callback);\n }\n return () => {\n isFn(callback) && eventManager.off(Event.Change, callback);\n };\n};\n\n/**\n * Configure the ToastContainer when lazy mounted\n */\ntoast.configure = (config: ToastContainerProps = {}) => {\n lazy = true;\n containerConfig = config;\n};\n\ntoast.POSITION = POSITION;\ntoast.TYPE = TYPE;\n\n/**\n * Wait until the ToastContainer is mounted to dispatch the toast\n * and attach isActive method\n */\neventManager\n .on(Event.DidMount, (containerInstance: ContainerInstance) => {\n latestInstance = containerInstance.containerId || containerInstance;\n containers.set(latestInstance, containerInstance);\n\n queue.forEach(item => {\n eventManager.emit(Event.Show, item.content, item.options);\n });\n\n queue = [];\n })\n .on(Event.WillUnmount, (containerInstance: ContainerInstance) => {\n containers.delete(containerInstance.containerId || containerInstance);\n\n if (containers.size === 0) {\n eventManager\n .off(Event.Show)\n .off(Event.Clear)\n .off(Event.ClearWaitingQueue);\n }\n\n if (canUseDom && containerDomNode) {\n document.body.removeChild(containerDomNode);\n }\n });\n\nexport { toast };\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error(\"act(...) is not supported in production builds of React.\");}\nexports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;exports.act=X;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=X;exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};\nexports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};\nexports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};exports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.3.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","/**\n * Returns true if the object is a function.\n * @param value The value to check\n */\nexport function isFunction(value: any): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n","/**\n * Used to create Error subclasses until the community moves away from ES5.\n *\n * This is because compiling from TypeScript down to ES5 has issues with subclassing Errors\n * as well as other built-in types: https://github.com/Microsoft/TypeScript/issues/12123\n *\n * @param createImpl A factory function to create the actual constructor implementation. The returned\n * function should be a named function that calls `_super` internally.\n */\nexport function createErrorClass<T>(createImpl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n","import { createErrorClass } from './createErrorClass';\n\nexport interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (errors: any[]): UnsubscriptionError;\n}\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = createErrorClass(\n (_super) =>\n function UnsubscriptionErrorImpl(this: any, errors: (Error | string)[]) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n }\n);\n","/**\n * Removes an item from an array, mutating it.\n * @param arr The array to remove the item from\n * @param item The item to remove\n */\nexport function arrRemove<T>(arr: T[] | undefined | null, item: T) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n","import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic, Unsubscribable } from './types';\nimport { arrRemove } from './util/arrRemove';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n */\n public closed = false;\n\n private _parentage: Subscription[] | Subscription | null = null;\n\n /**\n * The list of registered finalizers to execute upon unsubscription. Adding and removing from this\n * list occurs in the {@link #add} and {@link #remove} methods.\n */\n private _finalizers: Exclude<TeardownLogic, void>[] | null = null;\n\n /**\n * @param initialTeardown A function executed first as part of the finalization\n * process that is kicked off when {@link #unsubscribe} is called.\n */\n constructor(private initialTeardown?: () => void) {}\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[] | undefined;\n\n if (!this.closed) {\n this.closed = true;\n\n // Remove this from it's parents.\n const { _parentage } = this;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n for (const parent of _parentage) {\n parent.remove(this);\n }\n } else {\n _parentage.remove(this);\n }\n }\n\n const { initialTeardown: initialFinalizer } = this;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n\n const { _finalizers } = this;\n if (_finalizers) {\n this._finalizers = null;\n for (const finalizer of _finalizers) {\n try {\n execFinalizer(finalizer);\n } catch (err) {\n errors = errors ?? [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n } else {\n errors.push(err);\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n\n /**\n * Adds a finalizer to this subscription, so that finalization will be unsubscribed/called\n * when this subscription is unsubscribed. If this subscription is already {@link #closed},\n * because it has already been unsubscribed, then whatever finalizer is passed to it\n * will automatically be executed (unless the finalizer itself is also a closed subscription).\n *\n * Closed Subscriptions cannot be added as finalizers to any subscription. Adding a closed\n * subscription to a any subscription will result in no operation. (A noop).\n *\n * Adding a subscription to itself, or adding `null` or `undefined` will not perform any\n * operation at all. (A noop).\n *\n * `Subscription` instances that are added to this instance will automatically remove themselves\n * if they are unsubscribed. Functions and {@link Unsubscribable} objects that you wish to remove\n * will need to be removed manually with {@link #remove}\n *\n * @param teardown The finalization logic to add to this subscription.\n */\n add(teardown: TeardownLogic): void {\n // Only add the finalizer if it's not undefined\n // and don't add a subscription to itself.\n if (teardown && teardown !== this) {\n if (this.closed) {\n // If this subscription is already closed,\n // execute whatever finalizer is handed to it automatically.\n execFinalizer(teardown);\n } else {\n if (teardown instanceof Subscription) {\n // We don't add closed subscriptions, and we don't add the same subscription\n // twice. Subscription unsubscribe is idempotent.\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = this._finalizers ?? []).push(teardown);\n }\n }\n }\n\n /**\n * Checks to see if a this subscription already has a particular parent.\n * This will signal that this subscription has already been added to the parent in question.\n * @param parent the parent to check for\n */\n private _hasParent(parent: Subscription) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n\n /**\n * Adds a parent to this subscription so it can be removed from the parent if it\n * unsubscribes on it's own.\n *\n * NOTE: THIS ASSUMES THAT {@link _hasParent} HAS ALREADY BEEN CHECKED.\n * @param parent The parent subscription to add\n */\n private _addParent(parent: Subscription) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n\n /**\n * Called on a child when it is removed via {@link #remove}.\n * @param parent The parent to remove\n */\n private _removeParent(parent: Subscription) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n } else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n\n /**\n * Removes a finalizer from this subscription that was previously added with the {@link #add} method.\n *\n * Note that `Subscription` instances, when unsubscribed, will automatically remove themselves\n * from every other `Subscription` they have been added to. This means that using the `remove` method\n * is not a common thing and should be used thoughtfully.\n *\n * If you add the same finalizer instance of a function or an unsubscribable object to a `Subscription` instance\n * more than once, you will need to call `remove` the same number of times to remove all instances.\n *\n * All finalizer instances are removed to free up memory upon unsubscription.\n *\n * @param teardown The finalizer to remove from this subscription\n */\n remove(teardown: Exclude<TeardownLogic, void>): void {\n const { _finalizers } = this;\n _finalizers && arrRemove(_finalizers, teardown);\n\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\n\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\n\nexport function isSubscription(value: any): value is Subscription {\n return (\n value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe))\n );\n}\n\nfunction execFinalizer(finalizer: Unsubscribable | (() => void)) {\n if (isFunction(finalizer)) {\n finalizer();\n } else {\n finalizer.unsubscribe();\n }\n}\n","import { Subscriber } from './Subscriber';\nimport { ObservableNotification } from './types';\n\n/**\n * The {@link GlobalConfig} object for RxJS. It is used to configure things\n * like how to react on unhandled errors.\n */\nexport const config: GlobalConfig = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like how to react on unhandled errors. Accessible via {@link config}\n * object.\n */\nexport interface GlobalConfig {\n /**\n * A registration point for unhandled errors from RxJS. These are errors that\n * cannot were not handled by consuming code in the usual subscription path. For\n * example, if you have this configured, and you subscribe to an observable without\n * providing an error handler, errors from that subscription will end up here. This\n * will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onUnhandledError: ((err: any) => void) | null;\n\n /**\n * A registration point for notifications that cannot be sent to subscribers because they\n * have completed, errored or have been explicitly unsubscribed. By default, next, complete\n * and error notifications sent to stopped subscribers are noops. However, sometimes callers\n * might want a different behavior. For example, with sources that attempt to report errors\n * to stopped subscribers, a caller can configure RxJS to throw an unhandled error instead.\n * This will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onStoppedNotification: ((notification: ObservableNotification<any>, subscriber: Subscriber<any>) => void) | null;\n\n /**\n * The promise constructor used by default for {@link Observable#toPromise toPromise} and {@link Observable#forEach forEach}\n * methods.\n *\n * @deprecated As of version 8, RxJS will no longer support this sort of injection of a\n * Promise constructor. If you need a Promise implementation other than native promises,\n * please polyfill/patch Promise as you see appropriate. Will be removed in v8.\n */\n Promise?: PromiseConstructorLike;\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BUY TIME\n * FOR MIGRATION REASONS.\n *\n * @deprecated As of version 8, RxJS will no longer support synchronous throwing\n * of unhandled errors. All errors will be thrown on a separate call stack to prevent bad\n * behaviors described above. Will be removed in v8.\n */\n useDeprecatedSynchronousErrorHandling: boolean;\n\n /**\n * If true, enables an as-of-yet undocumented feature from v5: The ability to access\n * `unsubscribe()` via `this` context in `next` functions created in observers passed\n * to `subscribe`.\n *\n * This is being removed because the performance was severely problematic, and it could also cause\n * issues when types other than POJOs are passed to subscribe as subscribers, as they will likely have\n * their `this` context overwritten.\n *\n * @deprecated As of version 8, RxJS will no longer support altering the\n * context of next functions provided as part of an observer to Subscribe. Instead,\n * you will have access to a subscription or a signal or token that will allow you to do things like\n * unsubscribe and test closed status. Will be removed in v8.\n */\n useDeprecatedNextContext: boolean;\n}\n","import type { TimerHandle } from './timerHandle';\ntype SetTimeoutFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearTimeoutFunction = (handle: TimerHandle) => void;\n\ninterface TimeoutProvider {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n delegate:\n | {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n }\n | undefined;\n}\n\nexport const timeoutProvider: TimeoutProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setTimeout(handler: () => void, timeout?: number, ...args) {\n const { delegate } = timeoutProvider;\n if (delegate?.setTimeout) {\n return delegate.setTimeout(handler, timeout, ...args);\n }\n return setTimeout(handler, timeout, ...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return (delegate?.clearTimeout || clearTimeout)(handle as any);\n },\n delegate: undefined,\n};\n","/* tslint:disable:no-empty */\nexport function noop() { }\n","import { CompleteNotification, NextNotification, ErrorNotification } from './types';\n\n/**\n * A completion object optimized for memory use and created to be the\n * same \"shape\" as other notifications in v8.\n * @internal\n */\nexport const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined) as CompleteNotification)();\n\n/**\n * Internal use only. Creates an optimized error notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function errorNotification(error: any): ErrorNotification {\n return createNotification('E', undefined, error) as any;\n}\n\n/**\n * Internal use only. Creates an optimized next notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function nextNotification<T>(value: T) {\n return createNotification('N', value, undefined) as NextNotification<T>;\n}\n\n/**\n * Ensures that all notifications created internally have the same \"shape\" in v8.\n *\n * TODO: This is only exported to support a crazy legacy test in `groupBy`.\n * @internal\n */\nexport function createNotification(kind: 'N' | 'E' | 'C', value: any, error: any) {\n return {\n kind,\n value,\n error,\n };\n}\n","import { config } from '../config';\n\nlet context: { errorThrown: boolean; error: any } | null = null;\n\n/**\n * Handles dealing with errors for super-gross mode. Creates a context, in which\n * any synchronously thrown errors will be passed to {@link captureError}. Which\n * will record the error such that it will be rethrown after the call back is complete.\n * TODO: Remove in v8\n * @param cb An immediately executed function.\n */\nexport function errorContext(cb: () => void) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context!;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n } else {\n // This is the general non-deprecated path for everyone that\n // isn't crazy enough to use super-gross mode (useDeprecatedSynchronousErrorHandling)\n cb();\n }\n}\n\n/**\n * Captures errors only in super-gross mode.\n * @param err the error to capture\n */\nexport function captureError(err: any) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n","import { isFunction } from './util/isFunction';\nimport { Observer, ObservableNotification } from './types';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber<T>\n */\nexport class Subscriber<T> extends Subscription implements Observer<T> {\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param next The `next` callback of an Observer.\n * @param error The `error` callback of an\n * Observer.\n * @param complete The `complete` callback of an\n * Observer.\n * @return A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n * @deprecated Do not use. Will be removed in v8. There is no replacement for this\n * method, and there is no reason to be creating instances of `Subscriber` directly.\n * If you have a specific use case, please file an issue.\n */\n static create<T>(next?: (x?: T) => void, error?: (e?: any) => void, complete?: () => void): Subscriber<T> {\n return new SafeSubscriber(next, error, complete);\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected isStopped: boolean = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected destination: Subscriber<any> | Observer<any>; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * There is no reason to directly create an instance of Subscriber. This type is exported for typings reasons.\n */\n constructor(destination?: Subscriber<any> | Observer<any>) {\n super();\n if (destination) {\n this.destination = destination;\n // Automatically chain subscriptions together here.\n // if destination is a Subscription, then it is a Subscriber.\n if (isSubscription(destination)) {\n destination.add(this);\n }\n } else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n } else {\n this._next(value!);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n } else {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n } else {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null!;\n }\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n try {\n this.destination.error(err);\n } finally {\n this.unsubscribe();\n }\n }\n\n protected _complete(): void {\n try {\n this.destination.complete();\n } finally {\n this.unsubscribe();\n }\n }\n}\n\n/**\n * This bind is captured here because we want to be able to have\n * compatibility with monoid libraries that tend to use a method named\n * `bind`. In particular, a library called Monio requires this.\n */\nconst _bind = Function.prototype.bind;\n\nfunction bind<Fn extends (...args: any[]) => any>(fn: Fn, thisArg: any): Fn {\n return _bind.call(fn, thisArg);\n}\n\n/**\n * Internal optimization only, DO NOT EXPOSE.\n * @internal\n */\nclass ConsumerObserver<T> implements Observer<T> {\n constructor(private partialObserver: Partial<Observer<T>>) {}\n\n next(value: T): void {\n const { partialObserver } = this;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n\n error(err: any): void {\n const { partialObserver } = this;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n } catch (error) {\n handleUnhandledError(error);\n }\n } else {\n handleUnhandledError(err);\n }\n }\n\n complete(): void {\n const { partialObserver } = this;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n}\n\nexport class SafeSubscriber<T> extends Subscriber<T> {\n constructor(\n observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | null,\n error?: ((e?: any) => void) | null,\n complete?: (() => void) | null\n ) {\n super();\n\n let partialObserver: Partial<Observer<T>>;\n if (isFunction(observerOrNext) || !observerOrNext) {\n // The first argument is a function, not an observer. The next\n // two arguments *could* be observers, or they could be empty.\n partialObserver = {\n next: (observerOrNext ?? undefined) as (((value: T) => void) | undefined),\n error: error ?? undefined,\n complete: complete ?? undefined,\n };\n } else {\n // The first argument is a partial observer.\n let context: any;\n if (this && config.useDeprecatedNextContext) {\n // This is a deprecated path that made `this.unsubscribe()` available in\n // next handler functions passed to subscribe. This only exists behind a flag\n // now, as it is *very* slow.\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context),\n error: observerOrNext.error && bind(observerOrNext.error, context),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n };\n } else {\n // The \"normal\" path. Just use the partial observer directly.\n partialObserver = observerOrNext;\n }\n }\n\n // Wrap the partial observer to ensure it's a full observer, and\n // make sure proper error handling is accounted for.\n this.destination = new ConsumerObserver(partialObserver);\n }\n}\n\nfunction handleUnhandledError(error: any) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n } else {\n // Ideal path, we report this as an unhandled error,\n // which is thrown on a new call stack.\n reportUnhandledError(error);\n }\n}\n\n/**\n * An error handler used when no error handler was supplied\n * to the SafeSubscriber -- meaning no error handler was supplied\n * do the `subscribe` call on our observable.\n * @param err The error to handle\n */\nfunction defaultErrorHandler(err: any) {\n throw err;\n}\n\n/**\n * A handler for notifications that cannot be sent to a stopped subscriber.\n * @param notification The notification being sent\n * @param subscriber The stopped subscriber\n */\nfunction handleStoppedNotification(notification: ObservableNotification<any>, subscriber: Subscriber<any>) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\n\n/**\n * The observer used as a stub for subscriptions where the user did not\n * pass any arguments to `subscribe`. Comes with the default error handling\n * behavior.\n */\nexport const EMPTY_OBSERVER: Readonly<Observer<any>> & { closed: true } = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\n\n/**\n * Handles an error on another job either with the user-configured {@link onUnhandledError},\n * or by throwing it on that new job so it can be picked up by `window.onerror`, `process.on('error')`, etc.\n *\n * This should be called whenever there is an error that is out-of-band with the subscription\n * or when an error hits a terminal boundary of the subscription and no error handler was provided.\n *\n * @param err the error to report\n */\nexport function reportUnhandledError(err: any) {\n timeoutProvider.setTimeout(() => {\n const { onUnhandledError } = config;\n if (onUnhandledError) {\n // Execute the user-configured error handler.\n onUnhandledError(err);\n } else {\n // Throw so it is picked up by the runtime's uncaught error mechanism.\n throw err;\n }\n });\n}\n","/**\n * Symbol.observable or a string \"@@observable\". Used for interop\n *\n * @deprecated We will no longer be exporting this symbol in upcoming versions of RxJS.\n * Instead polyfill and use Symbol.observable directly *or* use https://www.npmjs.com/package/symbol-observable\n */\nexport const observable: string | symbol = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n","/**\n * This function takes one parameter and just returns it. Simply put,\n * this is like `<T>(x: T): T => x`.\n *\n * ## Examples\n *\n * This is useful in some cases when using things like `mergeMap`\n *\n * ```ts\n * import { interval, take, map, range, mergeMap, identity } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(5));\n *\n * const result$ = source$.pipe(\n * map(i => range(i)),\n * mergeMap(identity) // same as mergeMap(x => x)\n * );\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * Or when you want to selectively apply an operator\n *\n * ```ts\n * import { interval, take, identity } from 'rxjs';\n *\n * const shouldLimit = () => Math.random() < 0.5;\n *\n * const source$ = interval(1000);\n *\n * const result$ = source$.pipe(shouldLimit() ? take(5) : identity);\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * @param x Any value that is returned by this function\n * @returns The value passed as the first parameter to this function\n */\nexport function identity<T>(x: T): T {\n return x;\n}\n","import { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\nexport function pipe(): typeof identity;\nexport function pipe<T, A>(fn1: UnaryFunction<T, A>): UnaryFunction<T, A>;\nexport function pipe<T, A, B>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>): UnaryFunction<T, B>;\nexport function pipe<T, A, B, C>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>, fn3: UnaryFunction<B, C>): UnaryFunction<T, C>;\nexport function pipe<T, A, B, C, D>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>\n): UnaryFunction<T, D>;\nexport function pipe<T, A, B, C, D, E>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>\n): UnaryFunction<T, E>;\nexport function pipe<T, A, B, C, D, E, F>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>\n): UnaryFunction<T, F>;\nexport function pipe<T, A, B, C, D, E, F, G>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>\n): UnaryFunction<T, G>;\nexport function pipe<T, A, B, C, D, E, F, G, H>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>,\n fn8: UnaryFunction<G, H>\n): UnaryFunction<T, H>;\nexport function pipe<T, A, B, C, D, E, F, G, H, I>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>,\n fn8: UnaryFunction<G, H>,\n fn9: UnaryFunction<H, I>\n): UnaryFunction<T, I>;\nexport function pipe<T, A, B, C, D, E, F, G, H, I>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>,\n fn8: UnaryFunction<G, H>,\n fn9: UnaryFunction<H, I>,\n ...fns: UnaryFunction<any, any>[]\n): UnaryFunction<T, unknown>;\n\n/**\n * pipe() can be called on one or more functions, each of which can take one argument (\"UnaryFunction\")\n * and uses it to return a value.\n * It returns a function that takes one argument, passes it to the first UnaryFunction, and then\n * passes the result to the next one, passes that result to the next one, and so on. \n */\nexport function pipe(...fns: Array<UnaryFunction<any, any>>): UnaryFunction<any, any> {\n return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray<T, R>(fns: Array<UnaryFunction<T, R>>): UnaryFunction<T, R> {\n if (fns.length === 0) {\n return identity as UnaryFunction<any, any>;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction<T, R>) => fn(prev), input as any);\n };\n}\n","import { Operator } from './Operator';\nimport { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription, Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, Subscribable, Observer } from './types';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable<T>\n */\nexport class Observable<T> implements Subscribable<T> {\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n source: Observable<any> | undefined;\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n operator: Operator<any, T> | undefined;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable<T>, subscriber: Subscriber<T>) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new Observable by calling the Observable constructor\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new observable\n * @nocollapse\n * @deprecated Use `new Observable()` instead. Will be removed in v8.\n */\n static create: (...args: any[]) => any = <T>(subscribe?: (subscriber: Subscriber<T>) => TeardownLogic) => {\n return new Observable<T>(subscribe);\n };\n\n /**\n * Creates a new Observable, with this Observable instance as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param operator the operator defining the operation to take on the observable\n * @return a new observable with the Operator applied\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * If you have implemented an operator using `lift`, it is recommended that you create an\n * operator by simply returning `new Observable()` directly. See \"Creating new operators from\n * scratch\" section here: https://rxjs.dev/guide/operators\n */\n lift<R>(operator?: Operator<T, R>): Observable<R> {\n const observable = new Observable<R>();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observerOrNext?: Partial<Observer<T>> | ((value: T) => void)): Subscription;\n /** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\n subscribe(next?: ((value: T) => void) | null, error?: ((error: any) => void) | null, complete?: (() => void) | null): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * <span class=\"informal\">Use it when you have all these Observables, but still nothing is happening.</span>\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular, do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided and an error happens,\n * it will be thrown asynchronously. Errors thrown asynchronously cannot be caught using `try`/`catch`. Instead,\n * use the {@link onUnhandledError} configuration option or use a runtime handler (like `window.onerror` or\n * `process.on('error)`) to be notified of unhandled errors. Because of this, it's recommended that you provide\n * an `error` method to avoid missing thrown errors.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of an Observer,\n * if you do not need to listen for something, you can omit a function by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to the `error` function, as with an Observer, if not provided, errors emitted by an Observable will be thrown asynchronously.\n *\n * You can, however, subscribe with no parameters at all. This may be the case where you're not interested in terminal events\n * and you also handled emissions internally by using operators (e.g. using `tap`).\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * #### Examples\n *\n * Subscribe with an {@link guide/observer Observer}\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Subscribe with functions ({@link deprecations/subscribe-arguments deprecated})\n *\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Cancel a subscription\n *\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe({\n * next(num) {\n * console.log(num)\n * },\n * complete() {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * });\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 'unsubscribed!' after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown asynchronously as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {Subscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(\n observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n ): Subscription {\n const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(\n operator\n ? // We're dealing with a subscription in the\n // operator chain to one of our lifted operators.\n operator.call(subscriber, source)\n : source\n ? // If `source` has a value, but `operator` does not, something that\n // had intimate knowledge of our API, like our `Subject`, must have\n // set it. We're going to just call `_subscribe` directly.\n this._subscribe(subscriber)\n : // In all other cases, we're likely wrapping a user-provided initializer\n // function, so we need to catch errors and handle them appropriately.\n this._trySubscribe(subscriber)\n );\n });\n\n return subscriber;\n }\n\n /** @internal */\n protected _trySubscribe(sink: Subscriber<T>): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n // We don't need to return anything in this case,\n // because it's just going to try to `add()` to a subscription\n // above.\n sink.error(err);\n }\n }\n\n /**\n * Used as a NON-CANCELLABLE means of subscribing to an observable, for use with\n * APIs that expect promises, like `async/await`. You cannot unsubscribe from this.\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * #### Example\n *\n * ```ts\n * import { interval, take } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(4));\n *\n * async function getTotal() {\n * let total = 0;\n *\n * await source$.forEach(value => {\n * total += value;\n * console.log('observable -> ' + value);\n * });\n *\n * return total;\n * }\n *\n * getTotal().then(\n * total => console.log('Total: ' + total)\n * );\n *\n * // Expected:\n * // 'observable -> 0'\n * // 'observable -> 1'\n * // 'observable -> 2'\n * // 'observable -> 3'\n * // 'Total: 6'\n * ```\n *\n * @param next a handler for each value emitted by the observable\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void): Promise<void>;\n\n /**\n * @param next a handler for each value emitted by the observable\n * @param promiseCtor a constructor function used to instantiate the Promise\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n * @deprecated Passing a Promise constructor will no longer be available\n * in upcoming versions of RxJS. This is because it adds weight to the library, for very\n * little benefit. If you need this functionality, it is recommended that you either\n * polyfill Promise, or you create an adapter to convert the returned native promise\n * to whatever promise implementation you wanted. Will be removed in v8.\n */\n forEach(next: (value: T) => void, promiseCtor: PromiseConstructorLike): Promise<void>;\n\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise<void> {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor<void>((resolve, reject) => {\n const subscriber = new SafeSubscriber<T>({\n next: (value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n }) as Promise<void>;\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber<any>): TeardownLogic {\n return this.source?.subscribe(subscriber);\n }\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable<T>;\n pipe<A>(op1: OperatorFunction<T, A>): Observable<A>;\n pipe<A, B>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Observable<B>;\n pipe<A, B, C>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Observable<C>;\n pipe<A, B, C, D>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>\n ): Observable<D>;\n pipe<A, B, C, D, E>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>\n ): Observable<E>;\n pipe<A, B, C, D, E, F>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>\n ): Observable<F>;\n pipe<A, B, C, D, E, F, G>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>\n ): Observable<G>;\n pipe<A, B, C, D, E, F, G, H>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>\n ): Observable<H>;\n pipe<A, B, C, D, E, F, G, H, I>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>\n ): Observable<I>;\n pipe<A, B, C, D, E, F, G, H, I>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n ...operations: OperatorFunction<any, any>[]\n ): Observable<unknown>;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ## Example\n *\n * ```ts\n * import { interval, filter, map, scan } from 'rxjs';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x));\n * ```\n */\n pipe(...operations: OperatorFunction<any, any>[]): Observable<any> {\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(): Promise<T | undefined>;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: typeof Promise): Promise<T | undefined>;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: PromiseConstructorLike): Promise<T | undefined>;\n /* tslint:enable:max-line-length */\n\n /**\n * Subscribe to this Observable and get a Promise resolving on\n * `complete` with the last emission (if any).\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * @method toPromise\n * @param [promiseCtor] a constructor function used to instantiate\n * the Promise\n * @return A Promise that resolves with the last value emit, or\n * rejects on an error. If there were no emissions, Promise\n * resolves with undefined.\n * @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise\n */\n toPromise(promiseCtor?: PromiseConstructorLike): Promise<T | undefined> {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: T | undefined;\n this.subscribe(\n (x: T) => (value = x),\n (err: any) => reject(err),\n () => resolve(value)\n );\n }) as Promise<T | undefined>;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n return promiseCtor ?? config.Promise ?? Promise;\n}\n\nfunction isObserver<T>(value: any): value is Observer<T> {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\n\nfunction isSubscriber<T>(value: any): value is Subscriber<T> {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n","import { createErrorClass } from './createErrorClass';\n\nexport interface ObjectUnsubscribedError extends Error {}\n\nexport interface ObjectUnsubscribedErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (): ObjectUnsubscribedError;\n}\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = createErrorClass(\n (_super) =>\n function ObjectUnsubscribedErrorImpl(this: any) {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n }\n);\n","import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n */\nexport class Subject<T> extends Observable<T> implements SubscriptionLike {\n closed = false;\n\n private currentObservers: Observer<T>[] | null = null;\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n observers: Observer<T>[] = [];\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n isStopped = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n hasError = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n thrownError: any = null;\n\n /**\n * Creates a \"subject\" by basically gluing an observer to an observable.\n *\n * @nocollapse\n * @deprecated Recommended you do not use. Will be removed at some point in the future. Plans for replacement still under discussion.\n */\n static create: (...args: any[]) => any = <T>(destination: Observer<T>, source: Observable<T>): AnonymousSubject<T> => {\n return new AnonymousSubject<T>(destination, source);\n };\n\n constructor() {\n // NOTE: This must be here to obscure Observable's constructor.\n super();\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n lift<R>(operator: Operator<T, R>): Observable<R> {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator as any;\n return subject as any;\n }\n\n /** @internal */\n protected _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n\n next(value: T) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n if (!this.currentObservers) {\n this.currentObservers = Array.from(this.observers);\n }\n for (const observer of this.currentObservers) {\n observer.next(value);\n }\n }\n });\n }\n\n error(err: any) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.hasError = this.isStopped = true;\n this.thrownError = err;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.error(err);\n }\n }\n });\n }\n\n complete() {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.isStopped = true;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.complete();\n }\n }\n });\n }\n\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null!;\n }\n\n get observed() {\n return this.observers?.length > 0;\n }\n\n /** @internal */\n protected _trySubscribe(subscriber: Subscriber<T>): TeardownLogic {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber<T>): Subscription {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n\n /** @internal */\n protected _innerSubscribe(subscriber: Subscriber<any>) {\n const { hasError, isStopped, observers } = this;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(() => {\n this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n }\n\n /** @internal */\n protected _checkFinalizedStatuses(subscriber: Subscriber<any>) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped) {\n subscriber.complete();\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create custom Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable<T> {\n const observable: any = new Observable<T>();\n observable.source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject<T>\n */\nexport class AnonymousSubject<T> extends Subject<T> {\n constructor(\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n public destination?: Observer<T>,\n source?: Observable<T>\n ) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n this.destination?.next?.(value);\n }\n\n error(err: any) {\n this.destination?.error?.(err);\n }\n\n complete() {\n this.destination?.complete?.();\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber<T>): Subscription {\n return this.source?.subscribe(subscriber) ?? EMPTY_SUBSCRIPTION;\n }\n}\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v0.7.40\n Copyright © 2012-2024 Faisal Salman <f@faisalman.com>\n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '0.7.40',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 500;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n OPERA = 'Opera',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook',\n CHROMIUM_OS = 'Chromium OS',\n MAC_OS = 'Mac OS',\n SUFFIX_BROWSER = ' Browser';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i<arr.length; i++) {\n enums[arr[i].toUpperCase()] = arr[i];\n }\n return enums;\n },\n has = function (str1, str2) {\n return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n },\n lowerize = function (str) {\n return str.toLowerCase();\n },\n majorize = function (version) {\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g, EMPTY).split('.')[0] : undefined;\n },\n trim = function (str, len) {\n if (typeof(str) === STR_TYPE) {\n str = str.replace(/^\\s\\s*/, EMPTY);\n return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n }\n };\n\n ///////////////\n // Map helper\n //////////////\n\n var rgxMapper = function (ua, arrays) {\n\n var i = 0, j, k, p, q, matches, match;\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n if (!regex[j]) { break; }\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return map.hasOwnProperty('*') ? map['*'] : str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bop(?:rg)?x\\/([\\w\\.]+)/i // Opera GX\n ], [VERSION, [NAME, OPERA+' GX']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i // Baidu\n ], [VERSION, [NAME, 'Baidu']], [\n /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i // Maxthon\n ], [VERSION, [NAME, 'Maxthon']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i, \n // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n // Trident based\n /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n /(heytap|ovi|115)browser\\/([\\d\\.]+)/i, // HeyTap/Ovi/115\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /quark(?:pc)?\\/([-\\w\\.]+)/i // Quark\n ], [VERSION, [NAME, 'Quark']], [\n /\\bddg\\/([\\w\\.]+)/i // DuckDuckGo\n ], [VERSION, [NAME, 'DuckDuckGo']], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /slbrowser\\/([\\w\\.]+)/i // Smart Lenovo Browser\n ], [VERSION, [NAME, 'Smart Lenovo '+BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihoobrowser\\/?([\\w\\.]*)/i // 360\n ], [VERSION, [NAME, '360']], [\n /\\b(qq)\\/([\\w\\.]+)/i // QQ\n ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n /metasr[\\/ ]?([\\d\\.]+)/i // Sogou Explorer\n ], [VERSION, [NAME, 'Sogou Explorer']], [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i // Sogou Mobile\n ], [[NAME, 'Sogou Mobile'], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i // QQ/2345\n ], [NAME, VERSION], [\n /(lbbrowser|rekonq)/i, // LieBao Browser/Rekonq\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME], [\n /ome\\/([\\w\\.]+) \\w* ?(iron) saf/i, // Iron\n /ome\\/([\\w\\.]+).+qihu (360)[es]e/i // 360\n ], [VERSION, NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /(Klarna)\\/([\\w\\.]+)/i, // Klarna Shopping Browser for iOS & Android\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i, // Alipay\n /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i, // Twitter\n /(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram/Snapchat\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(wolvic|librewolf)\\/([\\w\\.]+)/i // Wolvic/LibreWolf\n ], [NAME, VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, [VERSION, /_/g, '.']], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /master.|lts./, \"\"]]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]((?!sm-[lr])[-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Honor\n /(?:honor)([-\\w ]+)[;\\)]/i\n ], [MODEL, [VENDOR, 'Honor'], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i, // Xiaomi Redmi 'numeric' models\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n /oid[^\\)]+; (2\\d{4}(283|rpbf)[cgl])( bui|\\))/i, // Redmi Pad\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n /\\b(opd2\\d{3}a?) bui/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, TABLET]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i, // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // TCL\n /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\\w*(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n\n // itel\n /(itel) ((\\w+))/i\n ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n \n // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n // Energizer\n /; (energy ?\\w+)(?: bui|\\))/i,\n /; energizer ([\\w ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n // Cat\n /; cat (b35);/i,\n /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n // Smartfren\n /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n // Nothing\n /droid.+; (a(?:015|06[35]|142p?))/i\n ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan\n /; (imo) ((?!tab)[\\w ]+?)(?: bui|\\))/i, // IMO\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(imo) (tab \\w+)/i, // IMO\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mitv-\\w{5}) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield) bui/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation [345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /\\b(sm-[lr]\\d\\d[05][fnuw]?s?)\\b/i // Samsung Galaxy Watch\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n /((pebble))app/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n ///////////////////\n // XR\n ///////////////////\n\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /(pico) (4|neo3(?: link|pro)?)/i // Pico\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /; (quest( \\d| pro)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /(arkweb)\\/([\\w\\.]+)/i // ArkWeb\n ], [NAME, VERSION], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n /\\b(libweb)/i\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i // Windows Phone\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /windows nt 6\\.2; (arm)/i, // Windows RT\n /windows[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[VERSION, strMapper, windowsVersionMap], [NAME, 'Windows']], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS/OpenHarmony\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish|openharmony)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, CHROMIUM_OS], VERSION],[\n\n // Smart TVs\n /panasonic;(viera)/i, // Panasonic Viera\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined;\n var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);\n var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n var _isSelfNav = _navigator && _navigator.userAgent == _ua;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser[MAJOR] = majorize(_browser[VERSION]);\n // Brave-specific detection\n if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {\n _browser[NAME] = 'Brave';\n }\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {\n _device[TYPE] = MOBILE;\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {\n _device[MODEL] = 'iPad';\n _device[TYPE] = TABLET;\n }\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n if (_isSelfNav && !_os[NAME] && _uach && _uach.platform && _uach.platform != 'Unknown') {\n _os[NAME] = _uach.platform \n .replace(/chrome os/i, CHROMIUM_OS)\n .replace(/macos/i, MAC_OS); // backward compatibility\n }\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"datePicker_container__khaqu\",\"date_picker\":\"datePicker_date_picker__MoFZX\",\"small\":\"datePicker_small__w0pup\",\"icon\":\"datePicker_icon__DIwBP\"};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"body_container__zSuwm\",\"row_wrapper\":\"body_row_wrapper__xxeX7\",\"row\":\"body_row__vPlzr\",\"frozen\":\"body_frozen__WZ4PW\",\"selected\":\"body_selected__8fJF8\",\"cells_wrapper\":\"body_cells_wrapper__6MHgT\",\"cell\":\"body_cell__cHpe8\",\"editing\":\"body_editing__zpf3b\",\"error\":\"body_error__GB7iQ\",\"content\":\"body_content__LddhW\",\"hover_icon\":\"body_hover_icon__4m+V2\",\"align_center\":\"body_align_center__iDEdL\",\"align_right\":\"body_align_right__Bpi63\",\"semaphore\":\"body_semaphore__nhXyJ\",\"reference_link\":\"body_reference_link__o15rJ\",\"icon\":\"body_icon__9AX05\",\"row_toggler\":\"body_row_toggler__CfctV\",\"row_group\":\"body_row_group__jOa8u\",\"count\":\"body_count__ZM62F\",\"level\":\"body_level__vEgqg\",\"diagram\":\"body_diagram__PNmyI\",\"level_0\":\"body_level_0__1flk7\",\"level_1\":\"body_level_1__sHmAt\",\"level_2\":\"body_level_2__d57WF\",\"level_3\":\"body_level_3__0Oxvz\",\"level_4\":\"body_level_4__SjWdt\",\"toggler_collapsed\":\"body_toggler_collapsed__12iyn\",\"toggler_expanded\":\"body_toggler_expanded__MerKJ\"};","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nexport { _objectSpread2 as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + ({\"102\":\"xlsx\",\"133\":\"pdfmake\",\"182\":\"canvg\",\"352\":\"onboarding\",\"962\":\"home\"}[chunkId] || chunkId) + \".\" + {\"102\":\"13c1b258\",\"133\":\"0b42a654\",\"182\":\"520b3187\",\"246\":\"32e3474f\",\"352\":\"689c0c97\",\"363\":\"b0c5412c\",\"652\":\"e0f89115\",\"892\":\"7ac42874\",\"962\":\"80a050cf\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + {\"352\":\"onboarding\",\"962\":\"home\"}[chunkId] + \".\" + {\"352\":\"da4d963b\",\"962\":\"5cdc6a0d\"}[chunkId] + \".chunk.css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"mavles-frontend:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"352\":1,\"962\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkmavles_frontend\"] = self[\"webpackChunkmavles_frontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","import { ITheme } from \"./ITheme\";\r\nimport { is } from \"../core/Registry\";\r\nimport { color } from \"../core/utils/Color\";\r\nimport { InterfaceColorSet } from \"../core/utils/InterfaceColorSet\";\r\nimport { BaseObject } from \"../core/Base\";\r\nimport { Scrollbar } from \"../core/elements/Scrollbar\";\r\n\r\nconst theme: ITheme = (object: BaseObject) => {\r\n\tif (is<InterfaceColorSet>(object, \"InterfaceColorSet\")) {\r\n\t\tobject.setFor(\"stroke\", color(\"#000000\"));\r\n\t\tobject.setFor(\"fill\", color(\"#2b2b2b\"));\r\n\r\n\t\tobject.setFor(\"primaryButton\", color(\"#6794dc\").lighten(-0.2));\r\n\t\tobject.setFor(\"primaryButtonHover\", color(\"#6771dc\").lighten(-0.2));\r\n\t\tobject.setFor(\"primaryButtonDown\", color(\"#68dc75\").lighten(-0.2));\r\n\t\tobject.setFor(\"primaryButtonActive\", color(\"#68dc75\").lighten(-0.2));\r\n\t\tobject.setFor(\"primaryButtonText\", color(\"#FFFFFF\"));\r\n\t\tobject.setFor(\"primaryButtonStroke\", color(\"#6794dc\"));\r\n\r\n\t\tobject.setFor(\"secondaryButton\", color(\"#3b3b3b\"));\r\n\t\tobject.setFor(\"secondaryButtonHover\", color(\"#3b3b3b\").lighten(0.1));\r\n\t\tobject.setFor(\"secondaryButtonDown\", color(\"#3b3b3b\").lighten(0.15));\r\n\t\tobject.setFor(\"secondaryButtonActive\", color(\"#3b3b3b\").lighten(0.15));\r\n\t\tobject.setFor(\"secondaryButtonText\", color(\"#bbbbbb\"));\r\n\t\tobject.setFor(\"secondaryButtonStroke\", color(\"#3b3b3b\").lighten(-0.2));\r\n\r\n\t\tobject.setFor(\"grid\", color(\"#bbbbbb\"));\r\n\t\tobject.setFor(\"background\", color(\"#000000\"));\r\n\t\tobject.setFor(\"alternativeBackground\", color(\"#ffffff\"));\r\n\t\tobject.setFor(\"text\", color(\"#ffffff\"));\r\n\t\tobject.setFor(\"alternativeText\", color(\"#000000\"));\r\n\t\tobject.setFor(\"disabledBackground\", color(\"#bbbbbb\"));\r\n\t}\r\n\r\n\r\n\tif (is<Scrollbar>(object, \"Scrollbar\")) {\r\n\t\tobject.background.fillOpacity = 0.4;\r\n\t\tobject.thumb.background.fillOpacity = 0.5;\r\n\t}\r\n\r\n};\r\n\r\nexport default theme;\r\n","import { ITheme } from \"./ITheme\";\r\nimport { is } from \"../core/Registry\";\r\nimport { SpriteState } from \"../core/SpriteState\";\r\nimport { Component } from \"../core/Component\";\r\nimport { BaseObject } from \"../core/Base\";\r\nimport { Scrollbar } from \"../core/elements/Scrollbar\";\r\nimport { Tooltip } from \"../core/elements/Tooltip\";\r\nimport { Series } from \"../charts/series/Series\";\r\nimport { PercentSeries } from \"../charts/series/PercentSeries\";\r\nimport { SankeyDiagram } from \"../charts/types/SankeyDiagram\";\r\nimport { FunnelSeries } from \"../charts/series/FunnelSeries\";\r\nimport { MapSeries } from \"../charts/map/MapSeries\";\r\nimport { FunnelSlice } from \"../charts/elements/FunnelSlice\";\r\nimport { Column } from \"../charts/elements/Column\";\r\nimport { Column3D } from \"../charts/elements/Column3D\";\r\nimport { Slice } from \"../core/elements/Slice\";\r\nimport { Preloader } from \"../core/elements/Preloader\";\r\nimport { Chart } from \"../charts/Chart\";\r\n\r\n\r\n\r\nconst theme: ITheme = (object: BaseObject) => {\r\n\tif (is<SpriteState<any, any>>(object, \"SpriteState\")) {\r\n\t\tobject.transitionDuration = 400;\r\n\t}\r\n\r\n\tif (is<Component>(object, \"Component\")) {\r\n\t\tobject.rangeChangeDuration = 500;\r\n\t\tobject.interpolationDuration = 500;\r\n\t\tobject.sequencedInterpolation = false;\r\n\r\n\t\tif (is<SankeyDiagram>(object, \"SankeyDiagram\")) {\r\n\t\t\tobject.sequencedInterpolation = true;\r\n\t\t}\r\n\r\n\t\tif (is<FunnelSeries>(object, \"FunnelSeries\")) {\r\n\t\t\tobject.sequencedInterpolation = true;\r\n\t\t}\r\n\t}\r\n\r\n\tif (is<Chart>(object, \"Chart\")) {\r\n\t\tobject.defaultState.transitionDuration = 2000;\r\n\t\tobject.hiddenState.transitionDuration = 1000;\r\n\t}\r\n\r\n\tif (is<Tooltip>(object, \"Tooltip\")) {\r\n\t\tobject.animationDuration = 400;\r\n\t\tobject.defaultState.transitionDuration = 400;\r\n\t\tobject.hiddenState.transitionDuration = 400;\r\n\t}\r\n\r\n\tif (is<Scrollbar>(object, \"Scrollbar\")) {\r\n\t\tobject.animationDuration = 500;\r\n\t}\r\n\r\n\tif (is<Series>(object, \"Series\")) {\r\n\t\tobject.defaultState.transitionDuration = 1000;\r\n\t\tobject.hiddenState.transitionDuration = 700;\r\n\t\tobject.hiddenState.properties.opacity = 1;\r\n\t\tobject.showOnInit = true;\r\n\t}\r\n\r\n\tif (is<MapSeries>(object, \"MapSeries\")) {\r\n\t\tobject.hiddenState.properties.opacity = 0;\r\n\t}\r\n\r\n\tif (is<PercentSeries>(object, \"PercentSeries\")) {\r\n\t\tobject.hiddenState.properties.opacity = 0;\r\n\t}\r\n\r\n\tif (is<FunnelSlice>(object, \"FunnelSlice\")) {\r\n\t\tobject.defaultState.transitionDuration = 800;\r\n\t\tobject.hiddenState.transitionDuration = 1000;\r\n\t\tobject.hiddenState.properties.opacity = 1;\r\n\t}\r\n\r\n\tif (is<Slice>(object, \"Slice\")) {\r\n\t\tobject.defaultState.transitionDuration = 700;\r\n\t\tobject.hiddenState.transitionDuration = 1000;\r\n\t\tobject.hiddenState.properties.opacity = 1;\r\n\t}\r\n\r\n\tif (is<Preloader>(object, \"Preloader\")) {\r\n\t\tobject.hiddenState.transitionDuration = 2000;\r\n\t}\r\n\r\n\tif (is<Column>(object, \"Column\")) {\r\n\t\tobject.defaultState.transitionDuration = 700;\r\n\t\tobject.hiddenState.transitionDuration = 1000;\r\n\t\tobject.hiddenState.properties.opacity = 1;\r\n\t}\r\n\r\n\tif (is<Column3D>(object, \"Column3D\")) {\r\n\t\tobject.hiddenState.properties.opacity = 0;\r\n\t}\r\n};\r\n\r\nexport default theme;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"theme\":\"light_theme__TTz0Q\"};","// extracted by mini-css-extract-plugin\nexport default {\"theme\":\"dark_theme__mykpC\"};","import { useEffect } from 'react';\nimport * as am4core from \"@amcharts/amcharts4/core\";\nimport am4themes_dark from \"@amcharts/amcharts4/themes/dark\";\nimport am4themes_animated from \"@amcharts/amcharts4/themes/animated\";\nimport lightThemeStyles from 'assets/styles/themes/light.module.scss';\nimport darkThemeStyles from 'assets/styles/themes/dark.module.scss';\nimport { RootState } from 'base/reducer/reducer';\nimport { useSelector } from 'react-redux';\nimport { ThemeEnum } from \"features/Theme\";\nimport amchartCustomTheme from './amchartCustomTheme.js'\n\ntype Props = {\n\tchildren: any\n}\n\nconst ThemeProvider = ({ children }: Props) => {\n\tconst theme = useSelector((state: RootState) => state.theme);\n\n\tdocument.body.classList.add(darkThemeStyles.theme);\n\n\tuseEffect(\n\t\t() => {\n\t\t\tlet className: string;\n\n\t\t\tswitch (theme) {\n\t\t\t\tcase ThemeEnum.Light:\n\t\t\t\t\tclassName = lightThemeStyles.theme;\n\t\t\t\t\tam4core.unuseAllThemes();\n\t\t\t\t\tam4core.useTheme(amchartCustomTheme);\n\t\t\t\t\tbreak;\n\t\t\t\tcase ThemeEnum.Dark:\n\t\t\t\t\tclassName = darkThemeStyles.theme;\n\t\t\t\t\tam4core.unuseAllThemes();\n\t\t\t\t\t// for dark interface - lines, labels, etc.\n\t\t\t\t\tam4core.useTheme(am4themes_dark);\n\t\t\t\t\t// for now, the colors pallete\n\t\t\t\t\tam4core.useTheme(amchartCustomTheme);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tclassName = darkThemeStyles.theme;\n\t\t\t}\n\n\t\t\t// for animations\n\t\t\tam4core.useTheme(am4themes_animated);\n\n\t\t\tdocument.body.classList.remove(lightThemeStyles.theme, darkThemeStyles.theme);\n\t\t\tdocument.body.classList.add(className);\n\t\t},\n\t\t[theme]\n\t)\n\n\treturn (\n\t\t<>\n\t\t\t{children}\n\t\t</>\n\t)\n};\n\nexport default ThemeProvider;\n","import React, { Suspense, useCallback, useEffect } from 'react';\nimport { Redirect, Route, Switch, useLocation } from 'react-router-dom';\nimport { ONBOARDING_ROUTE } from 'base/constants/routes';\nimport { getToken } from 'features/Token/token';\nimport { getIsTenantInitialized, getSubdomainFromStorage } from 'features/Tenant/tenantUtils';\nimport { getSubdomainFromUrl } from 'features/Tenant/tenantUtils';\nimport { TranslationKeyEnum } from 'components/Translations/TranslationsProvider';\nimport { useLoadTranslation } from 'components/Translations/translationUtils';\nimport { envSettings } from 'settings/envSettings';\n\nexport type RedirectToLoginState = {\n\tfrom?: string\n}\n\nconst HomePage = React.lazy(() => import(/* webpackChunkName: \"home\" */ './Home/HomePage'))\nconst OnboardingPage = React.lazy(() => import(/* webpackChunkName: \"onboarding\" */ './Onboarding/OnboardingPage'))\n\nconst PageRouter = () => {\n\tconst location = useLocation();\n\tconst loadTranslation = useLoadTranslation()\n\n\tconst fetchBaseLanguageDataCallback = useCallback(\n\t\tasync () => {\n\t\t\tawait loadTranslation(TranslationKeyEnum.BASE);\n\t\t},\n\t\t[loadTranslation]\n\t)\n\n\tuseEffect(\n\t\t() => {\n\t\t\tfetchBaseLanguageDataCallback()\n\t\t},\n\t\t[fetchBaseLanguageDataCallback]\n\t)\n\n\tconst isLoggedIn = useCallback(\n\t\t() => !!getToken(),\n\t\t[]\n\t)\n\n\tconst isRegistrationFinished = useCallback(\n\t\t() => !!getIsTenantInitialized(),\n\t\t[]\n\t)\n\n\tconst shouldRedirectToOnboardingPage = useCallback(\n\t\t() => !isLoggedIn() || !isRegistrationFinished(),\n\t\t[isLoggedIn, isRegistrationFinished]\n\t)\n\n\t// Use Case 1. for example, URL is opened from email and user is logged in.\n\t// we need to check if it is the same tenant, checking current URL subdomain versus subdomain from login.\n\tconst isAppropriateTenant = useCallback(\n\t\t() => {\n\t\t\tconst subdomainFromStorage = getSubdomainFromStorage();\n\t\t\tconst subdomainFromUrl = getSubdomainFromUrl();\n\n\t\t\treturn subdomainFromStorage === subdomainFromUrl;\n\t\t},\n\t\t[]\n\t)\n\n\tconst renderHomePage = useCallback(\n\t\t() => {\n\t\t\tconst shouldRedirect = shouldRedirectToOnboardingPage();\n\t\t\tconst isWrongTenant = !isAppropriateTenant();\n\n\t\t\tif (shouldRedirect || isWrongTenant) {\n\t\t\t\treturn (\n\t\t\t\t\t<Redirect\n\t\t\t\t\t\tto={{\n\t\t\t\t\t\t\tpathname: ONBOARDING_ROUTE,\n\t\t\t\t\t\t\t// Use Case 2. for example, URL is opened from email and user is NOT logged in\n\t\t\t\t\t\t\t// we need to save original 'from' pathname and after login we redirect to that 'from'\n\t\t\t\t\t\t\tstate: { from: location.pathname } as RedirectToLoginState\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\treturn <HomePage />\n\t\t\t}\n\t\t},\n\t\t[shouldRedirectToOnboardingPage, location.pathname, isAppropriateTenant]\n\t)\n\n\treturn (\n\t\t<Suspense fallback={false}>\n\t\t\t<Switch>\n\t\t\t\t<Route path={ONBOARDING_ROUTE} component={OnboardingPage} />\n\t\t\t\t{envSettings.type === 'registration' && <Route component={OnboardingPage} />}\n\t\t\t\t{envSettings.type === 'application' && <Route render={renderHomePage} />}\n\t\t\t</Switch>\n\t\t</Suspense>\n\t);\n};\n\nexport default PageRouter;\n","import { Provider } from 'react-redux';\nimport store from 'base/reducer/store';\nimport { ThemeProvider } from 'features/ThemeProvider';\nimport { PageRouter } from 'pages';\nimport { BrowserRouter } from 'react-router-dom';\nimport ErrorBoundary from 'features/ErrorBoundary';\nimport { TranslationsProvider } from 'components/Translations/TranslationsProvider';\nimport { ToastContainer } from 'react-toastify';\n\nexport const AppContainer = () => {\n\treturn (\n\t\t<ErrorBoundary location='AppContainer' fallbackProps={{ showButtons: false }}>\n\t\t\t<Provider store={store}>\n\t\t\t\t<TranslationsProvider>\n\t\t\t\t\t<ThemeProvider>\n\t\t\t\t\t\t<BrowserRouter>\n\t\t\t\t\t\t\t<PageRouter />\n\t\t\t\t\t\t</BrowserRouter>\n\t\t\t\t\t</ThemeProvider>\n\t\t\t\t\t<ToastContainer />\n\t\t\t\t</TranslationsProvider>\n\t\t\t</Provider>\n\t\t</ErrorBoundary>\n\t)\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport 'normalize.css';\nimport 'assets/styles/reset.scss';\nimport 'assets/styles/scrollbar.scss'; // separated from reset because storybook is not showing scroll bar with this styles\n\nimport 'assets/styles/bootstrap.override.css'\n\nimport { AppContainer } from 'containers/AppContainer';\nimport errorReportingService from 'services/errorReportingService';\n\nerrorReportingService.init();\n\nReactDOM.render(\n\t<React.StrictMode>\n\t\t<AppContainer />\n\t</React.StrictMode>,\n\tdocument.getElementById('root')\n);\n"],"names":["HOME_ROUTE","ONBOARDING_ROUTE","initialState","PersistValueReducer","combineReducers","routes","theme","persistedTenant","state","arguments","length","undefined","action","type","TENANT_FETCHING","fetching","_objectSpread","TENANT_SET","value","isInitialized","persistedCompanyInfo","COMPANY_INFO_FETCHING","COMPANY_INFO_SET","persistedCurrency","PersistItemsReducer","CURRENCIES_FETCHING","CURRENCIES_SET","items","itemsMap","reduce","map","item","id","persistedCountry","COUNTRIES_FETCHING","COUNTRIES_SET","persistedDatePattern","DATE_PATTERN_FETCHING","DATE_PATTERN_SET","persistedTimePattern","TIME_PATTERN_FETCHING","TIME_PATTERN_SET","persistedBusinessPartner","BUSINESS_PARTNERS_FETCHING","BUSINESS_PARTNERS_SET","sortByString","propertyOf","persistedProjectStatus","PROJECT_STATUSES_FETCHING","PROJECT_STATUSES_SET","persistedProjectType","PersistActiveItemsReducer","PROJECT_TYPES_FETCHING","PROJECT_TYPES_SET","activeItems","filter","x","isActive","activeItemsMap","persistedProjectCategory","PROJECT_CATEGORIES_FETCHING","PROJECT_CATEGORIES_SET","persistedDefaultProject","DEFAULT_PROJECT_FETCHING","DEFAULT_PROJECT_SET","persistedProject","persistedOrganizationalUnitManagerProject","persistedTicketType","TICKET_TYPES_FETCHING","TICKET_TYPES_SET","persistedTicketEnvironment","TICKET_ENVIRONMENTS_FETCHING","TICKET_ENVIRONMENTS_SET","persistedTicketAssignedGroup","TICKET_ASSIGNED_GROUP_FETCHING","TICKET_ASSIGNED_GROUP_SET","persistedTicketCategory","TICKET_CATEGORY_FETCHING","TICKET_CATEGORY_SET","persistedTicketStatus","TICKET_STATUS_FETCHING","TICKET_STATUS_SET","persistedTicketImpact","TICKET_IMPACT_FETCHING","TICKET_IMPACT_SET","persistedTicketUrgency","TICKET_URGENCY_FETCHING","TICKET_URGENCY_SET","persistedTicketPriority","TICKET_PRIORITY_FETCHING","TICKET_PRIORITY_SET","persistedTicketClosingId","TICKET_CLOSING_ID_FETCHING","TICKET_CLOSING_ID_SET","persistedReportStatus","REPORT_STATUS_FETCHING","REPORT_STATUS_SET","persistedRiskStatus","RISK_STATUSES_FETCHING","RISK_STATUSES_SET","persistedInvoiceStatus","INVOICE_STATUSES_FETCHING","INVOICE_STATUSES_SET","persistedChangeRequestStatus","CHANGE_REQUEST_STATUS_FETCHING","CHANGE_REQUEST_STATUS_SET","persistedChangeRequestType","SCOPE_CHANGE_REQUEST_TYPE_FETCHING","SCOPE_CHANGE_REQUEST_TYPE_SET","persistedScopeDepartments","PersistProjectItemsReducer","DEPARTMENTS_FETCHING","_state$projectMap$pro","_state$projectMap$pro2","_state$projectMap$pro3","projectId","projectMap","DEPARTMENTS_SET","persistedScopeStepTypes","STEP_TYPES_FETCHING","STEP_TYPES_SET","persistedScopeUserRoles","USER_ROLES_FETCHING","USER_ROLES_SET","persistedTestCaseStatus","TEST_CASE_STATUSES_FETCHING","TEST_CASE_STATUSES_SET","persistedTrainingStatus","TRAINING_STATUSES_FETCHING","TRAINING_STATUSES_SET","persistedTimeAndTravelStatus","TIME_AND_TRAVEL_STATUSES_FETCHING","TIME_AND_TRAVEL_STATUSES_SET","persistedTimeTravelNonProjectCategories","TIME_TRAVEL_NON_PROJECT_CATEGORIES_FETCHING","TIME_TRAVEL_NON_PROJECT_CATEGORIES_SET","persistedTravelCostTypes","TRAVEL_COST_TYPES_FETCHING","TRAVEL_COST_TYPES_SET","persistedTimeTravelExpenseTypes","TIME_TRAVEL_EXPENSE_TYPES_FETCHING","TIME_TRAVEL_EXPENSE_TYPES_SET","persistedExpenseGeneralConfiguration","EXPENSE_GENERAL_CONFIGURATION_FETCHING","EXPENSE_GENERAL_CONFIGURATION_SET","persistedVacationGeneralConfiguration","VACATION_GENERAL_CONFIGURATION_FETCHING","VACATION_GENERAL_CONFIGURATION_SET","persistedTimesheetsGeneralConfiguration","TIMESHEETS_GENERAL_CONFIGURATION_FETCHING","TIMESHEETS_GENERAL_CONFIGURATION_SET","persistedTravelRequests","TRAVEL_REQUESTS_FETCHING","TRAVEL_REQUESTS_SET","persistedTimesheetRequiredFields","PersistProjectValueReducer","TIMESHEET_REQUIRED_FIELDS_FETCHING","TimesheetRequiredFieldsResponse","TIMESHEET_REQUIRED_FIELDS_SET","persistedFinanceCategory","FINANCE_CATEGORY_FETCHING","FINANCE_CATEGORY_SET","persistedUserStatus","USER_STATUS_FETCHING","USER_STATUS_SET","persistedUser","USERS_FETCHING","USERS_SET","persistedTeamMember","TEAM_MEMBERS_FETCHING","TEAM_MEMBERS_SET","persistedProjectTeam","PROJECT_TEAMS_FETCHING","PROJECT_TEAMS_SET","persistedProjectRole","PROJECT_ROLES_FETCHING","PROJECT_ROLES_SET","persistedOrganizationalUnit","COMPANY_ORGANIZATIONAL_UNITS_FETCHING","COMPANY_ORGANIZATIONAL_UNITS_SET","persistedCommunicationStatusReport","STATUS_REPORT_FETCHING","STATUS_REPORT_SET","persistedTaskStatus","TASK_STATUS_FETCHING","TASK_STATUS_SET","persistedMeetingStatus","MEETING_STATUS_FETCHING","MEETING_STATUS_SET","persistedMeetingType","MEETING_TYPE_FETCHING","MEETING_TYPE_SET","persistedScheduleConfiguration","SCHEDULE_CONFIGURATION_FETCHING","ScheduleConfigurationResponse","SCHEDULE_CONFIGURATION_SET","persistedRiskType","RISK_TYPES_FETCHING","RISK_TYPES_SET","persistedTablesConfig","TABLE_CONFIG_FETCHING","SET_TABLE_CONFIG","tablesConfig","SET_COLUMNS_ORDER_TABLE_CONFIG","tableId","columnsOrder","SET_COLUMNS_WIDTH_TABLE_CONFIG","columnsWidth","SET_FILTERS_TABLE_CONFIG","filters","SET_SORT_TABLE_CONFIG","sort","createStore","reducer","window","__REDUX_DEVTOOLS_EXTENSION__","trace","_ref","children","text","isLoading","disabled","color","onClick","btnClassName","concat","styles","btn","_jsxs","className","_jsx","Translation","i18n","style","position","top","bottom","left","right","Spinner","ClipSpinner","size","Cover","transparent","onClickCallback","useCallback","e","stopPropagation","Header","title","onClose","i18nArgs","isJSXElement","isValidElement","header","args","DeleteIcon","fill","width","height","close","KEY_EVENT_TYPE","Dialog","open","dialogRef","useRef","startAnimationCallback","_dialogRef$current","current","classList","add","static","endAnimationCallback","_dialogRef$current2","remove","useEffect","ref","addEventListener","removeEventListener","handleEscKey","event","key","document","container","show","onKeyUp","dialog","content","ErrorBoundary","location","_Fragment","SimpleDialog","message","onConfirm","onCancel","useMemo","RowContainer","justifyContent","Button","FrozenElement","LockIcon","Element","index","Draggable","draggableId","provided","snapshot","isDragging","draggableProps","dragHandleProps","innerRef","Column","elements","frozenStartElements","frozenEndElements","draggableElements","element","frozen","push","Droppable","droppableId","isDraggingOver","droppableProps","ColumnType","constructor","column","elementIds","this","MultiList","onDragEnd","initialMultiList","currentData","setCurrentData","useState","handleDragEnd","result","destination","source","startColumn","columnMap","finishColumn","newColumn","splice","newCurrentData","newStartColumn","newFinishColumn","DragDropContext","flex","margin","columnOrder","columnId","elementId","elementMap","ReordableList","onReorder","initialElementIds","renderItem","setElementIds","newElementIds","parseInt","String","isDragDisabled","placeholder","ReordableColumns","frozenStartElementIds","draggableElementIds","frozenEndElementIds","newDraggableElementIds","newColumnOrderIds","direction","FieldMessage","error","MaxLength","maxLength","AddAttachmentButton","onChange","onBlur","multiple","accept","inputRef","onChangeCallback","files","target","filesLength","allFiles","i","file","reader","FileReader","readAsDataURL","onload","fileInfo","InsertAttachmentRequest","name","base64EncodedFile","click","hidden","useItems","newAttachments","oldAttachments","removeNewAttachment","removeOldAttachment","downloadOldAttachment","deletingId","setDeletingId","downloadingId","setDownloadingId","downloadOldAttachmentCallback","async","response","status","FileSaver","data","fileName","removeOldAttachmentCallback","oldAttachmentsContent","attachment","Info","onDelete","isDeletable","newAttachmentsContent","onDeleteCallback","OverlaySpinner","withBackground","MapItem","model","parentId","childrens","convertToMapItems","originalItems","getSelectedItem","selected","convertToAbsoluteName","mapItem","absoluteName","getChildren","organizationalUnit","organizationalUnitsMap","child","getAllOrganizationalUnitIds","organizationalUnitIds","Array","from","Set","Attachment","removeNewAttachmentCallback","attachments","itemsContent","Input","explanation","hideMaxLength","focus","onFocus","selectAllTextOnFocus","onKeyDown","loading","selection","getTranslation","useGetTranslation","onFocusCallback","_inputRef$current","select","setTimeout","_inputRef$current2","setSelectionRange","start","end","onKeyDownCallback","onKeyUpCallback","autoFocus","InfoPopup","POSITION","TOP_CENTER","useBrandColor","Option","forwardRef","getItemText","isSelected","getItemStyle","itemStyleMemo","onMouseDown","autoCompleteId","isAutoCompleteHit","closest","AutoComplete","props","getItemId","getItemDescription","getText","usePortal","containerRef","expanded","setExpanded","searchValue","setSearchValue","filteredItems","setFilteredItems","emptyArray","keyboardItem","setKeyboardItem","dropdownStyle","setDropdownStyle","newFilteredItems","toLowerCase","includes","a","b","_getTranslation","_getTranslation2","textA","toUpperCase","textB","onBlurCallback","expandCallback","eventKey","indexOf","at","optionsContent","selectedItem","find","selectedItemStyle","selectedItemText","description","dropdownContentMemo","dropdownContent","createPortal","body","calculateDropdownPortalStyle","getBoundingClientRect","viewportHeight","innerHeight","spaceBelow","spaceAbove","openAbove","dropdownMaxWidth","minWidth","maxWidth","scrollX","scrollY","useLayoutEffect","ArrowDownIcon","autoCompleteRemoteId","emptyItemsModel","count","isAutoCompleteRemoteHit","AutoCompleteRemote","entityPrefix","fetchItemsFunction","fetchSingleItemFunction","isFetchingSearchItems","setIsFetchingSearchItems","offset","setOffset","setSelectedItem","isFetchingValue","setIsFetchingValue","lastItemRef","observerInstance","IntersectionObserver","entries","isIntersecting","prev","root","threshold","observe","unobserve","fetchFilteredItemsCallback","bindedAction","bind","GenericFilterModelCollection","limit","tryCatchJsonByAction","success","handler","clearTimeout","fetchSelectedItemDataCallback","Number","getItemTextMemo","getFormatedId","searchValueChangeCallback","Checkbox","labelBefore","labelBeforeAdditional","labelClassName","CheckIcon","backgroundColor","borderColor","DefaultColors","colors","DefaultColor","defaultProps","memo","placement","Hue","Component","super","React","onMouseUp","onTouchStart","onChangeComplete","calculateChange","containerWidth","clientWidth","pageX","touches","changedTouches","pageXOffset","h","s","l","hsl","hex","hslToHex","unbindEventListeners","preventDefault","render","hslColor","hexToHsl","onTouchMove","onTouchEnd","transform","ColorPickerPanel","defaultColors","showHue","Arrow","Preview","elementsFromPoint","pageY","SimpleColorPicker","isOpened","setIsOpened","onCoverClick","onOpenerClick","onChangeCompleteCallback","newColor","wrapperClassName","colorPickerStyles","ColorPickerOpener","formatDistanceLocale","lessThanXSeconds","one","standalone","withPrepositionAgo","withPrepositionIn","dual","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","token","options","tokenValue","addSuffix","comparison","substr","replace","date","buildFormatLongFn","formats","full","long","medium","short","defaultWidth","time","dateTime","formatRelativeLocale","lastWeek","getUTCDay","yesterday","today","tomorrow","nextWeek","_baseDate","_options","format","ordinalNumber","dirtyNumber","era","buildLocalizeFn","values","narrow","abbreviated","wide","quarter","argumentCallback","month","formattingValues","defaultFormattingWidth","day","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","code","formatDistance","formatLong","formatRelative","localize","match","buildMatchPatternFn","matchPattern","parsePattern","valueCallback","buildMatchFn","matchPatterns","defaultMatchWidth","parsePatterns","any","defaultParseWidth","weekStartsOn","firstWeekContainsDate","registerLocale","languages","LanguagesEnum","English","locale","enUS","Serbian","srLatn","DatePicker","minDate","maxDate","showTime","datePattern","useGetDatePatternString","timePattern","useGetTimePatternString","dateTimePattern","handleCalendarClose","timeLabel","small","DatePickerLib","date_picker","onCalendarClose","showMonthDropdown","showYearDropdown","yearDropdownItemNumber","showTimeSelect","dateFormat","timeFormat","portalId","timeCaption","getLangCode","icon","CalendarIcon","FileInput","display","removeCallback","displayContent","EditIcon","noop","charIsNumber","char","isNil","val","escapeRegExp","str","splitDecimal","numStr","allowNegative","hasNagation","addNegation","parts","split","beforeDecimal","afterDecimal","limitToScale","scale","fixedDecimalScale","filler","repeat","join","setCaretPosition","el","caretPos","createTextRange","range","move","selectionStart","clamp","num","min","max","Math","getCurrentCaretPosition","selectionEnd","displayType","decimalSeparator","thousandsGroupStyle","prefix","suffix","allowEmptyFormatting","allowLeadingZeros","isNumericString","onValueChange","isAllowed","NumberFormat","superclass","call","defaultValue","validateProps","formattedValue","formatValueProp","numAsString","removeFormatting","mounted","selectionBeforeInput","__proto__","prototype","Object","create","componentDidMount","setState","componentDidUpdate","prevProps","updateValueIfRequired","componentWillUnmount","focusTimeout","caretPositionTimeout","focusedElm","stateValue","lastNumStr","lastValueWithNewFormat","formatNumString","floatValue","parseFloat","lastFloatValue","isNaN","updateValue","input","getFloatString","decimalScale","getSeparators","numRegex","getNumberRegex","hasNegation","firstDecimalIndex","substring","RegExp","g","ignoreDecimalSeparator","customNumerals","ref$1","thousandSeparator","allowedDecimalSeparators","getMaskAtIndex","mask","getValueObject","Error","toString","setPatchedCaretPosition","currentValue","correctCaretPosition","firstHashPosition","lastIndexOf","nextPos","caretLeftBound","caretRightBound","getCaretPosition","inputValue","j","inputNumber","formattedNumber","currentInputChar","currentFormatChar","removePrefixAndSuffix","isNegative","suffixLastIndex","removePatternFormatting","formatArray","ln","part","formatWithPattern","hashCount","formattedNumberAry","formatAsNumber","hasDecimalSeparator","ref$2","thousandsGroupRegex","getThousandsGroupRegex","search","applyThousandSeparator","customNumeralRegex","digit","isNonNumericFalsy","sign","coefficient","exponent","decimalIndex","coffiecientLn","abs","toNumericString","shoudHaveDecimalSeparator","roundedDecimalParts","toFixed","reverse","roundedStr","idx","roundToPrecision","formatInput","formatNegation","negationRegex","doubleNegationRegex","test","removeNegation","isCharacterAFormat","correctInputValue","lastValue","this$1","ref$3","prevValue","newValue","prevLength","newLength","findChangedIndex","separator","leftBound","rightBound","deletedValues","deletedVal","deletedValuePortion","recordIndexOfFormatCharacters","resolvedPortion","forEach","currentPortion","keys","numericString","ref$4","isBeforeDecimalPoint","params","currentCaretPosition","isChangeAllowed","fixLeadingZero","expectedCaretPosition","negativeRegex","isPatternFormat","newCaretPosition","isUnitTestRun","caretPosition","persist","customInput","renderText","getInputRef","otherProps","obj","exclude","k","hasOwnProperty","objectWithoutProperties","inputMode","navigator","platform","addInputMode","inputProps","assign","CustomInput","currencyDefaultProps","align","percentDefaultProps","InputNumber","_props$suffix","_objectWithoutProperties","_excluded","isAllowedCallback","suffixMemo","wrapper","max_length","Item","expandedByDefault","hasChildrens","toggleExpandCallback","childrensContent","expanderContent","expander","ArrowRightIcon","FolderIcon","FileIcon","itemContent","Shorten","MapPicker","initialSelected","single","setSelected","setOpen","openCallback","closeCallback","selectCallback","changeCallback","clearCallback","displayValue","TreeStructureIcon","MapSinglePicker","rest","MapMultiPicker","MultiCheckbox","isKeyboardItem","multiselectId","isMultiSelectHit","MultiSelect","getItemLinkRoute","isLink","hasSelectAll","numOfItemNames","filteredItemsMemo","newValues","isAllSelectedMemo","every","selectAllCallback","filteredItemIds","selectedContent","Link","to","RadioItem","isChecked","handleOptionChange","Radio","Select","containsEmpty","handleSelectChange","currentTarget","currentItem","selectClassName","select_container","arrow","description_container","Switch","active","track","thumb","FooterRow","headers","fields","context","errorsMap","onFieldChange","validateField","registerValidators","cell","FormContext","Provider","ItemWrapper","registerValidatorsCallback","validatorFunctions","onFieldChangeCallback","validateFieldCallback","TableRow","DraggableHandle","isAnyRowDeletable","rowIsDeletable","commonStyles","hidden_no_height","globalErrorKey","Table","errors","getRowData","draggable","hasTotal","fieldId","rowValues","headerContent","label","isRequired","RequiredField","rowsContent","rowData","row","element_wrapper","dragging","alignItems","HamburgerIcon","footerContent","totalRowValues","totalCalc","container_draggable","element_list","dragging_over","CustomItem","CustomItems","uniqueValueKey","itemValues","Textarea","rows","SelectionEnum","selectionOrder12h","Hours","Minutes","AmPm","selectionOrder24h","toggleAmPm","amPm","MeridiemTimeEnum","PM","AM","convertToTicks","hours","minutes","convertTimeToTicks","convertToTime","ticks","is24h","convertTicksToTime","floor","changeSelection","selectionOrder","toTheRight","defaultTimeValuesString","TimePicker","isDuration","timeValues","setTimeValues","timeValuesString","setTimeValuesString","selectionEnum","setSelectionEnum","inputSelection","getInputSelection","padStart","newTimeValues","newTimeValuesString","enteredChar","firstChar","newSelection","isPm","handleClickCallback","newSelectionEnum","inputSelectionStart","getSelectionEnum","handleKeyDownCallback","increaseSelection","decreaseSelection","ctrlKey","handleKeyUpCallback","ClockIcon","textEditorId","isTextEditorHit","TextEditor","editorState","setEditorState","contentBlock","htmlToDraft","contentState","ContentState","createFromBlockArray","contentBlocks","EditorState","createWithContent","initialEditorState","onEditorStateChange","newEditorState","html","draftToHtml","convertToRaw","getCurrentContent","createEmpty","customToolbar","inline","bold","italic","underline","strikethrough","superscript","subscript","textAlign","center","justify","list","unordered","ordered","indent","outdent","emoji","link","defaultTargetOption","classNameWrapper","classNameEditor","Editor","toolbarClassName","editorClassName","readOnly","toolbarHidden","toolbar","stripPastedStyles","SemaphoreItem","tooltipState","setTooltipState","defaultTooltipState","handleItemChange","handleMouseOver","visible","y","handleMouseLeave","background","onMouseOver","onMouseLeave","Semaphore","withExplanation","explanationMemo","Popup","RIGHT_CENTER","InfoSquaredIcon","fillOpacity","isRequiredValidator","Map","isEmailValidator","Field","isEmail","validator","updateDependants","multiline","Control","useContext","registerValidatorsInContext","validatorsToRegister","dependantValues","controlContent","SmartFormGroup","AttachmentField","AutoCompleteField","CheckboxField","ColorField","DateField","FileInputField","InputField","InputNumberField","ADD_VALIDATOR_TYPE","registeredValidatorsReducer","oldItemValidators","newItemValidators","newState","isUniqueFieldNameValidator","fieldName","fieldValues","useItemsField","uniqueFieldNames","registeredValidatorsForFieldsFromItems","dispatchRegisteredValidatorsForFieldsFromItems","useReducer","newError","validateFieldsFromAllItemsCallback","fieldError","uniqueFieldNameValidators","registerValidatorsForItemCallback","itemHasErrorsCallback","itemErrors","haveError","itemsHaveErrorsCallback","itemsErrors","setFieldError","itemsValues","setFieldValue","deleteItemCallback","newErrors","ItemsField","itemsFieldProps","tableSpecificProps","MapSingleField","MapMultiField","MultiCheckboxField","MultiSelectField","RadioField","RangeMonthPicker","_ref2","getLastDayOfMonth","onCalendarCloseCallback","selectsRange","startDate","endDate","showMonthYearPicker","RangeMonthField","SelectField","TableField","fieldNames","changed","some","has","acc","cv","newTableValues","_","ind","draggedElementError","TableComponent","TextareaField","TimeField","TextEditorField","SemaphoreField","UnsavedChangesGuard","shouldBlockNavigation","history","useHistory","opened","setOpened","lastLocation","setLastLocation","confirmedNavigation","setConfirmedNavigation","handleConfirmNavigationClick","pathname","Prompt","when","nextLocation","startsWith","ColumnContainer","Form","_context$errorsMap","initialValues","onChangeProp","disableUnsavedChangesGuard","onSubmit","submitButtonText","hideSubmitButton","cancelButtonText","hideCancelButton","renderAdditionalButtons","hideButtons","setErrorsMap","isSubmitting","setIsSubmitting","registeredValidators","dispatchRegisteredValidators","useRegisteredValidatorsReducer","haveErrorsCallback","errorsArray","rowErrorsMap","firstKey","validateFormCallback","valid","handleSubmitCallback","serverErrors","handleCancelCallback","fieldValue","hasUnsavedChanges","handleKeyUp","FormGroup","createContext","wrap","flexWrap","NotificationContent","route","Icon","messageContent","href","defaultOptions","hideProgressBar","notification","info","toast","InfoIcon","TYPE","INFO","_excluded2","SUCCESS","warning","_ref3","_excluded3","WarningIcon","WARNING","autoClose","_ref4","_excluded4","ERROR","PLACEMENT","TOP_LEFT","TOP","LEFT","CENTER","TOP_RIGHT","RIGHT","BOTTOM_LEFT","BOTTOM","BOTTOM_CENTER","BOTTOM_RIGHT","LEFT_TOP","LEFT_CENTER","LEFT_BOTTOM","RIGHT_TOP","RIGHT_BOTTOM","stayOpen","initialOpen","bBoxData","setBBoxData","popupContainer","arrowData","bBox","popup_arrow","useArrowDataMemo","containerData","dx","dy","popup","transformOrigin","originX","originY","translateX","translateY","useContainerDataMemo","arrowContent","previousSibling","newBBoxData","getMinBBoxData","openPopup","closePopup","popup_inner","popup_close","fontSize","cursor","SmartContainer","SmartItem","SmartInline","inline_item","form_group_multiline","form_group_inline","field","textColor","brandColor","getCssVariableValue","spinnerColor","borderLeftColor","borderTopColor","borderRightColor","borderBottomColor","CellWithoutMemo","columnWidth","cellEdited","contentRef","saving","setSaving","formatterCell","isCellEditable","_column$editable","editable","clickCallback","showTooltipCallback","tooltipX","clientX","tooltipY","clientY","contentWidth","scrollWidth","contentHeight","scrollHeight","screenWidth","innerWidth","screenHeight","adjustedX","adjustedY","hideTooltipCallback","cellFormatter","useCellFormatter","formattedCell","formatted","editing","styleMemo","getStyle","EditableCell","visibility","inner","Tooltip","topPosition","leftPosition","Cell","StringEditableCell","OptionEditableCell","specificPropsMemo","getItems","DateEditableCell","NumberEditableCell","BooleanEditableCell","OptionsEditableCell","LinkEditableCell","isOpen","setIsOpen","newLink","setNewLink","showLinkInput","setShowLinkInput","errorStyle","setErrorStyle","openCellDropdownCallback","closeCellDropdownCallback","handleOpenLinkCallback","url","getAbsoluteUrl","handleDeleteCallback","uri","updatedLinks","handleOnChangeCallback","handleOnBlurCallback","linkCount","PlusIcon","LinkIcon","TimeEditableCell","setCurrentValue","currentValueRef","DurationColumnModel","convertTicksToMinutes","convertMinutesToTicks","setCurrentValueCallback","BooleanColumnModel","OptionColumnModel","OptionsColumnModel","DateColumnModel","LinkColumnModel","NumberColumnModel","CurrencyColumnModel","TimeColumnModel","StringColumnModel","LinkCell","downloadAttachment","isSimpleAttachment","handleOpenCallback","handleCloseCallback","handleOnLinkClickCallback","renderItemsMemo","links","rel","AttachmentIcon","formatDate","useFormatDate","formatDateTime","useFormatDateTime","isBooleanColumn","formatter","FormattedReferenceColumnModel","formatReferenceColumn","isArray","multiLink","reference_link","SemaphoreColumnModel","createSemaphoreElement","semaphore","tooltip","createElement","textContent","outline","padding","borderRadius","zIndex","wordWrap","whiteSpace","borderTop","borderBottom","borderRight","appendChild","querySelector","DateTimeColumnModel","formatCurrencyUtil","formatCurrency","formattedOptionsValue","newItems","formattedValues","itemValue","selectedOption","formattedOptionValue","MapOptionColumnModel","formatMapOption","formattedLinkValue","AttachmentColumnModel","formattedAttachmentValue","downloadAttachmentFunction","download","attachmentId","simple","formatTimeValue","formatTimeWithoutAmOrPm","formatTime","formatDurationValue","showInDhm","minutesToDhm","withTranslation","FooterCalculatorEnum","GenericColumnModel","isNested","disableSort","disableFilter","footerValue","footerCalculator","footerFormatter","footerEditable","OptionGenericColumnModel","applyDefaults","specificBackendColumnFields","backendFields","dbFilterFieldPath","capitalizeFirstLetter","prepareFiltersModel","filterSortPage","specificBackendColumnFieldsMap","_filterSortPage$sort","genericFilter","sortColumnId","_filterSortPage$sort2","sorts","GenericSortModel","property","isAsc","additionalFilters","filterModel","GenericFilterModel","operation","_item$orFilters","orFilters","orFilter","RowWithoutMemo","columns","expand","collapse","onGroupClick","columnWidthMap","interactionManager","rowRef","toggleRowExpandCollapseCallback","hasChildren","SVGElement","groupId","columnsMemo","frozenRightColumns","togglerClassName","toggler_expanded","toggler_collapsed","cellsContent","newColumns","row_toggler","groupLevel","groupName","row_group","level","RowExpanderIcon","hasDiagram","diagram","DiagramIcon","itemCount","onPointerDownCallback","button","onMiddleClickCallback","_interactionManager$m","middleClick","onDoubleClickCallback","_interactionManager$d","doubleClick","row_wrapper","onPointerDown","onAuxClick","onDoubleClick","cells_wrapper","Row","Body","rowsData","handleRowClickCallback","_interactionManager$c","_interactionManager$c2","selectedRow","rowIndex","sortElementId","setSort","hasFilter","isFilterActive","onFilter","hover","setHover","arrowClassName","active_sort","mouseOverCallback","mouseOutCallback","onSortCallback","onFilterClickCallback","onMouseOut","inner_with_sort","inner_with_filter","emptySpaceColumnId","marginRight","marginBottom","FilterIcon","stroke","findFilter","_filter$orFilters","findAllFilters","_filter$orFilters2","AndOrEnum","additionalFilterOptions","And","Or","disabledReorder","additionalHeaderRow","frozenStartColumnIdsMemo","draggableColumnIdsMemo","frozenEndColumnIdsMemo","cellProps","renderCellsContent","col","renderAdditionalHeaderContent","group","columnIds","column_direction","reorderColumn","Frozen","_containerRef$current","_containerRef$current2","containerClientWidth","setContainerClientWidth","scrollLeft","setScrollLeft","leftColumnIds","rightColumnIds","leftIds","rightIds","leftFrozenPosition","rightFrozenPosition","rightPosition","updateFrozenCellsPositionCallback","innerCells","querySelectorAll","resizeCallback","_containerRef$current3","scrollCallback","_containerRef$current4","resizeObserver","ResizeObserver","contentRect","_resizeObserver","disconnect","PaginationWithoutMemo","compact","disabledPrev","disabledNext","firstPageCallback","lastPageCallback","nextPageCallback","prevPageCallback","currentPage","ceil","ArrowDoubleLeftNewIcon","ArrowLeftNewIcon","ArrowRightNewIcon","ArrowDoubleRightNewIcon","Pagination","defaultPaginationLimit","Line","setActive","resize","resizeComplete","resetWidth","isMouseMoved","setIsMouseMoved","mouseDownCallback","mouseMoveCallback","movementX","mouseUpCallback","resetWidthCallback","Resize","setColumnWidthMap","activeColumnId","setActiveColumnId","resizeCompleteCallback","_interactionManager$r","resizeColumn","resetColumnWidthCallback","_interactionManager$r2","linesContent","lines","formatFilterOperation","filterOperation","GenericFilterOperationEnum","EQUALS","LIKE","LIKE_STARTSWITH","LIKE_ENDSWITH","NOT_EQUALS","GREATER_THAN","GREATER_EQUAL_THAN","LESS_THAN","LESS_EQUAL_THAN","filterItemMemo","option","Date","FilterItems","getOrFiltersCallback","FilterItem","unshift","useGetOrFiltersCallback","ActiveFilter","onClearAll","filterOptions","BooleanFilter","onSave","setValues","selectedValue","currentFilter","submitCallback","newFilters","DateFilterModel","filterType1","filterValue1","filterType2","filterValue2","additionalFilter","filterTypeOptions","DateFilter","currentFilters","newFilter","formatServerDate","filteredTypeOptions","slice","NumberFilterModel","NumberFilter","convertValueToTicks","convertValueFromTicks","OptionsFilter","selectedValues","StringFilterModel","filterStringTypeOptions","filterFormattedReferenceTypeOptions","StringFilter","getUnformattedId","MapFilter","SemaphoreFilter","TimeFilterModel","TimeFilter","FilterElement","Filter","clearAllCallback","showActiveFilter","orFilterItem","getCellValue","cellValue","_column$footerEditabl","getCellValueCallback","Footer","footerRowsData","footerCellEdited","hasFooterInColumns","hasFooterRowsData","getColumnMaxInitialWidth","BaseTable","refetching","pagination","activeFilterColumn","setActiveFilterColumn","useColumnWidths","setContainerWidth","offsetWidth","calculateColumnWidthsCallback","maxColumnWidthMap","maxInitialWidth","innerCell","isBodyCell","paddingLeft","getComputedStyle","getPropertyValue","paddingRight","cellWidth","totalColumnWidth","total","extraSpace","affectedColumns","setFiltersCallback","_interactionManager$f","cancelFilterCallback","selectedColumn","customTextAreaFormatter","dummyElement","innerHTML","innerText","getMultiListDataByTableColumns","visibleColumns","hiddenColumns","elementsObject","tableColumn","available","ResetButtons","resetColumnsWidthCallback","resetAllColumnWidths","resetColumnsOrderCallback","resetColumnsFilterCallback","resetColumnsSortCallback","_interactionManager$s","icons","ResetWidthIcon","ResetOrderIcon","ResetFilterIcon","ResetSortIcon","titles","ConfigureView","isModalOpen","setIsModalOpen","currentMultiList","setCurrentMultiList","setLoading","openModalCallback","closeModalCallback","saveCallback","newTableColumns","getTableColumnsDataByMultiList","multiList","allTableColumns","tableColumnElement","newTableColumnElement","calculateSum","filteredData","calculated","arePrimitiveTypesEqual","first","second","arePrimitiveTypesNotEqual","like","filterValue","likeStartsWith","likeEndsWith","endsWith","greaterEqual","greater","lessEqual","less","areDatesEqual","areDatesNotEqual","dateGreaterEqual","fullYear","getFullYear","getMonth","dayOfTheMonth","getDate","filterFullYear","filterMonth","filterDayOfTheMonth","dateGreater","dateLessEqual","dateLess","doesRowSatisfy","filteredColumn","compareFunction","filterData","afterFilterData","sortData","sortColumn","sortedData","sortOptionByString","itemA","itemB","sortByNumber","sortByDate","getTime","SkeletonTable","setColumns","renderCells","colIndex","skeleton","Toolbar","addHandler","deleteHandler","isDeleteable","isCreateable","isViewConfigurable","exportFunction","exportTitle","exportFormFlags","renderExportComponent","isConfirmDeleteModalOpen","setIsConfirmDeleteModalOpen","openConfirmDeleteModal","closeConfirmDeleteModal","onDeleteConfirmed","exportContent","Export","exportAction","CrudTableWithoutSkeleton","initialRowsData","onAdd","hideToolbar","frozenRowsDataFilterSort","setFrozenRowsDataFilterSort","notFrozenRowsDataFilterSort","rowsDataFilterSort","convertedColumns","SUM","clonedColumn","cloneColumnModel","updateErrorsMapCallback","rowId","object","validateCellCallback","isGlobalError","cellEditedCallback","oldRowData","_column$isRequired","newRowsData","newRow","newFilteredSortedData","validateTableCallback","serverErrorsMap","addCallback","newRowData","deleteCallback","indexOfDeleted","findIndex","CrudTable","LocalTable","hasPagination","isNestedRowsData","rowsDataFiltered","rowsDataFilterSortPage","paginateData","nestedLimit","newCount","changeOffset","getAllExpandedChildren","parentItem","allChildren","findChildren","getAllExpandedGroupChildren","parent","groupDataByLevels","createGroup","level1Id","level1Name","level1Description","level1HasDiagram","level2Id","level2Name","level2Description","level2HasDiagram","processId","level3Name","level3Description","level3HasDiagram","level4Id","level4Name","processDescription","level1","level2","level3","hasFirstItem","level4Item","NestedTable","isWidgetData","groupByLevels","nestedRowsData","setNestedRowsData","updatedRows","getInitialRowsData","handleExpandRows","currentRows","targetLevel","rootItems","expandedRows","expandRowsToLevel","currentLevel","childRows","onExpandCallback","expandedItem","_expandedItem$childre","newLimit","changeNestedLimit","updatedRowsData","getExpandedRowsData","updatedItems","childrenToAdd","parentIndex","grandChild","onCollapseCallback","collapsedItem","_collapsedItem$childr","getCollapsedRowsData","expandedChildren","RemoteTable","fetchFunction","subscriptionTopic","hidePagination","mapResponse","setCount","setRowsData","fetchState","setFetchState","fetched","fetchDataCallback","newFiltersModel","subscription","subscribe","unsubscribe","returnValue","translation","shortName","fullName","iconUri","languageItems","langKey","TranslationKeyEnum","translations","loadedTranslations","BASE","PROJECTS","TICKETS","SCOPE","TESTING","TRAINING","TIME_TRAVEL","RISK","FINANCE","COMMUNICATION","SCHEDULE","SITE_CONFIGURATION","ACCOUNT","loadingInProgress","translationReducer","payload","routeId","TranslationsContext","TranslationsDispatchContext","exportedTranslationsState","TranslationsProvider","dispatch","useTranslations","useTranslationsDispatch","LOCALE","setLocale","localStorage","setItem","getLocale","getItem","getLanguageFromLocale","useLoadTranslation","languageCode","apiUrl","envSettings","translationsText","fetch","JSON","parse","console","useLoadTranslationEffect","loadedTranslation","isNotTranslated","translatedArgs","arg","translatedArg","replacePlaceholders","_path","_extends","n","t","r","apply","SvgArrowDown","svgRef","titleId","o","_objectWithoutPropertiesLoose","getOwnPropertySymbols","propertyIsEnumerable","xmlns","viewBox","d","ForwardRef","SvgArrowRight","SvgBell","xmlnsXlink","enableBackground","xmlSpace","_path2","SvgCalendar","SvgCheck","_g","SvgDelete","SvgEdit","SvgFile","clipRule","fillRule","_polygon","SvgFilter","strokeWidth","strokeLinecap","strokeLinejoin","points","SvgFolder","SvgInfo","SvgInfoSquared","SvgPlus","SvgThemeToggle","_rect","SvgTreeStructure","SvgWarning","SvgCommunication","SvgProject","_defs","SvgSchedule","cx","cy","x1","y2","SvgTesting","SvgTickets","SvgTimeTravel","SvgRisk","SvgAccount","SvgConfiguration","SvgCompanyInfo","SvgScope","SvgSettings","SvgFinance","SvgTraining","SvgMenuExpander","SvgCreateProject","SvgCreateUser","SvgCreatePartner","SvgHelp","SvgUserList","SvgHamburger","SvgClock","SvgArrowLeftNew","SvgArrowRightNew","SvgArrowDoubleLeftNew","SvgArrowDoubleRightNew","SvgDiagram","SvgLock","SvgAttachment","SvgLink","SvgResetWidth","SvgResetOrder","SvgResetFilter","SvgResetSort","getDefaultProjectAction","tenantId","getTenantId","userInfo","getUserInfo","DefaultProjectClient","get","setDefaultProjectAction","SetDefaultProjectRequest","userId","set","persistDefaultProjectAction","store","getState","setDefaultProjectFetchingAction","setDefaultProjectReduxAction","DefaultProjectResponse","getCompanyInfoAction","TenantClient","getCompany","updateCompanyInfoAction","companyInfo","updateCompany","persistCompanyInfoAction","setCompanyInfoFetchingAction","setCompanyInfoAction","CompanyResponseModel","getAllOrganizationalUnitsAction","levelNumber","OrganizationalUnitClient","getAll","createOrganizationalUnitAction","updateOrganizationalUnitsAction","update","deleteOrganizationalUnitAction","delete","reorderOrganizationalUnitsAction","modelOrders","updateOrders","persistOrganizationalUnitsAction","setFetchingAction","setAction","getChangeRequestStatusesAction","ChangeRequestStatusClient","updateChangeRequestStatusesAction","persistChangeRequestStatusesAction","getCommunicationStatusesAction","StatusReportStatusClient","updateCommunicationStatusesAction","persistCommunicationStatusesAction","getInvoiceStatusesAction","InvoiceStatusClient","updateInvoiceStatusesAction","persistInvoiceStatusesAction","getMeetingMinutesStatusesAction","MeetingStatusClient","updateMeetingMinutesStatusesAction","persistMeetingStatusesAction","getProjectStatusesAction","ProjectStatusClient","updateProjectStatusesAction","projectStatusesDelta","persistProjectStatusesAction","setProjectStatusesFetchingAction","setProjectStatusesAction","getReportStatusesAction","ReportStatusClient","updateReportStatusesAction","delta","persistReportStatusesAction","getRiskStatusesAction","RiskStatusClient","updateRiskStatusesAction","persistRiskStatusesAction","getTaskStatusesAction","TaskStatusClient","updateTaskStatusesAction","persistTaskStatusesAction","getTestCaseStatusesAction","TestStatusClient","updateTestCaseSStatusesAction","persistTestCaseStatusesAction","getTicketStatusesAction","TicketStatusClient","updateTicketStatusesAction","ticketStatusesDelta","persistTicketStatusesAction","setTicketStatusesFetchingAction","setTicketStatusesAction","getTimeAndTravelStatusesAction","TimeTravelStatusClient","updateTimeAndTravelStatusesAction","persistTimeAndTravelStatusesAction","getTrainingStatusesAction","TrainingStatusClient","updateTrainingStatusesAction","persistTrainingCaseStatusesAction","getUserStatusesAction","UserStatusClient","updateUserStatusesAction","userStatusesDelta","persistUserStatusesAction","getMeetingTypesAction","CommunicationConfigClient","getMeetingTypes","updateMeetingTypesAction","updateMeetingTypes","persistMeetingTypesAction","getCategoriesAction","FinanceConfigClient","getFinanceCategories","updateCategoriesAction","updateFinanceCategories","persistFinanceCategoriesAction","getRiskTypesAction","RiskConfigClient","getRiskTypes","updateRiskTypesAction","riskTypesDelta","updateRiskTypes","persistRiskTypesAction","setRiskTypesFetchingAction","setRiskTypesAction","getChangeRequestTypesAction","ChangeRequestTypeClient","updateChangeRequestTypesAction","persistChangeRequestTypesAction","getTicketAssignedGroupsAction","TicketConfigClient","getAssignedGroups","updateTicketAssignedGroupsAction","ticketAssignedGroupsDelta","updateAssignedGroups","persistTicketAssignedGroupsAction","setTicketAssignedGroupsFetchingAction","setTicketAssignedGroupsAction","getAllTicketCategoriesAction","getAllCategories","createTicketCategoryAction","createCategory","updateTicketCategoryAction","updateCategory","deleteTicketCategoryAction","deleteCategory","reorderTicketCategoryAction","updateTicketCategoryOrders","persistTicketCategoryAction","setTicketCategoryFetchingAction","setTicketCategoryAction","getTicketClosingIdsAction","getTicketClosingIds","updateTicketClosingIdsAction","ticketClosingIdsDelta","updateTicketClosingIds","persistTicketClosingIdAction","getTicketEnvironmentsAction","getTicketEnvironments","updateTicketEnvironmentsAction","ticketEnvironmentsDelta","updateTicketEnvironments","persistTicketEnvironmentsAction","setTicketEnvironmentsFetchingAction","setTicketEnvironmentsAction","getTicketImpactsAction","getImpacts","persistTicketImpactsAction","setTicketImpactsFetchingAction","setTicketImpactsAction","getTicketUrgenciesAction","getUrgencies","persistTicketUrgencyAction","getTicketPriorityDescsAction","getPriorityDescs","updateTicketPriorityDescsAction","priorityDescription","updatePriorityDescs","getTicketPriorityAction","getPriorites","persistTicketPriorityAction","getTicketTypesAction","getTicketTypes","updateTicketTypesAction","ticketTypesDelta","updateTicketTypes","persistTicketTypesAction","setTicketTypesFetchingAction","setTicketTypesAction","getExpenseTypesAction","TimeTravelConfigClient","getExpenseTypes","updateExpenseTypesAction","expenseTypesDelta","updateExpenseTypes","persistExpenseTypesAction","setExpenseTypesFetchingAction","setExpenseTypesActionAction","getExpenseGeneralConfigAction","getTravelConfig","updateExpenseGeneralConfigAction","updateRequest","updateTravelConfig","persistExpenseGeneralConfigurationAction","setExpenseGeneralConfigurationFetchingAction","setExpenseGeneralConfigurationAction","TimeTravelConfigResponse","getNonProjectCategoriesAction","getNonProjectCategories","updateNonProjectCategoriesAction","nonProjectCategoriesDelta","updateNonProjectCategories","persistNonProjectCategoriesAction","setNonProjectCategoriesFetchingAction","setNonProjectCategoriesActionAction","getTimesheetsGeneralConfigAction","getTimesheetsConfig","updateTimesheetsGeneralConfigAction","updateTimesheetsConfig","persistTimesheetseneralConfigurationAction","setTimesheetsGeneralConfigurationFetchingAction","setTimesheetsGeneralConfigurationAction","TimesheetsConfigResponse","getTravelCostTypesAction","getTravelCostTypes","updateTravelCostTypesAction","travelCostTypesDelta","updateTravelCostTypes","persistTravelCostTypesAction","setTravelCostTypesFetchingAction","setTravelCostTypesActionAction","getVacationGeneralConfigAction","getVacationConfig","updateVacationGeneralConfigAction","updateVacationConfig","persistVacationGeneralConfigurationAction","setVacationGeneralConfigurationFetchingAction","setVacationGeneralConfigurationAction","getProjectCategoriesAction","ProjectConfigClient","getProjectCategories","updateProjectCategoriesAction","projectCategoriesDelta","updateProjectCategories","persistProjectCategoriesAction","setProjectCategoryFetching","setProjectCategoriesAction","getProjectTypesAction","getProjectTypes","updateProjectTypesAction","projectTypesDelta","updateProjectTypes","persistProjectTypesAction","setProjectTypesFetchingAction","setProjectTypesAction","getBusinessPartnersAction","BusinessPartnerClient","getBusinessPartnersGenericAction","getAllGenericFilter","getBusinessPartnerAction","BusinessPartnerResponseModelSimpleResponseModel","Promise","resolve","createBusinessPartnerAction","partner","insert","updateBusinessPartnerAction","exportDataModel","export","persistBusinessPartnersAction","setBusinessPartnersFetchingAction","setBusinessPartnersAction","getAllUsersAction","UserClient","getAllUsersGenericAction","getUserAction","createUserAction","updateUserAction","changeMyPasswordAction","updatePassword","updateUserActivityAction","updateActivity","exportUsersAction","persistUsersAction","setUsersFetchingAction","setUsersAction","getAllTeamMembersAction","roleType","ProjectTeamMemberClient","getTeamMemberAction","createTeamMemberAction","updateTeamMemberAction","deleteTeamMemberAction","exportProjectTeamMembersByProjectAction","persistTeamMembersAction","_state$persistedTeamM","setTeamMembersFetchingAction","setTeamMembersAction","getProjectRolesAction","ProjectRoleClient","getAllByProjectId","updateProjectRolesAction","persistProjectRolesAction","_state$persistedProje","setProjectRolesFetchingAction","setProjectRolesAction","getProjectTeamsAction","ProjectTeamClient","updateProjectTeamsAction","persistProjectTeamsAction","setProjectTeamsFetchingAction","setProjectTeamsAction","getTimesheetRequiredFieldsAction","TimesheetRequiredFieldsClient","updateTimesheetRequiredFieldsAction","persistTimesheetRequiredFieldsAction","_state$persistedTimes","setTimesheetRequiredFieldsFetchingAction","setTimesheetRequiredFieldsAction","getScheduleConfigurationAction","ScheduleConfigurationClient","updateScheduleConfigurationAction","persistScheduleConfigurationAction","_state$persistedSched","setScheduleConfigurationFetchingAction","setScheduleConfigurationAction","getDepartmentsAction","ScopeDepartmentClient","updateDepartmentsAction","persistDepartmentsAction","setDepartmentsFetchingAction","setDepartmentsAction","getStepTypesAction","ScopeStepTypeClient","updateStepTypesAction","persistStepTypesAction","setStepTypesFetchingAction","setStepTypesAction","getUserRolesAction","ScopeUserRoleClient","updateUserRolesAction","persistUserRolesAction","setUserRolesFetchingAction","setUserRolesAction","getTravelRequestAction","TravelRequestClient","getAllMyTravelRequestsGenericAction","years","months","getAllMyGeneric","getAllMyTravelRequestsGenericTotalsAction","getAllMyGenericTotals","getAllMyTravelRequestsAction","getAllMy","getAllTravelRequestsGenericAction","getAllGeneric","getAllTravelRequestsGenericTotalsAction","getAllGenericTotals","createTravelRequestAction","updateTravelRequestAction","deleteTravelRequestAction","releaseMyTravelRequestAction","releaseMy","approvalTravelRequestAction","approval","exportTravelRequestsAction","exportAll","persistTravelRequestsAction","setTravelRequestsFetchingAction","setTravelRequestsAction","getCountriesAction","CountryClient","getCountries","persistCountriesAction","setCountriesFetchingAction","setCountriesAction","CrudEnum","CrudSubRoutesEnum","useTableInteractionManager","defaultSortColumnId","defaultSortIsAsc","defaultNestedLimit","tableConfig","useSelector","setSelectedRow","setNestedLimit","defaultSort","path","Read","setColumnsOrderAction","newColumnsWidth","setColumnsWidthAction","newSort","getSort","setSortAction","setFiltersAction","newOffset","getCurrenciesAction","CurrencyClient","getCurrencies","persistCurrenciesAction","setCurrenciesFetchingAction","setCurrenciesAction","getDatePatternsAction","DateTimePatternClient","getDatePatterns","getTimePatternsAction","getTimePatterns","persistDatePatternsAction","setDatePatternFetchingAction","setDatePatternAction","persistTimePatternsAction","setTimePatternFetchingAction","setTimePatternAction","componentStack","eventId","resetError","showButtons","listen","goBackCallback","goBack","goHomeCallback","fallback","ErrorBoundaryFallback","fallbackProps","fallbackCallback","FC","beforeCaptureMemo","scope","setTag","ErrorReportingErrorBoundary","beforeCapture","exportTypeOptions","defaultExportTypeOptions","forceApplyFilters","forceApplySort","forceUseOnlyVisible","forceExportOnlyCurrentPage","hideApplyFilters","hideApplySort","hideUseOnlyVisible","hideExportOnlyCurrentPage","createExportModelFunction","loadingExport","setLoadingExport","prepareExportModel","usePrepareExportModel","createExportFunctionMemo","exportCallback","exportModel","tryCatchExportFileByAction","ExportToFile","onExport","ExportModel","applyFilters","applySort","useOnlyVisible","exportOnlyCurrentPage","exportType","ExportDataFileTypeEnum","CSV","save","cancel","PDF","XLSX","exportTypeOptionsMemo","cancelCallback","ExportForm","getProjectsAction","ProjectClient","getProjectsGenericAction","getProjectsForOrgUnitManagerUsersAction","getAllForOrgUnitManagerUsers","getProjectsForOrgUnitManagerAction","getAllForOrgUnitManager","getProjectAction","createProjectAction","project","updateProjectAction","deleteProjectAction","updateProjectDataAction","updateProjectData","getProjectInformationAction","getProjectInformation","updateProjectInformationAction","projectInformations","updateProjectInformation","archiveProjectAction","ProjectIdRequest","achive","restoreProjectAction","restore","isUserProjectManagerAction","isUserPM","persistProjectsAction","setProjectsFetchingAction","setProjectsAction","persistOrganizationalUnitManagerProjectsAction","setOrganizationalManagerProjectsFetchingAction","setOrganizationalUnitProjectsAction","PROJECTS_FETCHING","PROJECTS_SET","ORGANIZATIONAL_UNIT_MANAGER_PROJECTS_FETCHING","ORGANIZATIONAL_UNIT_MANAGER_PROJECTS_SET","findActiveModule","moduleEnum","v","getI18nKeyFromModuleActivityEnum","ModuleActivityEnum","Project","Ticket","Time","Risk","Communication","Schedule","Scope","Testing","Training","Finance","Reporting","ProjectActiveModuleCheckbox","implementedModules","ProjectActiveModules","isFieldDisabled","ProjectActiveModulesField","validateCallback","rowHasErrorsCallback","rowErrors","activeModulesHasErrorsCallback","activeModulesErrors","ActiveModule","moduleId","UserRolePermissionEnum","pmOrSpmPermission","PmOrSpm","pmOrSpmOrOumPermission","OrganizationalUnitManager","isTeamMemberPermittedOnProject","teamMemberPermission","_project$permissions","_project$permissions2","_project$permissions3","_project$permissions4","_project$permissions5","_project$permissions6","_project$permissions7","_project$permissions8","_project$permissions9","_project$permissions10","_project$permissions11","_project$permissions12","_project$permissions13","_project$permissions14","permissions","ticketPermission","timeTravelPermission","scopePermission","testingPermission","trainingPermission","schedulePermission","riskPermission","getAdditionalProjects","isTimeAndTravelProjectDashboard","isProjectDashboard","specificProjectsFilter","roleId","TokenTypeEnum","SiteAdmin","getIsUserManagerAtAnyOrganizationalUnit","projects","fetchProjectsForTimeAndTravelProjectDashboard","getFilteredProjects","userRolePermission","showCompleted","projectsFilteredByModule","module","activeModules","projectsFilteredByModuleAndStatus","filterProjectsByStatuses","statuses","isStatusBySemantic","statusId","getStatuses","filteredProjects","filterProjectsByUserRolesOrPermissions","isTeamMemberPermitted","isUserRolePermitted","isUserPmorSubstitutePm","isOrganizationalUnitManager","ProjectStatusEnum","Released","Completed","useProjects","additionalProjects","setAdditionalProjects","fetchData","mergedProjects","additionalProject","filteredProjectsByOrgUnits","filterProjectsBySelectedOrganizationalUnits","organizationalUnitId","loadingProjects","useProjectsAndCategories","categories","loadingCategories","isGuest","useCategories","projectsOrCategories","EntityPrefixEnum","PROJECT","isProjectConnected","projectOrCategoryId","isReadOnly","category","loadingProjectsAndCategories","useProjectsForTableFilterCallback","useProjectsAndCategoriesForTableFilterCallback","ProjectOrCategoryMultiSelect","ids","selectedIds","projectOrCategory","ProjectOrCategorySelect","hasError","projectOrCategoryOption","ProjectSelect","ProjectMultiSelectField","ProjectSelectField","initialProjectId","projectsWithInitial","ProjectOrCategoryParamName","IsProjectConnectedParamName","WithProjectOrCategoryPicker","useMargin","routematch","useRouteMatch","urlIdString","urlIsProjectConnected","useParams","urlId","initialProjectOrCategory","selectedProjectOrCategory","setSelectedProjectOrCategory","WrapperComponent","selectedProjectStatusId","_persistedProject$ite","componentPropsMemo","disabledEdit","ProjectParamName","WithProjectPicker","urlProjectIdString","urlProjectId","selectedProjectId","setSelectedProjectId","selectedProject","WithProjectsOrCategoriesPicker","_searchParams$get","_searchParams$get2","useLocation","searchParams","URLSearchParams","urlProjectIds","urlCategoryIds","initialProjectsOrCategories","categoryId","selectedProjectsOrCategories","setSelectedProjectsOrCategories","firstLoading","setFirstLoading","selectedProjectsOrCategoriesMemo","allSelectedProjects","allSelectedCategories","selectedProjectIds","selectedCategoryIds","searchQuery","nonProjectCategories","projectsChangedTopic","Subject","publishProjectsChanged","next","defaultVisibleColumns","defaultDefaultProjectVisibleColumns","ProjectsTable","renderTableButtons","defaultProjectId","onSelect","tableColumns","getOrganizationalUnit","useOrganizationalUnitCallback","getStatusStyle","useGetStatusStyleCallback","organizationalUnits","fontWeight","firstName","lastName","useTableColumnsMemo","usePrepareTableColumns","memoFetchFunction","memoExportFunction","tableButtonsContent","projectReducer","organizationalUnitManagerProjectReducer","ROUTES_SET","setCurrentRoutesAction","routesReducer","currentRoutes","getItemBySemantic","semanticEnum","semantics","getNameBySemantic","StatusResponse","isReadonly","isInitial","nextStates","BaseResponseModel","getInitialStatus","getNextStatuses","nextStatuses","nextStateId","nextStatus","getStatusBySemantic","isNextStatus","previousStatusId","statusesMap","previousStatus","nextState","useIdToNameCallback","persistedModel","useProjectIsActiveNameCallback","useTenantIsActiveCallback","useStatusCallback","usePartnerCallback","useUsernameCallback","user","username","useUserFullNameCallback","useStatusColorCallback","colorToHex","useFormattedCurrencyValueWithArgsCallback","showCurrencySymbol","currencyId","idName","symbol","useFormattedCurrencyValueCallback","useFormattedCurrencyValueByIdCallback","useActiveTeamMembersMemo","userIds","getUserId","_persistedModel$proje","member","_persistedTeamMember$","activeTeamMemberUsers","tm","filteredActiveTeamMemberUsers","removeUndefinedItemsFromArray","useFormattedProjectIdNameCallback","dbExportFieldPath","usePrepareExportColumns","useGetDateTimePatternString","exportColumns","exportColumn","createPropertiesForExportModel","columnsForExport","_column$displayNames","_column$decoraterProp","displayName","displayNames","decoraterProperties","ExportDataPropertyModel","prepareExportColumns","properties","ExportDataModel","fileType","timeZone","filtersModel","useCreatePropertiesForExportModelForProjectReport","clonedColumns","visibleColumnsOrder","toVisibleHiddenColumns","applyColumnsWidth","fetchTenant","getTenant","persistTenantAction","setTenantFetchingAction","setTenantAction","TenantResponseModel","IS_TENANT_INITIALIZED","TENANT_ID","SUBDOMAIN","getIsTenantInitialized","setIsTenantInitialized","isTenantInitialized","tenantStringId","setTenantId","getSubdomainFromUrl","hostName","hostname","siteDomain","myTestDomain","getSubdomainFromStorage","setSubdomainToStorage","subdomain","THEME_SET","setThemeAction","THEME","getThemeLocalStorage","setThemeLocalStorage","ThemeEnum","initialTheme","Dark","themeReducer","successColor","errorColor","warningColor","colorsPallete","colorsPalleteFire","is","reuse","stepOptions","lightness","hue","passOptions","TOKEN","setToken","getToken","getUserTableViewConfigAction","viewType","UserTableViewConfigClient","updateUserTableViewConfigAction","InsertUpdateUserTableViewConfigRequest","getTableConfigAction","updateTableConfigAction","persistTableConfigAction","setTableConfigFetchingAction","setTablesConfigAction","installedIntegrations","getIntegrationsToSetup","defaultIntegrations","userIntegrations","integrations","integration","isDefaultInstance","arrayify","finalIntegrations","integrationsByName","currentInstance","existingInstance","filterDuplicates","debugIndex","arr","callback","debugInstance","afterSetupIntegrations","client","afterAllSetup","setupIntegration","integrationIndex","DEBUG_BUILD","logger","log","setupOnce","addGlobalEventProcessor","getCurrentHub","setup","on","preprocessEvent","hint","addEventProcessor","processEvent","processor","convertIntegrationFnToClass","fn","DEFAULT_IGNORE_ERRORS","DEFAULT_IGNORE_TRANSACTIONS","INTEGRATION_NAME","inboundFiltersIntegration","_hint","clientOptions","getOptions","mergedOptions","internalOptions","allowUrls","denyUrls","ignoreErrors","disableErrorDefaults","ignoreTransactions","disableTransactionDefaults","ignoreInternal","_mergeOptions","exception","_isSentryError","warn","getEventDescription","possibleMessages","lastException","_getPossibleEventMessages","stringMatchesSomePattern","_isIgnoredError","transaction","_isIgnoredTransaction","_getEventFilterUrl","_isDeniedUrl","_isAllowedUrl","_shouldDropEvent","frames","stacktrace","frame","filename","_getLastValidUrl","oO","originalFunctionToString","SETUP_CLIENTS","WeakMap","functionToStringIntegration","_functionToStringIntegration","Function","originalFunction","getOriginalFunction","getClient","_len","_key","initAndBind","clientClass","debug","enable","consoleSandbox","getCurrentScope","initialScope","getStackTop","setClient","setCurrentClient","init","setupIntegrations","initializeClient","DSN_REGEX","dsnToString","dsn","withPassword","host","pass","port","protocol","publicKey","dsnFromComponents","components","makeDsn","exec","lastPath","pop","projectMatch","dsnFromString","component","isValidProtocol","validateDsn","getBaseApiEndpoint","getEnvelopeEndpointWithUrlEncodedAuth","tunnelOrOptions","tunnel","sdkInfo","_metadata","sdk","_getIngestEndpoint","urlEncode","sentry_key","sentry_version","sentry_client","version","_encodedAuth","WINDOW","getGlobalObject","supportsFetch","Headers","Request","Response","isNativeFetch","func","GLOBAL_OBJ","lastHref","addHistoryInstrumentationHandler","maybeInstrument","instrumentHistory","chromeVar","chrome","isChromePackagedApp","app","runtime","hasHistoryApi","pushState","replaceState","supportsHistory","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","_len2","_key2","handlerData","triggerHandlers","_oO","createEnvelope","addItemToEnvelope","envelope","newItem","forEachEnvelopeItem","envelopeItems","envelopeItem","encodeUTF8","textEncoder","TextEncoder","encode","serializeEnvelope","envHeaders","stringify","append","itemHeaders","Uint8Array","stringifiedPayload","normalize","buffers","totalLength","buf","merged","buffer","concatBuffers","createAttachmentEnvelopeItem","dropUndefinedKeys","content_type","contentType","attachment_type","attachmentType","ITEM_TYPE_TO_DATA_CATEGORY_MAP","session","sessions","client_report","user_report","profile","replay_event","replay_recording","check_in","feedback","span","statsd","envelopeItemTypeToDataCategory","getSdkMetadataForEnvelopeHeader","metadataOrEvent","SentryError","logLevel","setPrototypeOf","createEventEnvelope","metadata","eventType","packages","enhanceEventWithSdkInfo","envelopeHeaders","dynamicSamplingContext","sdkProcessingMetadata","event_id","sent_at","toISOString","createEventEnvelopeHeaders","createMetricEnvelope","metricBucketItems","out","tagEntries","tags","maybeTags","unit","metric","metricType","timestamp","serializeMetricBuckets","createMetricEnvelopeItem","ALREADY_SEEN_ERROR","BaseClient","_integrations","_integrationsInitialized","_numProcessing","_outcomes","_hooks","_eventProcessors","_dsn","_transport","transport","recordDroppedEvent","transportOptions","captureException","checkOrSetAlreadyCaught","_process","eventFromException","then","_captureEvent","captureMessage","eventMessage","isParameterizedString","promisedEvent","isPrimitive","eventFromMessage","captureEvent","originalException","capturedSpanScope","captureSession","release","sendSession","updateSession","getDsn","getSdkMetadata","getTransport","flush","timeout","metricsAggregator","_isClientDoneProcessing","clientFinished","transportFlushed","resolvedSyncPromise","enabled","getEventProcessors","eventProcessor","forceInitialize","_isEnabled","_setupIntegrations","getIntegrationById","integrationId","getIntegrationByName","integrationName","getIntegration","addIntegration","isAlreadyInstalled","sendEvent","emit","env","promise","_sendEnvelope","sendResponse","toJSON","createSessionEnvelope","reason","eventOrCount","sendClientReports","captureAggregateMetrics","metricsEnvelope","hook","_updateSessionFromEvent","crashed","errored","exceptions","ex","mechanism","handled","sessionNonTerminal","SyncPromise","ticked","interval","setInterval","clearInterval","_prepareEvent","isolationScope","getIsolationScope","prepareEvent","evt","propagationContext","getPropagationContext","contexts","traceId","trace_id","spanId","parentSpanId","dsc","span_id","parent_span_id","getDynamicSamplingContextFromClient","_processEvent","finalEvent","sentryError","sampleRate","isTransaction","isTransactionEvent","isError","isErrorEvent","beforeSendLabel","random","rejectedSyncPromise","dataCategory","capturedSpanIsolationScope","prepared","__sentry__","beforeSend","beforeSendTransaction","spans","spanCountBefore","spanCountBeforeProcessing","processBeforeSend","beforeSendResult","invalidValueError","isThenable","isPlainObject","_validateBeforeSendResult","processedEvent","spanCount","getSession","droppedSpanCount","transactionInfo","transaction_info","send","_clearOutcomes","outcomes","quantity","applySdkMetadata","names","SDK_VERSION","__SENTRY_DEBUG__","exceptionFromError","stackParser","parseStackFrames","extractMessage","eventFromError","stack","popSize","framesToPop","reactMinifiedRegexp","getPopSize","eventFromUnknownInput","syntheticException","attachStacktrace","isUnhandledRejection","isDOMError","isDOMException","domException","eventFromString","addExceptionTypeValue","isEvent","normalizeDepth","getNonErrorObjectExceptionValue","extra","__serialized__","normalizeToSize","eventFromPlainObject","addExceptionMechanism","synthetic","__sentry_template_string__","__sentry_template_values__","logentry","extractExceptionKeysForMessage","captureType","getPrototypeOf","getObjectClassName","ignoreOnError","shouldIgnoreOnError","before","__sentry_wrapped__","sentryWrapped","wrappedArguments","withScope","markFunctionWrapped","addNonEnumerableProperty","getOwnPropertyDescriptor","configurable","defineProperty","BrowserClient","SENTRY_SDK_SOURCE","getSDKSource","visibilityState","_flushOutcomes","captureUserFeedback","createUserFeedbackEnvelopeItem","createUserFeedbackEnvelope","discarded_events","dateTimestampInSeconds","instrumentConsole","CONSOLE_LEVELS","originalConsoleMethod","originalConsoleMethods","debounceTimerID","lastCapturedEventType","lastCapturedEventTargetId","instrumentDOM","triggerDOMHandler","globalDOMEventHandler","makeDOMEventHandler","proto","originalAddEventListener","listener","handlers","__sentry_instrumentation_handlers__","handlerForType","refCount","originalRemoveEventListener","globalListener","getEventTarget","tagName","isContentEditable","shouldSkipDOMEvent","_sentryId","uuid4","isSimilarToLastCapturedEvent","global","SENTRY_XHR_DATA_KEY","addXhrInstrumentationHandler","instrumentXHR","XMLHttpRequest","xhrproto","originalOpen","startTimestamp","now","method","isString","e2","parseUrl","request_headers","__sentry_own_request__","onreadystatechangeHandler","xhrInfo","readyState","status_code","endTimestamp","xhr","onreadystatechange","original","readyStateArgs","_len3","setRequestHeaderArgs","_key3","originalSend","sentryXhrData","_len4","_key4","addFetchInstrumentationHandler","instrumentFetch","EdgeRuntime","doc","sandbox","head","contentWindow","removeChild","err","supportsNativeFetch","originalFetch","fetchArgs","getUrlFromResource","hasProp","parseFetchArgs","finishedHandlerData","erroredHandlerData","prop","resource","validSeverityLevels","severityLevelFromString","query","fragment","hash","relative","stripUrlQueryAndFragment","urlPath","getNumberOfUrlSegments","MAX_ALLOWED_STRING_LENGTH","breadcrumbsIntegration","dom","sentry","addConsoleInstrumentationHandler","breadcrumb","safeJoin","addBreadcrumb","_getConsoleBreadcrumbHandler","componentName","keyAttrs","serializeAttribute","maxStringLength","_isEvent","htmlTreeAsString","getComponentName","_getDomBreadcrumbHandler","_getXhrBreadcrumbHandler","_getFetchBreadcrumbHandler","parsedLoc","parsedFrom","parsedTo","_getHistoryBreadcrumbHandler","_getSentryBreadcrumbHandler","dedupeIntegration","_dedupeIntegration","previousEvent","currentEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_isSameMessageEvent","previousException","_getExceptionFromEvent","currentException","_isSameExceptionEvent","currentFrames","_getFramesFromEvent","previousFrames","frameA","frameB","lineno","colno","function","currentFingerprint","fingerprint","previousFingerprint","globalHandlersIntegration","onerror","onunhandledrejection","stackTraceLimit","addGlobalErrorInstrumentationHandler","msg","line","ERROR_TYPES_RE","groups","_enhanceEventWithInitialFrame","_eventFromIncompleteOnError","_installGlobalOnErrorHandler","globalHandlerLog","addGlobalUnhandledRejectionInstrumentationHandler","detail","_getUnhandledRejectionError","_installGlobalOnUnhandledRejectionHandler","ev","ev0","ev0s","ev0sf","getLocationHref","in_app","httpContextIntegration","_httpContextIntegration","request","referrer","userAgent","Referer","applyAggregateErrorsToEvent","exceptionFromErrorImplementation","parser","maxValueLimit","isInstanceOf","maxValueLength","aggregateExceptionsFromError","truncate","prevExceptions","exceptionId","newExceptions","applyExceptionGroupFieldsForParentException","newException","newExceptionId","applyExceptionGroupFieldsForChildException","childError","is_exception_group","exception_id","parent_id","linkedErrorsIntegration","DEFAULT_EVENT_TARGET","browserApiErrorsIntegration","eventTarget","requestAnimationFrame","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","_wrapEventTarget","originalCallback","getFunctionName","wrapOptions","globalObject","eventName","handleEvent","wrappedEventHandler","originalEventHandler","UNKNOWN_FUNCTION","createFrame","chromeRegex","chromeEvalRegex","geckoREgex","geckoEvalRegex","winjsRegex","defaultStackLineParsers","subMatch","extractSafariExtensionDetails","defaultStackParser","createStackParser","isSafariExtension","isSafariWebExtension","makePromiseBuffer","task","$","taskProducer","drain","reject","counter","capturedSetTimeout","updateRateLimits","limits","statusCode","updatedRateLimits","rateLimitHeader","retryAfterHeader","trim","retryAfter","namespaces","headerDelay","delay","all","headerDate","parseRetryAfterHeader","createTransport","makeRequest","bufferSize","rateLimits","filteredEnvelopeItems","disabledUntil","isRateLimited","getEventForEnvelopeItem","filteredEnvelope","recordEnvelopeLoss","requestTask","__sentry__baseTransport__","cachedFetchImpl","makeFetchTransport","nativeFetch","fetchImpl","getNativeFetchImplementation","pendingBodySize","pendingCount","requestSize","requestOptions","referrerPolicy","keepalive","fetchOptions","makeXHRTransport","getResponseHeader","setRequestHeader","__SENTRY_RELEASE__","SENTRY_RELEASE","autoSessionTracking","stackParserFromStackParserOptions","startSession","ignoreDuration","startSessionTracking","showReportDialog","hub","getUser","lastEventId","script","crossOrigin","src","dsnLike","dialogOptions","endpoint","encodedOptions","encodeURIComponent","email","getReportDialogEndpoint","onLoad","reportDialogClosedMessageHandler","injectionPoint","INITIAL_STATE","__init","_openFallbackReportDialog","showDialog","_lastEventId","componentDidCatch","onError","major","isAtLeastReact17","errorBoundaryError","cause","seenErrors","recurse","setCause","captureContext","react","onMount","onUnmount","resetErrorBoundary","onReset","bindReporter","reportAllChanges","forceReport","getNavigationEntry","__WEB_VITALS_POLYFILL__","performance","getEntriesByType","getNavigationEntryFromPerformanceTiming","timing","navigation","navigationEntry","entryType","startTime","navigationStart","getActivationStart","navEntry","activationStart","initMetric","navigationType","prerendering","rating","opts","PerformanceObserver","supportedEntryTypes","po","getEntries","buffered","onHidden","cb","once","onHiddenOrPageHide","firstHiddenTime","getVisibilityWatcher","Infinity","timeStamp","interactionCountEstimate","minKnownInteractionId","maxKnownInteractionId","updateEstimate","interactionId","initInteractionCountPolyfill","durationThreshold","getInteractionCountForNavigation","interactionCount","longestInteractionList","longestInteractionMap","processEntry","entry","minLongestInteraction","existingInteraction","duration","latency","interaction","onINP","onReport","report","handleEntries","prevEntry","inp","estimateP98LongestInteraction","candidateInteractionIndex","takeRecords","reportedMetricIDs","whenReady","instrumented","_previousCls","_previousFid","_previousLcp","_previousTtfb","_previousInp","addPerformanceInstrumentationHandler","instrumentPerformanceObserver","getCleanupCallback","typeHandlers","instrumentCls","sessionValue","sessionEntries","hadRecentInput","firstSessionEntry","lastSessionEntry","stopListening","onCLS","instrumentFid","visibilityWatcher","handleEntry","processingStart","onFID","instrumentLcp","lastEntry","capture","onLCP","instrumentTtfb","onTTFB","responseStart","instrumentInp","addMetricObserver","instrumentFn","previousValue","stopOnCallback","createSpanItem","isMeasurementValue","isFinite","_startChild","ctx","startChild","msToSec","getBrowserPerformanceAPI","_lcpEntry","_clsEntry","_performanceCursor","_measurements","startTrackingWebVitals","browserPerformanceTimeOrigin","mark","fidCallback","_ref5","timeOrigin","_trackFID","clsCallback","addClsInstrumentationHandler","lcpCallback","addLcpInstrumentationHandler","ttfbCallback","_ref6","_trackTtfb","startTrackingINP","interactionIdtoRouteNameMapping","interactionsSampleRate","inpCallback","interactionIdToRouteNameMapping","_ref7","INP_ENTRY_MAP","interactionType","routeName","parentContext","activeTransaction","replayId","userDisplay","ip_address","profileId","getProfileId","Span","op","attributes","environment","profile_id","replay_id","exclusiveTime","measurements","transactionContext","hasTracingEnabled","tracesSampler","parentSampled","sampled","tracesSampleRate","isValidSampleRate","getSampleRate","createSpanEnvelope","_trackINP","pointerdown","pointerup","mousedown","mouseup","touchstart","touchend","mouseover","mouseout","mouseenter","mouseleave","pointerover","pointerout","pointerenter","pointerleave","dragstart","dragend","drag","dragenter","dragleave","dragover","drop","keydown","keyup","keypress","addPerformanceEntries","performanceEntries","start_timestamp","transactionStartTime","spanToJSON","_addPerformanceNavigationTiming","responseEnd","origin","requestStart","_addRequest","_addNavigationSpans","measureStartTimestamp","measureEndTimestamp","_addMeasureSpans","firstHidden","shouldRecord","resourceUrl","initiatorType","parsedUrl","setResourceEntrySizeData","renderBlockingStatus","_addResourceSpans","connection","effectiveType","rtt","deviceMemory","hardwareConcurrency","_trackNavigator","_addTtfbRequestTimeToMeasurements","oldValue","measurementTimestamp","normalizedValue","fidMark","cls","measurementName","getActiveTransaction","setMeasurement","sources","node","_tagMetricInfo","eventEnd","dataKey","entryVal","instrumentFetchRequest","shouldCreateSpan","shouldAttachHeaders","spanOrigin","shouldCreateSpanResult","__span","setHttpStatus","contentLength","contentLengthNum","setAttribute","setStatus","endSpan","fullUrl","URL","getFullURL","startInactiveSpan","onlyIfParent","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","spanContext","requestSpan","getSpan","sentryTraceHeader","spanToTraceHeader","generateSentryTraceHeader","sentryBaggageHeader","dynamicSamplingContextToSentryBaggageHeader","getDynamicSamplingContextFromSpan","newHeaders","BAGGAGE_HEADER_NAME","existingBaggageHeader","baggage","newBaggageHeaders","addTracingHeadersToFetchRequest","DEFAULT_TRACE_PROPAGATION_TARGETS","defaultRequestInstrumentationOptions","traceFetch","traceXHR","enableHTTPTimings","tracingOrigins","tracePropagationTargets","instrumentOutgoingRequests","shouldCreateSpanForRequest","shouldAttachHeadersWithTargets","createdSpan","setAttributes","addHTTPTimings","__sentry_xhr_span_id__","setHeaderOnXhr","xhrCallback","cleanup","nextHopProtocol","isPerformanceResourceTiming","spanData","resourceTiming","_name","extractNetworkProtocol","timingSpanData","getAbsoluteTime","redirectStart","fetchStart","domainLookupStart","domainLookupEnd","connectStart","secureConnectionStart","connectEnd","resourceTimingEntryToSpanData","DEFAULT_BROWSER_TRACING_OPTIONS","TRACING_DEFAULTS","markBackgroundTransactions","routingInstrumentation","customStartTransaction","startTransactionOnPageLoad","startTransactionOnLocationChange","startingUrl","enableLongTask","enableInp","_experiments","getMetaContent","metaName","metaTag","getDomElement","getAttribute","getSource","sourceFromAttributes","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","sourceFromData","sourceFromMetadata","_optionalChain","ops","lastAccessLHS","shouldDisableAutoInstrumentation","_2","_3","_4","_5","_6","instrumenter","Apollo","__initStatic","useNestjs","_useNest","loadDependency","_module","loadModule","pkg","GraphQLFactory","orig","resolversExplorerService","instrumentResolvers","ApolloServerBase","config","resolvers","schema","modules","resolverGroupName","resolverName","getScope","rv","res","_7","wrapResolver","extractPathForTransaction","req","customRoute","baseUrl","originalUrl","Express","_router","router","_methods","methods","wrapMiddlewareArgs","patchMiddleware","instrumentMiddlewares","appOrRouter","isApp","lazyrouter","routerProto","originalProcessParams","process_params","layer","called","done","_reconstructedRoute","layerRoutePath","isRegex","numExtraSegments","lrp","_14","_15","isRegExp","process","versions","extractOriginalRoute","regexp","routesArray","accNumSegments","currentRoute","getLayerRoutePathString","getLayerRoutePathInfo","partialRoute","_hasParameters","reconstructedRoute","layerPath","originalUrlSplit","_16","_17","_18","_19","tempCounter","currentOffset","_20","_21","_22","_23","_24","_25","_26","_27","_28","segment","_29","_30","_31","preventDuplicateSegments","finalPartialRoute","__sentry_transaction","finalRoute","updateName","instrumentRouter","arity","_8","_9","_10","_11","_12","_13","orderedKeys","execResult","flags","indices","paramIndices","resultPath","indexShift","startOffset","endOffset","substr1","replacement","substr2","GraphQL","parentSpan","setSpan","OPERATIONS","OPERATION_SIGNATURES","bulkWrite","countDocuments","createIndex","createIndexes","deleteMany","deleteOne","distinct","dropIndex","findOne","findOneAndDelete","findOneAndReplace","findOneAndUpdate","indexExists","insertMany","insertOne","mapReduce","rename","replaceOne","updateMany","updateOne","Mongo","_operations","operations","_describeOperations","describeOperations","_useMongoose","useMongoose","moduleName","_instrumentOperations","Collection","collection","_patchOperation","getSpanContext","_getSpanContextFromOperationArguments","lastArg","sendDefaultPii","maybePromiseOrCursor","maybeCursor","dbName","collectionName","signature","shouldDescribe","Mysql","mySqlConfig","connect","Proxy","wrappingTarget","thisArg","finishSpan","sql","Postgres","_usePgNative","usePgNative","Client","native","database","Prisma","possibleClient","_sentryInstrumented","clientData","engineConfig","_engineConfig","activeProvider","clientVersion","$use","startSpan","BrowserTracing","_hasSetTracePropagationTargets","addTracingExtensions","_collectWebVitals","_interactionIdToRouteNameMapping","enableInteractions","_latestRoute","_getCurrentHub","instrumentRouting","clientOptionsTracePropagationTargets","_createRouteTransaction","onStartRouteTransaction","statusType","_registerInteractionListener","_registerInpInteractionListener","beforeNavigate","idleTimeout","finalTimeout","heartbeatInterval","isPageloadTransaction","expandedContext","sentryTrace","propagationContextFromHeaders","trimEnd","modifiedContext","finalContext","idleTransaction","startIdleTransaction","sendAutoFinishSignal","registerBeforeFinishCallback","inflightInteractionTransaction","registerInteractionTransaction","currentTransaction","setFinishReason","replay","getReplayId","currentScope","isPerformanceEventTiming","minInteractionId","Integrations","__SENTRY_TRACING__","addExtensionMethods$1","productionConfig","Sentry","stage","_beforeSend","subdomainFromStorage","SentryConfig","init$1","reportError","reportMessage","transformOptions","originalOptions","getBaseUrl","defaultUrl","ActualBudgetRowClient","http","jsonParseReviver","url_","transformedOptions_","_response","processGetAll","_headers","_responseText","result200","resultData200","BudgetRowResponseItemsResponseModel","fromJS","result403","resultData403","throwException","result404","resultData404","result400","resultData400","options_","processUpdate","getHeaders","processGetHeaders","BudgetDateValueHeaderResponseItemsResponseModel","processExportAll","contentDisposition","fileNameMatch","decodeURIComponent","blob","AlertsClient","AlertResponseItemsResponseModel","seenAll","processSeenAll","deleteAll","processDeleteAll","alertId","processDelete","BudgetConfigurationClient","processGet","BudgetConfigurationResponseSimpleResponseModel","BudgetRowClient","processRelease","BudgetStatusClient","BudgetStatusResponseItemsResponseModel","BusinessPartnerResponseModelItemsResponseModel","processInsert","processGetAllGenericFilter","processExport","CalendarClient","countryId","CalendarResponseSimpleResponseModel","getDifferenceInSpecificMeasurement","processGetDifferenceInSpecificMeasurement","DoubleSimpleResponseModel","ChangeRequestClient","getSimple","processGetSimple","IdNameResponseSimpleResponseModel","projectIds","ChangeRequestResponseItemsResponseModel","idFormatPrefix","processSearch","IdNameResponseItemsResponseModel","getAllGenericFilterCounts","processGetAllGenericFilterCounts","ChangeRequestCountsResponseSimpleResponseModel","ChangeRequestResponseSimpleResponseModel","processCreate","crAnalysis","processCrAnalysis","crApproval","processCrApproval","crRealization","processCrRealization","crAcceptance","processCrAcceptance","processDownload","removeAttachment","changeRequestId","processRemoveAttachment","ChangeRequestStatusResponseItemsResponseModel","TenantIsActiveResponseItemsResponseModel","CommunicationCalendarClient","nonProjectCategoryIds","types","processGetAllMy","CommunicationCalendarResponseItemsResponseModel","getAllMeetings","processGetAllMeetings","getAllVacations","processGetAllVacations","updateTaskDate","processUpdateTaskDate","getTaskGeneralConfig","processGetTaskGeneralConfig","TaskGeneralConfigResponseSimpleResponseModel","updateTaskGeneralConfig","processUpdateTaskGeneralConfig","getMeetingGeneralConfig","processGetMeetingGeneralConfig","MeetingGeneralConfigResponseSimpleResponseModel","updateMeetingGeneralConfig","processUpdateMeetingGeneralConfig","getStatusReportGeneralConfig","processGetStatusReportGeneralConfig","StatusReportGeneralConfigResponseSimpleResponseModel","updateStatusReportGeneralConfig","processUpdateStatusReportGeneralConfig","processGetMeetingTypes","processUpdateMeetingTypes","CommunicationDashboardClient","CommunicationDashboardResponseSimpleResponseModel","processGetCountries","IdNameSymbolResponseItemsResponseModel","processGetCurrencies","processGetDatePatterns","DateTimePatternResponseItemsResponseModel","processGetTimePatterns","DefaultProjectResponseSimpleResponseModel","processSet","ExpenseClient","ExpenseResponseItemsResponseModel","processGetAllMyGenericTotals","ExpenseTotalsResponseSimpleResponseModel","processGetAllGeneric","processGetAllGenericTotals","ExpenseResponseSimpleResponseModel","processReleaseMy","processApproval","clone","processClone","expenseItemId","processDownloadAttachment","processGetFinanceCategories","FinanceCategoryResponseItemsResponseModel","processUpdateFinanceCategories","getFinanceGeneralConfig","processGetFinanceGeneralConfig","FinanceGeneralConfigResponseSimpleResponseModel","updateFinanceGeneralConfig","processUpdateFinanceGeneralConfig","FinanceDashboardClient","FinanceDashboardResponseSimpleResponseModel","ForgotClient","forgotPasswordStart","domain","processForgotPasswordStart","forgotPasswordFinish","processForgotPasswordFinish","forgetEmail","processForgetEmail","IndustryClient","getIndustries","processGetIndustries","InvoiceClient","InvoiceResponseItemsResponseModel","InvoiceCountsResponseSimpleResponseModel","InvoiceResponseSimpleResponseModel","InvoiceStatusResponseItemsResponseModel","LoginClient","login","processLogin","TokenResponseModel","refreshToken","processRefreshToken","getRefreshToken","processGetRefreshToken","RefreshTokenResponseModel","refreshTokenWithToken","processRefreshTokenWithToken","MeetingClient","notEqualStatusId","MeetingResponseItemsResponseModel","getAllSimple","processGetAllSimple","SimpleIdNameModelItemsResponseModel","MeetingResponseSimpleResponseModel","isRelease","resetStatus","processResetStatus","setIsPrivate","isPrivate","processSetIsPrivate","meetingId","MeetingCommentClient","MeetingCommentResponseSimpleResponseModel","MeetingDecisionClient","MeetingDecisionResponseItemsResponseModel","MeetingStatusResponseItemsResponseModel","OrganizationalUnitResponseSimpleResponseModel","OrganizationalUnitResponseItemsResponseModel","processUpdateOrders","OrganizationalUnitManagerClient","OrganizationalUnitManagerResponseSimpleResponseModel","isResourceManager","OrganizationalUnitManagerResponseItemsResponseModel","isUserManager","processIsUserManager","BooleanSimpleResponseModel","PaymentInfoClient","createSetupIntent","processCreateSetupIntent","StringSimpleResponseModel","getPaymentMethods","processGetPaymentMethods","PaymentMethodResponseItemsResponseModel","getDefaultPaymentSourceId","processGetDefaultPaymentSourceId","setDefaultPaymentSourceId","paymentMethodId","processSetDefaultPaymentSourceId","removePaymentMethod","processRemovePaymentMethod","PricelistClient","PricelistRowResponseItemsResponseModel","PricingPlanClient","PricingPlanResponseSimpleResponseModel","getFull","processGetFull","PricingPlanFullResponseSimpleResponseModel","processCancel","reactivate","processReactivate","checkForExpired","processCheckForExpired","checkStatusOfInvoices","processCheckStatusOfInvoices","checkInvoicesForPayment","processCheckInvoicesForPayment","PricingPlanInvoiceClient","PricingPlanInvoiceResponseItemsResponseModel","getFileContent","processGetFileContent","ProjectResponseItemsResponseModel","ProjectResponseSimpleResponseModel","processGetAllForOrgUnitManager","processGetAllForOrgUnitManagerUsers","ProjectGetAllResponseItemsResponseModel","releas","processReleas","processAchive","processRestore","processUpdateProjectData","processGetProjectInformation","processUpdateProjectInformation","processIsUserPM","ProjectAccomplishmentClient","reportId","ProjectAccomplishmentResponseItemsResponseModel","ProjectAccomplishmentResponseSimpleResponseModel","ProjectActionClient","ProjectActionResponseItemsResponseModel","ProjectActionResponseSimpleResponseModel","getAllGenericFilterExample","processGetAllGenericFilterExample","ProjectBusinessClient","ProjectBusinessResponseItemsResponseModel","ProjectBusinessResponseSimpleResponseModel","ProjectChangeRequestClient","isGenerated","ProjectChangeRequestResponseItemsResponseModel","ProjectChangeRequestResponseSimpleResponseModel","copyFromScope","ProjectChangeRequestCountsResponseSimpleResponseModel","processCopyFromScope","processGetProjectCategories","processUpdateProjectCategories","processGetProjectTypes","processUpdateProjectTypes","ProjectDashboardClient","ProjectDashboardResponseSimpleResponseModel","ProjectDeliverableClient","ProjectDeliverableResponseItemsResponseModel","ProjectDeliverableResponseSimpleResponseModel","copyFromSchedule","processCopyFromSchedule","ProjectFinanceClient","ProjectFinanceResponseItemsResponseModel","ProjectFinanceResponseSimpleResponseModel","copyFromFinance","ProjectFinanceCountsResponseSimpleResponseModel","processCopyFromFinance","ProjectIssueClient","ProjectIssueResponseItemsResponseModel","ProjectIssueResponseSimpleResponseModel","ProjectMilestoneClient","ProjectMilestoneResponseItemsResponseModel","ProjectMilestoneResponseSimpleResponseModel","updateGenerated","processUpdateGenerated","ProjectQualityClient","ProjectQualityResponseItemsResponseModel","ProjectQualityResponseSimpleResponseModel","ProjectReportClient","ProjectReportResponseItemsResponseModel","ProjectReportResponseSimpleResponseModel","ProjectRiskClient","ProjectRiskResponseItemsResponseModel","ProjectRiskResponseSimpleResponseModel","copyFromRisk","ProjectRiskCountsResponseSimpleResponseModel","processCopyFromRisk","processGetAllByProjectId","ProjectIsActiveResponseItemsResponseModel","ProjectSLAClient","ProjectSLAResponseSimpleResponseModel","ProjectStatusResponseItemsResponseModel","ProjectSubcontractorClient","ProjectSubcontractorResponseItemsResponseModel","ProjectSubcontractorResponseSimpleResponseModel","ProjectTeamMemberResponseSimpleResponseModel","ProjectTeamMemberResponseItemsResponseModel","getAllTeamMemberUsers","processGetAllTeamMemberUsers","ProjectTeamMemberUserResponseItemsResponseModel","getAllByProjectGenericFiltering","processGetAllByProjectGenericFiltering","getAllGenericFiltering","processGetAllGenericFiltering","ProjectTeamMemberPermissionClient","PermissionCollectionResponseItemsResponseModel","ProjectTeamMemberValidityPeriodClient","ProjectTeamMemberValidityPeriodResponseItemsResponseModel","RegisterClient","registerTenant","processRegisterTenant","RegistrationConfirmClient","registerConfirm","processRegisterConfirm","TenantRegistrationConfirmStatusResponseModel","result500","resultData500","registerConfirmStatus","processRegisterConfirmStatus","ReminderClient","ReminderResponseItemsResponseModel","ReminderResponseSimpleResponseModel","ReportStatusResponseItemsResponseModel","RiskClient","RiskResponseItemsResponseModel","RiskCountsResponseSimpleResponseModel","RiskResponseSimpleResponseModel","processGetRiskTypes","processUpdateRiskTypes","RiskDashboardClient","RiskDashboardResponseSimpleResponseModel","RiskStatusResponseItemsResponseModel","ScheduleClient","ScheduleResponseItemsResponseModel","SimpleScheduleResponseItemsResponseModel","ScheduleResponseSimpleResponseModel","patch","processPatch","bulkPatch","processBulkPatch","updateWbs","processUpdateWbs","ScheduleConfigurationResponseSimpleResponseModel","ScheduleDashboardClient","ScheduleDashboardResponseSimpleResponseModel","getGantt","processGetGantt","ScheduleGanttDashboardResponseSimpleResponseModel","getUtilization","processGetUtilization","ScheduleUtilizationRowDashboardResponseItemsResponseModel","getProjectUtilization","processGetProjectUtilization","SchedulePredecessorClient","SchedulePredecessorResponseItemsResponseModel","SchedulePredecessorResponseSimpleResponseModel","ScopeDashboardClient","getForProcesses","processGetForProcesses","ScopeProcessesDashboardResponseSimpleResponseModel","getForChangeRequests","processGetForChangeRequests","ScopeChangeRequestsDashboardResponseSimpleResponseModel","ProjectIsActiveOrderResponseItemsResponseModel","ScopeItemLevelClient","ScopeItemLevelResponseSimpleResponseModel","includeChildren","ScopeItemLevelResponseItemsResponseModel","getAllReport","processGetAllReport","ScopeItemLevelReportResponseItemsResponseModel","getDiagram","processGetDiagram","updateDiagram","processUpdateDiagram","StatusReportClient","StatusReportResponseItemsResponseModel","StatusReportResponseSimpleResponseModel","isAlign","processAlign","StatusReportStatusResponseItemsResponseModel","SurveyClient","SurveyResponseSimpleResponseModel","surveyStatus","SurveyResponseItemsResponseModel","getAllReduced","processGetAllReduced","SurveyReducedResponseItemsResponseModel","surveyId","MySurveyResponseItemsResponseModel","getMy","processGetMy","MySurveyResponseSimpleResponseModel","submitMy","processSubmitMy","SurveyAnswerClient","SurveyAnswerResponseItemsResponseModel","SurveyParticipantClient","SurveyParticipantResponseItemsResponseModel","updateSurveyParticipants","processUpdateSurveyParticipants","releaseAndSendToSurveyParticipants","processReleaseAndSendToSurveyParticipants","SurveyQuestionClient","SurveyQuestionResponseSimpleResponseModel","SurveyQuestionResponseItemsResponseModel","MySurveyQuestionResponseItemsResponseModel","TaskClient","TaskResponseSimpleResponseModel","partialRequest","TaskResponseItemsResponseModel","taskId","getHistoryFromTo","processGetHistoryFromTo","TaskHistoryResponseItemsResponseModel","getTimesheets","processGetTimesheets","TaskTimesheetResponseItemsResponseModel","updateTimesheets","processUpdateTimesheets","followTask","follow","processFollowTask","TaskCommentClient","TaskCommentResponseItemsResponseModel","TaskCommentResponseSimpleResponseModel","TaskStatusResponseItemsResponseModel","TeamSizeClient","getTeamSizes","processGetTeamSizes","TenantResponseModelSimpleResponseModel","processGetTenant","tenantExists","processTenantExists","processGetCompany","CompanyResponseModelSimpleResponseModel","processUpdateCompany","TestCycleClient","TenantIsActiveResponseSimpleResponseModel","TestDashboardClient","cycleId","TestDashboardResponseSimpleResponseModel","TestPlanClient","testCycleId","TestPlanResponseSimpleResponseModel","includeLevel4","TestPlanRowResponseItemsResponseModel","setAllIsActive","processSetAllIsActive","MyTestPlanResponseItemsResponseModel","showTestStatus","ReportTestPlanResponseItemsResponseModel","updateLevel3","processUpdateLevel3","updateLevel4","processUpdateLevel4","exportTestPlans","processExportTestPlans","exportMyTestPlans","processExportMyTestPlans","exportTestStatus","processExportTestStatus","TestPlanHistoryResponseItemsResponseModel","testPlanId","TestStatusResponseItemsResponseModel","TicketClient","TicketResponseSimpleResponseModel","partalRequest","TicketResponseGetAllItemsResponseModel","SimpleProjectIdNameModelItemsResponseModel","TicketResponseItemsResponseModel","uploadAttachment","ticketId","processUploadAttachment","AttachmentResponseItemsResponseModel","followTicket","processFollowTicket","TicketHistoryResponseItemsResponseModel","TicketCommentClient","TicketCommnetResponseItemsResponseModel","TicketCommnetResponseSimpleResponseModel","ticketCommentId","processGetTicketTypes","processUpdateTicketTypes","processGetTicketEnvironments","processUpdateTicketEnvironments","processGetTicketClosingIds","processUpdateTicketClosingIds","processGetAssignedGroups","TicketAssignedGroupsResponseItemsResponseModel","processUpdateAssignedGroups","getCategory","processGetCategory","TicketCategoryResponseSimpleResponseModel","processDeleteCategory","processGetAllCategories","TicketCategoryResponseItemsResponseModel","processCreateCategory","processUpdateCategory","processUpdateTicketCategoryOrders","processGetPriorityDescs","TicketPriorityDescriptionResponseSimpleResponseModel","processUpdatePriorityDescs","processGetUrgencies","UrgencyResponseItemsResponseModel","processGetImpacts","ImpactResponseItemsResponseModel","processGetPriorites","PriorityResponseItemsResponseModel","TicketDashboardClient","TicketDashboardResponseSimpleResponseModel","TicketStatusResponseItemsResponseModel","TimesheetClient","TimesheetResponseItemsResponseModel","getAllMyRecoredStatusesForPeriod","processGetAllMyRecoredStatusesForPeriod","TimesheetRecordedStatusResponseItemsResponseModel","getAllMerged","processGetAllMerged","TimesheetMergedResponseItemsResponseModel","getForPeriod","processGetForPeriod","TimesheetResponseSimpleResponseModel","exportMy","nonProjectCategoryId","processExportMy","exportMerged","processExportMerged","exportForPeriod","processExportForPeriod","importExcel","processImportExcel","getImportedExcels","processGetImportedExcels","TimesheetImportedFileResponseItemsResponseModel","deleteImportedExcel","processDeleteImportedExcel","TimesheetRequiredFieldsResponseSimpleResponseModel","processGetExpenseTypes","CostExpenseTypeResponseItemsResponseModel","processUpdateExpenseTypes","processGetNonProjectCategories","NonProjectCategoryResponseItemsResponseModel","processUpdateNonProjectCategories","processGetTimesheetsConfig","TimesheetsConfigResponseSimpleResponseModel","processUpdateTimesheetsConfig","processGetTravelCostTypes","processUpdateTravelCostTypes","processGetTravelConfig","TimeTravelConfigResponseSimpleResponseModel","processUpdateTravelConfig","processGetVacationConfig","processUpdateVacationConfig","TimeTravelDashboardClient","MyTimeTravelDashboardResponseSimpleResponseModel","ProjectTimeTravelDashboardResponseSimpleResponseModel","getTimesheetsGenericFiltering","partnerIds","dateRange_From","dateRange_To","processGetTimesheetsGenericFiltering","TimesheetDashboardResponseItemsResponseModel","getTimesheetsTotals","processGetTimesheetsTotals","TotalTimesheetDashboardResponseSimpleResponseModel","exportTime","processExportTime","exportTravelExpense","exportGrouped","processExportTravelExpense","exportVacationRequest","processExportVacationRequest","TimeTravelStatusResponseItemsResponseModel","TrainingCycleClient","TrainingDashboardClient","TrainingDashboardResponseSimpleResponseModel","get2","processGet2","SurveyDashboardResponseSimpleResponseModel","exportAverageRatings","projectTeamIds","projectRoleIds","processExportAverageRatings","exportQuestionGroupAverageRatings","processExportQuestionGroupAverageRatings","exportTextAnswers","processExportTextAnswers","TrainingPlanClient","trainingCycleId","TrainingPlanRowResponseItemsResponseModel","MyTrainingPlanResponseItemsResponseModel","updateMyStatus","processUpdateMyStatus","TrainingPlanRowResponseSimpleResponseModel","exportTrainingPlans","processExportTrainingPlans","exportMyTrainingPlans","processExportMyTrainingPlans","TrainingStatusResponseItemsResponseModel","TravelExpenseClient","TravelExpenseResponseItemsResponseModel","TravelExpenseTotalsResponseSimpleResponseModel","TravelExpenseResponseSimpleResponseModel","travelExpenseItemId","processGetAllMyGeneric","TravelRequestResponseItemsResponseModel","TravelRequestTotalsResponseSimpleResponseModel","TravelRequestResponseSimpleResponseModel","UserModelSimpleResponseModel","UserModelItemsResponseModel","updateProfile","processUpdateProfile","getMyProfile","processGetMyProfile","updateLanguage","processUpdateLanguage","updatePicture","processUpdatePicture","processUpdatePassword","processUpdateActivity","checkUserExists","processCheckUserExists","CheckUserExistsReponseModelSimpleResponseModel","getAllSiteAdmins","processGetAllSiteAdmins","setUserAsSiteAdmin","processSetUserAsSiteAdmin","setSiteAdminAsCompanyUser","processSetSiteAdminAsCompanyUser","getActiveUsersForPeriod","processGetActiveUsersForPeriod","getCurrentActiveUsers","processGetCurrentActiveUsers","getActiveTeamMembersForPeriod","processGetActiveTeamMembersForPeriod","SimpleUserIdProjectIdPairItemsResponseModel","UserAlertConfigurationClient","UserAlertConfigurationResponseItemsResponseModel","addUpdate","processAddUpdate","UserStatusResponseItemsResponseModel","UserTableViewConfigResponseItemsResponseModel","UserTableViewConfigResponseSimpleResponseModel","VacationRequestClient","VacationRequestResponseItemsResponseModel","VacationRequestStatusFullResponseItemsResponseModel","getVacationRequestStatus","processGetVacationRequestStatus","VacationRequestStatusResponseSimpleResponseModel","VacationRequestResponseSimpleResponseModel","vacationRequestStatusId","_data","ActivityPeriodRequest","ActualBudgetResponse","income","expense","profit","AddUpdateUserAlertConfigurationsRequest","addedItems","AddUserAlertConfigurationRequest","UpdateUserAlertConfigurationRequest","sendEmail","entityIds","entity","trigger","AlertEntitiesEnum","AlertResponse","initiatorUserId","entityId","additionalData","seen","MessageModel","AlertTriggersEnum","ApprovalTimesheetRequest","approve","rejectionText","ApprovalTimeTravelDescriptiveRequest","AttachmentResponse","accessType","BoolNewOld","BudgetConfigurationResponse","planFrom","planTo","includeRiskInBudget","includePlannedInvoicesInBudget","includeApprovedChangeRequestsInBudget","includeCompletedChangeRequests","includeApprovedTimesheetsInActual","includeApprovedGuestTimesheetsInActual","includeApprovedTravelExpensesInActual","includeIssuedReceivedAndPayedInvoicesInActual","actualsTimesheetsPerUser","actualsTravelExpensesPerUser","actualsInvoicesPerPartner","BudgetDateValueHeaderResponse","BudgetDateValueRequest","BudgetDateValueResponse","BudgetRowDeltaRequest","InsertBudgetRowRequest","UpdateBudgetRowRequest","DeleteTenantIndetifyRequest","BudgetRowResponse","financeCategoryId","versionId","partnerId","incomeExpense","customField","isChangeable","isIncomeExpenseChangeable","budgetDateValues","BudgetStatusResponse","BudgetVsActualDashboardResponse","budgetIncome","actualBudgetIncome","differenceIncome","budgetExpense","actualBudgetExpense","differenceExpense","budgetProfit","budgetProfitPercent","actualBudgetProfit","actualBudgetProfitPercent","differenceProfit","budgetVsActualProjectRows","budgetVsActualCategoryRows","budgetVsActualCategoryAndProjectRows","BudgetVsActualFullRowDashboardResponse","budgetIncomeValue","actualBudgetIncomeValue","percentageOfBudgetIncome","budgetExpenseValue","actualBudgetExpenseValue","percentageOfBudgetExpense","budgetProfitValue","actualBudgetProfitValue","percentageOfBudgetProfit","BudgetVsActualPartnerRowDashboardResponse","budgetValue","actualBudgetValue","difference","percentageOfBudget","BudgetVsActualRowDashboardResponse","BusinessPartnerResponseModel","city","address","contactPerson","phone","regNo","vatNo","iban","swift","CalendarResponse","workWeekFrom","workWeekTo","workTimeFrom","workTimeTo","holidays","HolidayResponse","ChangePasswordRequestModel","oldPassword","newPassword","ChangeRequestAcceptanceRequest","acceptedOn","comment","ChangeRequestActivityResponse","expectedDeliveryOn","effortInHours","cost","ChangeRequestAnalysisRequest","approvalUserId","estimatedByUserId","estimatedOn","completionOn","analysisDescription","assumptions","regressionRelevant","dependencyDescription","activities","InsertChangeRequestActivityRequestUpdateChangeRequestActivityRequestInt32DeltaModel","ChangeRequestApprovalRequest","approvalActionOn","reasonForRejection","realizationUserId","ChangeRequestApproveEnum","ChangeRequestCountsResponse","totalEstimatedCostSum","totalEstimatedEffortSum","totalRealizationCostSum","totalRealizationEffortSum","ChangeRequestPriorityEnum","ChangeRequestRealizationRequest","acceptanceUserId","linkToEvidence","scopeItemLevelIdsToAdd","scopeItemLevelIdsToRemove","ChangeRequestResponse","initiatedBy","requestedOn","typeId","goLiveCritical","impactId","urgencyId","expectedCompletionDate","reasonOfChange","expectedBenefit","requestedByUserId","analysisUserId","approvedOrRejectedByUserId","acceptedByUserId","sendEmailInitial","sendEmailAnalysis","sendEmailApproval","sendEmailRealization","estimatedActivities","realizationActivities","problemReportAttachments","analysisAttachments","realizationAttachments","scopeItemLevelIds","ticketIds","ChangeRequestStatusEnum","ChangeRequestStatusResponse","CheckUserExistsReponseModel","emailExists","usernameExists","CloneSurveyRequest","copyFromId","CommunicationCalendarResponse","dueDate","CommunicationDashboardFilterRequest","dateRange","taskStatusIds","taskIsPrivate","DateRangeRequest","CommunicationDashboardResponse","totalNumberOfTasks","openTasks","closedTasks","overdueTasks","tasksPerStatus","overdueTasksPerAssignedUser","tasksPerAssignedUserAndStatusCounts","CompanyRequestModel","companyName","postalCode","webSite","regNumber","taxVATNumber","bankName","bankAccountNumber","isPrivatePerson","invoiceContactPerson","invoicePhone","invoiceEmail","logoInHeader","logoInPDF","CopyFromProjectRequest","CopyFromTestCycleRequest","CopyFromTrainingCycleRequest","CostExpenseTypeDeltaRequest","InsertCostExpenseTypeRequest","UpdateCostExpenseTypeRequest","CostExpenseTypeResponse","mandatoryAttachments","DateTimeNewOld","DateTimePatternResponse","pattern","DeleteMeetingTopicRequest","DeleteProjectConfigRequest","DeleteSurveyProposedAnswerRequest","EntityTypeEnum","ExpenseItemResponse","expenseTypeId","amountProjectCurrency","receiptCurrencyId","amountReceiptCurrency","ExpenseResponse","customText1","customText2","approvedOrRejectedOn","amount","expenseItems","ExpenseTotalsResponse","totalAmounts","ExportDataDecoraterPropertyModel","formatMap","timeZoneOffsetInMunutes","ExportForPeriodTimesheetsRequest","ExportProjectReportDataModel","propertiesPerTablePerArea","FinanceCategoryResponse","FinanceDashboardFilterRequest","pmUserIds","projectTypeIds","projectCategoryIds","projectStatusIds","financeCategoryIds","FinanceDashboardResponse","budgetVsActual","partnersInvoices","projectActualBudget","timesheets","travelExpenses","PartnersInvoicesDashboardResponse","ProjectActualBudgetDashboardResponse","FinanceTmesheetsDashboardResponse","FinanceTravelExpensesDashboardResponse","FinanceGeneralConfigResponse","planingInterval","FinancePlaningIntervalEnum","hoursPerProject","budgetVsActualTimesheets","projectHoursPerPeriod","ProjectHoursRowDashboardResponse","travelExpensesPerCostType","travelExpensesPerProject","expensesPerCostType","expensesPerProject","FloatOldNew","ForgotPasswordFinishRequestModel","password","passwordConfirmation","secondValue","GetProjectReportRequest","GetVacationsCalendarRequest","onlyCompanyUsers","reccuringEntry","IdNameResponse","IdNameSymbolResponse","ImpactEnum","ImpactResponse","IncomeExpenseEnum","IncomeExpenseProfitDashboardResponse","IncomingOutgoingDashboardResponse","incoming","outgoing","IncomingOutgoingOverdueDashboardResponse","totalIncomingPlanned","totalIncomingActual","overdue1DayIncoming","overdue30DaysIncoming","overdue60DaysIncoming","overdue90DaysIncoming","totalOutgoingPlanned","totalOutgoingActual","overdue1DayOutgoing","overdue30DaysOutgoing","overdue60DaysOutgoing","overdue90DaysOutgoing","InnerTestPlanResponse","processStepId","processStepName","stepExpectedResults","stepDocumentsCreated","stepComment","stepRejectionComment","stepStatusId","stepTesterUserId","InnerTestRowPlanResponse","complexForScopeItemLevel4Id","scopeDepartmentId","scopeStepTypeId","InsertChangeRequestActivityRequest","order","UpdateChangeRequestActivityRequest","InsertChangeRequestRequest","ticketIdsToAdd","isInitiate","InsertExpenseItemRequest","InsertExpenseItemRequestUpdateExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel","UpdateExpenseItemRequest","InsertExpenseRequest","newExpenseItems","InsertHolidayRequest","InsertHolidayRequestUpdateHolidayRequestInt32DeltaModel","UpdateHolidayRequest","InsertInvoiceItemRequest","taxAmount","localCurrencyAmount","localCurrencyTaxAmount","InsertInvoiceItemRequestUpdateInvoiceItemRequestDeleteTenantIndetifyRequestDeltaModel","UpdateInvoiceItemRequest","InsertInvoiceRequest","invoiceNumber","invoiceType","issueDate","due","overdueDays","excludeFromBudget","localCurrencyId","invoiceItemsDelta","InsertMeetingCommentRequest","meetingTopicId","meetingTopicType","InsertMeetingRequest","subject","starts","ends","agenda","additionallParticipants","meetingTypeId","projectTeamId","participantUserIds","topicsDelta","InsertMeetingTopicRequestUpdateMeetingTopicRequestDeleteMeetingTopicRequestDeltaModel","InsertMeetingTopicRequest","UpdateMeetingTopicRequest","InsertNonProjectCategoryRequest","billable","InsertOrganizationalUnitRequest","InsertOrUpdateCalendarRequest","InsertProjectConfigOrderRequest","InsertProjectReportRequest","InsertProjectRequest","pmId","InsertProjectTeamMemberRequest","projectRoleId","validUntil","InsertProjectTeamMemberValidityPeriodRequest","teamMemberId","salesRate","costRate","InsertReminderRequest","isRepeat","repeatInterval","repeatOnMonday","repeatOnTuesday","repeatOnWednesday","repeatOnThursday","repeatOnFriday","repeatOnSaturday","repeatOnSunday","recipientUserIds","InsertRiskRequest","consequneces","effects","responsibleUserId","grossImpact","probability","mitigation","mitigationType","mitigationCost","grossImpactAfterMitigation","probabilityAfterMitigation","probabilityDescriptive","impactDescriptive","InsertSchedulePredecessorRequest","predecessorId","descendantId","lag","InsertScheduleRequest","wbs","finish","percentOfCompletion","achievedDate","customText3","customText4","customText5","customText6","customText7","customText8","customText9","customText10","projectRoleResponsibleId","insertedResponsibleUserIds","workloadForResponsibleUsers","addAsTaskPerResponsibleUser","projectRoleAccountableId","insertedAccountableUserIds","projectRoleConsultedId","insertedConsultedUserIds","projectRoleInformedId","insertedInformedUserIds","markAsMilestone","markAsDeliverable","markTaskForQualityGate","InsertScopeItemLevelRequest","processVariant","relatedScopeItemLevelId","regressionDependecies","stressTestRelevant","environmentId","inputDocument","outputDocument","scopeUserRoleId","isComplex","complexForScopeItemId","insertedChangeRequestIds","InsertStatusReportRequest","reportDate","notifyResponsibleUser","openIssues","keyRisks","nextSteps","overallStatus","overallStatusAndKeyAchievements","InsertStatusRequest","InsertSurveyParticipantAnswerRequest","answer","proposedAnswerId","InsertSurveyProposedAnswerRequest","isCorrect","InsertSurveyQuestionRequest","questionGroup","question","surveyType","answerRequired","scoreQuestion","proposedAnswersDelta","SurveyProposedAnswerDeltaRequest","InsertSurveyRequest","InsertTaskCommentRequest","InsertTaskRequest","assignedToUserId","parentTaskId","riskId","scopeItemLevelId","scheduleId","priority","estimatedEffort","InsertTaskTimesheetRequest","effort","estimatedTime","InsertTenantIsActiveRequest","InsertTestStatusRequest","InsertTicketAssignedGroupRequest","emails","InsertTicketCategoryRequest","InsertTicketCommnetRequest","taskUserId","taskDate","taskStatusId","InsertTicketRequest","reportedBy","reportedOn","categoryLevel1Id","categoryLevel2Id","categoryLevel3Id","ticketNumberExt","effortUnit","assignedGroupId","expectedResolutionDate","parentTicketId","changeRequestIdsDelta","testPlanIdsDelta","timesheetsDelta","Int32Int32Int32DeltaModel","InsertTicketTimesheetRequestUpdateTicketTimesheetRequestInt32DeltaModel","InsertTicketTimesheetRequest","UpdateTicketTimesheetRequest","InsertTimesheetRequest","InsertTravelExpenseItemRequest","costTypeId","InsertTravelExpenseItemRequestUpdateTravelExpenseItemRequestDeleteTenantIndetifyRequestDeltaModel","UpdateTravelExpenseItemRequest","InsertTravelExpenseRequest","travelRequestId","destinationCountryId","destinationCity","estimatedCosts","advancePayment","freeMeals","freeAccommodation","travelBy","distance","startKilemeter","endKilometer","leaveDepartureDate","leaveDepartureTime","leaveBorderCrossDate","leaveBorderCrossTime","leaveArrivalDate","leaveArrivalTime","returnDepartureDate","returnDepartureTime","returnBorderCrossDate","returnBorderCrossTime","returnArrivalDate","returnArrivalTime","newTravelExpenses","InsertTravelRequestRequest","departure","return","InsertUserRequestModel","birthDate","officePhone","mobilePhone","department","InsertVacationRequestRequest","note","IntNewOld","InvoiceCountsResponse","amountSum","taxAmountSum","totalAmountSum","localCurrencyAmountSum","localCurrencyTaxAmountSum","localCurrencyTotalAmountSum","InvoiceItemResponse","totalAmount","totalLocalCurrencyAmount","InvoiceResponse","invoiceItems","InvoiceStatusEnum","InvoiceStatusResponse","InvoiceTypeEnum","LoginRequestModel","domian","language","MeetingCommentResponse","createdOn","MeetingDecisionResponse","MeetingGeneralConfigResponse","notifyWhenReleased","enableEmailNotifications","MeetingResponse","topics","MeetingTopicResponse","MeetingStatusEnum","MeetingStatusResponse","generatedId","comments","MeetingTopicTypeEnum","messageCode","additionalInfo","MitigationTypeEnum","MonthEnum","MyExpenseDashboardResponse","expensesPerStatusCounts","notApprovedExpenses","TimeTravelDashboardRowResponse","MyProfileUpdateRequestModel","MySurveyQuestionResponse","proposedAnswers","answers","SurveyProposedAnswerResponse","SurveyParticipantAnswerResponse","MySurveyResponse","MyTestPlanResponse","level3ProcessId","level3ProcessName","plannedDate","plannedTime","plannedTimeTo","processStatusId","processTesterUserId","complexLevel2Name","complexLevel2Description","level1Order","level2Order","level3Order","level4Order","level3Id","MyTimesheetDashboardResponse","timesheetsPerStatusCounts","notApprovedTimesheets","timesheetHoursPerProject","timesheetHoursPerNonProjectCategory","approvedHoursPerBillability","totalTimesheetHours","totalProductiveTimesheetHours","totalNotProductiveTimesheetHours","MyTimeTravelDashboardFilterRequest","MyTimeTravelDashboardResponse","travelRequests","expenses","vacationRequests","MyTravelRequestDashboardResponse","MyTravelExpenseDashboardResponse","MyVacationRequestDashboardResponse","MyTrainingPlanResponse","scopeItemLevel3Id","linkToMaterial","linkToVideo","travelExpensesPerStatusCounts","notApprovedTravelExpenses","travelRequestsPerStatusCounts","notApprovedTravelRequests","vacationRequestsPerStatusCounts","notApprovedVacationRequests","totalVacationDays","NonProjectCategoryDeltaRequest","UpdateNonProjectCategoryRequest","NonProjectCategoryResponse","OrganizationalUnitManagerResponse","OrganizationalUnitResponse","PartalTicketRequestEnum","PartialTaskRequestEnum","plannedIncomingOutgoingPerPartner","actualIncomingOutgoingPerPartner","incomingInvoicesPerPlannedActual","outgoingInvoicesPerPlannedActual","budgetVsActualIncomingInvoices","budgetVsActualOutgoingInvoices","PatchScheduleRequest","PatchTenantIdentifyRequest","propertyName","PaymentMethodResponse","brand","isDefault","last4Numbers","expDate","PermissionCollectionResponse","isProjectManager","isSubstituteProjectManager","TicketPermission","TimeTravelPermission","ScopePermission","TestingPermission","TrainingPermission","SchedulePermission","RiskPermission","PricelistRowResponse","maxUsersFrom","maxUsersTo","maxGuestsFrom","maxGuestsTo","pricePerUserInEuro","pricePerGuestInEuro","PricingPlanFullResponse","isTrial","isCanceled","maxUsers","maxGuests","pendingChange","numberSiteAdmins","actualUsers","actualGuests","budgetInEuro","budgetInEuroWithVat","costsInEuro","costsInEuroWithVat","vatPercentage","PricingPlanPendingChangeResponse","PricingPlanInvoiceResponse","dateCreated","activeUsersNo","activeGuestsNo","periodFrom","periodTo","euroToRsdExchanged","userPriceEUR","guestPriceEUR","totalPriceEUR","vatPriceEUR","totalPriceWithVatEUR","userReductionData","PricingPlanUserReductionData","PricingPlanRequestModel","PricingPlanUserReductionDataRequestModel","PricingPlanResponse","usersToRemainActive","guestsToRemainActive","usersToDeactivate","guestsToDeactivate","PriorityEnum","PriorityNewOld","PriorityResponse","urgencyImpactMapping","UrgencyImpatPair","ProjectAccomplishmentResponse","ProjectActionResponse","actualBudgetPerProject","incomePerProjectType","expensePerProjectType","profitPerProjectType","incomePerProjectCategory","expensePerProjectCategory","profitPerProjectCategory","ProjectBusinessResponse","ProjectChangeRequestCountsResponse","totalCostSum","totalEffortSum","ProjectChangeRequestResponse","visibleId","approvedByUserId","completitionOn","totalCost","estimatedEffortInHours","estimatedTotalCost","ProjectConfigOrderDeltaRequest","UpdateProjectConfigOrderRequest","ProjectDashboardFilterRequest","testCycleIds","trainingCycleIds","ProjectDashboardResponse","incomeExpenseProfit","incomingOutgoingOverdue","projectDurationCompletion","ticketsPerStatusCounts","tasksPerStatusCounts","testStatuses","trainingStatusCounts","ProjectDurationCompletionResponse","TestDashboardStatusesResponse","ProjectDeliverableResponse","complete","projectDurationInDays","ProjectFinanceCountsResponse","ProjectFinanceResponse","paymentTerm","ProjectGetAllResponse","ProjectIsActiveOrderResponse","ProjectIsActiveResponse","ProjectIssueResponse","impact","solution","resolution","ProjectMilestoneResponse","milestoneDeviation","ProjectQualityResponse","achievedData","actions","ProjectReportAreaRequest","ProjectReportAreaResponse","ProjectReportResponse","projectFrom","projectTo","relationshipStatus","staffing","areaStatuses","ProjectReportStatusEnum","ProjectResponse","archaived","ProjectRiskCountsResponse","grossImpactSum","netImpactSum","mitigationCostSum","grossImpactAfterMitigationSum","netImpactAfterMitigationSum","costBenefitSum","riskInclusionSum","ProjectRiskResponse","costOfMitigation","ProjectSLAResponse","closingStatus","resolutionTimeCalculationStatus","resolutionTimeBasedOn","excludeOnHoldTime","timeMeasure","responseTimes","ResponseTimeResponse","ProjectStatusResponse","ProjectSubcontractorResponse","deliverable","issue","ProjectTeamMemberResponse","validityPeriods","isSubstitutePm","isPmOrSubstitutePm","currentValidityPeriod","rateValidFrom","rateValidTo","lastSalesRate","lastCostRate","projectRoleName","projectTeamName","ProjectTeamMemberValidityPeriodResponse","ProjectTeamMemberUserResponse","ProjectTeamMemberValidityPeriodDeltaRequest","UpdateProjectTeamMemberValidityPeriodRequest","ProjectTeamProductivityDashboardResponse","hoursPerNonProjectCategory","hoursPerUserAndBillability","hoursPerUserAndNotBillableNonProjectCategories","hoursPerBillability","totalBillableTimesheetHours","totalNonBillableTimesheetHours","totalPotentialProductiveHours","totalNotProductiveHours","totalTimesheetCostRate","totalTimesheetBillingRate","ProjectTimesheetDashboardResponse","hoursPerPeriod","hourCostsPerPeriod","hourBillingsPerPeriod","hoursPerUserAndPeriod","hourCostsPerUserAndPeriod","hoursPerUserAndProject","hourCostsPerUserAndProject","ProjectTimeTravelDashboardFilterRequest","ProjectTimeTravelDashboardResponse","teamProductivity","ProjectTravelRequestsDashboardResponse","ProjectTravelExpenseDashboardResponse","ProjectVacationRequestDashboardResponse","travelExpensesPerPeriod","groupedTravelExpenses","TravelExpenseResponse","calendar","VacationRequestResponse","RatingPerQuestionDashboardResponse","ratingCount","ratingSum","averageRating","RatingPerQuestionGroupDashboardResponse","RefreshTokenWithTokenRequestModel","ReminderResponse","repeatOnDays","RepeatIntervalEnum","ReportInnerTestResponse","ReportItemStatusEnum","ReportStatusAreaEnum","ReportStatusResponse","ReportTestPlanResponse","complexLevel2Id","tickets","innerTestPlans","ReportTestTicketResponse","ticketStatusId","ResolutionTimeBasedOnEnum","responseTime","resolutionTime","RiskCountsResponse","RiskDashboardFilterRequest","RiskDashboardResponse","grossImpactPerMitigationType","risks","totalGrossImpact","totalGrossImpactAfterMitigation","totalNetImpact","totalRiskForInclusion","RiskResponse","RiskImpactEnum","dashboards","viewRisks","maintainRisks","RiskProbabilityEnum","netImpact","netImpactAfterMitigation","costBenefitAnalysis","riskForInclusionInBudget","RiskStatusResponse","ScheduleConfigurationRequest","durationIn","skipWeekends","calculateDayDurationFromSettings","autocompleteTaskWhenSubtasksCompleted","deriveTaskDatesFromSubtasks","ScheduleDashboardFilterRequest","ScheduleDashboardResponse","plannedNumberOfManDays","actualNumberOfManDays","daysPerPlannedActualAndUser","ScheduleDayUtilizationDashboardResponse","plannedHours","actualHours","utilizationPerProject","ScheduleUtilizationDashboardResponse","ScheduleDurationEnum","ScheduleGanttDashboardFilterRequest","ScheduleGanttDashboardResponse","schedulesPerProject","schedulesPredecessorsPerProject","ScheduleResponse","SchedulePredecessorResponse","viewSchedule","maintainSchedule","SchedulePredecessorTypeEnum","ScheduleProjectUtilizationDashboardFilterRequest","predecessorIds","percentOfTaskCompletion","responsibleUserIds","accountableUserIds","consultedUserIds","informedUserIds","ScheduleUtilizationDashboardFilterRequest","ScheduleUtilizationRowDashboardResponse","totalPotentialHours","totalPlannedHours","totalActualHours","plannedUtilization","actualUtilization","daysHours","ScopeChangeRequestsDashboardFilterRequest","priorityId","ScopeChangeRequestsDashboardResponse","countPerStatus","countPerType","countPerPriority","countPerCriticality","ScopeItemLevelReportResponse","level3CustomText1","level3CustomText2","level4InputDocument","level4OutputDocument","level4CustomText1","level4CustomText2","changeRequestIds","ScopeItemLevelResponse","fullname","maintainScope","viewAllChangeRequests","ScopeProcessesDashboardFilterRequest","lvl1Id","lvl2Id","ScopeProcessesDashboardResponse","processesPerLvl1","lvl1sCount","lvl2sCount","lvl3sCount","lvl4sCount","ShowTestStatusEnum","SimpleIdNameModel","SimpleProjectIdNameModel","SimpleScheduleResponse","SimpleStatusRequest","SimpleStatusRequestUpdateSimpleStatusRequestItems","SimpleUserIdProjectIdPair","StatusDeltaRequest","UpdateStatusRequest","StatusReportGeneralConfigResponse","enableNotifications","StatusReportResponse","createdByUserId","releasedByUserId","alignedByUserId","StatusReportStatusEnum","StatusReportStatusResponse","StringNewOld","SubmitMySurveyRequest","SurveyAnswerResponse","questionType","score","SurveyDashboardFilterRequest","SurveyDashboardResponse","surveysStatusCounts","averageRatingPerTeam","averageRatingPerRole","averageRatings","questionGroupAverageRatings","textAnswers","overallRating","TextAnswersDashboardResponse","SurveyParticipantResponse","participantUserId","UpdateSurveyProposedAnswerRequest","SurveyQuestionResponse","SurveyQuestionTypeEnum","SurveyReducedResponse","SurveyResponse","SurveyStatusEnum","SurveyTypeEnum","TaskCommentResponse","TaskGeneralConfigResponse","notifyWhenAssignedToUser","TaskHistoryResponse","updatedOn","closedByUserId","closedOn","TaskPriorityEnum","TaskResponse","isScheduleGenerated","isMeetingGenerated","totalEffort","projectTypeId","projectCategoryId","TaskStatusEnum","TaskStatusResponse","TaskTimesheetDeltaRequest","UpdateTaskTimesheetRequest","TaskTimesheetResponse","TenantIsActiveDeltaRequest","UpdateTenantIsActiveRequest","TenantIsActiveResponse","TenantRegistrationConfirmRequestModel","isInProgress","isFinished","TenantRegistrationRequestModel","teamSizeId","industryId","datePatternId","timePatternId","timeZoneIncrement","timeZoneName","numberFormat","TenantUpdateRequestModel","TestDashboardFilterRequest","level1Ids","level2Ids","processTesterIds","stepTesterIds","TestDashboardResponse","testCasesCount","processTestersCount","stepTestersCount","ticketsCount","plannedDateCount","actualDateCount","statusCounts","testing","createTestCycle","maintainTestPlan","TestPlanHistoryResponse","processOrStepId","TestPlanResponse","lastChangedByUserId","lastChanged","scopeAttachments","testPlanAttachments","TestPlanRowResponse","complexForScopeItemLevel3Id","TestStatusDeltaRequest","UpdateTestStatusRequest","TestStatusEnum","TestStatusResponse","textAnswer","TicketAssignedGroupDeltaRequest","UpdateTicketAssignedGroupRequest","TicketAssignedGroupsResponse","TicketBreach","satisfied","breach","TicketCategoryResponse","TicketCommnetResponse","TicketDashboardFilterRequest","ticketStatusIds","ticketTypeIds","ticketPriorities","assignedToUserIds","assignedGroupIds","categoryLevel1Ids","categoryLevel2Ids","TicketDashboardResponse","ticketsPerTypeCounts","ticketsPerProjectAndPriorityCounts","ticketsPerAssignedUserAndStatusCounts","ticketsPerAssignedGroupAndStatusCounts","averageResponseTimeInMinutes","averageResolutionTimeInMinutes","newTicketsCount","openTicketsCount","closedTicketsCount","totalTicketCount","TicketHistoryResponse","numberExt","closingId","closingNote","workaround","TimeMeasureNewOld","TicketPriorityDescriptionRequest","impactHighDescription","impactMediumDescription","impactLowDescription","urgencyUrgentDescription","urgencyNormalDescription","TicketPriorityDescriptionResponse","TicketResponse","resolvedOn","testCycleNames","testPlans","statusDurations","isSlaActive","dayDurationInMinutes","responseTimeInMinutes","resolutionTimeInMinutes","responseTimeBreachInMinutes","resolutionTimeBreachInMinutes","onHoldInMinutes","TicketTimesheetResponse","TicketTestPlansResponse","TicketStatusDurationResponse","TicketResponseGetAll","TicketStatusEnum","TicketStatusResponse","testCycleName","TimeFrequency","TimeMeasureEnum","TimesheetDashboardResponse","hourCostRate","hourSalesRate","totalSales","TimesheetDeltaRequest","UpdateTimesheetRequest","TimesheetImportedFileResponse","createdAt","TimesheetMergedResponse","TimesheetRecordedStatusResponse","isWorkingDay","isReleaseable","TimesheetRequiredFieldsRequest","TimesheetResponse","enableApprovalProcess","notifyWhenSubmitted","notifyWhenApproved","notifyWhenRejected","requireCommentsWhenRejecting","approvalFrequency","minimumRecord","minimumWorkingHoursPerDay","allowOvertimeWeekendHolidayWork","TimesheetsOneDayRequest","TimesheetsPeriodRequest","year","timeAndTravel","TimeTravelStatusEnum","TimeTravelStatusResponse","UserModel","TotalTimesheetDashboardResponse","sales","TrainingDashboardFilterRequest","participants","TrainingDashboardResponse","trainingsPerStatusCounts","trainingsPerParticipantsAndStatusCounts","participantsCount","training","createTrainingCycle","maintainTrainingPlan","createSurveys","TrainingPlanRowResponse","trainerUserId","TrainingStatusEnum","TrainingStatusResponse","TravelByEnum","TravelExpenseItemResponse","leaveTravelTimeInMinutes","returnTravelTimeInMinutes","totalTravelDurationInMinutes","travelExpenseItems","TravelExpenseTotalsResponse","totalEstimatedCosts","totalLeaveTravelTimeInMinutes","totalReturnTravelTimeInMinutes","TravelRequestResponse","TravelRequestTotalsResponse","UpdateBudgetConfigurationRequest","UpdateChangeRequestRequest","ticketIdsToRemove","removedAttachments","UpdateExpenseRequest","expenseItemsDelta","UpdateFinanceGeneralConfigRequest","UpdateInnerTestPlanRequest","expectedResults","documentsCreated","rejectionComment","UpdateInvoiceRequest","UpdateLevel3TestPlanRequest","UpdateLevel4TestPlanRequest","UpdateMeetingGeneralConfigRequest","UpdateMeetingRequest","initialType","UpdateOrderRequest","UpdateOrganizationalUnitRequest","UpdateProjectDataRequest","projectStatusId","UpdateProjectInformationRequest","information","UpdateProjectReportRequest","UpdateProjectRequest","UpdateProjectSLARequest","times","UpdateSLAResponseTimeRequest","UpdateProjectTeamMemberRequest","UpdateReminderRequest","UpdateRiskRequest","UpdateScheduleRequest","removedResponsibleUserIds","removedAccountableUserIds","removedConsultedUserIds","removedInformedUserIds","UpdateScopeItemLevelRequest","removedChangeRequestIds","UpdateStatusReportGeneralConfigRequest","UpdateStatusReportRequest","UpdateSurveyParticipantsRequest","insertUserIds","deleteUserIds","UpdateSurveyQuestionRequest","UpdateSurveyRequest","UpdateTaskCalendarItemRequest","UpdateTaskGeneralConfigRequest","UpdateTaskRequest","UpdateTestPlanRequest","ticketIdsDelta","UpdateTicketCategoryRequest","UpdateTicketCommentRequest","UpdateTicketRequest","UpdateTimesheetsConfigRequest","UpdateTimeTravelConfigRequest","UpdateTrainingPlanStatusRequest","trainingPlanId","UpdateTravelExpenseRequest","travelExpenseItemsDelta","UpdateTravelRequestRequest","UpdateUserActivityRequestModel","UpdateUserDataRequestModel","UpdateVacationRequestRequest","UpdateWbsRequest","UploadExcelFileRequest","excelAttachments","UrgencyEnum","UrgencyResponse","UserActivityStatusEnum","UserAlertConfigurationResponse","picture","confirmationExpiredAt","additional","activityStatus","UserStatusResponse","UserTableViewConfigResponse","numberOfDays","calculatedStatusId","VacationRequestStatusResponse","VacationRequestStatusFullResponse","vacationRequestId","projectManagerUserId","WeekDayEnum","ApiException","isApiException","alertsApiUrl","showLanguageControl","isPrivateCloudTenant","showReminders","getNumberArraysDiff","originalArray","newArray","createReturnValue","added","removed","originalArrayHashSet","newArrayHashSet","array","filteredArray","getRGBComponents","hexColor","noOfChars","charAt","rgb","cmin","cmax","round","c","m","rString","gString","bString","rgba","cvs","getContext","fillStyle","fillRect","getImageData","colorValueToRGBA","formattedId","createDelta","initialItems","InsertClass","UpdateClass","DeltaClass","DeleteClass","initialItemMap","currentMap","itemMap","initialItem","insertItem","updateItem","deleteObject","unpackDelta","deltaErrors","tableErrors","deletedIndexes","returnedIndexes","deleteItem","deleteId","deletedIndex","deleteError","numOfDeletedIndexesBefore","currentIndex","tableIndex","insertError","numOfReturnedIndexesBefore","updateError","initialIndexIndex","toLocaleString","minimumFractionDigits","getTimeDifferenceBetweenDates","date1","date2","getNumberOfDaysBetweenDates","date1WithoutTIme","date2WithoutTIme","getNumberOfHoursBetweenDates","getNumberOfMinutesBetweenDates","getNumberOfWeeksBetweenDates","getNumberOfMonthsBetweenDates","getDateIncrementByNumberOfDays","days","dateWithTime","setTime","getDateIncrementByNumberOfMonths","dateWithoutTime","setMonth","getDateIncrementByNumberOfWeeks","setDate","getDateIncrementByNumberOfHours","getDateIncrementByNumberOfMinutes","getDateIncrementByNumberOfHoursBasedOnCalendarSettingsWorkTime","workTime","getNumberOfHoursBetweenDatesBasedOnCalendarSettingsWorkTime","differenceWorkTime","getNumberOfDaysBetweenDatesWithoutWeekends","workingDays","getDay","getDateIncrementByNumberOfDaysWithoutWeekends","newDate","getNumberOfHoursBetweenDatesWithoutWeekends","workingHours","getDateIncrementByNumberOfHoursWithoutWeekends","getNumberOfHoursBetweenDatesWithoutWeekendsBasedOnCalendarSettingsWorkTime","numberOfHours","getDateIncrementByNumberOfHoursWithoutWeekendsBasedOnCalendarSettingsWorkTime","formatDateByPattern","dd","M","MM","yyyy","yy","formatTimeByPattern","hours24","getHours","hours12","getMinutes","H","HH","hh","mm","tt","formatDateTimeByPattern","_persistedTenant$valu","_persistedTenant$valu2","_persistedTenant$valu3","_persistedTenant$valu4","datePatternString","timePatternString","timeInSeconds","timeInMinutes","amOrPm","minutesString","hoursString","convertTicksToMiliSeconds","dayLastInMinutes","minutesToHm","monthsOfYear","January","February","March","April","May","June","July","August","September","October","November","December","getMonthEnumByDate","getMonthIndexByMonthEnum","monthEnum","daysOfWeek","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday","getDateIndex","getWeekDayEnumByDate","dayIndex","getWeekDayTranslationByDate","getMondayOfWeekByDate","substractDays","monday","setHours","getDifferenceInDaysFromMonday","weekDayEnum","removeZoneFromDate","dateIsoString","getDateWithTimezoneOffset","getTimezoneOffset","isWeekday","weekDayNumber","getWeekdaysInMonth","getDaysInMonth","weekdays","ExportFileResponseModel","fetchPromise","defaultErrorResponse","catchError","fixErrorResponse","clearStorage","reload","TypeError","convertResponseErrors","accumulator","currentSubKey","newObj","splited","arrayKey","arrayIndex","propertyOfToCapital","USER_INFO","IS_USER_PM","IS_USER_ORGANIZATION_UNIT_MANAGER","IS_USER_RESOURCE_MANAGER","userString","setUserInfo","getIsUserProjectManager","setIsUserProjectManager","setIsUserManagerAtAnyOrganizationalUnit","getIsUserResourceManager","setIsUserResourceManager","clear","propName","aStr","bStr","convertHtmlToText","DOMParser","parseFromString","inputString","isUserPmorSubstitutePmOrSiteAdmin","role","ProjectManager","ProjectManagerSubstitute","isUserSiteAdmin","BaseObject","_disposed","_disposers","_uid","registry","getUniqueId","setKey","_id","_map","Dictionary","_delayedMap","addDelayedMap","delayedMap","hasKey","getKey","processDelayedMap","_this","each","target_1","$array","removeKey","applyTheme","themes","getCurrentThemes","_themes","isDisposed","dispose","shift","clearCache","clonedFrom","clones","removeValue","uid","addDisposer","removeDispose","cloneId","newObject","copyFrom","_clones","List","_className","setCache","ttl","cache","getCache","disposer","Disposer","processConfig","raiseCriticalError","$object","configKey","item_1","configValue","hasProperty","$type","asIs","createClassInstance","Adapter","processAdapters","EventDispatcher","processEvents","parent_1","asFunction","registeredClasses","ListTemplate","OrderedListTemplate","SortedListTemplate","processListTemplate","processOrderedTemplate","template","templateValue","entryKey","entryValue","listItem","DictionaryTemplate","processDictionaryTemplate","processList","maybeColorOrPercent","processDictionary","Color","Percent","isReserved","configOrder","processingErrors","_processingErrors","percent","getConfigEntryType","hasIndex","getIndex","setIndex","createEntryInstance","BaseObjectEvents","_super","__extends","_eventDispatcher","events","isEnabled","dispatchImmediately","dataFields","_dataSources","_parseDataFrom","_dataDisposers","_currentDataSetId","_start","_end","skipRangeEvent","rangeChangeDuration","rangeChangeEasing","$ease","parsingStepDuration","dataInvalid","rawDataInvalid","dataRangeInvalid","dataItemsInvalid","interpolationDuration","interpolationEasing","sequencedInterpolation","sequencedInterpolationDelay","dataValidationProgress","_addAllDataItems","_usesData","minZoomCount","maxZoomCount","_dataItems","createDataItem","handleDataItemAdded","handleDataItemRemoved","ListDisposer","invalidateData","dataUsers","handleDataUserAdded","MultiDisposer","maxZoomDeclination","DataItem","dataProvider","handleDataItemValueChange","dataItem","invalidateDataItems","handleDataItemWorkingValueChange","handleDataItemWorkingLocationChange","handleDataItemCalculatedValueChange","handleDataItemPropertyChange","processDataItem","dataContext","hasSomeValues_1","_adapterO","mainDataSet","rawDataItem","childDataItem","propertyFields","f","setProperty","updateDataItem","dataContext_1","$iter","iterator","validateDataElements","endIndex","startIndex","dataItems","validateDataElement","validate","addData","removeCount","inited","removeData","dataUser","dataItem_1","isTemplate","addToInvalidComponents","system","requestFrame","invalidateDataUsers","invalidate","invalidDataItems","invalidateDataRange","invalidDataRange","validateDataRange","_prevStartIndex","_prevEndIndex","rangeChangeUpdate","appendDataItems","sliceData","_workingStartIndex","_workingEndIndex","__disabled","invalidateRawData","invalidRawDatas","validateRawData","disposeData","_startIndex","_endIndex","_dataSets","getDataItem","validateData","removeFromInvalidComponents","preloader","this_1","dataUserDataItem","progress","hide","_internalDefaultsApplied","applyInternalDefaults","validateDataItems","setData","getDataSource","DataSource","setDataSourceEvents","adapter","dataSourceDateFields","dataSourceNumberFields","loadData","load","populateDataSourceFields","targetList","ds","openModal","incremental","keepCount","updateCurrentData","_responsive","Responsive","zoom","instantly","declination","maxZoomFactor","_finalStart","_finalEnd","minZoomFactor","rangeChangeAnimation","animationOptions","stop","kill","animate","zoomToIndexes","$math","setPropertyValue","indexToPosition","removeFromInvalids","dataSets","setDataSet","_updateDataItemIndexes","_index","bindDataField","invalidateProcessedData","resetProcessedRange","_dataUsers","$utils","reinit","_inited","deepInvalidate","getExporting","_export","_exportData","menu","handleDataUpdated","setDisabled","setShowOnInit","_showOnInitDisposer2","hideInitially","setBaseId","_baseId","_systemCheckIfValidate","Container","_childrenByLayout","_childrenDisposers","hasFocused","setStateOnSprites","layoutInvalid","_absoluteWidth","_absoluteHeight","_shouldBeReady","_tapToActivate","tapTimeout","_element","paper","addGroup","_positionPrecision","DictionaryDisposer","handleChildAdded","handleChildRemoved","processChild","insertKey","handleChildTransform","sortAndAdd","sortChildren","addChildren","removeElement","isMeasured","invalidateLayout","layout","addToInvalidLayouts","_children","fixed_1","relative_1","percentWidth","percentHeight","calculateRelativeSize","totalRelativeWidth","totalRelativeHeight","relativeWidth","relativeHeight","zindexed","sortArray","ai","bi","group_1","childNodes","len","_background","addToBack","createChild","classType","sprite","removeChildren","disposeChildren","createBackground","processBackground","handleGlobalScale","Rectangle","InterfaceColorSet","getFor","validateLayout","removeFromInvalidLayouts","_availableWidth","_availableHeight","measuredWidth","measuredHeight","allValid","maxHeight","pixelMarginRight","pixelMarginLeft","invalid","pixelMarginTop","pixelMarginBottom","childMeasuredWidth","childMeasuredHeight","valign","arrange","maxCellWidth","minCellWidth","columnCount","contentLeft","contentRight","contentTop","contentBottom","pixelPaddingLeft","pixelPaddingRight","paddingTop","pixelPaddingTop","paddingBottom","pixelPaddingBottom","nextX","nextY","rowHeight","minHeight","childrenCopy","reverseOrder","fixedWidthGrid","maxColumns","getColumnWidth","validatePosition","childMarginLeft","childMarginRight","childMarginTop","childMarginBottom","childWidth","childHeight","childLeft","childRight","childTop","childBottom","maxLeft","maxRight","pixelX","maxTop","maxBottom","pixelY","nextColumnWidth","moveTo","noneBBox","bbox","_pixelWidth","_pixelHeight","measuredContentWidth","measuredContentHeight","contentAlign","contentValign","dx_1","dy_1","mwa","mha","ddx","ddy","oldBBox","_bbox","prevLeft","prevTop","prevBotttom","prevRight","measure","event_1","dummyData","updateCenter","updateBackground","fitsToBounds","point","deviation","pixelWidth","pixelHeight","setStateOnChildren","shouldClone","_preloader","tooltipContainer","setPaper","topParent","setDataItem","_dataItem","measureElement","setSVGAttribute","invalidateLabels","transitionDuration","easing","stateName","SpriteState","dispatchReady","isReady","allReady_1","_systemUpdate","skippedSprites","_systemValidatePositions","positionInvalid","_systemValidateLayouts","setTapToActivate","interactions","isTouchProtected","setEventDisposer","handleTapToActivate","initTapTimeout","getInteraction","isLocalElement","pointer","svg","handleTapToActivateDeactivation","_tapToActivateTimeout","tapToActivate","hasLicense","commercialLicense","licenses","Sprite","_disabled","hasProperties","dates","locations","workingLocations","sprites","_visible","_hidden","_ignoreMinMax","isHiding","_valueAnimations","_locationAnimations","_animations","AnimationDisposer","setVisibility","noChangeValues","defaultState","hiddenState","animation_1","_hideDisposer","setWorkingValue","animation","toValue","animation_2","anim","getDuration","getValue","getWorkingValue","realName","workingValue","getActualWorkingValue","setValue","newDuration","event_2","setCalculatedValue","event_3","childObject","handleInterpolationProgress","valueAnimation","event_4","setLocation","event_5","setWorkingLocation","workingLocation","locationAnimation","event_6","dateFormatter","event_7","setCategory","opacity","event_8","Animation","event_9","hasValue","depth","_dataContext","addSprite","verbose","classNamePrefix","autoSetClassName","minPolylineStep","onlyShowOnViewport","queue","Registry","loadedThemes","_uidCount","_placeholders","invalidSprites","invalidDatas","invalidPositions","invalidLayouts","baseSprites","baseSpritesByUid","noBase","getPlaceholder","$string","baseId","addToInvalidSprites","removeFromInvalidSprites","addToInvalidPositions","removeFromInvalidPositions","visualProperties","SpriteEventDispatcher","_bindings","_isTemplate","_isPath","_ready","_isHidden","isShowing","isStandaloneInstance","_isActive","_mask","MutableValueDisposer","_language","_exporting","_exportable","applyOnClones","_measuredWidthSelf","_measuredHeightSelf","maxLeftSelf","maxRightSelf","maxTopSelf","maxBottomSelf","_isDragged","_isResized","_internalDisabled","_updateDisabled","rollOutDelay","isBaseSprite","appeared","ey","dragWhileResize","measureFailed","preventShow","cloneTooltip","_prevMeasuredWidth","_prevMeasuredHeight","_measuredWidth","_measuredHeight","_isMeasured","setClassName","beforeDraw","draw","afterDraw","invalidatePosition","attr","removeSVGAttribute","sizeChanged","prevGroupTransform","transformString","rotation","nonScaling","globalScale","showTooltipOn","updateTooltipPosition","maskRectangle","_maskRectangle","_clipElement","horizontalCenter","verticalCenter","_b","__values","_c","interactionsEnabled","showOnInit","applyMask","hideTooltip","showTooltip","nonScalingStroke","updateFilterScale","states","plugins","configField","virtualParent","exportable","_tooltip","_showSystemTooltip","showSystemTooltip","fillModifier","strokeModifier","htmlContainer","firstChild","_svgContainer","_interactionDisposer","_urlDisposer","_numberFormatter","_focusFilter","_filters","_alwaysShowDisposers","applyAccessibility","_topParent","_parent","oldParent","_tooltipContainer","handleAlwaysShowTooltip","handleAlwaysShow","oldDisposers","oldDisposer","_virtualParent","appendDefs","filterElement","appendDef","fill_1","modify","stroke_1","_clipPath","_paper","getGhostPaper","_htmlContainer","_titleElement","_descriptionElement","onAll","setSVGAttributes","strokeOpacity","shapeRendering","strokeDasharray","strokeDashoffset","focusable","tabindex","attribute","removeAttr","addClass","uidAttr","updateClipPath","createClipPath","width_1","height_1","removeChildNodes","appendPrimitives","w","removeClipPath","setElement","SVGPathElement","svgContainer","definedBBox","svgBBox","getBBox","prevElementTransform","elementX","elementY","elementWidth","elementHeigth","top_1","pixelPerfect","positionPrecision","matrix","createSVGMatrix","p1","createSVGPoint","p2","p3","p4","pt1","matrixTransform","pt2","pt3","pt4","isHover","tooltipText","tooltipHTML","insertBefore","moveValue","insertAfter","getRelativeX","getRelativeY","getPixelX","pixel","getPixelY","isDragged","reset","rect","hitTest","ax1","ay1","ax2","ay2","bx1","by1","bx2","by2","_states","processState","hoverable","clickable","length_1","getSvgPoint","isHidden","transitionEasing","transitTo","applyCurrentState","isDown","downPointers","isFocused","transition","propValues","allValues","finalValue","newFilters_1","stateFilter","pushAll","isInTransition","animations","isInteractive","handleOver","handleOut","handleDown","handleUp","handleFocus","handleBlur","hasChild","numberFormatter","NumberFormatter","_dateFormatter","DateFormatter","_durationFormatter","durationFormatter","DurationFormatter","Language","exporting","populateString","string","getTextFormatter","escape","tag","getTagValue","unescape","matches","reg","reg2","matches2","getTagValueFromObject","populateStringFrom","formatApplied","numberValue","dateValue","durationValue","formatParts","formatterType","$strings","dataContext_2","dataContext2_1","propValue","setColorProperty","setPercentProperty","precision","length_2","bindToProperty","modifier","readerTitle","readerDescription","readerHidden","checked","readerChecked","controls","readerControls","live","readerLive","orientation","readerOrientation","valueNow","readerValueNow","valueText","readerValueText","labelledByIds","describedByIds","labelledBy","readerLabelledBy","describedBy","readerDescribedBy","titleElement","descriptionId","descriptionElement","keyboardOptions","mouseOptions","_interaction","trackable","swipeable","resizable","wheelable","contextMenuDisabled","inert","_tabindex","focusFilter","hoverOnFocus","inertiaOptions","applyCursorStyle","handleDragStart","handleDragMove","handleDragStop","touch","originalPosition","dragStart","dragStop","cssScale","hoverOptions","_outTimeout","SVGContainer","targetSprite","keepTargetHover","handleOutReal","hitOptions","originalAngle","originalScale","handleToggle","urlHandler","cursorOverStyle","MouseCursorStyle","baseSprite","urlTarget","swipeOptions","handleResize","svgPoint1","point1","svgPoint2","point2","svgMidPoint","parentPoint1","startPoint1","parentPoint2","startPoint2","spritePoint1","spritePoint2","spriteMidPoint","parentPoint","cursorOptions","overStyle","defaultStyle","applyCursorOverStyle","downStyle","pointerEvents","exp","nonExportableSprites","modalPrefix","modal","closeModal","popups","closeAllPopups","minX","maxX","minY","maxY","parentWidth","setMaxWidth","prevWidth","prevHeight","previousWidth","previousHeight","parentHeight","setMaxHeight","_relativeHeight","_relativeWidth","marginTop","marginLeft","setPath","setFill","toColor","realFill","Pattern","LinearGradient","RadialGradient","setStroke","realStroke","_rtl","rtl","showReal","_hideAnimation","_showHideDisposer","hideReal","currentSprite","getVisibility","toFront","toBack","tooltipDataItem","_tooltipDataItem","_tooltipColorSource","colorSource_1","tooltipColorSource_1","tooltipColorSource","getStrokeFromObject","getFillFromObject","animationDuration","autoTextColor","alternative","currentText","tooltipPosition","globalPoint","getTooltipX","getTooltipY","pointTooltipTo","showInViewport","pointTo","closable","getCursorStyle","cursorDowntyle","grab","grabbing","horizontalResize","verticalResize","default","_showOnInitDisposer","appear","_plugins","_interactionEvents","_dispatchSpriteEvent","imev","_dispatchSpritePointEvent","spritePoint","svgPoint","_addInteractionObjectEvent","insertKeyIfEmpty","CounterDisposer","increment","_on","disposers","togglable","TargetedEventDispatcher","spriteValue","_x","System","_isPaused","dummyCounter","_frameRequested","updateStepDuration","reportTime","invalidData","validateLayouts","validatePositions","hasSkipped","checkIfValidate2","triggerIdle","all0_1","raf","softInvalidate","hardInvalidate","$log","VERSION","separators","CSVParser","delimiter","skipRows","skipEmpty","useColumnNames","isCSV","getDelimiterFromData","sep","lineColums","csv","CSVToArray","empty","emptyAs","numbers","parsableNumbers","parsableDates","cols","dataPoint","maybeToEmpty","maybeToNumber","maybeToDate","objPattern","arrData","arrMatches","strMatchedDelimiter","strMatchedValue","DataParser","dataLoader","DataLoader","promises","$net","translate","processData","catch","getParserByType","JSONParser","getParserByData","isJSON","numberFields","dateFields","inputDateFormat","_requestOptions","_incremental","_incrementalParams","_keepCount","_updateCurrentData","showPreloader","lastLoad","disableCache","timestampUrl","_url","addUrlParams","incrementalParams","_parser","_reloadFrequency","_reloadDisposer","_reloadTimeout","reloadFrequency","SVGDefaults","Cone","angle","radius","topRadius","Ellipse","bodyFillModifier","LinearGradientModifier","lightnesses","radiusBase","gradient","radiusY","$path","Rectangle3D","sideBack","sideBottom","sideLeft","sideRight","sideTop","sideFront","sin","cos","ah","bh","ch","dh","colorStr","stops","LightenFilter","filter2","filter3","filter4","filter5","lighten","Slice3D","edge","sideA","sideB","edgeFill","cornerRadius","innerCornerRadius","arc","startAngle","innerRadius","pixelInnerRadius","endAngle","innerRadiusY","a0","b0","c0","d0","edgePath","step","mangle","prevPoint","pp","Slice","iconPosition","interfaceColors","Label","hoverState","downState","currentIcon","_label","RoundedRectangle","Circle","pixelRadius","isOversized","fullWords","ellipsis","textValign","baseLineRatio","handleMaxSize","handleValidate","availableWidth","availableHeight","alignSVGText","updateCurrentText","output","supportsForeignObject","_currentFormat","_prevStatus","getLineBBox","lineInfo","parentNode","oldW","oldH","getAttr","textPathElement","resetBBox","currentHeight","currentFormat","chunks","chunk","ignoreFormatting","currentLineHeight","firstChunk","skipTextChunks","getLineInfo","getSVGLineElement","complex","translateStyleShortcuts","tspan","getSvgElement","lineText","avgCharWidth","excessChars","addEllipsis","node_1","node_2","elementText","maxChars","lastNode","lastChild","splitLines","cleanUp","restOfLine","addLineInfo","tempElement","lineInfo_1","maybeHideOversized","hideUnused","fo","foreignObject","lineElement","getHTMLLineElement","clientHeight","overflow","setStyles","pathElement","hideOversized","removeAttribute","div","selectable","addStyle","removeStyle","initLineCache","attrNS","$dom","_sourceDataItemEvents","defaultRules","relevant","ResponsiveBreakpoints","heightXS","stateId","y1","x2","positionToPoint","Modal","showCurtain","PointedRectangle","cr","stemX","stemY","pointerX","pointerY","bwh","pointerBaseWidth","maxcr","crtl","crtr","crbr","crbl","lineT","lineR","lineB","lineL","d1","d2","arcTR","arcBR","arcBL","arcTL","PointedShape","pointerLength","Polyline","_distance","makePath","segments","p","_realSegments","deltaAngle","totalDistance","currentDistance","positionA","positionB","pointA","pointB","positionAB","midPoint","Polyspline","tensionX","tensionY","allPoints","realPoints","last","closed_1","p0","controlPointA","controlPointB","stepCount","i_1","getClosestPointIndex","extend","f0","f1","point_1","rules","_elements","_IOs","_content","_title","_classPrefix","_defaultStyles","_showCurtain","_draggable","_align","_verticalAlign","_shift","_tempShift","_readerTitle","_closable","_cssLoaded","_fitTo","_sized","curtain","positionElement","parentElement","releasePointers","forceResize","toStyle","verticalAlign","setupDragging","unprepElement","off","createContentElement","getClassNames","wrapperClass","classPrefix","headerClass","titleClass","contentClass","insideClass","curtainClass","closeClass","classNames","disablePointers","defaultStyles","loadDefaultCSS","createCurtainElement","applyEvents","applyReaderSettings","_left","_right","_top","_bottom","cs","fg","bg","alpha","abg","StyleRule","popupCSS","keyboard","isKey","_spriteInteractionsEnabled","classPrefixRaw","ResizeButton","minSide","cornerRadiusTopLeft","cornerRadiusTopRight","cornerRadiusBottomRight","cornerRadiusBottomLeft","tl","tr","bl","br","Scrollbar","_previousStart","_previousEnd","_prevStart","_prevEnd","_isBusy","_skipRangeEvents","updateWhileMoving","animationEasing","startGrip","endGrip","updateThumb","dispatchRangeChange","hideGrips","updateSize","updateExtremes","handleBgHit","makeBusy","thumbX","_thumbAnimation","thumbY","makeUnbusy","_thumb","_unbusyTimeout","stopAnimations","_zoomAnimation","makeUnbusyReal","_usingGrip","innerWidth_1","innerHeight_1","getPosition","__start","__end","skipRangeEvents","fixRange","updateByOrientation","_startGrip","processGrip","_endGrip","handleGripDrag","cursorDownStyle","handleThumbPosition","handleDoubleClick","newStart","newEnd","zoomAnimation","innerWidth_2","innerHeight_2","_hideGrips","_overDisposer","_outDisposer","shiftRadius","updateGradient","innerRect","outerRect","ix","iy","middleAngle","TextLink","brighten","_boundingRect","_pointTo","fitPointerToBounds","_verticalOrientation","dropShadow","DropShadowFilter","drawBackground","pointerOrientation","handleVisibility","textX","textY","boundingRect","textW","textH","documentWidth","offsetHeight","textWidth","textHeight","bgWidth","bgX","bgHeight","bgY","boundX1","boundX2","boundY1","boundY2","_animation","setBounds","rectangle","oldRect","_boundingContainer","updateBounds","boundingContainer","Trapezoid","topSide","bottomSide","leftSide","rightSide","ts","bs","ls","rs","x0","y0","x3","y3","mt","mr","mb","ml","horizontalNeck","hn","verticalNeck","vn","Triangle","WavedCircle","waveLength","waveHeight","tension","getPoints","$smoothing","smooth","circleLength","PI","halfWaveHeight","halfWaveLength","angle1","angle2","WavedLine","wavedLine","WavedRectangle","waveLengthH","waveHeightH","waveLengthV","waveHeightV","td","rd","bd","ld","wavedTop","wavedRight","wavedBottom","wavedLeft","setWavedSides","ZoomOutButton","pdfmakePromise","fontFamilySrcRegexp","getCssRules","sheet","cssRules","_a","sent","loadStylesheet","e_2","eachStylesheet","topUrl","rule","CSSRule","IMPORT_RULE","eachStylesheets","iframe","doc_1","contentDocument","styleSheets","_formatOptions","_extraSprites","_validateSprites","_dynamicDataFields","_removedObjects","_hiddenObjects","_objectsAlreadyHidden","_filePrefix","useWebFonts","useRetina","useSimplifiedExport","timeoutDelay","_container","quality","imageFormat","addURL","addColumnNames","useLocale","printMethod","formatOptions","_menu","branch","unsupported","typeSupported","_disablePointers","_releasePointers","supported","_hasData","print","_getFunction","getImage","getSVG","getPDF","getExcel","getCSV","getJSON","getHTML","getPrint","handleCustom","hideTimeout","_timeoutTimeout","showTimeout","hideNonExportableSprites","restoreNonExportableSprites","hidePreloader","filePrefix","callbackTarget","getFontFamilies","DOMURL","getDOMURL","blobs","FONT_FACE_RULE","cssText_1","cssText","urls","__awaiter","after","responseType","msSaveOrOpenBlob","url_1","createObjectURL","e_3","includeExtras","prehidden","getFormatOptions","awaitValidSprites","simplifiedImageExport","getCanvas","canvas","addExtras","toDataURL","getContentType","disposeCanvas","e_4","getImageAdvanced","advanced","extraSprites","middleLeft_1","middleTop_1","middleWidth_1","middleHeight_1","extraRight_1","extraBottom_1","extraSprite","getCanvasAdvanced","extraCanvas","extraWidth","extraHeight","crop","extras","newCanvas","getDisposableCanvas","ctx_1","findBackgroundColor","right_1","left_1","bottom_1","drawImage","font","pixelRatio","getPixelRatio","setTransform","fonts","imagesToDataURI","prepForeignObjects","normalizeSVG","serializeElement","defs","Blob","loadNewImage","img","revokeObjectURL","restoreRemovedObjects","canvg","useCORS","ignoreDimensions","scaleWidth","scaleHeight","images","image","getAttributeNS","XLINK","svgToDataURI","imageToDataURI","objects","temporarilyRemoveObject","keepTainted","charset","btoa","setAttributeNS","currentHref","Image","onabort","self","webkitURL","dimParams","styleParams","$browser","XMLSerializer","serializeToString","_d","pdfmake","defaultMargins","pageSize","pageOrientation","pageMargins","fit","getPageSizeFit","getPDFData","table","createPdf","getDataUrl","pivot","dataRow","dataValue","convertToSpecialFormat","getPDFDataRow","headerRows","convertEmptyValue","margins","newMargins","fitSize","A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","B0","B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","C0","C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","RA0","RA1","RA2","RA3","RA4","SRA0","SRA1","SRA2","SRA3","SRA4","EXECUTIVE","FOLIO","LEGAL","LETTER","TABLOID","xlsx","wbOptions","bookType","bookSST","sheetName","normalizeExcelSheetName","wb","SheetNames","Sheets","getExcelRow","utils","aoa_to_sheet","write","getCSVRow","forceQuotes","tableClass","getHTMLRow","headerRow","rowClass","charCodeAt","useTag","cellClass","sourceData","newValue_1","json","keepOriginal","isDateField","isDurationField","durationFormat","isNumberField","useTimestamps","msBlobDownloadSupport","blob_1","msSaveBlob","decoded","atob","chars","charCode","blobDownloadSupport","link_1","blob_2","url_2","url_3","linkDownloadSupport","legacyIE","showModal","idoc","execCommand","downloadSupport","getElementsByTagName","printViaCSS","printViaIframe","scroll","documentElement","scrollTop","originalTitle","clipPath","MSStream","currentColor","parent_2","_sprite","validateSprites","_dataFields","generateDataFields","_dateFormat","_dateFields","_numberFormat","_numberFields","_durationFormat","_durationFields","durationFields","contains","_backgroundColor","hideModal","_modal","_canvg","vfs_fonts","pdfMake","vfs","_pdfmake","_xlsx","setFormatOptions","ExportMenu","Validatable","closeDelay","closeOnClick","_menuTag","_itemTag","_labelTag","_iconTag","_ignoreNextClose","_items","getMenuItemClass","createMenuElement","drawBranch","menuElement","getEventKey","moveSelection","ascendants","createItemElement","createIconElement","createSvgElement","createLabelElement","readerLabel","getReaderLabel","typeClickable","submenu_1","getSubMenu","selectBranch","setFocus","delayUnselectBranch","local_level","submenu","hideBranch","menuTag","itemTag","labelTag","iconTag","hasSubMenu","newPrefix","colorSet","exportCSS","_currentSelection","setBlur","getElementsByClassName","closeTimeout","ascendant","unselectBranch","getPrevSibling","getNextSibling","getParentItem","getSiblings","siblings","blur","showBranch","_inputDateFormat","_utc","_firstDayOfWeek","_months","_monthsShort","_weekdays","_weekdaysShort","_outputFormat","capitalize","intlLocales","Intl","DateTimeFormat","parseFormat","timezoneOffset","setMinutes","applyFormat","cached","weekday","seconds","milliseconds","utc","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","getSeconds","getMilliseconds","translateFunc","firstDayOfWeek","pow","tz","tzh","tzm","toUTCString","parsedIndexes","resValues","indexAdjust","year3","year2","year1","getStringList","monthLong","monthShort","week","yearDay","weekdayLong","weekdayShort","hour12Base1","hourBase0","hour12Base0","hourBase1","minute","millisecond","millisecondDigits","zone","iso","regex","resolveMonth","resolveShortMonth","hour","isAm","dir","diff","UTC","translateAll","invalidateSprite","_intlLocales","_timezoneOffset","_negativeBase","_baseUnit","_unitValues","_unitAliases","base","baseUnit","getFormat","details","positive","negative","zero","parsed","dirs","partFormat","absolute","tstamp","toTimeStamp","toTimeUnit","digits","ints","outputFormat","maxValue","maxUnit","getValueUnit","durationFormats","currentUnit","ms","_durationFormats","_smallNumberThreshold","translateEmpty","mods","mod","modSpacing","thousands","passive","decimals","a_1","applyPrefix","bytePrefixes","a_2","smallNumberThreshold","smallNumberPrefixes","bigNumberPrefixes","ol","toPrecision","toExponential","ip","intsr","decs","prefixes","force","newvalue","applied","number","_bigNumberPrefixes","_smallNumberPrefixes","_bytePrefixes","TextFormatter","texts","wrapHtml","wrapSvg","AMElement","styleSvgToHtml","getHtmlElement","quotedBlocks","noFormatting","chunks2","i2","chunk2","isImage","Inertia","startPoint","handleMove","inertias","processDragStop","Interaction","_globalEventsAdded","_pointerEvents","_usePointerEventsOnly","_useTouchEventsOnly","_addHoverEvents","_passiveSupported","_delayedEvents","overObjects","downObjects","trackedObjects","transformedObjects","pointers","pointermove","pointercancel","matchMedia","fullFF","wheel","onmousewheel","passiveSupported","addGlobalEvents","handleGlobalPointerDown","handleGlobalPointerMove","handleGlobalPointerUp","handleGlobalTouchStart","handleGlobalTouchMove","handleGlobalTouchEnd","handleGlobalKeyDown","handleGlobalKeyUp","processClickable","io","processTouchable","processContextMenu","eventDisposers","processHoverable","handlePointerOut","handlePointerOver","processMovable","isGlobalElement","prepElement","processTrackable","processDraggable","processSwipeable","processResizable","processWheelable","handleMouseWheel","unlockWheel","lockWheel","processFocusable","handleFocusBlur","handleTouchDown","handlePointerDown","isPaused","getHitOption","disableType","enableType","focusedObject","disposerKey","ko","InteractionKeyboardObject","directionY","directionX","getPointer","getPointerPoint","addBreadCrumb","handleGlobalMove","processDelayed","preventTouchAction","defaultPrevented","cancelled","handleGlobalUp","which","resetPointer","deltaX","deltaY","deltaMode","getMouseOption","WheelEvent","wheelDeltaX","wheelDeltaY","handleWheel","maybePreventDefault","handleHit","$time","lastHit","lastHitPointer","soft","overPointers","handleTrack","hasDelayedOut","old","behavior","getHoverOption","keepUntil","delayedEvent","stopInertia","applyCursorDownStyle","processDragStart","processResizeStart","backwards","restoreCursorDownStyle","swiped","handleSwipe","moved","handleInertia","processResizeStop","cancelable","lastEvent","swiping","handleTransform","skipCheck","handleMoveInertia","handleResizeInertia","inertia","getTrailPoint","getInertiaOption","factor","lastUpEvent","pointer2","pointer1","singlePoint","nextPointer","pointer1Moved","dragStartEvents","handleTransformMove","pointer2Moved","handleTransformResize","pointerMoved","dragTarget","getDragPointer","lastDownEvent","getPointerId","identifier","pointerId","isPointerTouch","Touch","PointerEvent","pointerType","MouseEvent","swipeCanceled","lockDocument","unlockDocument","restoreAllStyles","lockElement","unlockElement","wheelLockEvent","elementFromPoint","local","setTemporaryStyle","restoreStyle","getSwipeOption","getKeyboardOption","setGlobalStyle","restoreGlobalStyle","tolerance","minTime","getShift","pointerExists","exists","InteractionObject","replacedStyles","logTouch","TouchEvent","keyboardEvent","_startedOn","speed","accelleration","accellerationDelay","shiftKey","accelleratedMs","accellerationFactor","InteractionObjectEventDispatcher","_clickable","_contextMenuDisabled","_hoverable","_trackable","_swipeable","_resizable","_wheelable","_inert","_isHover","_isHoverByTouch","_isDown","_isFocused","_isTouchProtected","_inertiaOptions","_hitOptions","_hoverOptions","_swipeOptions","_keyboardOptions","_mouseOptions","_cursorOptions","isHoverByTouch","_overPointers","_downPointers","_focusable","_originalPosition","_originalScale","_originalAngle","_domEvents","_addDOMEvent","callback_1","_dispatchKeyboardEvent","notAllowed","_isDisposed","_y","_rotationY","_rotationX","_rotation","_scale","createElementNS","removeNode","_transformString","transfromString","rotateString","svgbbox","attributeName","attributeValue","ns","getAttrNS","removeClass","setClass","Group","elementName","childNode","Paper","desc","createTextNode","implementation","hasFeature","ghostPaper","ghostDiv","ghostSvgContainer","polyline","lineTo","minStep","quadraticCurveTo","controlPoint","cubicCurveTo","closePath","arcTo","pax","pay","ax","ay","temp","crSin","cornerRadiusY","innerCornerRadiusY","crAngle","asin","crAngleY","crInnerAngle","crInnerAngleY","mPoint","b1","arcToPoint","sweepFlag","largeArcFlag","xAxisRotation","Boolean","rectToPath","ccw","L","svgContainers","htmlElement","ghost","autoResize","resizeSensor","ResizeSensor","detach","checkTransform","_popups","popupTemplate","sqrt","HTMLElement","Tension","_tensionX","_tensionY","closed","adjustWaveLength","atan2","waveLengthX","waveLengthY","halfWaveCount","Basis","_closed","NaN","x4","y4","pushCurve","pushPoint","ColorModifier","GradientModifier","brightnesses","opacities","offsets","_lightnesses","_brightnesses","_opacities","_offsets","brightness","addColor","_stops","gradientElement","gradientStop","patternUnits","backgroundFill","backgroundOpacity","patternElement","rotationX","rotationY","addElement","fx","fy","_cx","_cy","_fx","_fy","DesaturateFilter","feColorMatrix","filterPrimitives","saturation","feGaussianBlur","feOffset","feFlood","feComposite","operator","feMerge","updateScale","_nonScaling","filterPrimitive","setSprite","globalAdapter","GlobalAdapter","_callbackId","_callbacks","SortedList","$order","$number","addAll","applyAll","callbacks","enableKey","disableKey","_hasListenersByType","_shouldDispatch","getProgressNumber","getProgressPercent","getProgressColor","$colors","getHybridProperty","_disposer","_loop","_pause","_delayTimeout","_time","_isFinished","pause","id_1","stopSameAnimations","_startTime","staticOptions","updateMethod","convertedFrom","applyStaticOptions","loop","resume","setProgress","skipEvent","timeProgress","delayed","killed_1","newOptions","oldOptions","eachReverse","eachContinue","shiftLeft","found","toIndex","removeIndex","insertIndex","toArray","copy","getSortedIndex","ordering","pendingFrame","nextQueue","readQueue","writeQueue","idleQueue","fps","frameLoop","pendFrame","readFrame","writeFrame","whenIdle","isSafari","vendor","isInternetExplorer","Cache","_storage","owner","ownerStorage","cacheItem","touched","expired","_value","_lightColor","_darkColor","saturate","darkColor","lightColor","cacheId","isColor","castColor","ColorSet","_list","_currentStep","_currentPass","baseColor","minColors","minLightness","maxLightness","shuffle","generate","getReusableColor","tmpstep","curColor","hueStep","hues","applyStepOptions","namedColors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","shorthandRegex","hexToRgb","rgbaToRgb","rgbToHex","pad2","rgbToRGBA","interpolate","rgb1","rgb2","getLightnessStep","rgbToHsl","hslToRgb","hue2rgb","q","isLight","rootStylesheet","SVGNS","XMLNS","getElement","getElementById","currentClassName","setStyle","currentStyle","defaultView","getRoot","ownerDocument","composedPath","fixPixelPerfect","getStylesheet","selector","_rule","deleteRule","insertRule","makeStylesheet","selectorText","_setVendorPrefixName","styleId","StyleClass","findFont","findFontSize","isElementInViewport","viewportTarget","viewportRect","dict","_dictionary","updateKey","ifEmpty","Symbol","__read","sortedIterator","_template","_dispose","_counter","linear","polyIn","polyOut","polyInOut","polyOut3","sinOut","cubicIn","cubicOut","b2","b3","b5","b6","b8","bounceOut","tau","period","_listeners","_killed","_iterating","_enabled","hasListeners","hasListenersByType","killed","disable","_removeListener","_removeExistingListener","_eachListener","$async","_purposes","primaryButton","primaryButtonHover","primaryButtonDown","primaryButtonActive","primaryButtonText","primaryButtonStroke","secondaryButton","secondaryButtonHover","secondaryButtonDown","secondaryButtonActive","secondaryButtonText","secondaryButtonStroke","grid","alternativeBackground","alternativeText","disabledBackground","purpose","setFor","fromArray","iter","sum","_i","go","push2","flatten","indexed","ListIterator","createNewItems","_create","_listCopy","getFirst","returnItem","getLast","removeItem","Keyboard","keyCode","altKey","metaKey","_locale","en","_defaultLocale","defaultLocale","prompt","getTranslations","__spread","translateAny","IndexedIterable","_array","ListGrouper","_getKey","_insert","_remove","_keys","_groups","_sort","index_1","checkBounds","initial","_values","_sortQuicksort","low","high","_sortPartition","swap","value_a","value_b","setAll","oldArray","make","messages","HALFPI","RADIANS","DEGREES","toNumberRange","fitToRange","rounded","minValue","referenceValue","curr","intersect","range1","range2","start1","start2","end1","end2","invertRange","intersection","startMax","endMin","getDistance","getHorizontalDistance","getVerticalDistance","getCubicCurveDistance","getPointOnCubicCurve","getScale","initialDistance","getMidPoint","getAngle","diffX","diffY","normalizeAngle","getCommonRectangle","rectangles","getPointOnQuadraticCurve","mt1","mt2","mt3","getCubicControlPointA","adjustTension","getCubicControlPointB","fitAngleToRange","getArcRect","MAX_VALUE","bpoints","getArcPoint","fromAngle","toAngle","pt","isInRectangle","isBlob","readAsText","responseText","withCredentials","requestHeaders","eachOrdered","ord","keysOrdered","merge","object1","object2","copyProperties","forceCopyProperties","copyAllProperties","or","isPercent","_rules","_appliedRules","_appliedTargets","_useDefault","_noStates","checkRules","_component","_sizeEventDisposer","applyRules","useDefault","isApplied","ruleId","allRules","rulesChanged","newTarget","defaultStateApplied","isApplied_1","tmpId","widthXXS","XXS","widthXS","XS","widthS","S","widthM","widthL","widthXL","XL","widthXXL","XXL","heightXXS","heightS","heightM","heightL","heightXL","heightXXL","isXXS","isXS","isS","isM","isL","isXL","isXXL","maybeXXS","maybeXS","maybeS","maybeM","maybeL","maybeXL","maybeXXL","OrderedList","findClosestIndex","closestValue","closestDifference","closestIndex","_ordering","choice","STRING","NUMBER","DATE","DURATION","PLACEHOLDER","PLACEHOLDER2","timeUnitDurations","getNextUnit","checkChange","dateOne","dateTwo","timeZoneOffset1","timeZoneOffset2","setUTCMinutes","nextUnit","timeZoneOffset","setUTCDate","setUTCSeconds","setUTCMilliseconds","setUTCHours","setUTCFullYear","setUTCMonth","wday","newTimeZoneOffset","firstDateOfWeek","firstDate","unitCount","weekDay","getType","castString","toBoolean","toNumber","isNumber","converted","toText","isObject","toNumberOrPercent","getValueDefault","isDate","used","stripHash","getBaseURI","baseURI","loc","isNotEmpty","relativeToValue","relativeRadiusToValue","subtractIfNegative","devicePixelRatio","escapeForRgex","splitTextByCharCount","words","word","wordLength","reverseString","truncateWithEllipsis","rtrim","ltrim","padString","hints","cleanFormat","stripTags","plainText","numberToString","zeros","anyToDate","anyToNumber","getYearDay","getWeek","getMonthWeek","firstWeek","currentWeek","getDayFromWeek","get12Hours","getTimeZone","savings","wotz","wtz","fitNumber","fitNumberRelative","gap","svgPointToSprite","sprite_1","relativeX","relativeY","spritePointToSvg","spritePointToSprite","toSprite","spriteRectToSvg","documentPointToSvg","svgPointToDocument","documentPointToSprite","spritePointToDocument","paddingX","borderX","borderLeftWidth","borderRightWidth","paddingY","borderY","borderTopWidth","borderBottomWidth","decimalPlaces","urlRegexp","authority","serializeUrl","isRelativeUrl","joinUrl","parsedLeft","parsedRight","leftPath","rightPath","isIE","MSInputMethodContext","documentMode","_validateDisposer","widthRatio","heightRatio","Polyarc","controlPointDistance","controlPointPosition","distanceAB","cpDistance","controlPoint1","controlPoint2","Morpher","morphable","_bboxes","morphDuration","morphEasing","morphToSingle","scaleRatio","morphToPolygon","toPoints","currentPoints","sortPoints","_morphFromPointsReal","_morphToPointsReal","normalizePoints","pointsA","pointsB","surfaceA","holeA","bboxA","middleX","middleY","addPoints","splitAt","newDistance","partA","partB","bbox1","bbox2","bboxes","surface","morphToCircle","commonBBox","hole","fromPoints","realRadius","realAngle","pointOnCircle","hlen","mustHaveCount","addToSegmentCount","newPoints","point0","extraPoint","lastPoint","morphToRectangle","realWidth","realHeight","i_2","i_3","_morphProgress","currentArea","surfaceFrom","holeFrom","surfaceTo","holeTo","currentSurface","i_4","slen","currentPoint","currentHole","i_5","morphBack","Polygon","_currentPoints","areaHole","areaArr","holeArr","pointsArr","area","areaAndHole","coords","pointsArr_1","_morpher","Preloader","sliceContainer","backgroundSlice","progressSlice","_started","Slider","PlayButton","playIcon","stopIcon","activeState","RadialGradientModifier","LinePattern","_line","CirclePattern","_circle","RectPattern","rectHeight","rectWidth","ColorizeFilter","intensity","applyFilter","ii","BlurFilter","FocusFilter","feMorphology","feBlend","PatternSet","getLinePattern","getRectPattern","getCirclePattern","thickness","strokeDashArray","currentStep","generatePatterns","Plugin","AmChartsLogo","aColor","aGradient","aStroke","desaturateFilter","desaturateFilterHover","svgDiv_1","container_1","loopTimer_1","loop_1","tooltipContainer_1","preloader_1","logo_1","logo","addToQueue","viewPortHandler","vpDisposer","queueHandler","removeFromQueue","nextSprite","classError","chart","useTheme","unuseAllThemes","extendStatics","__","__assign","_arguments","P","generator","fulfilled","rejected","__generator","trys","verb","ar","addExtensionMethods","isNodeEnv","carrier","getMainCarrier","__SENTRY__","packageToIntegrationMapping","mongodb","dynamicRequire","mongoose","mysql","pg","mappedPackages","_autoloadDatabaseIntegrations","DEFAULT_ENVIRONMENT","getGlobalEventProcessors","getGlobalSingleton","notifyEventProcessors","processors","final","parseEventHintOrCaptureContext","makeSession","currentSession","endSession","setSession","closeSession","_sendSessionUpdate","API_VERSION","DEFAULT_BREADCRUMBS","Hub","assignedScope","assignedIsolationScope","_version","_stack","bindClient","_isolationScope","isOlderThan","pushScope","getStack","popScope","maybePromiseResult","beforeBreadcrumb","maxBreadcrumbs","mergedBreadcrumb","finalBreadcrumb","setUser","setTags","setExtras","setExtra","setContext","configureScope","run","oldHub","makeMain","startTransaction","customSamplingContext","_callExtensionMethod","traceHeaders","shouldSendDefaultPii","extensions","getHubFromCarrier","setHubOnCarrier","acs","getGlobalHub","hasHubOnCarrier","runWithAsyncContext","SPAN_METRIC_SUMMARY","getMetricStorageForSpan","getMetricSummaryJsonForSpan","storage","exportKey","summary","globalScope","_notifyingListeners","_scopeListeners","_breadcrumbs","_attachments","_user","_tags","_extra","_contexts","_sdkProcessingMetadata","_propagationContext","generatePropagationContext","newScope","_level","_span","_session","_transactionName","_fingerprint","_requestSession","_client","addScopeListener","_notifyScopeListeners","getRequestSession","setRequestSession","requestSession","setFingerprint","setLevel","setTransactionName","getTransaction","scopeToMerge","scopeData","getScopeData","scopeContext","maxCrumbs","breadcrumbs","getLastBreadcrumb","clearBreadcrumbs","addAttachment","getAttachments","clearAttachments","eventProcessors","transactionName","applyToEvent","additionalEventProcessors","applyScopeDataToEvent","setSDKProcessingMetadata","newData","setPropagationContext","getGlobalScope","SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE","SEMANTIC_ATTRIBUTE_SENTRY_OP","SEMANTIC_ATTRIBUTE_PROFILE_ID","startingTime","timestampInSeconds","sid","started","did","abnormal_mechanism","attrs","ipAddress","user_agent","sessionToJSON","public_key","user_segment","txn","getRootSpan","v7FrozenDsc","_frozenDynamicSamplingContext","maybeSampleRate","sample_rate","jsonSpan","spanIsSampled","errorsInstrumented","errorCallback","_startTransaction","configInstrumenter","transactionInstrumenter","Transaction","sampleTransaction","isRecording","initSpanRecorder","maxSpans","onScope","delayAutoFinishUntilSignal","IdleTransaction","IDLE_TRANSACTION_FINISH_REASONS","IdleTransactionSpanRecorder","SpanRecorder","_pushActivity","_popActivity","transactionSpanId","maxlen","originalEnd","_idleHub","_idleTimeout","_finalTimeout","_heartbeatInterval","_onScope","_heartbeatCounter","_finished","_idleTimeoutCanceledPermanently","_beforeFinishCallbacks","_finishReason","_autoFinishAllowed","_restartIdleTimeout","endTimestampInS","spanTimeInputToSeconds","spanRecorder","endTime","spanStartedBeforeTransactionFinish","timeoutWithMarginOfError","spanEndedBeforeFinalTimeout","stringifiedSpan","pushActivity","popActivity","_pingHeartbeat","cancelIdleTimeout","restartOnChildSpanChange","_idleTimeoutID","_beat","heartbeatString","_prevHeartbeatString","samplingContext","rate","_maxlen","_traceId","_spanId","_attributes","_parentSpanId","_sampled","_status","_endTime","_exclusiveTime","traceFlags","TRACE_FLAG_SAMPLED","TRACE_FLAG_NONE","childSpan","rootSpan","opStr","nameStr","idStr","logMessage","_logMessage","httpStatus","setName","isSuccess","toTraceparent","toContext","_getData","updateWithContext","getTraceContext","spanToTraceContext","getSpanJSON","_metrics_summary","exclusive_time","hasData","hasAttributes","SpanStatus","getSpanStatusFromHttpCode","spanStatus","handleCallbackErrors","onFinally","maybeHandlePromiseRejection","normalizeContext","activeSpan","createChildSpanOrTransaction","forceTransaction","temporaryScope","ISOLATION_SCOPE_ON_START_SPAN_FIELD","SCOPE_ON_START_SPAN_FIELD","setCapturedScopesOnSpan","getCapturedScopesOnSpan","_hub","_trimEnd","incomingDynamicSamplingContext","newName","spanMetadata","setMetadata","newMetadata","timestampInS","_finishTransaction","getDynamicSamplingContext","setHub","finishedSpans","endTimes","maybeHub","cleanedExtra","cleanedTags","cleanedUser","cleanedContexts","applyDataToEvent","applySpanToEvent","applyFingerprintToEvent","mergedBreadcrumbs","applyBreadcrumbsToEvent","applySdkMetadataToEvent","mergeScopeData","mergeData","mergeAndOverwriteScopeData","mergeVal","maybeOptions","enableTracing","normalizeMaxBreadth","dist","applyClientOptions","integrationNames","applyIntegrationsMetadata","debugIdMap","_sentryDebugIds","debugIdStackFramesCache","cachedDebugIdStackFrameCache","debugIdStackParserCache","filenameDebugIdMap","debugIdStackTrace","parsedStack","cachedParsedStack","stackFrame","debug_id","applyDebugIds","finalScope","getFinalScope","clientEventProcessors","isolationData","finalScopeData","abs_path","debug_meta","code_file","applyDebugMeta","maxBreadth","normalized","normalizeEvent","hintIsScopeOrFunction","captureContextKeys","hintIsScopeContext","ensureTimestampInSeconds","spanIsSpanClass","SENTRY_BAGGAGE_KEY_PREFIX","SENTRY_BAGGAGE_KEY_PREFIX_REGEX","MAX_BAGGAGE_STRING_LENGTH","baggageHeaderToDynamicSamplingContext","baggageHeader","baggageObject","currBaggageObject","baggageHeaderToObject","objectKey","objectValue","baggageEntry","newBaggageHeader","objectToBaggageHeader","dscKey","dscValue","keyOrValue","DEFAULT_MAX_STRING_LENGTH","elem","currentElem","MAX_TRAVERSE_HEIGHT","sepLength","nextStr","_htmlElementAsString","classes","dataset","keyAttrPairs","keyAttr","keyAttrPair","allowedAttrs","isBrowserBundle","__SENTRY_BROWSER_BUNDLE__","_oldOnErrorHandler","instrumentError","__SENTRY_LOADER__","__SENTRY_INSTRUMENTED__","_oldOnUnhandledRejectionHandler","instrumentUnhandledRejection","objectToString","wat","isBuiltin","Event","isElement","isSyntheticEvent","_e","isVueViewModel","__isVue","_isVue","wrappedFuncs","wrappedLevels","makeLogger","gbl","crypto","msCrypto","getRandomByte","randomUUID","getRandomValues","typedArray","getFirstException","firstException","newMechanism","currentMechanism","mergedData","__sentry_captured__","maybeArray","require","cwd","maxProperties","visit","maxSize","encodeURI","utf8Length","hasWeakSet","WeakSet","memoBuilder","memoize","unmemoize","stringified","_events","objName","getConstructorName","stringifyValue","remainingDepth","valueWithToJSON","numAdded","visitable","convertToPlainObject","visitKey","visitValue","replacementFactory","wrapped","writable","o_O","__sentry_original__","getOwnProperties","serializeEventTarget","CustomEvent","extractedProps","includedKeys","serialized","_dropUndefinedKeys","memoizationMap","isPojo","memoVal","STACKTRACE_FRAME_LIMIT","WEBPACK_ERROR_REGEXP","STRIP_FRAME_REGEXP","parsers","sortedParsers","skipFirst","cleanedLine","localStack","stripSentryFramesAndReverse","defaultFunctionName","testString","requireExactStringMatch","isMatchingPattern","States","executor","__init2","__init3","__init4","_state","PENDING","_handlers","_resolve","_reject","onfulfilled","onrejected","_executeHandlers","finally","onfinally","isRejected","_setResult","RESOLVED","REJECTED","cachedHandlers","ONE_SECOND_IN_MS","approxStartingTimeOrigin","createUnixTimestampInSecondsFunc","_browserPerformanceTimeOriginMode","performanceNow","dateNow","timeOriginDelta","timeOriginIsReliable","navigationStartDelta","TRACEPARENT_REGEXP","extractTraceparentData","traceparent","traceparentData","sampledString","isGlobalObj","globalThis","creator","define","globalWindow","mozRequestAnimationFrame","webkitRequestAnimationFrame","forEachElement","elementsType","isCollectionTyped","jQuery","Elements","getElementSize","EventQueue","sizeInfo","newQueue","attachResizeEvent","resized","resizedAttached","styleChild","expandChild","shrink","shrinkChild","dirty","rafId","computedStyle","lastWidth","lastHeight","initialHiddenCheck","lastAnimationFrame","resetExpandShrink","resetSensor","onResized","onScroll","addEvent","attachEvent","MutationObserver","observer","mutations","addedNodes","childList","subtree","getDefaultOptions","dateLongFormatter","timeLongFormatter","dateTimeFormat","matchResult","getTimezoneOffsetInMilliseconds","utcDate","MILLISECONDS_IN_WEEK","getUTCISOWeek","dirtyDate","requiredArgs","toDate","startOfUTCISOWeek","getUTCISOWeekYear","fourthOfJanuary","startOfUTCISOWeekYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","getUTCWeek","startOfUTCWeek","_options$firstWeekCon","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","toInteger","getUTCWeekYear","startOfUTCWeekYear","RangeError","firstWeekOfNextYear","firstWeekOfThisYear","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","required","_options$weekStartsOn","addDays","dirtyAmount","MILLISECONDS_IN_HOUR","addHours","addMilliseconds","MILLISECONDS_IN_MINUTE","addMinutes","addMonths","dayOfMonth","endOfDesiredMonth","setFullYear","addQuarters","addWeeks","addYears","millisecondsInMinute","millisecondsInHour","millisecondsInSecond","MILLISECONDS_IN_DAY","differenceInCalendarDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDay","startOfDayRight","timestampLeft","timestampRight","differenceInCalendarMonths","dateLeft","dateRight","differenceInCalendarYears","endOfDay","endOfMonth","endOfWeek","endOfYear","addLeadingZeros","targetLength","signedYear","dayPeriodEnumValue","numberOfDigits","dayPeriodEnum","formatTimezoneShort","dirtyDelimiter","absOffset","formatTimezoneWithOptionalMinutes","formatTimezone","G","lightFormatters","Y","signedWeekYear","weekYear","R","u","Q","I","isoWeek","D","dayOfYear","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","B","K","X","_localize","_originalDate","O","z","originalDate","T","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_options$locale2","_options$locale2$opti","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","isValid","subMilliseconds","formatterOptions","firstCharacter","longFormatter","longFormatters","matched","cleanEscapedString","formatters","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","startOfISOWeek","startOfWeek","startOfISOWeekYear","getISOWeekYear","getISOWeek","getQuarter","getYear","isAfter","dirtyDateToCompare","dateToCompare","isBefore","_typeof","isEqual","dirtyLeftDate","dirtyRightDate","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","isSameMonth","isSameQuarter","dateLeftStartOfQuarter","startOfQuarter","dateRightStartOfQuarter","isSameYear","isWithinInterval","dirtyIndex","valuesArray","_defaultWidth","_width","matchedString","predicate","findKey","parseResult","_date","rem100","dirtyDatesArray","datesArray","currentDate","_arrayLikeToArray","_createForOfIteratorHelper","_n","F","_assertThisInitialized","ReferenceError","_inherits","_getPrototypeOf","_isNativeReflectConstruct","valueOf","Reflect","construct","_createSuper","_classCallCheck","_defineProperties","enumerable","toPropertyKey","_createClass","Setter","_defineProperty","_utcDate","ValueSetter","_Setter","validateValue","subPriority","DateToSystemTimezoneSetter","_Setter2","_super2","_this2","timestampIsSet","convertedDate","Parser","dateString","setter","EraParser","_Parser","numericPatterns","timezonePatterns","mapValue","parseFnResult","mapFn","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","isLeapYearIndex","YearParser","isTwoDigitYear","normalizedTwoDigitYear","LocalWeekYearParser","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","LocalWeekParser","dirtyWeek","setUTCWeek","ISOWeekParser","dirtyISOWeek","setUTCISOWeek","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","isLeapYear","DayOfYearParser","setUTCDay","dirtyDay","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","ISODayParser","setUTCISODay","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","isPM","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","SecondParser","FractionOfSecondParser","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","formatString","_step","subFnOptions","setters","tokens","usedTokens","_iterator","incompatibleTokens","incompatibleToken","usedToken","fullToken","_ret","uniquePrioritySetters","setterArray","_step2","_iterator2","parseISO","argument","_options$additionalDi","additionalDigits","dateStrings","timeString","patterns","dateTimeDelimiter","timeZoneDelimiter","timezone","splitDateString","parseYearResult","captures","restDateString","century","parseYear","dateRegex","isWeekDate","parseDateUnit","_year","validateWeekDate","isoWeekYear","fourthOfJanuaryDay","dayOfISOWeekYear","daysInMonths","validateDate","validateDayOfYearDate","parseDate","timeRegex","parseTimeUnit","validateTime","parseTime","timezoneString","timezoneRegex","_hours","validateTimezone","parseTimezone","setSeconds","setMilliseconds","dirtyHours","dirtyMinutes","dirtyMonth","dateWithDesiredMonth","daysInMonth","monthIndex","lastDayOfMonth","setQuarter","dirtyQuarter","dirtySeconds","setYear","dirtyYear","startOfMonth","currentMonth","startOfYear","cleanDate","subDays","subMonths","subQuarters","subWeeks","subYears","argStr","ownKeys","sym","BlockMapBuilder","CharacterMetadata","ContentBlock","ContentBlockNode","DraftModifier","generateRandomKey","gkx","Immutable","moveBlockInContentState","experimentalTreeDataSupport","ContentBlockRecord","Repeat","AtomicBlockUtils","insertAtomicBlock","entityKey","character","selectionState","getSelection","afterRemoval","removeRange","targetSelection","getSelectionAfter","afterSplit","splitBlock","insertionTarget","asAtomicBlock","setBlockType","charData","atomicBlockConfig","characterList","atomicDividerBlockConfig","nextSibling","prevSibling","fragmentArray","createFromArray","withAtomicBlock","replaceWithFragment","newContent","selectionBefore","selectionAfter","moveAtomicBlock","atomicBlock","targetRange","insertionMode","withMovedAtomicBlock","targetBlock","getBlockForKey","getStartKey","getEndKey","selectionAfterRemoval","_targetBlock","getFocusKey","getStartOffset","getEndOffset","getLength","selectionAfterSplit","_targetBlock2","exports","OrderedMap","blocks","block","findRangesImmutable","getOwnObjectValues","Record","returnTrue","LeafRange","DecoratorRange","decoratorKey","leaves","BlockTree","decorator","textLength","of","leafSets","decorations","getDecorations","getCharacterList","areEqual","generateLeaves","toList","excluded","sourceKeys","leaf","characters","inlineStyles","_require","OrderedSet","EMPTY_SET","defaultRecord","_CharacterMetadataRec","subClass","superClass","_proto","getEntity","hasStyle","applyStyle","record","withStyle","withoutStyle","applyEntity","withEntity","EMPTY","configMap","existing","pool","newCharacter","CompositeDraftDecorator","decorators","_decorators","strategy","canOccupySlice","targetArr","componentKey","occupySlice","getComponentForKey","getPropsForKey","_ContentBlockRecord","decorateCharacterList","getDepth","getData","getInlineStyleAt","getEntityAt","findStyleRanges","filterFn","haveEqualStyle","findEntityRanges","haveEqualEntity","charA","charB","getChildKeys","getParentKey","getPrevSiblingKey","getNextSiblingKey","DraftEntity","SelectionState","sanitizeDraftText","ImmutableMap","ContentStateRecord","entityMap","blockMap","ContentBlockNodeRecord","_ContentStateRecord","getEntityMap","getBlockMap","getSelectionBefore","getKeyBefore","keySeq","skipUntil","skip","getKeyAfter","getBlockAfter","getBlockBefore","getBlocksAsArray","getFirstBlock","getLastBlock","getPlainText","getLastCreatedEntityKey","__getLastCreatedEntityKey","hasText","createEntity","mutability","__create","mergeEntityData","toMerge","__mergeData","replaceEntityData","__replaceData","addEntity","instance","__add","__get","getAllEntities","__getAll","loadWithEntities","entities","__loadWithEntities","theBlocks","isEmpty","createFromText","createContentBlockFromJS","ContentStateInlineStyle","inlineStyle","modifyInlineStyle","addOrRemove","startKey","endKey","newBlocks","takeUntil","blockKey","sliceStart","sliceEnd","UserAgent","findAncestorOffsetKey","getWindowForNode","invariant","nullthrows","DOM_OBSERVER_OPTIONS","characterData","characterDataOldValue","USE_CHAR_DATA","isBrowser","DOMObserver","containerWindow","registerMutations","onCharData","Node","registerMutation","stopAndFlushMutations","getMutationTextContent","mutation","removedNodes","offsetKey","DefaultDraftBlockRenderMap","section","article","blockquote","atomic","unstyled","aliasedElements","BOLD","CODE","fontFamily","ITALIC","fontStyle","STRIKETHROUGH","textDecoration","UNDERLINE","DefaultDraftInlineStyle","DraftEditor","DraftEditorBlock","DraftEntityInstance","KeyBindingUtil","RawDraftContentState","RichTextEditorUtil","convertFromDraftStateToRaw","convertFromRawToDraftState","getDefaultKeyBinding","getVisibleSelectionRect","DraftPublic","EditorBlock","CompositeDecorator","Entity","EntityInstance","Modifier","RichUtils","convertFromHTML","convertFromRaw","genKey","_assign","_inheritsLoose","DraftEditorCompositionHandler","DraftEditorContents","DraftEditorDragHandler","DraftEditorEditHandler","flushControlled","DraftEditorPlaceholder","DraftEffects","Scroll","Style","getScrollPosition","isHTMLElement","allowSpellCheck","handlerMap","edit","composite","cut","didInitODS","UpdateDraftEditorFlags","_React$Component","_update","editor","_latestEditorState","_blockSelectEvents","_React$Component2","editorContainer","scrollPosition","alreadyHasFocus","getHasFocus","editorNode","scrollParent","getScrollParent","scrollTo","setTop","forceSelection","mode","_this$props","onPaste","onCut","onCopy","editHandler","_handler","setMode","contentsKey","clipboard","_clipboard","_dragCount","exitCurrentMode","_editorKey","editorKey","_placeholderAccessibilityID","_latestCommittedEditorState","_onBeforeInput","_buildHandler","_onBlur","_onCharacterData","_onCompositionEnd","_onCompositionStart","_onCopy","_onCut","_onDragEnd","_onDragOver","_onDragStart","_onDrop","_onInput","_onFocus","_onKeyDown","_onKeyPress","_onKeyUp","_onMouseDown","_onMouseUp","_onPaste","_onSelect","getEditorKey","_proto2","_showPlaceholder","isInCompositionMode","_renderPlaceholder","placeHolderProps","textAlignment","accessibilityID","_renderARIADescribedBy","ariaDescribedBy","placeholderID","_this$props2","blockRenderMap","blockRendererFn","blockStyleFn","customStyleFn","customStyleMap","preventScroll","textDirectionality","rootClass","ariaRole","ariaExpanded","editorContentsProps","_handleEditorContainerRef","ariaActiveDescendantID","ariaAutoComplete","ariaControls","ariaLabel","ariaLabelledBy","ariaMultiline","ariaOwneeID","autoCapitalize","autoComplete","autoCorrect","notranslate","contentEditable","webDriverTestID","onBeforeInput","onCompositionEnd","onCompositionStart","onDragEnter","onDragLeave","onDragOver","onDragStart","onDrop","onInput","onKeyPress","editorRef","spellCheck","userSelect","WebkitUserSelect","suppressContentEditableWarning","tabIndex","initODS","keyBindingFn","DraftEditorLeaf","DraftOffsetKey","UnicodeBidi","UnicodeBidiDirection","getElementPosition","getViewportDimensions","isBlockOnSelectionEdge","getAnchorKey","shouldComponentUpdate","nextProps","tree","blockNode","_node","scrollDelta","nodePosition","offsetTop","getTop","_renderChildren","lastLeafSet","hasSelection","leafSet","leavesForLeafSet","lastLeaf","jj","styleSet","isLast","DecoratorComponent","decoratorProps","decoratorOffsetKey","decoratedText","getHTMLDirIfDifferent","getDirection","commonProps","_this3","DraftEditorNode","getDraftRenderConfig","configForType","wrapperTemplate","getCustomRenderConfig","customRenderer","CustomComponent","customProps","customEditable","getElementPropsConfig","customConfig","elementProps","customClass","DraftEditorBlockNode","createRef","isContainerNode","blockHasChanged","wrapperRef","htmlBlockNode","_getDraftRenderConfig","childProps","getBlockTree","blockProps","nextSiblingKey","shouldNotAddWrapperElement","nodes","wrappedSiblings","_iteratorNormalCompletion","_didIteratorError","_iteratorError","sibling","childrenIs","cloneElement","applyWrapperElementToSiblings","Keys","editOnSelect","getContentEditableContainer","getDraftEditorSelection","getEntityKeyForSelection","resolved","stillComposing","domObserver","startDOMObserver","resolveComposition","_editor","RETURN","inCompositionMode","composedChars","_DraftOffsetKey$decod","decode","leafKey","_editorState$getBlock","getIn","replacementRange","anchorKey","focusKey","anchorOffset","focusOffset","isBackward","replaceText","currentContent","compositionEndSelectionState","restoreEditorDOM","editorStateWithUpdatedSelection","acceptSelection","joinClasses","getListItemClasses","shouldResetCount","prevEditorState","nextEditorState","getDirectionMap","nextNativeContent","getNativelyRenderedContent","wasComposing","nowComposing","prevContent","nextContent","prevDecorator","getDecorator","nextDecorator","mustForceSelection","directionMap","blocksAsArray","processedBlocks","currentDepth","lastWrapperTemplate","_block","blockType","componentProps","outputBlocks","_ii","wrapperElement","DraftEditorContentsExperimental","nodeBlock","nextBlockKey","DraftEditorDecoratedLeaves","DataTransfer","getCorrectDocumentFromNode","getTextContentFromFiles","getUpdatedSelectionState","isEventHandled","endDrag","nativeEvent","dataTransfer","dropSelection","eventTargetDocument","caretRangeFromPoint","dropRange","startContainer","rangeParent","rangeOffset","getSelectionForEvent","getFiles","handleDroppedFiles","fileText","insertTextAtSelection","dragType","_internalDrag","handleDrop","newContentState","moveText","mouseUpEvent","view","bubbles","dispatchEvent","insertText","getCurrentInlineStyle","isChrome","isFirefox","selectionHandler","unstable_flushControlled","DraftEditorTextNode","isHTMLBRElement","setDraftEditorSelection","_setSelection","hasEdgeWithin","targetNode","nodeType","TEXT_NODE","leafNode","styleObj","styleName","mergedStyles","newStyles","Leaves","hasFocus","useNewlineChar","_forceFlag","shouldBeNewline","elementNode","isNewline","NEWLINE_B","handleExtensionCausedError","uuid","instances","instanceKey","logWarning","oldMethodCall","newMethodCall","replaceData","newInstance","_DraftEntityInstanceR","getMutability","getRemovalRange","entityStart","segmentEnd","segmentStart","removalStart","removalEnd","entityEnd","atStart","atEnd","logBlockedSelectionEvent","logSelectionStateFailure","applyEntityToContentState","getCharacterRemovalRange","getContentStateFragment","insertFragmentIntoContentState","insertTextIntoContentState","modifyBlockForContentState","removeEntitiesAtEdges","removeRangeFromContentState","splitBlockInContentState","rangeToReplace","withoutEntities","withoutText","isCollapsed","removalRange","movedFragment","mergeBlockData","rangeToRemove","removalDirection","startBlock","endBlock","getIsBackward","getFocusOffset","getAnchorOffset","startEntityKey","endEntityKey","adjustedRemovalRange","applyInlineStyle","removeInlineStyle","setBlockData","blockData","KEY_DELIMITER","_offsetKey$split$reve","convertFromHTMLToContentBlocks","getSafeBodyFromHTML","DraftPasteProcessor","processHTML","processText","textBlocks","textLine","blockNodeConfig","prevSiblingIndex","CHAMELEON_CHARS","WHITESPACE_AND_PUNCTUATION","getPunctuation","DELETE_REGEX","BACKSPACE_REGEX","getRemovableWord","DraftRemovableWord","getBackward","getForward","DraftStringKey","unstringify","isListBlock","DraftTreeAdapter","fromRawTreeStateToRawState","draftTreeState","transformedBlocks","traverseInDepthOrder","newBlock","addDepthToChildren","fromRawStateToRawTreeState","draftState","parentStack","isList","treeBlock","lastParent","newParent","entityRanges","inlineStyleRanges","isValidBlock","parentKey","prevSiblingKey","isConnectedTree","eligibleFirstNodes","nodesSeen","currentKey","visitedStack","currentNode","childKeys","_firstNode","isValidTree","bidiService","UnicodeBidiService","EditorBidiService","prevBidiMap","nextBidi","valueSeq","bidiMap","zip","Stack","EditorStateRecord","allowUndo","inlineStyleOverride","lastChangeType","nativelyRenderedContent","redoStack","treeMap","undoStack","createWithText","recordConfig","generateNewTreeMap","put","getImmutable","withMutations","existingDecorator","newTreeMap","previousTreeMap","toSeq","regenerateTreeForNewDecorator","newBlockMap","newEntityMap","prevBlockMap","prevTreeMap","regenerateTreeForNewBlocks","immutable","_immutable","toJS","getAllowUndo","getUndoStack","getRedoStack","getLastChangeType","getInlineStyleOverride","setInlineStyleOverride","override","lookUpwardForInlineStyle","getInlineStyleForCollapsedSelection","getInlineStyleForNonCollapsedSelection","isSelectionAtStartOfContent","isSelectionAtEndOfContent","updateSelection","moveSelectionToEnd","lastBlock","lastKey","moveFocusToEnd","afterSelectionMove","changeType","mustBecomeBoundary","editorStateChanges","undo","newCurrentContent","peek","redo","toOrderedMap","fromKey","lastNonEmpty","isSoftNewlineEvent","isOSX","isPlatform","isCtrlKeyCommand","isOptionKeyCommand","usesMacOSHeuristics","hasCommandModifier","adjustBlockDepthForContentState","currentBlockContainsLink","getCurrentBlockType","getDataObjectForLinkURL","handleKeyCommand","command","eventTimeStamp","toggleInlineStyle","toggleCode","onBackspace","insertSoftNewline","blockBefore","withoutAtomicBlock","withoutBlockStyle","tryToRemoveBlockStyle","blockAfter","atomicBlockTarget","onTab","maxDepth","withAdjustment","toggleBlockType","skipWhile","typeToSet","toggleLink","withoutLink","SecondaryClipboard","blockEnd","keyAfter","paste","_SelectionStateRecord","serialize","offsetToCheck","adjustment","startArg","applyEntityToContentBlock","encodeEntityRanges","encodeInlineStyleRanges","createRawBlock","entityStorageMap","toObject","insertRawBlock","rawBlocks","blockCacheRef","rawBlock","rawDraftContentState","rawState","entityCacheRef","entityStorageKey","stringifiedEntityKey","encodeRawBlocks","rawEntityMap","encodeRawEntityMap","_knownListItemDepthCl","URI","isHTMLAnchorElement","isHTMLImageElement","REGEX_CR","REGEX_LF","REGEX_LEADING_LF","REGEX_NBSP","REGEX_CARRIAGE","REGEX_ZWS","boldValues","notBoldValues","anchorAttr","imgAttr","knownListItemDepthClasses","HTMLTagToRawInlineStyleMap","del","em","strike","strong","detectInlineStyle","getListItemDepth","depthClass","isValidAnchor","anchorNode","isValidImage","imageNode","getNamedItem","styleFromNodeAttributes","isListNode","nodeName","ContentBlocksBuilder","blockTypeMap","disambiguate","blockConfigs","currentBlockType","currentEntity","addDOMNode","_this$blockConfigs","_toBlockConfigs","_trimCurrentText","_makeBlockConfig","getContentBlocks","_toContentBlocks","_toFlatContentBlocks","childConfigs","wasCurrentDepth","wasWrapper","_addImgNode","_addAnchorNode","newStyle","_addBreakNode","_addTextNode","_wasCurrentDepth","_wasWrapper","_appendText","_this$characterList","characterMetadata","begin","trimLeft","trimRight","findEntry","entityConfig","imageAttribute","anchor","anchorAttribute","_hoistContainersInBlockConfigs","flatMap","blockConfig","_this2$_extractTextFr","_extractTextFromBlockConfigs","safeBody","mapKeys","buildBlockTypeMap","createCharacterList","decodeEntityRanges","decodeInlineStyleRanges","decodeBlockNodeConfig","decodeCharacterList","rawEntityRanges","rawInlineStyleRanges","addKeyIfMissing","updateNodeStack","parentRef","nodesWithParentRef","decodeRawBlocks","isTreeRawBlock","decodeContentBlocks","contentBlockNode","_contentBlockNode","decodeContentBlockNodes","rawEntityKey","_rawEntityMap$rawEnti","decodeRawEntityMap","characterArray","ranges","UnicodeUtils","notEmptyKey","isSelectionAtLeafStart","setImmediate","_pendingStateFromBeforeInput","handleBeforeInput","mustPreventNative","oldBlockTree","newBlockTree","oldLeafSet","newLeafSet","oldStart","adjustedStart","oldEnd","adjustedEnd","newDecoratorKey","containsNode","getActiveElement","preserveSelectionOnBlur","_selection","rangeCount","focusNode","removeAllRanges","currentSelection","getFragmentFromSelection","setClipboard","isNode","removeFragment","keyCommandPlainBackspace","isGecko","isEngine","domSelection","isNotTextOrElementNode","ELEMENT_NODE","nodeValue","domText","modelText","preserveEntity","charDelta","contentWithAdjustedDOMSelection","inputType","onInputType","keyCommandBackspaceToStartOfLine","keyCommandBackspaceWord","keyCommandDeleteWord","keyCommandInsertNewline","keyCommandMoveSelectionToEndOfBlock","keyCommandMoveSelectionToStartOfBlock","keyCommandPlainDelete","keyCommandTransposeCharacters","keyCommandUndo","callDeprecatedHandler","handlerName","deprecatedHandler","handleReturn","ESC","TAB","UP","DOWN","SPACE","onKeyCommand","splitTextIntoTextBlocks","insertFragment","clipboardData","isRichText","defaultFileText","handlePastedFiles","withInsertedText","formatPastedText","_editor$props$formatP","handlePastedText","_html","internalClipboard","getClipboard","areTextBlocksAndClipboardEqual","htmlFragment","htmlMap","textFragment","textMap","DraftJsDebugLogging","anonymizedDom","extraParams","documentSelection","updatedSelectionState","needsRecovery","strlen","storageMap","encoded","isTruthy","EMPTY_ARRAY","styleList","toSet","styleToEncode","filteredInlines","getEncodedInlinesForType","getRangeClientRects","areRectsOnOneLine","rects","lineHeight","minTop","minBottom","getNodeLength","DOCUMENT_TYPE_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","collapsed","containingElement","cloneRange","computed","correctDocument","documentBody","getLineHeightPx","bestContainer","endContainer","bestOffset","setStart","setStartBefore","currentContainer","maxIndexToConsider","isSurrogatePair","getSelectionOffsetKeyForNode","searchNode","haystack","areEqualFn","foundFn","nextValue","nextIndex","seenKeys","MULTIPLIER","DraftEntitySegments","getRangesForDraftEntity","getEntityRemovalRange","isEntireSelectionWithinEntity","isEntityAtStart","sideToConsider","entityRange","newSelectionState","startSelectionState","endSelectionState","_startSelectionState","_endSelectionState","randomizeBlockMapKeys","blockKeys","shouldFixFirefoxMovement","shouldRemoveWord","getZCommand","DELETE","getDeleteCommand","BACKSPACE","getBackspaceCommand","getDraftEditorSelectionWithNodes","getPointForNonTextNode","editorRoot","startNode","childOffset","firstLeaf","getFirstLeaf","nodeBeforeCursor","getLastLeaf","getTextContentLength","anchorIsTextNode","focusIsTextNode","anchorPoint","focusPoint","filterKey","nextNonDescendantBlock","_rects$","_rects$2","tempRange","clientRects","ancestor","atCommonAncestor","commonAncestorContainer","getClientRects","setEndBefore","isOldIE","createHTMLDocument","castedNode","childOffsetKey","TEXT_CLIPPING_REGEX","TEXT_TYPES","readCount","results","_contents","readFile","anchorPath","anchorBlockKey","anchorLeafBlockTree","anchorLeaf","focusPath","focusBlockKey","focusLeafBlockTree","focusLeaf","anchorLeafStart","focusLeafStart","anchorBlockOffset","focusBlockOffset","anchorLeafEnd","focusLeafEnd","getRangeBoundingClientRect","getRangeAt","__DRAFT_GKX","insertIntoList","targetKey","targetOffset","isTreeBasedBlockMap","newBlockArr","fragmentSize","tail","finalOffset","finalKey","shouldNotUpdateFromFragmentBlock","headText","headCharacters","appendToHead","updateHead","fragmentBlock","blockSize","tailText","tailCharacters","prependToTail","updateTail","updatedBlockMap","originalBlockMap","fragmentHeadBlock","blockMapState","headKey","targetNextKey","targetParentKey","fragmentRootBlocks","rootBlock","rootBlocks","lastSiblingKey","getRootBlocks","lastRootFragmentBlockKey","setIn","originalTargetParentChildKeys","insertionIndex","newChildrenKeysArray","updateBlockMapLinks","fragmentBlockMap","updateExistingBlock","targetListArg","toInsert","blockText","blockTree","isAtStart","leafStart","getModifierState","expandRangeToStartOfLine","moveSelectionBackward","removeTextWithStrategy","strategyState","toRemove","moveSelectionForward","charBehind","getUTF16Length","charAhead","finalSelection","afterInsert","updateFn","undoneState","getNextDelimiterBlockKey","transformBlock","originalBlockToBeMoved","originalTargetBlock","isExperimentalTreeBlock","isInsertedAfterTarget","originalBlockKey","originalTargetKey","originalParentKey","originalNextSiblingKey","originalPrevSiblingKey","newParentKey","newNextSiblingKey","newPrevSiblingKey","parentChildrenList","newParentChildrenList","targetBlockIndex","newChildrenArray","blockToBeMoved","blocksToBeMoved","blockMapWithoutBlocksToBeMoved","nextDelimiterBlockKey","takeWhile","isBlockToBeMoved","hasNextSiblingAndIsNotNextSibling","doesNotHaveNextSiblingAndIsNotDelimiter","blocksBefore","blocksAfter","slicedBlocks","maxDistance","keyBefore","lastRootBlock","newKeysRef","oldKey","nextKey","prevKey","childrenKeys","childKey","randomizeContentBlockNodeKeys","randomizeContentBlockKeys","removeForBlock","charBefore","charAfter","entityBeforeCursor","entityAfterCursor","_getRemovalRange","updatedBlocks","updatedStart","updatedEnd","getAncestorsKeys","parents","getNextValidSibling","nextValidSiblingKey","getPrevValidSibling","prevValidSiblingKey","nextDelimiters","nextDelimiter","getNextDelimitersBlockKeys","delimiterKey","removeFromList","parentAncestors","endBlockchildrenKeys","endBlockAncestors","modifiedStart","anchorBlock","anchorBlockSibling","REGEX_BLOCK_DELIMITER","getAnonymizedDOM","getNodeLabels","anonymized","anonymizeTextWithin","outerHTML","labels","cloneNode","getAnonymizedEditorDOM","hasAttribute","addFocusToSelection","activeElement","nodeWasFocus","activeElementName","nodeIsFocus","selectionRangeCount","selectionAnchorNodeName","selectionAnchorOffset","selectionFocusNodeName","selectionFocusOffset","setEnd","addRange","addPointToSelection","createRange","nodeStart","nodeEnd","documentObject","tempKey","tempOffset","hasAnchor","storedFocusNode","storedFocusOffset","blockToSplit","keyBelow","blockAbove","blockBelow","originalBlock","belowBlock","belowBlockKey","NEWLINE_REGEX","isEmptyString","blockTypesMapping","getBlockTag","getBlockStyle","getHashtagRanges","hashtagConfig","sections","hashtag","getSections","lastOffset","sectionRanges","s1","s2","isAtomicEntityBlock","getStyleArrayForBlock","SUPERSCRIPT","SUBSCRIPT","COLOR","BGCOLOR","FONTSIZE","FONTFAMILY","getStylesAtOffset","sameStyleAsPrevious","sameStyled","addInlineStyleMarkup","getSectionText","addStylePropertyMarkup","styleString","getEntityMarkup","customEntityTransform","targetOption","alignment","alt","getInlineStyleSections","styleSections","trimLeadingZeros","sectionText","replacedText","trimTrailingZeros","getStyleTagSectionMarkup","styleSection","getInlineStyleSectionMarkup","styleTagSections","styleSectionText","stylePropertySection","getSectionMarkup","entityInlineMarkup","getBlockInnerMarkup","blockMarkup","getBlockMarkup","directional","blockHtml","blockTag","blockStyle","getListMarkup","listBlocks","previousBlock","listHtml","nestedListBlock","nestedBlock","editorContent","factory","PhotosMimeType","createArrayFromMixed","emptyFunction","CR_LF_REGEX","RICH_TEXT_TYPES","getFileFromDataTransfer","kind","getAsFile","getLink","getCount","mozItemCount","thatReturnsArgument","hasFiles","ALT","PAGE_UP","PAGE_DOWN","END","HOME","COMMA","PERIOD","A","Z","ZERO","NUMPAD_0","NUMPAD_9","mimeString","getParts","isJpeg","_isViewportScrollElement","newTop","getLeft","setLeft","newLeft","_isNodeScrollable","parentWindow","_uri","RANGE_BY_BIDI_TYPE","REGEX_STRONG","REGEX_RTL","firstStrongChar","firstStrongCharDir","strongChar","NEUTRAL","RTL","LTR","resolveBlockDir","blockDir","strongFallback","getGlobalDir","isStrong","isDirectionLTR","isDirectionRTL","globalDir","getHTMLDir","setGlobalDir","otherDir","initGlobalDir","defaultDir","_defaultDir","_lastDir","SURROGATE_UNITS_REGEX","isCodeUnitInSurrogateRange","codeUnit","hasSurrogateUnit","pos","posA","posB","getCodePoints","codePoints","codePointAt","UserAgentData","VersionRange","mapObject","memoizeStringOnly","compare","normalizer","normalizePlatformVersion","platformName","browserName","browserFullVersion","isBrowserArchitecture","browserArchitecture","isDevice","deviceName","engineName","engineVersion","platformFullVersion","isPlatformArchitecture","platformArchitecture","UAParser","UNKNOWN","PLATFORM_MAP","getResult","browserVersionData","minor","getBrowserVersion","browser","uaData","cpu","architecture","browserMinorVersion","browserVersion","device","engine","os","platformVersion","componentRegex","orRegex","rangeRegex","modifierRegex","numericRegex","checkOrExpression","expressions","checkSimpleExpression","startVersion","endVersion","isSimpleVersion","checkRangeExpression","versionComponents","_getModifierAndCompon","getModifierAndComponents","rangeComponents","checkLessThan","compareComponents","checkLessThanOrEqual","checkGreaterThanOrEqual","lowerBound","upperBound","lastIndex","numeric","checkApproximateVersion","checkEqual","zeroPad","compareNumeric","aPrefix","bPrefix","aNumeric","bNumeric","_normalizeVersions","normalizeVersions","aNormalized","bNormalized","_hyphenPattern","isTextNode","outerNode","innerNode","compareDocumentPosition","hasArrayNature","callee","ret","makeEmptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","isWebkit","scrollingElement","compatMode","getElementRect","docElem","clientLeft","clientTop","getDocumentScrollElement","getUnboundedScrollPosition","scrollable","documentScrollElement","Window","viewport","xMax","yMax","camelize","hyphenate","asString","cssFloat","styleFloat","pageYOffset","getViewportWidth","getViewportHeight","withoutScrollbars","_uppercasePattern","validateFormat","condition","argIndex","newClassName","argLength","nextClass","autoBom","createEvent","initMouseEvent","saveAs","HTMLAnchorElement","safari","onloadend","isAbsolute","spliceOne","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","valueEqual","aValue","bValue","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","resolvePathname","locationsAreEqual","createTransitionManager","listeners","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","ua","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toLocation","allKeys","fromIndex","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","prevIndex","nextKeys","goForward","unblock","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","baseTag","pushHashPath","nextPaths","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextEntries","canGo","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","Memo","getOwnPropertyNames","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","inlines","ins","sub","sup","mention","HTMLImageElement","float","HTMLVideoElement","HTMLIFrameElement","toOrderedSet","toStringTag","__esModule","SLICE$0","createClass","ctor","Iterable","isIterable","Seq","KeyedIterable","isKeyed","KeyedSeq","isIndexed","IndexedSeq","SetIterable","isAssociative","SetSeq","maybeIterable","IS_ITERABLE_SENTINEL","maybeKeyed","IS_KEYED_SENTINEL","maybeIndexed","IS_INDEXED_SENTINEL","maybeAssociative","isOrdered","maybeOrdered","IS_ORDERED_SENTINEL","Keyed","Indexed","SHIFT","SIZE","MASK","NOT_SET","CHANGE_LENGTH","DID_ALTER","MakeRef","SetRef","OwnerID","arrCopy","newArr","ensureSize","__iterate","wrapIndex","uint32Index","wholeSlice","resolveBegin","resolveIndex","resolveEnd","defaultIndex","ITERATE_KEYS","ITERATE_VALUES","ITERATE_ENTRIES","REAL_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","ITERATOR_SYMBOL","Iterator","iteratorValue","iteratorResult","iteratorDone","hasIterator","getIteratorFn","isIterator","maybeIterator","getIterator","iterable","iteratorFn","isArrayLike","emptySequence","seqFromValue","toKeyedSeq","fromEntrySeq","keyedSeqFromValue","entrySeq","toIndexedSeq","indexedSeqFromValue","toSetSeq","KEYS","VALUES","ENTRIES","inspect","toSource","__toString","cacheResult","_cache","__iterateUncached","seqIterate","__iterator","seqIterator","isSeq","EMPTY_SEQ","EMPTY_REPEAT","EMPTY_RANGE","IS_SEQ_SENTINEL","ArraySeq","ObjectSeq","_object","IterableSeq","_iterable","IteratorSeq","_iteratorCache","maybeSeq","seq","maybeIndexedSeqFromValue","useKeys","maxIndex","__iteratorUncached","converter","fromJSWith","fromJSDefault","parentJSON","isPlainObj","toMap","valueA","valueB","equals","deepEqual","__hash","notAssociative","flipped","allEqual","bSize","Range","KeyedCollection","IndexedCollection","SetCollection","notSetValue","iterations","this$0","possibleIndex","offsetValue","imul","smi","i32","STRING_HASH_CACHE_MIN_STRLEN","cachedHashString","hashString","hashCode","hashJSObj","stringHashCache","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","getIENodeHash","objHashUID","isExtensible","uniqueID","assertNotInfinite","emptyMap","isMap","maybeMap","IS_MAP_SENTINEL","_root","updateMap","keyPath","updateIn","deleteIn","updater","updatedValue","updateInDeepMap","forceIterator","__ownerID","__altered","mergeIntoMapWith","mergeWith","merger","mergeIn","iters","mergeDeep","deepMerger","mergeDeepWith","deepMergerWith","mergeDeepIn","comparator","sortFactory","sortBy","mapper","mutable","asMutable","wasAltered","__ensureOwner","asImmutable","MapIterator","iterate","ownerID","makeMap","EMPTY_MAP","MapPrototype","ArrayMapNode","BitmapIndexedNode","bitmap","HashArrayMapNode","HashCollisionNode","keyHash","ValueNode","_type","_reverse","mapIteratorFrame","mapIteratorValue","__prev","newRoot","newSize","didChangeSize","didAlter","updateNode","isLeafNode","mergeIntoNode","newNode","idx1","idx2","createNodes","packNodes","excluding","packedII","packedNodes","bit","expandNodes","including","expandedNodes","iterables","mergeIntoCollectionWith","mergeIntoMap","keyPathIter","isNotSet","existingValue","nextExisting","nextUpdated","popCount","canEdit","spliceIn","newLen","spliceOut","removeIn","MAX_ARRAY_MAP_SIZE","isEditable","newEntries","keyHashFrag","MAX_BITMAP_INDEXED_SIZE","newBitmap","newNodes","MIN_HASH_ARRAY_MAP_SIZE","keyMatch","subNode","emptyList","makeList","VNode","setSize","maybeList","IS_LIST_SENTINEL","listNodeFor","_origin","updateList","_capacity","_tail","oldSize","setListBounds","mergeIntoListWith","iterateList","DONE","ListPrototype","removeBefore","originIndex","newChild","removingFirst","oldChild","editableVNode","removeAfter","sizeIndex","EMPTY_LIST","EMPTY_ORDERED_MAP","tailPos","getTailOffset","iterateNodeOrLeaf","iterateLeaf","iterateNode","capacity","newTail","updateVNode","nodeHas","lowerNode","newLowerNode","rawIndex","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","emptyOrderedMap","isOrderedMap","maybeOrderedMap","makeOrderedMap","omap","updateOrderedMap","newMap","newList","flip","ToKeyedSequence","_iter","_useKeys","ToIndexedSequence","ToSetSequence","FromEntriesSequence","flipFactory","flipSequence","makeSequence","reversedSequence","cacheResultThrough","mapFactory","mappedSequence","reverseFactory","filterFactory","filterSequence","countByFactory","grouper","groupByFactory","isKeyedIter","coerce","iterableClass","reify","sliceFactory","originalSize","resolvedBegin","resolvedEnd","sliceSize","resolvedSize","sliceSeq","skipped","isSkipping","takeWhileFactory","takeSequence","iterating","skipWhileFactory","skipSequence","skipping","concatFactory","isKeyedIterable","singleton","concatSeq","flattenFactory","flatSequence","stopped","flatDeep","flatMapFactory","interposeFactory","interposedSequence","defaultComparator","maxFactory","maxCompare","comp","zipWithFactory","keyIter","zipper","zipSequence","iterators","isDone","steps","validateEntry","resolveSize","defaultValues","hasInitialized","RecordType","setProps","RecordTypePrototype","_defaultValues","RecordPrototype","indexedIterable","recordName","defaultVal","_empty","makeRecord","likeRecord","setProp","emptySet","isSet","maybeSet","IS_SET_SENTINEL","fromKeys","updateSet","union","originalSet","subtract","__make","SetPrototype","__empty","makeSet","emptyOrderedSet","isOrderedSet","maybeOrderedSet","EMPTY_ORDERED_SET","OrderedSetPrototype","makeOrderedSet","emptyStack","isStack","unshiftAll","maybeStack","IS_STACK_SENTINEL","_head","makeStack","EMPTY_STACK","StackPrototype","mixin","keyCopier","__toJS","toStack","__toStringMapper","findLastEntry","sideEffect","joined","isFirst","initialReduction","reduction","useFirst","reduceRight","reversed","not","butLast","countBy","entriesSequence","entryMapper","filterNot","findLast","searchKey","searchKeyPath","nested","groupBy","hasIn","isSubset","isSuperset","keyMapper","maxBy","neg","defaultNegComparator","minBy","skipLast","take","takeLast","hashIterable","IterablePrototype","quoteString","chain","noLengthWarning","findLastKey","keyOf","lastKeyOf","mapEntries","KeyedIterablePrototype","defaultZipper","keyed","murmurHashOfSize","hashMerge","removeNum","numArgs","spliced","findLastIndex","interpose","interleave","zipped","interleaved","zipWith","propIsEnumerable","test1","test2","fromCharCode","test3","letter","shouldUseNative","symbols","assertPath","normalizeStringPosix","allowAboveRoot","lastSegmentLength","lastSlash","dots","lastSlashIndex","posix","resolvedPath","resolvedAbsolute","trailingSeparator","fromStart","fromEnd","fromLen","toStart","toLen","lastCommonSep","fromCode","_makeLong","dirname","hasRoot","matchedSlash","ext","extIdx","firstNonSlashEnd","extname","startDot","startPart","preDotState","pathObject","_format","win32","isarray","pathToRegexp","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","asterisk","partial","optional","prevText","escapeGroup","restrictBacktrack","escapeString","encodeURIComponentPretty","pretty","attachKeys","re","sensitive","strict","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","ReactPropTypesSecret","emptyFunctionWithReset","resetWarningCache","shim","propFullName","secret","getShim","ReactPropTypes","bigint","bool","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","ReactReduxContext","batch","getBatch","nullListeners","notify","createSubscription","parentSub","handleChangeWrapper","onStateChange","trySubscribe","addNestedSub","isSubscribed","createListenerCollection","notifyNestedSubs","tryUnsubscribe","getListeners","useIsomorphicLayoutEffect","contextValue","previousState","Context","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","updateCount","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","dependencies","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","actualChildProps","childPropsFromStoreUpdate","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","initStateUpdates","connectAdvanced","selectorFactory","_ref2$getDisplayName","getDisplayName","_ref2$methodName","methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","_ref2$storeKey","storeKey","_ref2$forwardRef","withRef","_ref2$context","connectOptions","WrappedComponent","wrappedComponentName","selectorFactoryOptions","pure","usePureOnlyMemo","ConnectFunction","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","Consumer","isContextConsumer","didStoreComeFromProps","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","previousStateUpdateResult","renderedWrappedComponent","Connect","forwarded","hoistStatics","shallowEqual","objA","objB","keysA","keysB","wrapMapToPropsConstant","getConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","actionCreators","boundActionCreators","actionCreator","bindActionCreators","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextOwnProps","propsChanged","stateChanged","nextStateProps","statePropsChanged","handleNewState","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","factories","strictEqual","createConnect","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","defaultMapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","defaultMapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","defaultMergePropsFactories","_ref$selectorFactory","defaultSelectorFactory","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","newBatch","useMemoOne","inputs","isFirstRun","committed","newInputs","lastInputs","areInputsEqual","getRect","expandBy","shrinkBy","noSpacing","createBox","borderBox","_ref2$margin","_ref2$border","border","_ref2$padding","marginBox","paddingBox","contentBox","raw","change","shiftBy","shifted","withScroll","calculateBox","getBox","safeIsNaN","resultFn","lastThis","lastResult","lastArgs","calledOnce","newArgs","frameId","wrapperFn","cancelAnimationFrame","bindEvents","bindings","sharedOptions","unbindings","binding","shared","fromBinding","unbind","isProduction$1","RbdInvariant","onWindowError","getCallbacks","tryAbort","setCallbacks","withLocation","isInHomeList","startPosition","endPosition","withCombine","combine","returnedToStart","preset","dragHandleUsageInstructions","onDragUpdate","negate","otherValue","offsetByPosition","spacing","getCorners","clip","shouldClipSubject","executeClip","pageMarginBox","getSubject","page","withPlaceholder","axis","scrolled","displacement","increased","_extends2","increasedBy","increase","scrollDroppable","droppable","newScroll","scrollDiff","scrollDisplacement","toDroppableMap","memoizeOne","droppables","previous","toDraggableMap","draggables","toDroppableList","toDraggableList","getDraggablesInsideDroppable","tryGetDestination","tryGetCombine","removeDraggableFromList","isHomeOf","noDisplacedBy","emptyGroups","invisible","noImpact","displaced","displacedBy","isWithin","isPartiallyVisibleThroughFrame","isWithinVertical","isWithinHorizontal","isPartiallyVisibleVertically","isPartiallyVisibleHorizontally","isBiggerVertically","isBiggerHorizontally","isTotallyVisibleThroughFrame","vertical","crossAxisLine","crossAxisStart","crossAxisEnd","crossAxisSize","horizontal","isVisible","toBeDisplaced","withDroppableDisplacement","isVisibleThroughFrameFn","displacedTarget","getDroppableDisplaced","isVisibleInDroppable","isVisibleInViewport","isPartiallyVisible","isTotallyVisible","getDisplacementGroups","afterDragging","forceShouldAnimate","getTarget","shouldAnimate","getShouldAnimate","goAtEnd","insideDestination","inHomeList","newIndex","indexOfLastItem","getIndexOfLastItem","calculateReorderImpact","withoutDragging","sliceFrom","didStartAfterCritical","afterCritical","effected","moveToNextIndex","isMovingForward","previousImpact","wasAt","_newIndex","proposedIndex","firstIndex","fromReorder","isCombineEnabled","combineId","combineWithIndex","fromCombine","whenCombining","combineWith","displaceBy","isDisplaced","getCombinedItemDisplacement","distanceFromStartToBorderBoxCenter","box","getCrossAxisBorderBoxCenter","isMoving","goAfter","moveRelativeTo","goBefore","distanceFromEndToBorderBoxCenter","whenReordering","draggablePage","moveInto","goIntoStart","closestAfter","withDisplacement","getPageBorderBoxCenterFromImpact","withoutDisplacement","getResultWithoutDroppableDisplacement","scrollViewport","getDraggables","getClientFromPageBorderBoxCenter","pageBorderBoxCenter","withoutPageScrollChange","withViewportDisplacement","isTotallyVisibleInNewLocation","newPageBorderBoxCenter","_ref$onlyOnMainAxis","onlyOnMainAxis","changeNeeded","isTotallyVisibleOnAxis","moveToNextPlace","previousPageBorderBoxCenter","previousClientSelection","getImpact","closestId","withoutDraggable","indexOfClosest","moveToNextCombine","clientSelection","scrollJumpRequest","cautious","maxScrollChange","scrolledViewport","scrolledDroppable","withViewportScroll","withDroppableScroll","tryGetVisible","speculativelyIncrease","getKnownActive","getCurrentPageBorderBoxCenter","getCurrentPageBorderBox","getDisplacedBy","withMaxScroll","addPlaceholder","placeholderSize","requiredGrowth","availableSpace","needsToGrowBy","dimension","getRequiredGrowthForPlaceholder","oldFrameMaxScroll","_subject","maxScroll","newFrame","moveCrossAxis","isOver","isBetweenSourceClipped","candidates","activeOfTarget","isBetweenDestinationClipped","isWithinDroppable","getBestCrossAxisDroppable","sorted","distanceToA","distanceToB","getClosestDraggable","proposed","proposedPageBorderBoxCenter","isGoingBeforeTarget","relativeTo","moveToNewDroppable","whatIsDraggedOver","moveInDirection","isActuallyOver","getDroppableOver","dimensions","isMainAxisMovementAllowed","home","critical","isMovingOnMainAxis","borderBoxCenter","_state$dimensions","isMovementAllowed","phase","isPositionInFrame","getDroppableOver$1","pageBorderBox","childCenter","isContained","isStartContained","isEndContained","startCenter","candidate","getFurthestAway","offsetRectByPosition","getIsDisplaced","getDragImpact","pageOffset","destinationId","pageBorderBoxWithDroppableScroll","targetRect","targetStart","targetEnd","childRect","didStartAfterCritical$1","getCombineImpact","atIndex","getReorderImpact","patchDroppableMap","updated","clearUnusedPlaceholder","lastDroppable","_subject2","oldMaxScroll","removePlaceholder","forcedClientSelection","forcedDimensions","forcedViewport","forcedImpact","newImpact","withUpdatedPlaceholders","cleaned","patched","recomputePlaceholders","recompute","getDraggables$1","getClientBorderBoxCenter","refreshSnap","movementMode","needsVisibilityCheck","getLiftEffect","insideHome","inVirtualList","adjustAdditionsForScrollChanges","additions","updatedDroppables","windowScrollChange","getFrame","droppableScrollChange","offset$1","initialWindowScroll","offsetDraggable","isSnapping","postDroppableChange","isEnabledChanging","patchDimensionMap","removeScrollJumpRequest","idle","completed","shouldFlush","_action$payload","isWindowScrollAllowed","isFixedOnPage","_getLiftEffect","onLiftImpact","published","withScrollChange","modified","updatedAdditions","removals","wasOverId","wasOver","draggingState","isWaiting","publishWhileDraggingInVirtual","_clientSelection","_action$payload2","_action$payload3","_target","_action$payload4","_id2","_target2","_updated","_newScroll","_viewport","_result2","_action$payload5","dropDuration","newHomeClientOffset","lift","publishWhileDragging","collectionStarting","updateDroppableScroll","updateDroppableIsEnabled","updateDroppableIsCombineEnabled","moveUp","moveDown","moveRight","moveLeft","completeDrop","dropAnimationFinished","curves","combining","outOfTheWayTiming","transitions","fluid","snap","outOfTheWay","transforms","isCombining","minDropTime","maxDropTime","dropTimeRange","drop$1","_getDropImpact","lastImpact","didDropInsideDroppable","getDropImpact","newClientCenter","getNewHomeClientOffset","distance$1","getDropDuration","animateDrop","dropPending","getWindowScroll","getScrollListener","onWindowScroll","scheduled","rafSchd","getWindowScrollBinding","scrollListener","shouldEnd","getAsyncMarshal","timerId","execute","shallow","withTimings","getDragStart","responder","announce","getDefaultMessage","willExpire","wasCalled","isExpired","timeoutId","getExpiringAnnounce","responders","getResponders","publisher","asyncMarshal","onBeforeCapture","beforeStart","onBeforeDragStart","lastCritical","lastCombine","hasCriticalChanged","isDraggableEqual","isDroppableEqual","isCriticalEqual","hasLocationChanged","hasGroupingChanged","isCombineEqual","abort","getPublisher","dropAnimationFinish","dropAnimationFlushOnScroll","pendingDrop","postActionState","composeEnhancers","compose","marshal","dimensionMarshal","focusMarshal","styleMarshal","autoScroller","createStore$1","applyMiddleware","dropping","resting","stopPublishing","dimensionMarshalStopper","scrollOptions","shouldPublishImmediately","_marshal$startPublish","startPublishing","lift$1","shouldStop","autoScroll","isWatching","tryRecordFocus","tryRestoreFocusRecorded","tryShiftRecord","getMaxScroll","getDocumentElement","getMaxWindowScroll","getInitialPublish","getViewport","windowScroll","getAllByType","getDimensionAndWatchScroll","getDimension","shouldPublishUpdate","getById","createDimensionMarshal","staging","collect","_staging","getScrollWhileDragging","publish","createPublisher","subscriber","dragStopped","canStartDrag","scrollWindow","scrollBy","getScrollableDroppables","getBestScrollableDroppable","_dimension","maybe","getScrollableDroppableOver","percentage","stopDampeningAt","accelerateAt","getPercentage","startOfRange","endOfRange","stopAt","distanceToEdge","thresholds","dragStartTime","shouldUseTimeDampening","startScrollingFrom","maxScrollValueAt","percentageFromMaxScrollValueAt","getValueFromDistance","proposedScroll","runTime","betweenAccelerateAtAndStopAtPercentage","dampenValueByTime","getScrollOnAxis","distanceToEdges","getDistanceThresholds","clean$2","getScroll","limited","isTooBigVertically","isTooBigHorizontally","adjustForSizeLimits","smallestSigned","getOverlap","getRemainder","targetScroll","overlap","canPartiallyScroll","rawMax","smallestChange","canScrollWindow","canScrollDroppable","scroll$1","_change","getWindowScrollChange","getDroppableScrollChange","createJumpScroller","scrollDroppableAsMuchAsItCan","getDroppableOverlap","whatTheDroppableCanScroll","scrollWindowAsMuchAsItCan","getWindowOverlap","whatTheWindowCanScroll","droppableRemainder","windowRemainder","moveByOffset","createAutoScroller","fluidScroller","scheduleWindowScroll","scheduleDroppableScroll","tryScroll","_dragging","wasScrollNeeded","fakeScrollCallback","createFluidScroller","jumpScroll","prefix$1","dragHandle","contextId","scrollContainer","getStyles","getStyles$1","getSelector","dragHandle$1","grabCursor","always","dropAnimating","userCancel","getHead","createStyleEl","nonce","getWindowFromEl","isHtmlElement","findDragHandle","possible","handle","createRegistry","subscribers","findDraggableById","findDroppableById","register","uniqueId","unregister","findById","clean","StoreContext","getBodyElement","visuallyHidden","getId","defaults","useUniqueId","AppContext","useDev","useHook","useDevSetupWarning","usePrevious","_preventedKeys","preventedKeys","preventStandardKeyEvents","supportedEventName","_scrollJumpKeys","idle$1","getCaptureBindings","getPhase","setPhase","pending","fluidLift","shouldBlockNextClick","shouldRespectForcePress","noop$1","scrollJumpKeys","getDraggingBindings","idle$2","interactiveTagNames","textarea","optgroup","video","audio","isAnInteractiveElement","isEventInInteractiveElement","getBorderBoxCenterPosition","supportedMatchesName","closestPonyfill","closest$1","findClosestDragHandleFromEvent","expected","isLockActive","shouldWarn","canStart","lockAPI","isClaimed","tryStart","forceSensorStop","sourceEvent","draggable$1","findDraggable","canDragInteractiveElements","lock","claim","getShouldRespectForcePress","tryDispatchWhenDragging","getAction","liftActionArgs","move$1","api","snapLift","defaultSensors","phaseRef","unbindEventsRef","startCaptureBinding","findClosestDraggableId","tryGetLock","startPendingDrag","preventForcePressBinding","findOptionsForDraggable","canGetLock","listenForCapture","bindCapturingEvents","preDrag","isCapturing","longPressTimerId","unbindTarget","hasMoved","_event$touches$","shouldRespect","getHandleBindings","unbindWindow","getWindowBindings","startDragging","useSensorMarshal","customSensors","enableDefaultSensors","useSensors","abandon","newLock","tryAbandon","tryAbandonLock","forceStop","tryGetClosestDraggableIdFromEvent","tryReleaseLock","isLockClaimed","createResponders","getStore","lazyRef","App","sensors","lazyStoreRef","lastPropsRef","useAnnouncer","dragHandleUsageInstructionsId","useHiddenTextElement","alwaysRef","dynamicRef","setDynamicStyle","setAlwaysStyle","dynamic","useStyleMarshal","lazyDispatch","marshalCallbacks","useRegistry","entriesRef","recordRef","restoreFocusFrameRef","isMountedRef","tryGiveFocus","tryGiveFocusTo","redirectTo","focused","useFocusMarshal","tryResetStore","getCanLift","getIsMovementAllowed","appContext","canLift","count$1","isEqual$1","isScroll","isAuto","isEither","overflowX","overflowY","isElementScrollable","getClosestScrollable","getScroll$1","getIsFixed","getEnv","closestScrollable","isDropDisabled","targetRef","frameClient","scrollSize","getDroppableDimension","immediate","getListenerOptions","useRequiredContext","getClosestScrollableFromDrag","noop$2","isAnimatingOpenOnMount","getSize","boxSizing","flexShrink","flexGrow","Placeholder$1","animateOpenTimerRef","tryClearAnimateOpenTimer","onTransitionEnd","_useState","setIsAnimatingOpenOnMount","onSizeChangeEnd","DroppableContext","AnimateInOut","_React$PureComponent","zIndexOptions","getDraggingTransition","shouldAnimateDragMovement","getDraggingOpacity","isDropAnimating","getStyle$1","mapped","getShouldDraggingAnimate","getDraggingStyle","secondary","shouldAnimateDisplacement","useDraggablePublisher","getDraggableRef","computedStyles","getDimension$1","publishedRef","isFirstPublishRef","useValidation$1","getRef","preventHtml5Dnd","isStrictEqual","whatIsDraggedOverFromResult","getSecondarySnapshot","combineTargetFor","isClone","dropAnimation","draggingOver","atRest","ConnectedDraggable","draggingSelector","memoizedOffset","getMemoizedSnapshot","getMemoizedProps","_draggingOver","_combineWith","getCombineWithFromResult","curve","getDraggableSelector","secondarySelector","getFallback","getProps","ownId","draggingId","visualDisplacement","isAfterCriticalInVirtualList","_offset","getSecondarySelector","setRef","_useRequiredContext","_useRequiredContext2","dropAnimationFinishedAction","onMoveEnd","rubric","PrivateDraggable","isUsingCloneFor","PublicDraggable","disableInteractiveElementBlocking","isMatchingType","getDraggable","ignoreContainerClipping","renderClone","getContainerForClone","ConnectedDroppable","idleWithAnimation","shouldAnimatePlaceholder","draggingOverWith","draggingFromThisWith","isUsingPlaceholder","useClone","idleWithoutAnimation","getDraggableRubric","getMapProps","isDraggingOverForConsumer","isDraggingOverForImpact","_snapshot","_completed","wasCombining","isHome","updateViewportMaxScroll","droppableRef","placeholderRef","getDroppableRef","setDroppableRef","setPlaceholderRef","onPlaceholderTransitionEnd","whileDraggingRef","previousRef","publishedDescriptorRef","memoizedUpdateScroll","getClosestScroll","updateScroll","scheduleScrollUpdate","onClosestScroll","useDroppablePublisher","droppableContext","draggableProvided","draggableSnapshot","ReactDOM","getClone","for","$$typeof","C","N","W","V","U","J","ee","te","ae","ne","oe","se","ie","pe","le","ce","de","ue","fe","he","me","ye","ve","De","ge","ke","we","be","Se","Ce","Me","Pe","Ee","Ne","xe","Ye","Oe","Ie","Te","Re","Le","Fe","Ae","We","qe","Ke","Be","Qe","He","je","Ve","Ue","ze","$e","Ge","Je","Xe","Ze","et","rt","nt","ot","st","it","lt","ct","dt","ut","ft","ht","yt","vt","Dt","St","getOwnPropertyDescriptors","defineProperties","gt","kt","wt","Ot","bt","Ct","_t","Pt","Mt","Et","Nt","sham","xt","Yt","toPrimitive","It","Tt","Rt","Lt","Ft","At","Wt","qt","awareOfUnicodeTokens","er","Kt","Bt","Qt","Ht","jt","Vt","Ut","zt","$t","Gt","Jt","Xt","Zt","__localeId__","__localeData__","rr","nr","excludeDates","excludeDateIntervals","includeDates","includeDateIntervals","filterDate","ur","sr","ir","pr","lr","dr","fr","hr","excludeTimes","includeTimes","filterTime","maxTime","yr","vr","Dr","gr","kr","wr","Sr","holidayName","holidayNames","Cr","_r","Mr","startPeriod","endPeriod","Pr","Er","Nr","yearsList","incrementYears","decrementYears","shiftYears","scrollableYearDropdown","dropdownRef","ariaSelected","renderOptions","xr","Yr","dropdownVisible","onSelectChange","renderSelectOptions","toggleDropdown","renderReadView","renderDropdown","adjustDateOnChange","handleYearChange","dropdownMode","renderScrollMode","renderSelectMode","monthNames","isSelectedMonth","Ir","Tr","useShortMonthInDropdown","Rr","Lr","monthYearsList","scrollableMonthYearDropdown","Fr","Ar","Wr","isDisabled","onMouseEnter","handleOnKeyDown","disabledKeyboardNavigation","isSameWeek","preSelection","calendarStartDay","showWeekPicker","highlightDates","selectsStart","selectsEnd","selectsDisabledDaysInRange","selectingDate","isInSelectingRange","dayClassName","isExcluded","isKeyboardSelected","isRangeStart","isRangeEnd","isInRange","isSelectingRangeStart","isSelectingRangeEnd","isCurrentDay","isWeekend","isAfterMonth","isBeforeMonth","getHighLightedClass","getHolidaysClass","ariaLabelPrefixWhenEnabled","ariaLabelPrefixWhenDisabled","showWeekNumber","isStartOfWeek","getTabIndex","isInputFocused","shouldFocusDayInline","monthShowsDuplicateDaysEnd","monthShowsDuplicateDaysStart","dayEl","renderDayContents","handleClick","handleMouseEnter","getAriaLabel","getTitle","handleFocusDay","qr","weekNumberEl","handleFocusWeekNumber","weekNumber","ariaLabelPrefix","Kr","onDayClick","onDayMouseEnter","onWeekSelect","handleDayClick","shouldCloseOnSelect","formatWeekNumber","handleWeekClick","chooseDayAriaLabelPrefix","disabledDayAriaLabelPrefix","handleDayMouseEnter","renderDays","Br","Qr","Hr","jr","verticalNavigationOffset","Vr","Ur","orderInDisplay","isInSelectingRangeMonth","fixedHeight","weekAriaLabelPrefix","showWeekNumbers","isWeekInMonth","peekNextMonth","setPreSelection","MONTH_REFS","showTwoColumnMonthYearPicker","showFourColumnMonthYearPicker","onMonthClick","handleMonthNavigation","QUARTER_REFS","onQuarterClick","handleQuarterNavigation","monthClassName","isRangeStartMonth","isRangeEndMonth","isSelectingMonthRangeStart","isSelectingMonthRangeEnd","isCurrentMonth","isSelectedQuarter","isInSelectingRangeQuarter","isRangeStartQuarter","isRangeEndQuarter","showFullMonthYearPicker","renderMonthContent","renderQuarterContent","onMonthKeyDown","onMonthMouseEnter","getMonthClassNames","getMonthContent","onQuarterKeyDown","onQuarterMouseEnter","getQuarterClassNames","getQuarterTabIndex","isCurrentQuarter","getQuarterContent","showQuarterYearPicker","renderMonths","renderQuarters","renderWeeks","zr","centerLi","calcCenterPosition","monthRef","timeClassName","isSelectedTime","isDisabledTime","injectTimes","intervals","openToDate","liClasses","scrollToTheSelectedTime","todayButton","showTimeSelectOnly","renderTimes","onTimeChange","$r","yearItemNumber","YEAR_REFS","updateFocusOnPaginate","handleYearClick","onYearClick","handleYearNavigation","isCurrentYear","renderYearContent","onYearMouseEnter","onYearMouseLeave","onYearKeyDown","getYearTabIndex","getYearClassNames","getYearContent","getYearContainerClassNames","clearSelectingDate","Gr","customTimeInput","timeInputLabel","renderTimeInput","Jr","showPopperArrow","arrowProps","Xr","Zr","onClickOutside","onDropdownFocus","handleMonthChange","onMonthMouseLeave","onYearChange","isRenderAriaLiveMessage","handleCustomMonthChange","onMonthChange","handleMonthYearChange","weekLabel","formatWeekday","weekDayClassName","formatWeekDay","useWeekdaysShort","showYearPicker","renderCustomHeader","forceShowMonthNavigation","showDisabledMonthNavigation","decreaseMonth","decreaseYear","previousMonthButtonLabel","previousYearButtonLabel","previousMonthAriaLabel","previousYearAriaLabel","increaseMonth","increaseYear","nextMonthButtonLabel","nextYearButtonLabel","nextMonthAriaLabel","nextYearAriaLabel","showMonthYearDropdown","changeYear","changeMonth","changeMonthYear","handleTodayButtonClick","monthDate","renderCurrentMonth","handleDropdownFocus","renderMonthDropdown","renderMonthYearDropdown","renderYearDropdown","monthContainer","customHeaderCount","prevMonthButtonDisabled","nextMonthButtonDisabled","prevYearButtonDisabled","nextYearButtonDisabled","renderYearHeader","renderDefaultHeader","showPreviousMonths","monthsShown","monthSelectedIn","renderHeader","monthAriaLabelPrefix","handleOnDayKeyDown","handleMonthMouseLeave","handleYearMouseEnter","handleYearMouseLeave","timeIntervals","withPortal","showTimeInput","getDateInView","assignMonthContainer","renderAriaLiveRegion","renderPreviousButton","renderNextButton","renderYears","renderTodayButton","renderTimeSection","renderInputTimeSection","renderChildren","ea","ta","portalRoot","portalHost","ra","aa","tabLoopRef","getTabChildren","enableTabLoop","handleFocusStart","handleFocusEnd","na","hidePopper","popperComponent","popperModifiers","popperPlacement","popperProps","popperOnKeyDown","Popper","modifiers","popperContainer","Manager","Reference","oa","sa","ia","pa","getPreSelection","startOpen","preventFocus","preventFocusTimeout","cancelFocusInput","calcInitialState","lastPreSelectChange","ca","preventOpenOnFocus","clearPreventFocusTimeout","inputFocusTimeout","onChangeRaw","isDefaultPrevented","la","strictParsing","sendFocusBackToInput","showDateSelect","allowSameDay","focusSelectedMonth","onInputClick","componentNode","inputOk","handleSelect","onInputError","onClearClick","closeOnScroll","isCalendarOpen","dateFormatCalendar","handleCalendarClickOutside","modifyHolidays","outsideClickIgnoreClass","handleTimeChange","calendarClassName","calendarContainer","excludeScrollbar","onDayKeyDown","customInputRef","handleChange","onInputKeyDown","form","placeholderText","ariaInvalid","ariaRequired","isClearable","clearButtonTitle","clearButtonClassName","ariaLabelClose","onCalendarOpen","showIcon","calendarIconClassname","toggleCalendarOnIconClick","toggleCalendar","renderDateInput","renderClearButton","renderCalendar","onPortalKeyDown","renderInputContainer","popperClassName","onPopperKeyDown","CalendarContainer","getDefaultLocale","setDefaultLocale","da","fa","ha","ja","ka","ma","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","qa","xlinkHref","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","Pa","Qa","_context","_payload","_init","Ra","Sa","Ta","Va","_valueTracker","stopTracking","Ua","Wa","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","db","eb","fb","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","lb","nb","namespaceURI","MSApp","execUnsafeLocalFunction","ob","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","flexPositive","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","orphans","tabSize","widows","floodOpacity","stopOpacity","strokeMiterlimit","qb","rb","sb","tb","menuitem","embed","keygen","meta","param","wbr","ub","vb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","Wb","memoizedState","dehydrated","Xb","Zb","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","Tc","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","isDehydrated","containerInfo","Xc","Yc","Zc","$c","ad","cd","ReactCurrentBatchConfig","ed","fd","gd","hd","Uc","jd","kd","md","nd","od","pd","qd","_reactName","_targetInst","isPropagationStopped","cancelBubble","isPersistent","wd","xd","yd","sd","eventPhase","isTrusted","ud","vd","Ad","screenX","screenY","zd","buttons","relatedTarget","fromElement","toElement","movementY","Bd","Dd","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","MozPrintableKey","Nd","Od","Alt","Meta","Shift","Pd","Qd","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","isPrimary","Vd","targetTouches","Xd","Yd","wheelDelta","deltaZ","Zd","$d","datetime","tel","oninput","detachEvent","focusedElem","selectionRange","animationend","animationiteration","animationstart","transitionend","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","pf","qf","rf","sf","tf","uf","vf","wf","xa","$a","ba","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","queueMicrotask","If","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","gg","hg","jg","kg","lg","mg","ng","og","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","_owner","_stringRef","refs","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","_currentValue","childLanes","firstContext","lanes","eh","memoizedValue","fh","gh","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","lh","mh","eventTime","lane","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","Uh","Vh","Wh","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","Xh","Yh","Zh","$h","getSnapshot","ci","di","lastEffect","stores","ei","fi","gi","hi","destroy","deps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","readContext","useImperativeHandle","useInsertionEffect","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ci","Di","Ei","isMounted","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","Fi","isPureReactComponent","Gi","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Ji","digest","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","pingCache","Ti","Ui","Vi","Wi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","bj","cj","dj","baseLanes","cachePool","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","pj","qj","sj","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","tailMode","xj","Dj","Ej","Fj","wasMultiple","suppressHydrationWarning","onclick","Gj","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","_reactRootContainer","Wj","Xj","Yj","Zj","onCommitFiberUnmount","ak","bk","ck","dk","ek","fk","gk","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","Vk","lk","mk","nk","pk","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","isReactComponent","pendingChildren","al","mutableSourceEagerHydrationData","pendingSuspenseBoundaries","dl","fl","gl","hl","il","yj","Zk","kl","ll","_internalRoot","nl","pl","rl","ql","unmount","unstable_scheduleHydration","sl","usingClientEntryPoint","Events","findFiberByHostInstance","bundleType","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","supportsFiber","inject","cl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","sortIndex","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","bgcolor","fuzzyLink","fuzzyEmail","fuzzyIP","src_auth","src_host_port_strict","src_path","no_http","src_domain","src_domain_root","src_port","src_host_terminator","mailto","src_email_name","src_host_strict","__opts__","__tlds__","src_tlds","onCompile","__tlds_replaced__","src_xn","email_fuzzy","tpl_email_fuzzy","link_fuzzy","tpl_link_fuzzy","link_no_ip_fuzzy","tpl_link_no_ip_fuzzy","host_fuzzy_test","tpl_host_fuzzy_test","__compiled__","__schemas__","schema_test","src_ZPCc","schema_search","pretest","__index__","__text_cache__","__last_index__","__schema__","testSchemaAt","tlds","src_Any","src_Cc","src_Z","src_P","src_ZCc","src_pseudo_letter","src_ip4","src_host","tpl_host_fuzzy","tpl_host_no_ip_fuzzy","tpl_host_fuzzy_strict","tpl_host_port_fuzzy_strict","tpl_host_port_no_ip_fuzzy_strict","callBacks","suggestionCallback","editorFlag","suggestionFlag","closeAllModals","onEditorClick","closeModals","registerCallBack","deregisterCallBack","setSuggestionCallback","removeSuggestionCallback","onSuggestionClick","inputFocused","editorMouseDown","onEditorMouseDown","editorFocused","onInputMouseDown","isEditorBlur","isEditorFocused","isToolbarFocused","activeClassName","highlighted","toggleExpansion","setHighlighted","doExpand","doCollapse","optionWrapperClassName","onExpandEvent","Children","resetHighlighted","disabledClassName","highlightedClassName","currentState","dropdownClassName","inDropdown","renderInDropDown","renderInFlatList","signalExpanded","expandCollapse","changeKeys","modalHandler","currentStyles","getSelectionInlineStyle","getBlockTypes","blockTypes","renderInDropdown","renderFlat","blocksTypes","getSelectedBlocksType","defaultFontSize","toggleFontSize","toggleCustomInlineStyle","currentFontSize","getSelectionCustomInlineStyle","defaultFontFamily","toggleFontFamily","currentFontFamily","listType","indentDisabled","outdentDisabled","adjustDepth","changeDepth","isIndentDisabled","currentBlock","getBlockBeforeSelectedBlock","isOutdentDisabled","getSelectedBlock","addBlockAlignmentData","currentTextAlignment","getSelectedBlocksMetadata","setCurrentStyleColor","setCurrentStyleBgcolor","renderModal","popupClassName","bgColor","currentBgColor","toggleColor","linkTarget","linkTitle","linkTargetOption","removeLink","addLink","updateTargetOption","signalExpandShowModal","selectionText","forceExpandAndShowModal","htmlFor","unlink","renderAddLinkModal","linkCallback","getCurrentValues","getEntityRange","getSelectionText","getSelectionEntity","tn","nn","rn","cn","embeddedLink","defaultSize","rendeEmbeddedLinkModal","an","sn","un","pn","dn","addEmbeddedLink","embedCallback","yn","mn","gn","bn","Mn","jn","emojis","renderEmojiModal","Nn","En","Sn","wn","Cn","Ln","addEmoji","onCollpase","Dn","kn","On","xn","In","Tn","An","imgSrc","dragEnter","uploadHighlighted","uploadEnabled","uploadCallback","showImageLoading","onImageDrop","uploadImage","showImageUploadOption","addImageFromState","showImageURLOption","toggleShowImageLoading","selectImage","fileUpload","fileUploadClick","urlEnabled","previewImage","inputAccept","present","mandatory","renderAddImageModal","zn","Pn","Rn","Un","Bn","Fn","addImage","Yn","Qn","Hn","Zn","Wn","Gn","Jn","Vn","qn","removeInlineStyles","removeAllInlineStyles","Kn","Xn","$n","eo","no","undoDisabled","redoDisabled","oo","ro","co","ao","lo","so","colorPicker","embedded","uo","yo","mo","bo","ho","Mo","jo","showOpenOptionOnHover","showPopOver","openLink","toggleShowPopOver","vo","No","Eo","getMentionComponent","getMentionDecorator","findMentionEntities","So","wo","Co","Lo","Do","Oo","xo","Io","findSuggestionEntities","getEditorState","getSuggestions","caseSensitive","getSuggestionComponent","activeOption","showSuggestions","onEditorKeyDown","filteredSuggestions","addMention","onOptionMouseEnter","onOptionMouseLeave","setSuggestionReference","suggestion","setDropdownReference","dropdown","closeSuggestionDropdown","filterSuggestions","getWrapperRef","optionClassName","getSuggestionDecorator","To","mentionClassName","Ao","zo","_o","frameBorder","allowFullScreen","Po","getHashtagComponent","findHashtagEntities","hashCharacter","getHashtagDecorator","Ro","Uo","Bo","Fo","Yo","Qo","Ho","Zo","hovered","setEntityAlignmentLeft","setEntityAlignment","setEntityAlignmentRight","setEntityAlignmentCenter","dummy","toggleHovered","isImageAlignmentEnabled","renderAlignmentOptions","Wo","Go","monospace","alignmentEnabled","Jo","ru","zh_tw","es","Vo","qo","Ko","Xo","$o","onEditorBlur","onEditorFocus","focusHandler","onToolbarFocus","onWrapperBlur","wrapperId","afterChange","setWrapperReference","setEditorReference","getCompositeDecorator","customDecorators","suggestions","onContentStateChange","createEditorState","defaultEditorState","defaultContentState","initialContentState","filterEditorProps","getStyleMap","getCustomStyleMap","changeEditorState","focusEditor","handleNewLine","handlePastedTextFn","customBlockRenderFunc","editorProps","compositeDecorator","extractInlineStyle","localization","toolbarCustomButtons","toolbarOnFocus","toolbarStyle","editorStyle","wrapperStyle","ariaHasPopup","hasElementType","hasMap","hasSet","hasArrayBuffer","ArrayBuffer","isView","equal","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","_setPrototypeOf","isNodeFound","ignoreClass","correspondingElement","seed","passiveEventSupport","handlersMap","enabledInstances","touchEvents","IGNORE_CLASS_NAME","getEventHandlerOptions","handlerOptions","_class","_Component","__outsideClickHandler","__clickOutsideHandlerProp","getInstance","handleClickOutside","__getComponentNode","setClickOutsideRef","enableOnClickOutside","testPassiveEventSupport","eventTypes","initTimeStamp","findHighest","composed","disableOnClickOutside","instanceRef","wrappedRef","getClass","ManagerReferenceNodeContext","ManagerReferenceNodeSetterContext","_React$useState","referenceNode","setReferenceNode","hasUnmounted","handleSetReferenceNode","unwrapArray","safeInvoke","fromEntries","getWindow","isShadowRoot","ShadowRoot","getUAString","userAgentData","brands","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","offsetLeft","win","getNodeName","getWindowScrollBarX","isScrollParent","_getComputedStyle","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","getNodeScroll","getLayoutRect","getParentNode","assignedSlot","listScrollParents","_element$ownerDocumen","isBody","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","css","perspective","contain","willChange","getContainingBlock","auto","basePlacements","popper","variationPlacements","placements","modifierPhases","visited","requires","requiresIfExists","dep","depModifier","debounce","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","reference","orderedModifiers","modifiersData","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","orderModifiers","mergeByName","_ref$options","effect","cleanupFn","noopFn","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","dpr","roundOffsetsByDPR","_options$offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","popperOffsets","getOppositePlacement","getOppositeVariationPlacement","rootNode","getRootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","within","mathMax","mathMin","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","referenceRect","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","axisProp","centerOffset","_options$element","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","createPopper","_options$scroll","_options$resize","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","initialStyles","_skip","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","fittingPlacement","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","EMPTY_MODIFIERS","usePopper","referenceElement","popperElement","prevOptions","optionsWithDefaults","updateStateModifier","popperOptions","popperInstanceRef","popperInstance","defaultCreatePopper","NOOP","NOOP_PROMISE","_ref$placement","_ref$strategy","_ref$modifiers","setPopperElement","_React$useState2","setArrowElement","_usePopper","childrenProps","refHandler","ContextKey","gT","_gT$ContextKey","contextMap","realContext","createReduxContextHook","useReduxContext","notInitialized","useSyncExternalStoreWithSelector","refEquality","createSelectorHook","useDefaultReduxContext","equalityFnOrOptions","equalityFn","stabilityCheck","noopCheck","getServerState","globalStabilityCheck","globalNoopCheck","wrappedSelector","selectedState","createInvalidArgFactory","subscriptionsAmount","selfSubscribed","cleanupListener","mapStateToPropsFactory","mapDispatchToPropsFactory","mergePropsFactory","didStoreComeFromContext","latestSubscriptionCallbackError","actualChildPropsSelector","subscribeForReact","reactListener","additionalSubscribeListener","unsubscribeWrapper","serverState","createStoreHook","useStore","createDispatchHook","useDefaultStore","useDispatch","initializeConnect","BrowserRouter","Router","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","navigate","_onClick","isModifiedEvent","_ref2$component","__RouterContext","isDuplicateNavigation","forwardRefShim$1","forwardRef$1","NavLink","ariaCurrent","_ref$ariaCurrent","_ref$activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","matchPath","classnames","joinClassnames","MAX_SIGNED_31_BIT_INT","commonjsGlobal","calculateChangedBits","contextProp","emitter","changedBits","createEventEmitter","_Provider$childContex","observedBits","onUpdate","_Consumer$contextType","createNamedContext","historyContext","_isMounted","_pendingLocation","staticContext","computeRootMatch","isExact","Lifecycle","_ref$when","cacheLimit","cacheCount","generatePath","compilePath","Redirect","computedMatch","_ref$push","cache$1","cacheLimit$1","cacheCount$1","_options$exact","_options$strict","_options$sensitive","cacheKey","pathCache","compilePath$1","_compilePath","Route","context$1","isEmptyChildren","createURL","staticHandler","withRouter","wrappedComponentRef","remainingProps","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","initialStatus","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","prevState","updateStatus","cancelNextCallback","getTimeouts","exit","mounting","nodeRef","forceReflow","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onExit","onExiting","onExited","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","TransitionGroupContext","only","isNum","isBool","isStr","isFn","parseClassName","hasToastId","toastId","canUseDom","canBeRendered","DEFAULT","DARK","cssTransition","enterDuration","exitDuration","_ref$duration","appendPosition","_ref$appendPosition","_ref$collapse","collapseDuration","_ref$collapseDuration","preventExitTransition","enterClassName","exitClassName","collapseToast","animationFillMode","removeProperty","eventManager","emitQueue","cancelEmit","timers","timer","useKeeper","refresh","staleId","useToastContainer","_useReducer2","toastCount","toastKey","displayedToast","containerId","isToastActive","getToast","clearWaitingQueue","_instance$props","enableMultiContainer","removeToast","queueLen","freeSlot","dequeueToast","toDequeue","toastContent","_queue$shift","toastProps","appendToast","buildToast","updateId","isNotValid","closeToast","isNotAnUpdate","toastAutoClose","containerAutoClose","closeButton","toastClassName","bodyClassName","toastStyle","bodyStyle","pauseOnHover","pauseOnFocusLoss","draggablePercent","progressClassName","progressStyle","deleteToast","removeFromCollection","onOpen","getToastToRender","toastToRender","toastList","newestOnTop","_toast","getX","useToast","isRunning","setIsRunning","_useState2","setPreventExitTransition","toastRef","removalDistance","canCloseOnClick","canDrag","syncProps","onDragTransitionEnd","_drag$boundingRect","pauseToast","playToast","onDragMove","getY","eventHandlers","CloseButton","_ref$ariaLabel","ProgressBar","userStyle","controlledProgress","isIn","animationPlayState","defaultClassArr","defaultClassName","animationEvent","_animationEvent","Toast","_useToast","cssClasses","renderCloseButton","Bounce","ToastPositioner","ToastContainer","_useToastContainer","swag","_cx2","latestInstance","containerDomNode","containerConfig","containers","lazy","isAnyContainerMounted","getContainer","generateToastId","getToastId","dispatchToast","mergeOptions","dark","dismiss","oldContent","nextOptions","configure","containerInstance","__self","__source","jsx","jsxs","_result","PureComponent","act","_currentValue2","_threadCount","_defaultValue","_globalName","createFactory","startTransition","unstable_act","formatProdErrorMessage","$$observable","observable","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","preloadedState","enhancer","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observeState","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","bindActionCreator","funcs","middlewares","_dispatch","middlewareAPI","middleware","isFunction","createErrorClass","createImpl","ctorFunc","UnsubscriptionError","arrRemove","Subscription","initialTeardown","_parentage","_finalizers","_parentage_1","_parentage_1_1","initialFinalizer","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","__spreadArray","teardown","_hasParent","_addParent","_removeParent","EMPTY_SUBSCRIPTION","isSubscription","onUnhandledError","onStoppedNotification","useDeprecatedSynchronousErrorHandling","useDeprecatedNextContext","timeoutProvider","delegate","COMPLETE_NOTIFICATION","createNotification","errorContext","isRoot","errorThrown","Subscriber","isStopped","EMPTY_OBSERVER","SafeSubscriber","handleStoppedNotification","nextNotification","_next","_error","_complete","_bind","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","context_1","reportUnhandledError","identity","pipeFromArray","fns","Observable","_subscribe","isObserver","_trySubscribe","sink","promiseCtor","getPromiseCtor","Symbol_observable","pipe","toPromise","ObjectUnsubscribedError","currentObservers","observers","thrownError","AnonymousSubject","_throwIfClosed","_checkFinalizedStatuses","_innerSubscribe","asObservable","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","nextTick","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","onGlobalMessage","installPostMessageImplementation","channel","installMessageChannelImplementation","installReadyStateChangeImplementation","clearImmediate","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","VENDOR","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","MAC_OS","SUFFIX_BROWSER","enumerize","enums","str1","str2","lowerize","rgxMapper","arrays","strMapper","windowsVersionMap","regexes","EDGE","_navigator","_ua","_uach","_rgxmap","mergedRegexes","_isSelfNav","getBrowser","_browser","brave","isBrave","getCPU","_cpu","getDevice","_device","mobile","maxTouchPoints","getEngine","_engine","getOS","_os","getUA","setUA","CPU","DEVICE","ENGINE","OS","Zepto","objectIs","checkIfSnapshotChanged","inst","latestGetSnapshot","getServerSnapshot","instRef","memoizedSelector","nextSnapshot","hasMemo","memoizedSnapshot","memoizedSelection","nextSelection","maybeGetServerSnapshot","hasOwn","appendClass","parseValue","newClass","_objectSpread2","isProduction","__decorate","decorate","pack","SuppressedError","__webpack_module_cache__","__webpack_require__","cachedModule","loaded","__webpack_modules__","amdO","getter","leafPrototypes","getProto","def","definition","chunkId","miniCssF","hmd","inProgress","dataWebpackPrefix","needAttach","scripts","nc","onScriptComplete","doneFns","fullhref","existingLinkTags","dataHref","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","chunkLoadingGlobal","darkThemeStyles","Light","lightThemeStyles","am4core","amchartCustomTheme","am4themes_dark","am4themes_animated","HomePage","OnboardingPage","PageRouter","loadTranslation","fetchBaseLanguageDataCallback","isLoggedIn","isRegistrationFinished","shouldRedirectToOnboardingPage","isAppropriateTenant","renderHomePage","shouldRedirect","isWrongTenant","AppContainer","ThemeProvider","errorReportingService"],"sourceRoot":""}